本頁說明如何使用不同的儲存空間類別,在 Cloud Healthcare API 中管理 DICOM 資料。選擇合適的儲存空間類別,有助於降低成本,並符合資料保留的法規要求。
本頁面適用於熟悉 DICOM 和 Cloud Healthcare API 的技術人員。
總覽
DICOM 儲存空間級別的運作方式與 Cloud Storage 儲存空間級別類似,可根據您存取資料的頻率和儲存時間長度,提供不同的成本和效能特性。如要進一步瞭解各個儲存空間級別,請參閱類別說明。
您可以視存取物件的頻率或物件的保留時間,變更 DICOM 物件的儲存空間級別。例如:
- 您可以將不常存取的 DICOM 影像從 Standard 儲存空間移至 Nearline 或 Coldline 儲存空間,以節省帳單費用。
- 您可以將因法律因素需要保留的病患資料移至 Archive 儲存空間,這是最便宜且最耐用的儲存空間級別。
可用的 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
複製要求內文並開啟方法參考資料頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。將要求內文貼到這項工具中,並填妥其他必填欄位,然後按一下「Execute」(執行)。
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
- 兩個不同的系列,且系列執行個體 UID 在研究
1.666.333.111
中分別為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 bucket 名稱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
開啟方法參考頁面。系統會在頁面右側開啟 APIs 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 資料表