Class penyimpanan DICOM

Halaman ini menjelaskan cara mengelola data DICOM di Cloud Healthcare API menggunakan berbagai class penyimpanan. Memilih kelas penyimpanan yang tepat dapat membantu Anda mengurangi biaya dan memenuhi persyaratan peraturan untuk retensi data.

Halaman ini ditujukan untuk pengguna teknis yang sudah memahami DICOM dan Cloud Healthcare API.

Ringkasan

Kelas penyimpanan DICOM berfungsi mirip dengan kelas penyimpanan Cloud Storage, menawarkan karakteristik biaya dan performa yang berbeda berdasarkan seberapa sering Anda mengakses data dan berapa lama Anda perlu menyimpannya. Untuk mengetahui informasi selengkapnya tentang setiap kelas penyimpanan, lihat Deskripsi kelas.

Anda mungkin ingin mengubah kelas penyimpanan objek DICOM, bergantung pada seberapa sering Anda mengakses objek atau berapa lama objek perlu disimpan. Contoh:

  • Anda dapat memindahkan gambar DICOM yang jarang diakses dari penyimpanan Standard ke penyimpanan Nearline atau Coldline untuk menghemat biaya penagihan.
  • Anda dapat memindahkan data pasien yang perlu disimpan karena alasan hukum ke Archive storage, yang merupakan kelas penyimpanan termurah dan paling tahan lama.

Kelas penyimpanan DICOM yang tersedia

Anda dapat menggunakan class penyimpanan berikut untuk objek DICOM:

  • Standar (Default)
  • Nearline
  • Coldline
  • Arsipkan

Harga kelas penyimpanan

Setiap kelas penyimpanan memiliki struktur harganya sendiri. Mengubah kelas penyimpanan objek DICOM dapat memengaruhi biaya penagihan Anda. Untuk informasi selengkapnya, lihat referensi berikut:

Mengubah kelas penyimpanan untuk setiap objek DICOM

Anda dapat mengubah kelas penyimpanan objek DICOM di tingkat studi, rangkaian, atau instance.

Contoh berikut menunjukkan cara mengubah kelas penyimpanan instance DICOM.

REST

  1. Ubah kelas penyimpanan instance DICOM menggunakan metode projects.locations.datasets.dicomStores.studies.series.instances.setBlobStorageSettings.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: ID Google Cloud project Anda
    • LOCATION: lokasi set data
    • DATASET_ID: set data induk DICOM store
    • DICOM_STORE_ID: ID penyimpanan DICOM
    • STUDY_INSTANCE_UID: ID unik instance studi
    • SERIES_INSTANCE_UID: ID unik instance deret
    • INSTANCE_UID: ID unik instance
    • STORAGE_CLASS: kelas penyimpanan untuk instance DICOM. Salah satu dari STANDARD, NEARLINE, COLDLINE, atau ARCHIVE.

    Meminta isi JSON:

    {
      "blobStorageSettings": {
        "blobStorageClass": "STORAGE_CLASS"
      }
    }
    

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

    cat > request.json << 'EOF'
    {
      "blobStorageSettings": {
        "blobStorageClass": "STORAGE_CLASS"
      }
    }
    EOF

    Kemudian, jalankan perintah berikut untuk mengirim permintaan REST Anda:

    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

    Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

    @'
    {
      "blobStorageSettings": {
        "blobStorageClass": "STORAGE_CLASS"
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Kemudian jalankan perintah berikut untuk mengirim permintaan REST Anda:

    $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

    Salin isi permintaan dan buka halaman referensi metode. Panel APIs Explorer terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Tempelkan isi permintaan di alat ini, lengkapi kolom lainnya yang wajib diisi, lalu klik Jalankan.

    Output-nya adalah sebagai berikut. Respons berisi ID untuk operasi yang berjalan lama (LRO). Operasi yang berjalan lama ditampilkan saat panggilan metode mungkin memerlukan waktu tambahan untuk diselesaikan. Catat nilai OPERATION_ID. Anda memerlukan nilai ini pada langkah berikutnya.

  2. Dapatkan status operasi yang berjalan lama menggunakan metode projects.locations.datasets.operations.get.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: ID Google Cloud project Anda
    • LOCATION: lokasi set data
    • DATASET_ID: set data induk DICOM store
    • OPERATION_ID: ID yang ditampilkan dari operasi yang berjalan lama

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Jalankan perintah berikut:

    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

    Jalankan perintah berikut:

    $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
    Output-nya adalah sebagai berikut. Jika respons berisi "done": true, LRO telah selesai.

Mengubah kelas penyimpanan untuk beberapa objek menggunakan file filter

Bagian berikut menunjukkan cara membuat dan menggunakan file filter untuk mengubah class penyimpanan objek DICOM berdasarkan kriteria filter.

Persyaratan file filter

  • Setiap baris dalam file filter menentukan studi, deret, atau instance dan menggunakan format /studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID.
  • Anda dapat memangkas baris untuk menentukan tingkat tempat filter berfungsi. Misalnya, Anda dapat memilih seluruh studi dengan menentukan /studies/STUDY_INSTANCE_UID, atau Anda dapat memilih seluruh seri dengan menentukan /studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID.

Pertimbangkan file filter berikut:

/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

Contoh file filter ini berlaku untuk hal berikut:

  • Seluruh studi dengan UID instance studi sebagai 1.123.456.789
  • Dua rangkaian terpisah dengan UID instance rangkaian sebagai 123.456 dan 567.890 dalam studi 1.666.333.111
  • Tiga instance individual dengan ID instance sebagai 111, 222, dan 333 dalam studi 1.888.999.222 dan deret 123.456

Membuat file filter menggunakan BigQuery

Untuk membuat file filter menggunakan BigQuery, Anda harus mengekspor metadata penyimpanan DICOM ke BigQuery terlebih dahulu. Metadata yang diekspor menampilkan UID studi, rangkaian, dan instance data DICOM di penyimpanan DICOM Anda.

Setelah mengekspor metadata, selesaikan langkah-langkah berikut:

  1. Jalankan kueri untuk menampilkan UID studi, seri, dan instance yang ingin Anda tambahkan ke file filter.

    Misalnya, kueri berikut menunjukkan cara menggabungkan UID studi, seri, dan instance agar sesuai dengan persyaratan format file filter:

    SELECT CONCAT
        ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID)
    FROM
        [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
  2. Opsional: Jika kueri menampilkan kumpulan hasil besar yang melebihi ukuran respons maksimum, simpan hasil kueri ke tabel tujuan baru di BigQuery.

  3. Simpan hasil kueri ke file dan ekspor ke Cloud Storage. Jika Anda menyimpan hasil kueri ke tabel tujuan baru di Langkah 2, lihat Mengekspor data tabel untuk mengekspor konten tabel ke Cloud Storage.

  4. Edit file yang diekspor sesuai kebutuhan, dan sertakan dalam permintaan Anda untuk mengubah kelas penyimpanan beberapa objek DICOM.

Membuat file filter secara manual

Untuk membuat file filter secara manual, lakukan hal berikut:

  1. Buat file filter yang berisi objek DICOM yang Anda filter.
  2. Upload file filter ke Cloud Storage. Untuk mengetahui petunjuknya, lihat Mengupload objek dari sistem file.

Menggunakan file filter

Contoh berikut menunjukkan cara menerapkan file filter saat mengubah class penyimpanan objek DICOM.

REST

  1. Ubah kelas penyimpanan instance DICOM dalam file filter menggunakan metode projects.locations.datasets.dicomStores.studies.series.instances.setBlobStorageSettings.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: ID Google Cloud project Anda
    • LOCATION: lokasi set data
    • DATASET_ID: set data induk DICOM store
    • DICOM_STORE_ID: ID penyimpanan DICOM
    • STORAGE_CLASS: kelas penyimpanan untuk objek DICOM. Salah satu dari STANDARD, NEARLINE, COLDLINE, atau ARCHIVE.
    • CLOUD_STORAGE_BUCKET: nama bucket Cloud Storage yang berisi file filter
    • FILTER_FILE_PATH: URI yang sepenuhnya memenuhi syarat ke file filter di bucket Cloud Storage

    Meminta isi JSON:

    {
      "blobStorageSettings": {
        "blobStorageClass": "STORAGE_CLASS"
      },
      "filterConfig": {
        "resourcePathsGcsUri": "gs://CLOUD_STORAGE_BUCKET/FILTER_FILE_PATH"
      }
    }
    

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

    cat > request.json << 'EOF'
    {
      "blobStorageSettings": {
        "blobStorageClass": "STORAGE_CLASS"
      },
      "filterConfig": {
        "resourcePathsGcsUri": "gs://CLOUD_STORAGE_BUCKET/FILTER_FILE_PATH"
      }
    }
    EOF

    Kemudian, jalankan perintah berikut untuk mengirim permintaan REST Anda:

    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

    Simpan isi permintaan dalam file bernama request.json. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:

    @'
    {
      "blobStorageSettings": {
        "blobStorageClass": "STORAGE_CLASS"
      },
      "filterConfig": {
        "resourcePathsGcsUri": "gs://CLOUD_STORAGE_BUCKET/FILTER_FILE_PATH"
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Kemudian jalankan perintah berikut untuk mengirim permintaan REST Anda:

    $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
    Output-nya adalah sebagai berikut. Respons berisi ID untuk operasi yang berjalan lama (LRO). Operasi yang berjalan lama ditampilkan saat panggilan metode mungkin memerlukan waktu tambahan untuk diselesaikan. Catat nilai OPERATION_ID. Anda memerlukan nilai ini pada langkah berikutnya.

  2. Dapatkan status operasi yang berjalan lama menggunakan metode projects.locations.datasets.operations.get.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: ID Google Cloud project Anda
    • LOCATION: lokasi set data
    • DATASET_ID: set data induk DICOM store
    • OPERATION_ID: ID yang ditampilkan dari operasi yang berjalan lama

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Jalankan perintah berikut:

    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

    Jalankan perintah berikut:

    $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
    Output-nya adalah sebagai berikut. Jika respons berisi "done": true, LRO telah selesai.

Melihat kelas penyimpanan objek DICOM

Anda dapat melihat kelas penyimpanan objek DICOM di tingkat studi, rangkaian, atau instance.

Bagian berikut menjelaskan cara melihat class penyimpanan instance DICOM.

Mendapatkan informasi kelas penyimpanan untuk objek DICOM

Contoh berikut menunjukkan cara menggunakan metode instances.getStorageInfo untuk melihat class penyimpanan objek DICOM.

REST

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID Google Cloud project Anda
  • LOCATION: lokasi set data
  • DATASET_ID: set data induk DICOM store
  • DICOM_STORE_ID: ID penyimpanan DICOM
  • STUDY_INSTANCE_UID: ID unik instance studi
  • SERIES_INSTANCE_UID: ID unik instance deret
  • INSTANCE_UID: ID unik instance

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

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

Jalankan perintah berikut:

$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

Buka halaman referensi metode. Panel APIs Explorer terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Lengkapi kolom yang wajib diisi, lalu klik Jalankan.

Anda akan melihat respons JSON seperti berikut:

Mengirim kueri metadata DICOM yang diekspor di BigQuery

Anda dapat mengekspor metadata DICOM ke BigQuery lalu menjalankan kueri untuk melihat class penyimpanan objek DICOM yang diekspor.

Kueri berikut menunjukkan cara mengambil UID instance studi, UID instance seri, UID instance, ukuran penyimpanan, dan class penyimpanan hingga 1.000 instance DICOM dari set data BigQuery:

SELECT StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID, BlobStorageSize, StorageClass
FROM PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE
LIMIT 1000

Ganti kode berikut:

  • PROJECT_ID: ID Google Cloud project Anda
  • BIGQUERY_DATASET: set data BigQuery induk dari tabel yang berisi metadata DICOM yang diekspor
  • BIGQUERY_TABLE: tabel BigQuery yang berisi metadata DICOM yang diekspor