本页面介绍如何将 DICOM 实例导出到 Cloud Storage 并导入 DICOM 对象。DICOM 实例通常是图片,但也可以是另一种类型的永久性数据,例如结构化报告。Cloud Storage 中的 DICOM 对象是位于 Cloud Storage 中的 DICOM 实例。如需了解详情,请参阅 Cloud Storage。
设置 Cloud Storage 权限
在将 DICOM 数据导入 Cloud Storage 以及从 Cloud Storage 导入 DICOM 数据之前,您必须向 Cloud Healthcare Service Agent 服务账号授予额外权限。有关详情,请参阅 DICOM 存储 Cloud Storage 权限。
导入 DICOM 对象
如需将多个 DICOM 实例文件导入 DICOM 存储区,您可以使用以下任一方法:
- 使用 Cloud Healthcare API 中实现的存储事务 RESTful Web 服务,以编程方式将数据存储在本地机器的 DICOM 存储区中。
- 上传 Cloud Storage 存储桶中的 DICOM 数据,然后使用单个导入操作将文件导入 DICOM 存储区(如本部分所述)。
以下示例展示了如何从 Cloud Storage 存储桶导入 DICOM 对象。
控制台
要从 Cloud Storage 存储桶导入 DICOM 对象,请完成以下步骤:
- 在 Google Cloud 控制台中,进入数据集页面。
进入“数据集” - 点击包含您要导入 DICOM 对象的 DICOM 存储区的数据集。
- 在数据存储区列表中,选择导入从操作 DICOM 存储区的列表。
导入到 DICOM 存储区页面会出现。 - 在项目列表中,选择一个 Cloud Storage 项目。
- 在位置列表中,选择一个 Cloud Storage 存储桶。
- 要设置导入文件的特定位置,请执行以下操作:
- 展开高级选项。
- 选择替换 Cloud Storage 路径。
- 要设置特定的文件导入来源,请在位置文本框中使用以下变量定义路径:
*
- 匹配非分隔符。**
- 匹配字符,包括分隔符。 此名称可与文件扩展名配合使用,以匹配同一类型的所有文件。?
- 匹配 1 个字符。
- 点击导入,从定义的来源导入 DICOM 对象。
- 要跟踪操作的状态,请点击操作标签页。操作完成后,系统会显示以下指示:
- 长时间运行的操作状态部分下方的确定标题下会显示一个绿色的对勾标记。
- 概览部分在操作 ID 的同一行中显示一个绿色对勾标记和一个确定指示符。
gcloud
要从 Cloud Storage 存储桶导入 DICOM 对象,请使用 gcloud healthcare dicom-stores import gcs
命令。指定父数据集的名称、DICOM 存储区的名称以及该对象在 Cloud Storage 存储桶中的位置。
- 文件在存储桶中的位置是任意的,无需严格遵循以下示例中指定的格式。
- 在 Cloud Storage 中指定 DICOM 资源的位置时,您可以使用通配符从一个或多个目录导入多个文件。支持以下通配符:
- 使用
*
可以匹配零个或更多的非分隔符字符。例如,gs://BUCKET/DIRECTORY/Example*.dcm
匹配 DIRECTORY中的 Example.dcm 和 Example22.dcm。 - 使用
**
匹配 0 个或多个字符(包括分隔符)。必须在路径末尾使用,且路径中没有其他通配符。也可与扩展名(如.dcm)一起使用,该扩展名可导入指定目录及其子目录中扩展名中的所有文件。例如,gs://BUCKET/DIRECTORY/**.dcm
会导入 DIRECTORY 及其子目录中扩展名为 .dcm 文件名的所有文件。 - 使用
?
可以匹配 1 个字符。例如,gs://BUCKET/DIRECTORY/Example?.dcm
匹配 Example1.dcm,但不匹配 Example.dcm 或 Example01.dcm。
- 使用
以下示例展示了如何从 Cloud Storage 存储桶导入 DICOM 对象。
gcloud healthcare dicom-stores import gcs DICOM_STORE_ID \ --dataset=DATASET_ID \ --location=LOCATION \ --gcs-uri=gs://BUCKET/DIRECTORY/DICOM_INSTANCE.dcm
命令行会显示操作 ID:
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
如需查看操作的状态,请运行 gcloud healthcare operations describe
命令并从响应中提供 OPERATION_ID:
gcloud healthcare operations describe OPERATION_ID \ --location=LOCATION \ --dataset=DATASET_ID
命令完成后,响应将包含 done: true
。
done: true metadata: '@type': type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata apiMethodName: google.cloud.healthcare.v1.dicom.DicomService.ImportDicomData counter: success: SUCCESSFUL_INSTANCES failure: FAILED_INSTANCES createTime: "CREATE_TIME" endTime: "END_TIME" name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID response: '@type': "..."
API
要从 Cloud Storage 存储桶导入 DICOM 对象,请使用 projects.locations.datasets.dicomStores.import
方法。
- 存储桶中的文件位置可能会有所不同,不必与以下示例中指定的格式一致。
- 在 Cloud Storage 中指定 DICOM 对象的位置时,请使用通配符从一个或多个目录导入多个文件。
支持以下通配符:
- 使用
*
可以匹配零个或更多的非分隔符字符。例如,gs://BUCKET/DIRECTORY/Example*.dcm
匹配 DIRECTORY中的 Example.dcm 和 Example22.dcm。 - 使用
**
匹配 0 个或多个字符(包括分隔符)。必须在路径末尾使用,且路径中没有其他通配符。也可与扩展名(如.dcm)一起使用,该扩展名可导入指定目录及其子目录中扩展名中的所有文件。例如,gs://BUCKET/DIRECTORY/**.dcm
会导入 DIRECTORY 及其子目录中扩展名为 .dcm 文件名的所有文件。 - 使用
?
可以匹配 1 个字符。例如,gs://BUCKET/DIRECTORY/Example?.dcm
匹配 Example1.dcm,但不匹配 Example.dcm 或 Example01.dcm。
- 使用
REST
导入 DICOM 对象。
在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID
:您的 Google Cloud 项目的 IDLOCATION
:数据集位置DATASET_ID
: DICOM 存储区的父数据集DICOM_STORE_ID
:DICOM 存储区 IDBUCKET/PATH/TO/FILE
:Cloud Storage 中 DICOM 对象的路径
请求 JSON 正文:
{ "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" } }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为
request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:cat > request.json << 'EOF' { "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" } } EOF
然后,执行以下命令以发送 REST 请求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:import"PowerShell
将请求正文保存在名为
request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:@' { "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" } } '@ | Out-File -FilePath request.json -Encoding utf8
然后,执行以下命令以发送 REST 请求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:import" | Select-Object -Expand Content获取长时间运行的操作的状态。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud 项目的 ID
- LOCATION:数据集位置
- DATASET_ID: DICOM 存储区的父数据集
- OPERATION_ID:从长时间运行的操作返回的 ID
如需发送请求,请选择以下方式之一:
curl
执行以下命令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
Go
Java
Node.js
Python
如需从 DICOM 存储区中检索单个实例或研究,请使用 Cloud Healthcare API 中实现的检索事务 RESTful 网络服务检索 DICOM 数据。
指定存储类别以导入 DICOM 对象(预览版)
默认情况下,projects.locations.datasets.dicomStores.import
方法会将 DICOM 对象导入具有标准存储类别的 DICOM 存储区。从 Cloud Storage 导入 DICOM 对象时,可以设置存储类别。
如需了解详情,请参阅更改 DICOM 存储类别。
以下示例展示了如何在从 Cloud Storage 导入 DICOM 对象时指定存储类别。
REST
使用 projects.locations.datasets.dicomStores.import
方法。
导入 DICOM 对象。
在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID
:您的 Google Cloud 项目的 IDLOCATION
:数据集位置DATASET_ID
: DICOM 存储区的父数据集DICOM_STORE_ID
:DICOM 存储区 IDBUCKET/PATH/TO/FILE
:Cloud Storage 中 DICOM 对象的路径STORAGE_CLASS
:来自STANDARD
、NEARLINE
、COLDLINE
和ARCHIVE
的 DICOM 存储区中的 DICOM 对象的存储类别
请求 JSON 正文:
{ "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" }, "blob_storage_settings": { "blob_storage_class": "STORAGE_CLASS" } }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为
request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:cat > request.json << 'EOF' { "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" }, "blob_storage_settings": { "blob_storage_class": "STORAGE_CLASS" } } EOF
然后,执行以下命令以发送 REST 请求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d @request.json \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:import"PowerShell
将请求正文保存在名为
request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:@' { "gcsSource": { "uri": "gs://BUCKET/PATH/TO/FILE.dcm" }, "blob_storage_settings": { "blob_storage_class": "STORAGE_CLASS" } } '@ | Out-File -FilePath request.json -Encoding utf8
然后,执行以下命令以发送 REST 请求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:import" | Select-Object -Expand Content获取长时间运行的操作的状态。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_ID:您的 Google Cloud 项目的 ID
- LOCATION:数据集位置
- DATASET_ID: DICOM 存储区的父数据集
- OPERATION_ID:从长时间运行的操作返回的 ID
如需发送请求,请选择以下方式之一:
curl
执行以下命令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
对 DICOM 导入请求进行问题排查
如果在执行 DICOM 导入请求期间发生错误,系统会将错误记录到 Cloud Logging。如需了解详情,请参阅在 Cloud Logging 中查看错误日志。
导出 DICOM 实例
以下示例展示了如何将 DICOM 实例导出到 Cloud Storage 存储桶。从 DICOM 存储区导出 DICOM 实例时,将导出该存储区中的所有实例。
控制台
要将 DICOM 实例导出到 Cloud Storage,请完成以下步骤:
- 在 Google Cloud 控制台中,进入数据集页面。
进入“数据集” - 点击包含您从中导出 DICOM 实例的数据集。
- 在数据存储区列表中,从 DICOM 存储区的操作列表中选择导出。
- 在出现的导出 DICOM 存储区页面上,选择 Google Cloud Storage 存储分区。
- 在项目列表中,选择一个 Cloud Storage 项目。
- 在位置列表中,选择一个 Cloud Storage 存储桶。
- 在 DICOM 导出设置中,选择用于导出 DICOM 实例的文件类型。您可以选择以下类型:
- DICOM 文件(
.dcm
) - 八位元字符串流
- 映像(
.jpg
、.png
)
- DICOM 文件(
- 要定义其他转移语法,请从转移语法列表中选择语法。
- 点击导出,将 DICOM 实例导出到 Cloud Storage 中的指定位置。
- 要跟踪操作的状态,请点击操作标签页。操作完成后,系统会显示以下指示:
- 长时间运行的操作状态部分下方的确定标题下会显示一个绿色的对勾标记。
- 概览部分在操作 ID 的同一行中显示一个绿色对勾标记和一个确定指示符。
gcloud
要将 DICOM 实例导出到 Cloud Storage 存储桶,请使用 gcloud healthcare dicom-stores export gcs
命令。
- 提供父数据集的名称、DICOM 存储区的名称和目标 Cloud Storage 存储桶。
- 写入 Cloud Storage 存储桶或目录(而非对象),因为 Cloud Healthcare API 会为每个对象创建一个
.dcm
文件。 - 如果该命令指定的目录不存在,则会创建该目录。
以下示例展示了 gcloud healthcare dicom-stores export gcs
命令。
gcloud healthcare dicom-stores export gcs DICOM_STORE_ID \ --dataset=DATASET_ID \ --location=LOCATION \ --gcs-uri-prefix=gs://BUCKET/DIRECTORY
命令行会显示操作 ID:
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
如需查看操作的状态,请运行 gcloud healthcare operations describe
命令并从响应中提供 OPERATION_ID:
gcloud healthcare operations describe OPERATION_ID \ --location=LOCATION \ --dataset=DATASET_ID
命令完成后,响应将包含 done: true
。
done: true metadata: '@type': type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata apiMethodName: google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData counter: success: SUCCESSFUL_INSTANCES failure: FAILED_INSTANCES createTime: "CREATE_TIME" endTime: "END_TIME" name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID response: '@type': "..."
API
要将 DICOM 实例导出到 Cloud Storage 存储桶,请使用 projects.locations.datasets.dicomStores.export
方法。
- 写入 Cloud Storage 存储桶或目录(而非对象),因为 Cloud Healthcare API 会为每个 DICOM 对象创建一个
.dcm
文件。 - 如果该命令指定的目录不存在,则会创建该目录。
curl
如需导出 DICOM 实例,请发出 POST
请求并提供以下信息:
- 父级数据集的名称和位置
- DICOM 存储区的名称
- 目标 Cloud Storage 存储桶
以下示例展示了使用 curl
的 POST
请求。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' } }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export"
如果请求成功,服务器将以 JSON 格式返回响应:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
响应包含操作名称。要跟踪操作的状态,请使用操作 get
方法:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
如果请求成功,服务器将以 JSON 格式返回包含操作状态的响应:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData", "createTime": "CREATE_TIME", "endTime": "END_TIME", "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL", "counter":{ "success": SUCCESSFUL_INSTANCES "failure": FAILED_INSTANCES } }, "done": true, "response": { "@type": "..." } }
PowerShell
如需导出 DICOM 实例,请发出 POST
请求并提供以下信息:
- 父级数据集的名称和位置
- DICOM 存储区的名称
- 目标 Cloud Storage 存储桶
以下示例展示了使用 Windows PowerShell 的 POST
请求。
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' } }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export" | Select-Object -Expand Content
如果请求成功,服务器将以 JSON 格式返回响应:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
响应包含操作名称。要跟踪操作的状态,请使用操作 get
方法:
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
如果请求成功,服务器将以 JSON 格式返回包含操作状态的响应:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData", "createTime": "CREATE_TIME", "endTime": "END_TIME", "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL", "counter":{ "success": SUCCESSFUL_INSTANCES "failure": FAILED_INSTANCES }, }, "done": true, "response": { "@type": "..." } }
Go
Java
Node.js
Python
使用过滤条件导出 DICOM 实例
默认情况下,当您将 DICOM 文件导出到 Cloud Storage 时, DICOM 存储区中的所有 DICOM 文件都会导出。同样,将 DICOM 元数据导出到 BigQuery 时,系统会导出 DICOM 存储区中所有 DICOM 数据的元数据。
您可以使用过滤器文件导出部分 DICOM 数据或元数据。
配置过滤器文件
您可以使用过滤器文件定义要导出到 Cloud Storage 或 BigQuery 的 DICOM 文件列表。
过滤器文件中的每一行定义研究、系列或实例,并采用 /studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID
格式。
您可以截断一行,以指定过滤器在哪个级别发挥作用。
例如,您可以通过指定 /studies/STUDY_INSTANCE_UID
来导出整个研究,也可以通过指定 /studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID
来导出整个系列。
请参考以下过滤器文件:
/studies/1.123.456.789 /studies/1.666.333.111/series/123.456 /studies/1.666.333.111/series/567.890 /studies/1.888.999.222/series/123.456/instances/111 /studies/1.888.999.222/series/123.456/instances/222 /studies/1.888.999.222/series/123.456/instances/333
此过滤器文件会过滤以下内容:
- 研究实例 UID 为
1.123.456.789
的整个研究 - 在研究
1.666.333.111
中,两个单独的系列,其系列实例 UID 为123.456
和567.890
- 研究
1.888.999.222
和系列123.456
中实例 ID 分别为111
、222
和333
的三个单独实例
使用 BigQuery 创建过滤条件文件
如需使用 BigQuery 创建过滤条件文件,您必须将 DICOM 存储区的元数据导出到 BigQuery。 导出的元数据会显示 DICOM 存储区中 DICOM 数据的研究、系列和实例 UID。
导出后,请完成以下步骤:
查询所需的研究、系列和实例 UID。
例如,将 DICOM 元数据导出到 BigQuery 后,请运行以下查询来串联研究、系列和实例 UID,以符合过滤器文件格式要求:
SELECT CONCAT ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID) FROM [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
可选:如果查询返回的大型结果集超过响应大小上限,请在 BigQuery 中将查询结果保存到新的目标表。
将查询结果保存到文件中,并将其导出到 Cloud Storage。如果您在第 2 步中将查询结果保存到了新的目标表,请参阅导出表数据以将表的内容导出到 Cloud Storage。
根据需要修改导出的文件,并将其用作过滤器文件。 在导出操作中,需要过滤器文件在 Cloud Storage 中的位置。
手动创建过滤条件文件
如需创建包含自定义内容的过滤器文件并将其上传到 Cloud Storage 存储桶,请完成以下步骤:
创建一个过滤文件,其中包含需要在本地机器上更改存储类别的实例的列表。使用配置过滤器文件部分中所述的格式。
将过滤文本文件上传到 Cloud Storage 位置。
gsutil cp PATH_TO_FILTER_FILE/FILTER_FILE_NAME.txt gs://BUCKET/DIRECTORY
替换以下内容:
PATH_TO_FILTER_FILE
:本地机器上过滤器文件的路径FILTER_FILE_NAME
:过滤器文件的名称BUCKET/DIRECTORY
:Cloud Storage 位置的路径
例如:
gsutil cp my-local-folder/archive-filters.txt gs://my-bucket/my-directory
传入过滤条件文件
创建过滤条件文件后,请调用 DICOM 导出操作,并使用 REST API 传入过滤条件文件。以下示例展示了如何使用过滤条件导出 DICOM 数据。
gcloud
如需使用过滤条件将 DICOM 元数据导出到 Cloud Storage,请使用 gcloud beta healthcare dicom-stores export gcs
命令:
gcloud beta healthcare dicom-stores export gcs DICOM_STORE_ID \ --dataset=DATASET_ID \ --location=LOCATION \ --gcs-uri-prefix=gs://DESTINATION_BUCKET/DIRECTORY \ --filter-config-gcs-uri=gs://BUCKET/DIRECTORY/FILTER_FILE
替换以下内容:
- DICOM_STORE_ID:DICOM 存储区的标识符
- DATASET_ID:DICOM 存储区的父级数据集的名称
- LOCATION:DICOM 存储区的父级数据集的位置
- DESTINATION_BUCKET/DIRECTORY:目标 Cloud Storage 存储桶
- BUCKET/DIRECTORY/FILTER_FILE:过滤条件文件在 Cloud Storage 存储桶中的位置
输出如下所示:
Request issued for: [DICOM_STORE_ID] Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete...done. name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID
如需查看操作的状态,请运行 gcloud healthcare operations describe
命令并从响应中提供 OPERATION_ID:
gcloud healthcare operations describe OPERATION_ID \ --location=LOCATION \ --dataset=DATASET_ID
替换以下内容:
- OPERATION_ID:从上一条响应中返回的 ID 编号
- DATASET_ID:DICOM 存储区的父级数据集的名称
- LOCATION:DICOM 存储区的父级数据集的位置
输出如下所示:
done: true metadata: '@type': type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata apiMethodName: google.cloud.healthcare.v1beta1.dicom.DicomService.ExportDicomData counter: success: SUCCESSFUL_INSTANCES failure: FAILED_INSTANCES createTime: 'CREATE_TIME' endTime: 'END_TIME' logsUrl: 'https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL' name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID response: '@type': '...'
API
如需使用过滤条件导出 DICOM 数据,请使用 projects.locations.datasets.dicomStores.export
方法。
curl
如需使用过滤条件文件导出 DICOM 数据,请发出 POST
请求并提供以下信息:
- 父级数据集的名称和位置
- DICOM 存储区的名称
- 目标 Cloud Storage 存储桶
- 过滤条件文件在 Cloud Storage 存储桶中的位置
以下示例展示了使用 curl
的 POST
请求。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' }, 'filterConfig': { 'resourcePathsGcsUri': 'gs://BUCKET/DIRECTORY/FILTER_FILE' } }" "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export"
如果请求成功,则服务器会返回 JSON 格式的以下响应:
{ "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_ID" }
响应包含操作名称。使用操作 get
方法跟踪操作的状态:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_NAME"
如果请求成功,服务器会返回 JSON 格式的以下响应:
{ "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1beta1.dicom.DicomService.ExportDicomData", "createTime": "CREATE_TIME", "endTime": "END_TIME" }, "done": true, "response": { "@type": "..." } }
PowerShell
如需使用过滤条件文件导出 DICOM 数据,请发出 POST
请求并提供以下信息:
- 父级数据集的名称和位置
- DICOM 存储区的名称
- 目标 Cloud Storage 存储桶
- 过滤条件文件在 Cloud Storage 存储桶中的位置
以下示例展示了使用 Windows PowerShell 的 POST
请求。
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' }, 'filterConfig': { 'resourcePathsGcsUri': 'gs://BUCKET/DIRECTORY/FILTER_FILE' }" ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID:export" | Select-Object -Expand Content
如果请求成功,则服务器会返回 JSON 格式的以下响应:
{ "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_ID" }
响应包含操作名称。使用操作 get
方法跟踪操作的状态:
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_NAME" | Select-Object -Expand Content
如果请求成功,服务器会以 JSON 格式返回包含操作状态的以下响应。
{ "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1beta1.dicom.DicomService.ExportDicomData", "createTime": "CREATE_TIME", "endTime": "END_TIME" }, "done": true, "response": { "@type": "..." } }
对 DICOM 导出请求进行问题排查
如果在执行 DICOM 导出请求期间发生错误,系统会将错误记录到 Cloud Logging。如需了解详情,请参阅在 Cloud Logging 中查看错误日志。
如果整个操作返回错误,请参阅排查长时间运行的操作问题。