本頁面說明如何使用 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 網路服務。詳情請參閱 Cloud Healthcare API DICOM 符合聲明中的「儲存交易」。
請使用下列任一方法儲存 DICOM 資料。請在要求中加入 application/dicom
Accept 標頭。
- 儲存 DICOM 執行個體:通常是
.dcm
檔案。 使用多部分 (多部分) 訊息儲存多個項目:建立多部分檔案,其中包含多個以邊界分隔的資料部分。在要求中,將
Content-Type
設為multipart/related; type=application/dicom; boundary=BOUNDARY
,其中BOUNDARY
是使用者定義的值,用於表示訊息的不同部分。如要進一步瞭解如何建立多部分訊息,請參閱 RFC 1341。使用多部分訊息儲存下列 DICOM 資料類型:
- DICOM 研究或系列包含多個執行個體。使用邊界分隔每個例項。如需操作說明,請參閱「使用多部分訊息儲存 DICOM 研究或系列」一文。
- 含有 JPEG 檔案的 DICOM JSON 中繼資料。使用邊界區隔每組資料。如需操作說明,請參閱「從 JSON 中繼資料和 JPEG 圖片建立 DICOM 例項」。
系統會從提供的中繼資料填入 SOP_CLASS_UID
、SOP_INSTANCE_UID
、STUDY_INSTANCE_UID
和 SERIES_INSTANCE_UID
值。UID 必須符合下列規定:
- 只包含以點號分隔的數值。
- 不含受保護的醫療保健記錄 (PHI)。
下列範例說明如何在 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
:本機電腦上 DICOM 例項檔案的路徑,結尾為.dcm
尾碼
如要傳送要求,請選擇以下其中一個選項:
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 研究或系列
以下範例說明如何使用多部分訊息儲存 DICOM 研究或系列,其中包含多個執行個體。
REST
使用任何要求資料之前,請先替換以下項目:
PROJECT_ID
: Google Cloud 專案的 IDLOCATION
:資料集位置DATASET_ID
:DICOM 儲存庫的父資料集DICOM_STORE_ID
:DICOM 儲存庫 IDMULTIPART_FILE
:本機上多部分檔案的路徑。檔案包含多個 DICOM 例項,每個例項之間以邊界分隔。BOUNDARY
:用於在多部分檔案中區隔 DICOM 例項的邊界
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: multipart/related; type=application/dicom; boundary=BOUNDARY" \
--data-binary @MULTIPART_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 MULTIPART_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
指定 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
:本機電腦上 DICOM 例項檔案的路徑,結尾為.dcm
尾碼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
:本機電腦上 DICOM 例項檔案的路徑,結尾為.dcm
尾碼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,可以使用 Cloud Healthcare API 執行這些工作,從 JSON 中繼資料和 JPEG 檔案建立 DICOM 例項。
儲存這項資料的 HTTP 要求必須在要求的 Content-Type
中加入下列項目:
multipart/related
媒體類型- MIME 類型
application/dicom+json
boundary
分隔符
以下範例說明如何使用 JPEG 檔案儲存 JSON 中繼資料檔案。
curl
以下範例假設您已有 JPEG 圖片。
使用 JPEG 圖片儲存 JSON 中繼資料檔案的步驟如下:
- 建立檔案,其中包含 DICOM 例項的 JSON 表示法,其中包含 JPEG 圖片。下方提供範本檔案。
建立三個邊界檔案:
opening.file
:包含 JSON 中繼資料檔案的開頭邊界middle.file
:包含 JPEG 圖片的中間邊界closing.file
:包含訊息所有部分的結束邊界
在邊界檔案中封裝 JSON 中繼資料檔案和 JPEG 圖片,建立名為
multipart-request.file
的檔案。
請注意,JSON 中繼資料範本檔案中預設提供的值如下:
- 轉移語法 UID (
1.2.840.10008.1.2.4.50
) 將轉移語法指定為 JPEG 基準。大部分 JPEG 圖片都是 JPEG 基準格式。光度解讀值 (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
APIs 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
APIs 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 儲存庫的名稱
- 研究專屬 ID (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 儲存庫的名稱
- 研究專屬 ID (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 儲存庫的名稱
- 研究專屬 ID (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 儲存庫的名稱
- 研究專屬 ID (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 儲存庫的名稱
- 研究專屬 ID (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 儲存庫的名稱
- 研究專屬 ID (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
:研究例項專屬 IDSERIES_INSTANCE_UID
:系列叢書執行個體的專屬 IDINSTANCE_UID
:執行個體專屬 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/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
APIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 API Explorer 面板。 您可以使用這項工具來傳送要求。完成所有必填欄位,然後按一下「執行」。
您應該會收到如下的 JSON 回應:
擷取大量資料
您可以在儲存的例項中,擷取特定大量資料標記的原始位元組。使用預覽方法從執行個體擷取中繼資料時,系統會針對支援的大量資料標記產生大量資料 URI (請參閱「大量資料定義」)。
詳情請參閱 projects.locations.datasets.dicomStores.studies.series.instances.bulkdata.retrieveBulkdata
。
以下範例會根據已知的大量資料代碼路徑直接建立要求網址 (不使用 retrieveMetadata
取得 BulkDataURI)。
curl
如要擷取大量資料,請發出 GET
要求並指定下列資訊:
- 父項資料集的名稱
- DICOM 儲存庫的名稱
- 研究專屬 ID (UID)
- 系列 UID
- 執行個體 UID
- 目標大量資料標記的路徑
- 在索引 i 的序列 (YYYY,YYYY) 中,標記 (XXXX,XXXX) 的路徑為「YYYYYYYY/i/XXXXXXXX」
- 輸出檔案名稱
- 存取權杖
以下範例說明如何使用 curl
透過 GET
要求擷取 DAT 檔案。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Accept: application/octet-stream; transfer-syntax=*" \ "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/bulkdata/BULKDATA_PATH" \ --output FILENAME.dat
如果要求成功,系統就會將含有執行個體原始位元組的 DAT 檔案寫入機器。
PowerShell
如要擷取大量資料,請發出 GET
要求並指定下列資訊:
- 父項資料集的名稱
- DICOM 儲存庫的名稱
- 研究專屬 ID (UID)
- 系列 UID
- 執行個體 UID
- 目標大量資料標記的路徑
- 在索引 i 的序列 (YYYY,YYYY) 中,標記 (XXXX,XXXX) 的路徑為「YYYYYYYY/i/XXXXXXXX」
- 輸出檔案名稱
- 存取權杖
以下範例說明如何使用 Windows PowerShell 透過 GET
要求擷取 DAT 檔案。
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred"; Accept = "application/octet-stream; transfer-syntax=*" } Invoke-RestMethod ` -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/bulkdata/BULKDATA_PATH" -OutFile FILENAME.DAT `
如果要求成功,系統就會將含有執行個體原始位元組的 DAT 檔案寫入機器。
使用 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 會導入專屬的網路服務,用於刪除 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
:研究例項專屬 ID
如要傳送要求,請選擇以下其中一個選項:
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 ContentAPIs 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 ContentAPIs 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 工具會輪詢該作業,直到刪除作業完成為止。