DICOM 儲存空間級別

本頁說明如何使用不同的儲存類別,在 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

  1. 使用 projects.locations.datasets.dicomStores.studies.series.instances.setBlobStorageSettings 方法變更 DICOM 例項的儲存空間類別。

    使用任何要求資料之前,請先替換以下項目:

    • PROJECT_ID: Google Cloud 專案的 ID
    • LOCATION:資料集位置
    • DATASET_ID:DICOM 儲存庫的父資料集
    • DICOM_STORE_ID:DICOM 儲存庫 ID
    • STUDY_INSTANCE_UID:研究案例的專屬 ID
    • SERIES_INSTANCE_UID:系列叢書執行個體的專屬 ID
    • INSTANCE_UID:執行個體專屬 ID
    • STORAGE_CLASS:DICOM 例項的儲存空間類別。只能設為 STANDARDNEARLINECOLDLINEARCHIVE 其中之一。

    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 Content

    APIs Explorer

    複製要求主體並開啟方法參考頁面。系統會在頁面右側開啟 API Explorer 面板。 您可以使用這項工具來傳送要求。將要求主體貼到這項工具中,並填妥其他必填欄位,然後按一下「執行」

    輸出內容如下。回應會包含長時間執行作業 (LRO) 的 ID。如果方法呼叫可能需要額外時間才能完成,系統就會傳回長時間執行的作業。請記下 OPERATION_ID 的值。您需要在下一個步驟中使用這個值。

  2. 使用 projects.locations.datasets.operations.get 方法取得長時間執行作業的狀態。

    使用任何要求資料之前,請先替換以下項目:

    • 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/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.456567.890
  • 在研究 1.888.999.222 和系列 123.456 中,有三個個別例項,其例項 ID 分別為 111222333

使用 BigQuery 建立篩選器檔案

如要使用 BigQuery 建立篩選器檔案,您必須先將 DICOM 儲存庫的中繼資料匯出至 BigQuery。匯出的中繼資料會顯示 DICOM 儲存庫中 DICOM 資料的研究、系列和執行個體 UID。

匯出中繼資料後,請完成下列步驟:

  1. 執行查詢,傳回要新增至篩選器檔案的研究、系列和例項的 UID。

    舉例來說,以下查詢顯示如何串連研究、系列和例項 UID,以符合篩選器檔案格式規定:

    SELECT CONCAT
        ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID)
    FROM
        [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
  2. 選用:如果查詢傳回的結果集超過最大回應大小,請在 BigQuery 中將查詢結果儲存至新的目的地資料表

  3. 將查詢結果儲存至檔案,並匯出至 Cloud Storage。如果您在步驟 2 中將查詢結果儲存至新的目的地資料表,請參閱「匯出資料表資料」,將資料表內容匯出至 Cloud Storage。

  4. 視需要編輯匯出的檔案,並將檔案納入要求,以便變更多個 DICOM 物件的儲存空間類別。

手動建立篩選器檔案

如要手動建立篩選器檔案,請按照下列步驟操作:

  1. 建立包含要篩選 DICOM 物件的篩選器檔案。
  2. 將篩選器檔案上傳至 Cloud Storage。如需操作說明,請參閱「從檔案系統上傳物件」一文。

使用篩選器檔案

以下範例說明如何在變更 DICOM 物件的儲存空間級別時套用篩選器檔案。

REST

  1. 使用 projects.locations.datasets.dicomStores.studies.series.instances.setBlobStorageSettings 方法,變更篩選器檔案中 DICOM 例項的儲存空間類別。

    使用任何要求資料之前,請先替換以下項目:

    • PROJECT_ID: Google Cloud 專案的 ID
    • LOCATION:資料集位置
    • DATASET_ID:DICOM 儲存庫的父資料集
    • DICOM_STORE_ID:DICOM 儲存庫 ID
    • STORAGE_CLASS:DICOM 物件的儲存空間類別。只能設為 STANDARDNEARLINECOLDLINEARCHIVE 其中之一。
    • 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 Content
    輸出內容如下。回應會包含長時間執行作業 (LRO) 的 ID。如果方法呼叫可能需要額外時間才能完成,系統就會傳回長時間執行的作業。請記下 OPERATION_ID 的值。您需要在下一個步驟中使用這個值。

  2. 使用 projects.locations.datasets.operations.get 方法取得長時間執行作業的狀態。

    使用任何要求資料之前,請先替換以下項目:

    • 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/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 專案的 ID
  • LOCATION:資料集位置
  • DATASET_ID:DICOM 儲存庫的父資料集
  • DICOM_STORE_ID:DICOM 儲存庫 ID
  • STUDY_INSTANCE_UID:研究案例的專屬 ID
  • SERIES_INSTANCE_UID:系列叢書執行個體的專屬 ID
  • INSTANCE_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 專案的 ID
  • BIGQUERY_DATASET:包含已匯出 DICOM 中繼資料的資料表上層 BigQuery 資料集
  • BIGQUERY_TABLE:包含匯出的 DICOM 中繼資料的 BigQuery 資料表