本页面介绍如何在 Cloud Healthcare API 中更改 DICOM 数据的存储类别。
概览
Cloud Healthcare API 提供以下存储类别:
- 标准
- Nearline
- Coldline
- 归档
这些存储类别与 Cloud Storage 中的存储类别类似。
在如下场景中,您可以更改 DICOM 对象的存储类别,以节省费用:
- 将不经常访问的一系列 DICOM 图片从标准存储空间移至 Nearline 或 Coldline 存储空间。这会释放标准存储分区以存储访问频率更高的映像。
- 将患者数据从标准存储空间移动到归档存储空间,以归档因法律原因需要保留的数据。Archive 存储是费用最低、耐用性高的存储类别。
更改 DICOM 存储类别的方法
默认情况下, DICOM 实例具有标准存储类别。您可以使用以下方法更改存储类别:
import
方法:使用blobStorageSettings
字段从 Cloud Storage 存储桶导入 DICOM 实例时,设置存储类别storeInstances
方法:在从本地路径存储 DICOM 实例时设置存储类别setBlobStorageSettings
方法:在实例、系列或研究级别的 DICOM 存储区中更改 DICOM 实例的存储类别
准备工作
在 Cloud Healthcare API 中更改 DICOM 实例的存储类别之前,请查看以下价格详情:
更改 DICOM 实例的存储类别
以下示例展示了如何在实例、系列或研究级别更改 DICOM 实例的存储类别。
在实例级别
如需在实例级别更改 DICOM 实例的存储类别,请完成以下步骤:
REST
使用 projects.locations.datasets.dicomStores.studies.series.instances.setBlobStorageSettings
方法。
- 在实例级层更改 DICOM 实例的存储类别。
在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID
:您的 Google Cloud 项目的 IDLOCATION
:数据集位置DATASET_ID
: DICOM 存储区的父数据集DICOM_STORE_ID
:DICOM 存储区 IDSTUDY_INSTANCE_UID
:研究实例唯一标识符SERIES_INSTANCE_UID
:系列实例唯一标识符INSTANCE_UID
:实例唯一标识符STORAGE_CLASS
:来自STANDARD
、NEARLINE
、COLDLINE
和ARCHIVE
的 DICOM 存储区中的 DICOM 对象的存储类别
请求 JSON 正文:
{ "blobStorageSettings": { "blob_storage_class": "STORAGE_CLASS" } }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为
request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:cat > request.json << 'EOF' { "blobStorageSettings": { "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/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instance/INSTANCE_UID:setBlobStorageSettings"PowerShell
将请求正文保存在名为
request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:@' { "blobStorageSettings": { "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/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instance/INSTANCE_UID:setBlobStorageSettings" | 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 实例的存储类别,请完成以下步骤:
REST
使用 projects.locations.datasets.dicomStores.studies.series.setBlobStorageSettings
方法。
- 在系列级层更改 DICOM 实例的存储类别。
在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID
:您的 Google Cloud 项目的 IDLOCATION
:数据集位置DATASET_ID
: DICOM 存储区的父数据集DICOM_STORE_ID
:DICOM 存储区 IDSTUDY_INSTANCE_UID
:研究实例唯一标识符SERIES_INSTANCE_UID
:系列实例唯一标识符STORAGE_CLASS
:来自STANDARD
、NEARLINE
、COLDLINE
和ARCHIVE
的 DICOM 存储区中的 DICOM 对象的存储类别
请求 JSON 正文:
{ "blobStorageSettings": { "blob_storage_class": "STORAGE_CLASS" } }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为
request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:cat > request.json << 'EOF' { "blobStorageSettings": { "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/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID:setBlobStorageSettings"PowerShell
将请求正文保存在名为
request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:@' { "blobStorageSettings": { "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/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID:setBlobStorageSettings" | 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 实例的存储类别,请完成以下步骤:
REST
使用 projects.locations.datasets.dicomStores.studies.setBlobStorageSettings
方法。
- 在研究级别更改 DICOM 实例的存储类别。
在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID
:您的 Google Cloud 项目的 IDLOCATION
:数据集位置DATASET_ID
: DICOM 存储区的父数据集DICOM_STORE_ID
:DICOM 存储区 IDSTUDY_INSTANCE_UID
:研究实例唯一标识符STORAGE_CLASS
:来自STANDARD
、NEARLINE
、COLDLINE
和ARCHIVE
的 DICOM 存储区中的 DICOM 对象的存储类别
请求 JSON 正文:
{ "blobStorageSettings": { "blob_storage_class": "STORAGE_CLASS" } }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为
request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:cat > request.json << 'EOF' { "blobStorageSettings": { "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/dicomWeb/studies/STUDY_INSTANCE_UID:setBlobStorageSettings"PowerShell
将请求正文保存在名为
request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:@' { "blobStorageSettings": { "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/dicomWeb/studies/STUDY_INSTANCE_UID:setBlobStorageSettings" | 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 文件的列表。
过滤器文件中的每一行定义研究、系列或实例,并采用 /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。
根据需要修改导出的文件,并将其用作过滤器文件。
setBlobStorageSettings
方法需要过滤器文件在 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
传递过滤器文件
REST
使用
projects.locations.datasets.dicomStores.studies.setBlobStorageSettings
方法在 DICOM 存储区级层更改过滤器文件中所有实例的存储类别。在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID
:您的 Google Cloud 项目的 IDLOCATION
:数据集位置DATASET_ID
: DICOM 存储区的父数据集DICOM_STORE_ID
:DICOM 存储区 IDSTORAGE_CLASS
:来自STANDARD
、NEARLINE
、COLDLINE
和ARCHIVE
的 DICOM 存储区中的 DICOM 对象的存储类别BUCKET/DIRECTORY
请求 JSON 正文:
{ "filter_config": { "resource_paths_gcs_uri: "gs://BUCKET/DIRECTORY" } "blobStorageSettings": { "blob_storage_class": "STORAGE_CLASS" } }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为
request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:cat > request.json << 'EOF' { "filter_config": { "resource_paths_gcs_uri: "gs://BUCKET/DIRECTORY" } "blobStorageSettings": { "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:setBlobStorageSettings"PowerShell
将请求正文保存在名为
request.json
的文件中。在终端中运行以下命令,在当前目录中创建或覆盖此文件:@' { "filter_config": { "resource_paths_gcs_uri: "gs://BUCKET/DIRECTORY" } "blobStorageSettings": { "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:setBlobStorageSettings" | 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 实例的存储类别
使用 getStorageInfo
方法
以下示例展示了如何查看 DICOM 实例的存储类别。
REST
使用projects.locations.datasets.dicomStores.dicomWeb.studies.series.instances.getStorageInfo
方法。
在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID
:您的 Google Cloud 项目的 IDLOCATION
:数据集位置DATASET_ID
: DICOM 存储区的父数据集DICOM_STORE_ID
:DICOM 存储区 IDSTUDY_INSTANCE_UID
:研究实例唯一标识符SERIES_INSTANCE_UID
:系列实例唯一标识符INSTANCE_UID
:实例唯一标识符
如需发送请求,请选择以下方式之一:
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/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID:getStorageInfo"
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/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID:getStorageInfo" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
在 BigQuery 中查询导出的 DICOM 元数据
您还可以将 DICOM 元数据导出到 BigQuery,并查询 BigQuery 数据集以查看 DICOM 实例的存储类别。
例如,您可以运行以下查询来查看 BigQuery 数据集中所有实例的研究实例 UID、系列实例 UID、实例 UID、blob 存储空间大小和 blob 存储类别:
SELECT StudyInstanceUID,SeriesInstanceUID,SOPInstanceUID,BlobStorageSize,StorageClass FROM PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE LIMIT 1000