本頁說明如何使用不同的儲存類別,在 Cloud Healthcare API 中管理 DICOM 資料。選擇正確的儲存空間類別有助於降低成本,並符合資料保留法規要求。
本頁面適用於熟悉 DICOM 和 Cloud Healthcare API 的技術使用者。
總覽
DICOM 儲存空間級別的運作方式與 Cloud Storage 儲存空間級別類似,會根據您存取資料的頻率和儲存資料的時間長度,提供不同的成本和效能特性。如要進一步瞭解各個儲存空間級別,請參閱「類別說明」。
您可以根據存取物件的頻率或物件保留時間,變更 DICOM 物件的儲存空間級別。例如:
- 您可以將不常存取的 DICOM 圖片從 Standard Storage 移至 Nearline 或 Coldline Storage,以節省帳單費用。
- 您可以將因法規而需要保留的病患資料移至 Archive Storage,這是最便宜且最耐用的儲存空間級別。
可用的 DICOM 儲存空間級別
您可以為 DICOM 物件使用下列儲存空間類別:
- 標準 (預設)
- Nearline
- Coldline
- 封存
儲存空間級別定價
每個儲存空間級別都有專屬的定價結構,變更 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
:研究案例的專屬 IDSERIES_INSTANCE_UID
:系列叢書執行個體的專屬 IDINSTANCE_UID
:執行個體專屬 IDSTORAGE_CLASS
:DICOM 例項的儲存空間類別。只能設為STANDARD
、NEARLINE
、COLDLINE
或ARCHIVE
其中之一。
JSON 要求主體:
{ "blobStorageSettings": { "blobStorageClass": "STORAGE_CLASS" } }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為
request.json
的檔案中。在終端機中執行下列指令,在目前目錄中建立或覆寫此檔案:cat > request.json << 'EOF' { "blobStorageSettings": { "blobStorageClass": "STORAGE_CLASS" } } EOF
接著,執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"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:setBlobStorageSettings"PowerShell
將要求主體儲存在名為
request.json
的檔案中。在終端機中執行下列指令,在目前目錄中建立或覆寫此檔案:@' { "blobStorageSettings": { "blobStorageClass": "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; charset=utf-8" `
-InFile request.json `
-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:setBlobStorageSettings" | Select-Object -Expand ContentAPIs Explorer
複製要求主體並開啟方法參考頁面。系統會在頁面右側開啟 API Explorer 面板。 您可以使用這項工具來傳送要求。將要求主體貼到這項工具中,並填妥其他必填欄位,然後按一下「執行」。
OPERATION_ID
的值。您需要在下一個步驟中使用這個值。使用
projects.locations.datasets.operations.get
方法取得長時間執行作業的狀態。使用任何要求資料之前,請先替換以下項目:
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 Content"done": true
,表示 LRO 已完成。
使用篩選器檔案變更多個物件的儲存空間級別
以下各節將說明如何建立及使用篩選器檔案,根據篩選條件變更 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。
舉例來說,以下查詢顯示如何串連研究、系列和例項 UID,以符合篩選器檔案格式規定:
SELECT CONCAT ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID) FROM [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
選用:如果查詢傳回的結果集超過最大回應大小,請在 BigQuery 中將查詢結果儲存至新的目的地資料表。
將查詢結果儲存至檔案,並匯出至 Cloud Storage。如果您在步驟 2 中將查詢結果儲存至新的目的地資料表,請參閱「匯出資料表資料」,將資料表內容匯出至 Cloud Storage。
視需要編輯匯出的檔案,並將檔案納入要求,以便變更多個 DICOM 物件的儲存空間類別。
手動建立篩選器檔案
如要手動建立篩選器檔案,請按照下列步驟操作:
- 建立包含要篩選 DICOM 物件的篩選器檔案。
- 將篩選器檔案上傳至 Cloud Storage。如需操作說明,請參閱「從檔案系統上傳物件」一文。
使用篩選器檔案
以下範例說明如何在變更 DICOM 物件的儲存空間級別時套用篩選器檔案。
REST
使用
projects.locations.datasets.dicomStores.studies.series.instances.setBlobStorageSettings
方法,變更篩選器檔案中 DICOM 例項的儲存空間類別。使用任何要求資料之前,請先替換以下項目:
PROJECT_ID
: Google Cloud 專案的 IDLOCATION
:資料集位置DATASET_ID
:DICOM 儲存庫的父資料集DICOM_STORE_ID
:DICOM 儲存庫 IDSTORAGE_CLASS
:DICOM 物件的儲存空間類別。只能設為STANDARD
、NEARLINE
、COLDLINE
或ARCHIVE
其中之一。CLOUD_STORAGE_BUCKET
:含有篩選器檔案的 Cloud Storage 值區名稱FILTER_FILE_PATH
:Cloud Storage 值區中篩選器檔案的完整 URI
JSON 要求主體:
{ "blobStorageSettings": { "blobStorageClass": "STORAGE_CLASS" }, "filterConfig": { "resourcePathsGcsUri": "gs://CLOUD_STORAGE_BUCKET/FILTER_FILE_PATH" } }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為
request.json
的檔案中。在終端機中執行下列指令,在目前目錄中建立或覆寫此檔案:cat > request.json << 'EOF' { "blobStorageSettings": { "blobStorageClass": "STORAGE_CLASS" }, "filterConfig": { "resourcePathsGcsUri": "gs://CLOUD_STORAGE_BUCKET/FILTER_FILE_PATH" } } 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:setBlobStorageSettings"PowerShell
將要求主體儲存在名為
request.json
的檔案中。在終端機中執行下列指令,在目前目錄中建立或覆寫此檔案:@' { "blobStorageSettings": { "blobStorageClass": "STORAGE_CLASS" }, "filterConfig": { "resourcePathsGcsUri": "gs://CLOUD_STORAGE_BUCKET/FILTER_FILE_PATH" } } '@ | 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:setBlobStorageSettings" | Select-Object -Expand ContentOPERATION_ID
的值。您需要在下一個步驟中使用這個值。使用
projects.locations.datasets.operations.get
方法取得長時間執行作業的狀態。使用任何要求資料之前,請先替換以下項目:
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 Content"done": true
,表示 LRO 已完成。
查看 DICOM 物件的儲存空間級別
您可以在研究、系列或例項層級查看 DICOM 物件的儲存空間級別。
下列各節說明如何查看 DICOM 例項的儲存類別。
取得 DICOM 物件的儲存空間級別資訊
以下範例說明如何使用 instances.getStorageInfo
方法查看 DICOM 物件的儲存類別。
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:getStorageInfo"
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:getStorageInfo" | Select-Object -Expand Content
APIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 API Explorer 面板。 您可以使用這項工具來傳送要求。完成所有必填欄位,然後按一下「執行」。
您應該會收到如下的 JSON 回應:
在 BigQuery 中查詢已匯出的 DICOM 中繼資料
您可以將 DICOM 中繼資料匯出至 BigQuery,然後執行查詢,查看匯出的 DICOM 物件的儲存類別。
以下查詢說明如何從 BigQuery 資料集擷取最多 1,000 個 DICOM 例項的研究例項 UID、系列叢集例項 UID、例項 UID、儲存空間大小和儲存空間類別:
SELECT StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID, BlobStorageSize, StorageClass FROM PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE LIMIT 1000
更改下列內容:
PROJECT_ID
: Google Cloud 專案的 IDBIGQUERY_DATASET
:包含已匯出 DICOM 中繼資料的資料表上層 BigQuery 資料集BIGQUERY_TABLE
:包含匯出的 DICOM 中繼資料的 BigQuery 資料表