本页面介绍了如何使用 Cloud Healthcare API 的 DICOMweb 实现来存储和管理 DICOM 图片数据。
如需详细了解 Cloud Healthcare API 如何实现各种 DICOMweb REST 服务,请参阅 DICOM 一致性声明。
Cloud Healthcare API 中的 DICOMweb 实现仅支持 REST,不支持 RPC。
安装 Cloud Healthcare API DICOMweb CLI
本页面上的一些示例使用 Cloud Healthcare API DICOMweb CLI,这是一个开源工具,简化了与 DICOMweb 服务器互动。该工具提供了用于存储、检索、删除和搜索 DICOM 文件的功能。该工具的 GitHub 页面包含其他信息,例如详细的安装要求以及自定义工具的方法。
该工具使用 Python 运行。如需了解如何在 Google Cloud 上设置 Python,请参阅设置 Python 开发环境。
设置 Python 后,您可以使用 Pip 安装该工具:
pip install https://github.com/GoogleCloudPlatform/healthcare-api-dicomweb-cli/archive/v1.0.zip
要使用该工具,您必须向 Google Cloud 服务器进行身份验证。您可以使用以下任一方法:
- 设置
GOOGLE_APPLICATION_CREDENTIALS
环境变量 - 使用
gcloud auth application-default login
通过 Google Cloud CLI 进行身份验证
配置任一选项后,该工具会自动检测您的凭据。
存储 DICOM 数据
存储 DICOM 数据之前,您需要创建 DICOM 存储区。
Cloud Healthcare API 在存储 DICOM 数据时实现了存储事务 RESTful Web 服务。如需了解详情,请参阅 Cloud Healthcare API DICOM 一致性声明中的存储事务。
您可以使用以下方法存储 DICOM 数据。在这两种情况下,您都必须在请求中传递 application/dicom
Accept 标头。
- 存储 DICOM 实例(通常是一个
.dcm
文件)。 使用 JPEG 文件存储 DICOM JSON 元数据。
使用 JPEG 文件存储 DICOM JSON 元数据的所有请求都是分段消息,通过其
Content-Type
的multipart/related
部分指定。Content-Type
的multipart/related
部分表示请求由请求完成后合并的分段数据组成。每组数据必须使用边界(由Content-Type
的boundary
部分指定)来分隔。
以下示例展示了如何将实例存储在 DICOM 存储区。如需了解详情,请参阅 projects.locations.datasets.dicomStores.storeInstances
。
存储 DICOM 实例
以下示例展示了如何存储 DICOM 实例。如需了解详情,请参阅 projects.locations.datasets.dicomStores.storeInstances
。
REST
在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID
:您的 Google Cloud 项目的 IDLOCATION
:数据集位置DATASET_ID
: DICOM 存储区的父数据集DICOM_STORE_ID
:DICOM 存储区 IDDICOM_INSTANCE_FILE
:本地机器上以.dcm
后缀结尾的 DICOM 实例文件的路径
如需发送请求,请选择以下方式之一:
curl
执行以下命令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/dicom" \
--data-binary @DICOM_INSTANCE_FILE \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies"
PowerShell
执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-InFile DICOM_INSTANCE_FILE `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies" | Select-Object -Expand Content
Go
Java
Node.js
Python
指定用于存储 DICOM 实例的存储类别(预览版)
默认情况下,projects.locations.datasets.dicomStores.storeInstances
方法将 DICOM 实例存储在采用标准存储类别的 DICOM 存储区中。从本地机器存储 DICOM 对象时,您可以设置存储类别。
如需了解详情,请参阅更改 DICOM 存储类别。
以下示例展示了如何在存储来自本地机器的 DICOM 对象时指定存储类别。
curl
使用 projects.locations.datasets.dicomStores.storeInstances
方法。在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID
:您的 Google Cloud 项目的 IDLOCATION
:数据集位置DATASET_ID
: DICOM 存储区的父数据集DICOM_STORE_ID
:DICOM 存储区 IDDICOM_INSTANCE_FILE
:本地机器上以.dcm
后缀结尾的 DICOM 实例文件的路径STORAGE_CLASS
: DICOM 存储区中 DICOM 实例的存储类别(来自STANDARD
、NEARLINE
、COLDLINE
和ARCHIVE
)
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/dicom" \ -H "Storage-Class: STORAGE_CLASS" --data-binary @DICOM_INSTANCE_FILE \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies"
如果请求成功,则服务器会返回响应:
<NativeDicomModel> <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL"> <Value number="1">https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID</Value> </DicomAttribute> <DicomAttribute tag="00081199" vr="SQ" keyword="ReferencedSOPSequence"> <Item number="1"> <DicomAttribute tag="00081150" vr="UI" keyword="ReferencedSOPClassUID"> <Value number="1">SOP_CLASS_UID</Value> </DicomAttribute> <DicomAttribute tag="00081155" vr="UI" keyword="ReferencedSOPInstanceUID"> <Value number="1">SOP_INSTANCE_UID</Value> </DicomAttribute> <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL"> <Value number="1">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</Value> </DicomAttribute> </Item> </DicomAttribute> </NativeDicomModel>
PowerShell
使用 projects.locations.datasets.dicomStores.storeInstances
方法。
在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID
:您的 Google Cloud 项目的 IDLOCATION
:数据集位置DATASET_ID
: DICOM 存储区的父数据集DICOM_STORE_ID
:DICOM 存储区 IDDICOM_INSTANCE_FILE
:本地机器上以.dcm
后缀结尾的 DICOM 实例文件的路径STORAGE_CLASS
: DICOM 存储区中 DICOM 实例的存储类别(来自STANDARD
、NEARLINE
、COLDLINE
和ARCHIVE
)
$cred = gcloud auth application-default print-access-token $headers = @{ "Authorization" = "Bearer $cred"; "Storage-Class" = "STORAGE_CLASS" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/dicom" ` -InFile DCM_FILE.dcm ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies" | Select-Object -Expand Content
如果请求成功,服务器将以 JSON 格式返回响应:
<NativeDicomModel> <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL"> <Value number="1">https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID</Value> </DicomAttribute> <DicomAttribute tag="00081199" vr="SQ" keyword="ReferencedSOPSequence"> <Item number="1"> <DicomAttribute tag="00081150" vr="UI" keyword="ReferencedSOPClassUID"> <Value number="1">SOP_CLASS_UID</Value> </DicomAttribute> <DicomAttribute tag="00081155" vr="UI" keyword="ReferencedSOPInstanceUID"> <Value number="1">SOP_INSTANCE_UID</Value> </DicomAttribute> <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL"> <Value number="1">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</Value> </DicomAttribute> </Item> </DicomAttribute> </NativeDicomModel>
基于 JSON 元数据和 JPEG 图片创建 DICOM 实例
Cloud Healthcare API 可以使用 JSON 元数据文件和 JPEG 文件创建 DICOM 实例。如果您不想自行执行 DICOM 解析和序列化,则可以基于 JSON 元数据和 JPEG 文件创建 DICOM 实例,因为 Cloud Healthcare API 可以为您完成这些任务。
存储此数据的 HTTP 请求必须在请求的 Content-Type
中添加以下内容:
multipart/related
媒体类型- MIME 类型
application/dicom+json
boundary
分隔符
以下示例展示了如何使用 JPEG 文件存储 JSON 元数据文件。
curl
以下示例假定您已有 JPEG 图片。
使用 JPEG 图片存储 JSON 元数据文件包括以下三个步骤:
- 创建一个文件,其中包含内有 JPEG 图片的 DICOM 实例的 JSON 表示法。下面提供了模板文件。
创建三个边界文件:
opening.file
:包含 JSON 元数据文件的起始边界middle.file
:包含 JPEG 图片的中间边界closing.file
:包含消息所有部分的结束边界
通过在边界文件中包含 JSON 元数据文件和 JPEG 图片,创建一个名为
multipart-request.file
的文件。
请注意:JSON 元数据模板文件中默认提供以下值:
- 传输语法 UID (
1.2.840.10008.1.2.4.50
) 将传输语法指定为 JPEG Baseline。大多数 JPEG 图片采用 JPEG Baseline 格式。光度可解释性值 (YBR_FULL_422
) 表示图片是彩色的,而不是灰度模式。 BulkDataUri
是图片的任意描述符,在模板中设置为jpeg-image
。在创建图片边界时会用到此值。
SOP_CLASS_UID、SOP_INSTANCE_UID、STUDY_INSTANCE_UID 和 SERIES_INSTANCE_UID 的值可以是以句点分隔的任何数值。DICOM 会为实例、患者、研究和系列使用标识符层次结构,因此请为这些变量选择逻辑标识符集。
将 SOP Class UID 替换为标准 SOP 类中的某个值,以指定存储的图片类型。
将 Rows 替换为 JPEG 图片的垂直高度(以像素为单位)。将 Columns 替换为 JPEG 图片的水平宽度(以像素为单位)。
请完成以下步骤:
将以下文本保存到名为
instance.json
的文件中,并在指定时替换变量。[{ "00020010":{"vr":"UI","Value":["1.2.840.10008.1.2.4.50"]}, "00080005":{"vr":"CS","Value":["ISO_IR 192"]}, "00080016":{"vr":"UI","Value":["SOP_CLASS_UID"]}, "00080018":{"vr":"UI","Value":["SOP_INSTANCE_UID"]}, "0020000D":{"vr":"UI","Value":["STUDY_INSTANCE_UID"]}, "0020000E":{"vr":"UI","Value":["SERIES_INSTANCE_UID"]}, "00280002":{"vr":"US","Value":[3]}, "00280004":{"vr":"CS","Value":["YBR_FULL_422"]}, "00280006":{"vr":"US","Value":[0]}, "00280008":{"vr":"IS","Value":[1]}, "00280010":{"vr":"US","Value":[Rows]}, "00280011":{"vr":"US","Value":[Columns]}, "00280100":{"vr":"US","Value":[8]}, "00280101":{"vr":"US","Value":[8]}, "00280102":{"vr":"US","Value":[7]}, "00280103":{"vr":"US","Value":[0]}, "7FE00010":{"vr":"OB","BulkDataURI":"jpeg-image"} }]
如需创建起始(用于 JSON 元数据)、中间(针对 JPEG 图片)和结束边界,请运行以下命令:
echo -ne "--DICOMwebBoundary\r\nContent-Type: application/dicom+json\r\n\r\n" > opening.file echo -ne "\r\n--DICOMwebBoundary\r\nContent-Location: jpeg-image\r\nContent-Type: image/jpeg; transfer-syntax=1.2.840.10008.1.2.4.50\r\n\r\n" > middle.file echo -ne "\r\n--DICOMwebBoundary--" > closing.file
将 JPEG 图片封装在中间和结束边界内。您发送到 Cloud Healthcare API 的输出文件称为
multipart-request.file
:cat opening.file instance.json middle.file image.jpg closing.file > multipart-request.file
发出
POST
请求并指定以下信息:- 父数据集的名称
- DICOM 存储区的名称
multipart-request.file
文件- 访问令牌
以下示例展示了使用 curl
的 POST
请求。
curl -X POST \ -H "Content-Type: multipart/related; type=\"application/dicom+json\"; boundary=DICOMwebBoundary" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies \ --data-binary @multipart-request.file
如果请求成功,服务器将以 XML 格式返回响应:
<NativeDicomModel> <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL"> <Value number="1">https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID</Value> </DicomAttribute> <DicomAttribute tag="00081199" vr="SQ" keyword="ReferencedSOPSequence"> <Item number="1"> <DicomAttribute tag="00081150" vr="UI" keyword="ReferencedSOPClassUID"> <Value number="1">SOP_CLASS_UID</Value> </DicomAttribute> <DicomAttribute tag="00081155" vr="UI" keyword="ReferencedSOPInstanceUID"> <Value number="1">SOP_INSTANCE_UID</Value> </DicomAttribute> <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL"> <Value number="1">https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID</Value> </DicomAttribute> </Item> </DicomAttribute> </NativeDicomModel>
使用 DICOMweb CLI
以下示例展示了如何使用 Cloud Healthcare API DICOMweb CLI 存储一个或多个 DICOM 实例。DICOMweb CLI GitHub 代码库中提供了更多示例。
存储单个 DICOM 实例:
dcmweb \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ store DCM_FILE
如果请求成功,则服务器会返回类似于以下示例的响应:
TIMESTAMP -- DCM_FILE.dcm uploaded as https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID TIMESTAMP -- INSTANCE_UID TIMESTAMP -- Transferred SIZE in COUNT files
使用通配符并行存储多个文件:
以下示例展示了如何从当前工作目录定期并行存储多个 DICOM 文件。要并行存储文件,请添加 -m
标志。
dcmweb -m \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ store "./**.dcm"
如果请求成功,则服务器会返回类似于以下示例的响应:
TIMESTAMP -- DCM_FILE_1.dcm uploaded as https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID TIMESTAMP -- INSTANCE_UID TIMESTAMP -- DCM_FILE_2.dcm uploaded as https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID TIMESTAMP -- INSTANCE_UID TIMESTAMP -- DCM_FILE_3.dcm uploaded as https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID TIMESTAMP -- INSTANCE_UID ... TIMESTAMP -- Transferred SIZE in COUNT files
搜索 DICOM 数据
您可以搜索研究、系列、实例和框架。以下示例展示了搜索交易的实现,以在 DICOM 存储区中搜索实例。如需了解详情,请参阅 Cloud Healthcare API DICOM 一致性声明中的搜索事务。
以下示例展示了如何在 DICOM 存储区中搜索实例。如需了解详情,请参阅 projects.locations.datasets.dicomStores.searchForInstances
。
REST
在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID
:您的 Google Cloud 项目的 IDLOCATION
:数据集位置DATASET_ID
: DICOM 存储区的父数据集DICOM_STORE_ID
:DICOM 存储区 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/dicomStores/DICOM_STORE_ID/dicomWeb/instances"
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/dicomStores/DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content
API Explorer
打开方法参考页面。API Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。填写所有必填字段,然后点击执行。
您应该收到类似以下内容的 JSON 响应:
Go
Java
Node.js
Python
使用 DICOM 标记搜索
您可以以查询参数的形式,通过向请求附加 DICOM 标记来优化搜索。例如,您可能希望搜索包含患者姓名的研究。
与前面的示例一样,以下示例显示了搜索事务的实现,以在 DICOM 存储区中搜索研究。但是,这些示例还演示了如何搜索患者姓名为“Sally Zhang”的研究。
以下示例展示了列出患者姓名的 DICOM 实例元数据的部分内容:
...
{
"vr": "PN",
"Value": [
{
"Alphabetic": "Sally Zhang"
}
]
}
...
要在 DICOM 存储区中搜索与患者相关的研究,请在请求中添加查询参数,并在其中搜索 PatientName
DICOM 标记。如需查看 Cloud Healthcare API 中支持的搜索参数列表,请参阅搜索事务文档。
REST
在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID
:您的 Google Cloud 项目的 IDLOCATION
:数据集位置DATASET_ID
: DICOM 存储区的父数据集DICOM_STORE_ID
:DICOM 存储区 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/dicomStores/DICOM_STORE_ID/dicomWeb/studies?PatientName=Sally%20Zhang"
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/dicomStores/DICOM_STORE_ID/dicomWeb/studies?PatientName=Sally%20Zhang" | Select-Object -Expand Content
API Explorer
打开方法参考页面。API Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。填写所有必填字段,然后点击执行。
您应该收到类似以下内容的 JSON 响应:
Go
Java
Node.js
Python
使用 DICOMweb CLI
以下示例展示了如何使用 Cloud Healthcare API DICOMweb CLI 搜索 DICOM 存储区中的实例。DICOMweb CLI GitHub 代码库中提供了更多示例(包括如何过滤搜索)。
dcmweb \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ search instances
如果请求成功,服务器将以 JSON 格式返回响应:
[ { "00080005":{ "vr":"CS", "Value":[ "CODE_STRING" ] }, "00080016":{ "vr":"UI", "Value":[ "UNIQUE_IDENTIFIER" ] }, "00080018":{ "vr":"UI", "Value":[ "UNIQUE_IDENTIFIER" ] }, "00080020":{ "vr":"DA", "Value":[ "DATE_TIME" ] }, "00080030":{ "vr":"TM", "Value":[ "TIME" ] }, "00080060":{ "vr":"CS", "Value":[ "CODE_STRING" ] }, "0008103E":{ "vr":"LO", "Value":[ "LONG_STRING" ] }, "00100010":{ "vr":"PN", "Value":[ { "Alphabetic":"Anonymized" } ] }, }, ... ]
检索 DICOM 数据
Cloud Healthcare API 实现了检索事务,用于检索 DICOM 存储区中的研究、系列、实例和框架。
如需了解详情,请参阅 Cloud Healthcare API DICOM 一致性声明中的检索事务。
检索研究
以下示例演示了如何检索研究。如需了解详情,请参阅 Cloud Healthcare API DICOM 一致性声明中的 DICOM 研究/系列/实例。
指定输出文件时,请使用 .multipart
之类的扩展程序。然后,解析分段文件,以获取研究中的单个系列和实例。
如需了解详情,请参阅 projects.locations.datasets.dicomStores.studies.retrieveStudy
。
curl
如需检索研究,请发出 GET
请求并指定以下信息:
- 父数据集的名称
- DICOM 存储区的名称
- 研究唯一标识符 (UID)
- 输出文件
- 访问令牌
以下示例展示了使用 curl
的 GET
请求。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Accept: multipart/related; type=application/dicom; transfer-syntax=*" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID" \ --output FILENAME.multipart
如果请求成功,系统会将 DICOM 文件写入您的机器。
PowerShell
如需检索研究,请发出 GET
请求并指定以下信息:
- 父数据集的名称
- DICOM 存储区的名称
- 研究唯一标识符 (UID)
- 输出文件
- 访问令牌
以下示例展示了使用 Windows PowerShell 的 GET
请求。
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred"; Accept = "multipart/related; type=application/dicom; transfer-syntax=*" } Invoke-WebRequest ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID" | Select-Object -Expand Content -OutFile FILENAME.multipart `
如果请求成功,系统会将 DICOM 文件写入您的机器。
Go
Java
Node.js
Python
检索实例
以下示例显示了如何检索实例。如需了解详情,请参阅 Cloud Healthcare API DICOM 一致性声明中的 DICOM 实例。
如果您要检索实例,则可以使用 Accept: application/dicom
HTTP 标头避免解析分段边界。如果添加 transfer-syntax=*
,系统会返回文件最初存储时采用的格式,以避免转码。
如需了解详情,请参阅 projects.locations.datasets.dicomStores.studies.series.instances.retrieveInstance
。
curl
如需检索实例,请发出 GET
请求并指定以下信息:
- 父数据集的名称
- DICOM 存储区的名称
- 研究唯一标识符 (UID)
- 系列 UID、实例 UID
- 输出文件名
- 访问令牌
以下示例展示了使用 curl
的 GET
请求。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Accept: application/dicom; transfer-syntax=*" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID" \ --output FILENAME.dcm
如果请求成功,系统会将 DICOM 文件写入您的机器。
PowerShell
如需检索实例,请发出 GET
请求并指定以下信息:
- 父数据集的名称
- DICOM 存储区的名称
- 研究唯一标识符 (UID)
- 系列 UID
- 实例 UID
- 输出文件名
- 访问令牌
以下示例展示了使用 Windows PowerShell 的 GET
请求。
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred"; Accept = "application/dicom; transfer-syntax=*" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID" -OutFile FILENAME.dcm `
如果请求成功,系统会将 DICOM 文件写入您的机器。
Go
Java
Node.js
Python
检索消费者图片格式
以下示例展示了如何使用渲染资源的 Cloud Healthcare API 实现来检索 JPEG 或 PNG 等消费者图片格式。如需了解详情,请参阅 Cloud Healthcare API DICOM 一致性声明中的渲染资源。
如需了解详情,请参阅 projects.locations.datasets.dicomStores.studies.series.instances.retrieveRendered
。
curl
如需检索图片,请发出 GET
请求并指定以下信息:
- 父数据集的名称
- DICOM 存储区的名称
- 研究唯一标识符 (UID)
- 系列 UID
- 实例 UID
- 输出文件名
- 访问令牌
以下示例展示了如何使用 curl
通过 GET
请求检索 PNG 图片。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Accept: image/png" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/rendered" \ --output FILENAME.png
如果请求成功,则将 PNG 文件写入您的计算机。
PowerShell
如需检索图片,请发出 GET
请求并指定以下信息:
- 父数据集的名称
- DICOM 存储区的名称
- 研究唯一标识符 (UID)
- 系列 UID
- 实例 UID
- 输出文件名
- 访问令牌
以下示例展示了如何使用 Windows PowerShell 通过 GET
请求检索 PNG 图片。
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred"; Accept = "image/png" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/rendered" -OutFile FILENAME.png `
如果请求成功,则将 PNG 文件写入您的计算机。
Go
Java
Node.js
Python
检索元数据
您可以检索研究或系列中所有实例的元数据。以下示例演示了如何检索实例的元数据。如需了解详情,请参阅 Cloud Healthcare API DICOM 一致性声明中的元数据资源。
如需了解详情,请参阅 projects.locations.datasets.dicomStores.studies.series.instances.retrieveMetadata
。
调用 retrieveMetadata
时,该方法会返回使用 includefield=all
查询参数搜索实例时会返回的一组字段。如果您的应用对延迟敏感,并且您希望检索一组特定字段的元数据(而不是所有字段),请不要调用 retrieveMetadata
。请改为调用其中一个 searchForInstances
方法并指定字段。响应将是一组较小的字段,而一组较小字段对于对延迟敏感的应用非常有用。
默认情况下,retrieveMetadata
会返回 JSON 响应。如需返回 XML 响应,请在请求中传递 Accept: multipart/related; type="application/dicom+xml"
HTTP 标头。
REST
在使用任何请求数据之前,请先进行以下替换:
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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/metadata"
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/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/metadata" | Select-Object -Expand Content
API Explorer
打开方法参考页面。API Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。填写所有必填字段,然后点击执行。
您应该收到类似以下内容的 JSON 响应:
使用 DICOMweb CLI
以下示例展示了如何使用 Cloud Healthcare API DICOMweb CLI 检索 DICOM 存储区中的所有实例,并将其保存到机器的当前工作目录中。DICOMweb CLI GitHub 代码库中提供了更多示例。
dcmweb \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ retrieve
如果请求成功,则服务器会返回类似于如下所示的响应,并且 DICOM 文件会写入您的计算机:
TIMESTAMP -- Saving files into ./ TIMESTAMP -- Transferred SIZE in COUNT files
删除研究、系列或实例
Cloud Healthcare API 实现了一项专有 Web 服务,用于删除 DICOM 研究、系列和实例。此服务不属于 DICOMweb 标准服务。如需了解详情,请参阅 Cloud Healthcare API DICOM 一致性声明中的删除部分。
针对研究和系列的删除请求会返回长时间运行的操作。操作完成后,研究或系列中的所有实例都将被删除。
删除对实例的请求不会返回长时间运行的操作,而是返回一个空的响应正文,如下所示:
{}
以下示例展示了如何删除 DICOM 研究。如需了解详情,请参阅 projects.locations.datasets.dicomStores.studies.delete
。
REST
删除此研究。
在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID
:您的 Google Cloud 项目的 IDLOCATION
:数据集位置DATASET_ID
: DICOM 存储区的父数据集DICOM_STORE_ID
:DICOM 存储区 IDSTUDY_INSTANCE_UID
:研究实例唯一标识符
如需发送请求,请选择以下方式之一:
curl
执行以下命令:
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID"PowerShell
执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID" | Select-Object -Expand ContentAPI Explorer
打开方法参考页面。API Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。填写所有必填字段,然后点击执行。
您应该收到类似以下内容的 JSON 响应:
获取长时间运行的操作的状态。
在使用任何请求数据之前,请先进行以下替换:
PROJECT_ID
:您的 Google Cloud 项目的 IDLOCATION
:数据集位置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 ContentAPI Explorer
打开方法参考页面。API Explorer 面板会在页面右侧打开。您可以与此工具进行交互以发送请求。填写所有必填字段,然后点击执行。
您应该收到类似以下内容的 JSON 响应:
Go
Java
Node.js
Python
使用 DICOMweb CLI
以下示例展示了如何使用 Cloud Healthcare API DICOMweb CLI 删除研究:
dcmweb \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ delete studies/STUDY_INSTANCE_UID
如果请求成功,服务器将返回一个操作,供 CLI 工具执行删除操作,直到删除操作完成。