Melakukan streaming metadata DICOM ke BigQuery

Halaman ini menjelaskan cara mengonfigurasi penyimpanan DICOM untuk mengekspor metadata instance DICOM ke tabel BigQuery setiap kali salah satu hal berikut terjadi:

Streaming metadata DICOM ke tabel BigQuery akan menyinkronkan tabel dengan data DICOM, sehingga Anda dapat menjalankan kueri kompleks pada versi terbaru penyimpanan DICOM.

Sebelum memulai

Sebelum mengonfigurasi penyimpanan DICOM, selesaikan hal berikut

Menetapkan izin BigQuery

Sebelum melakukan streaming metadata DICOM ke BigQuery, Anda harus memberikan izin yang diperlukan ke akun layanan Cloud Healthcare Service Agent. Untuk informasi selengkapnya, lihat izin BigQuery penyimpanan DICOM.

Pelajari cara mengekspor metadata DICOM ke BigQuery

Sebelum mengonfigurasi streaming, pahami cara mengekspor metadata DICOM ke BigQuery.

Mengonfigurasi penyimpanan DICOM

Untuk mengaktifkan streaming ke BigQuery, konfigurasikan objek StreamConfig di penyimpanan DICOM Anda. Pada objek StreamConfig, tetapkan objek BigQueryDestination ke URI tabel BigQuery yang sepenuhnya memenuhi syarat sebagai tujuan metadata instance DICOM.

Anda dapat menentukan hingga lima tujuan BigQuery sebagai objek JSON yang dipisahkan koma.

Menghapus instance DICOM di penyimpanan DICOM tidak akan menghapus baris BigQuery yang berisi metadata untuk instance tersebut.

Konsol

Untuk memperbarui penyimpanan DICOM agar dapat mengaktifkan streaming BigQuery, selesaikan langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman Datasets.
    Buka Datasets
  2. Pilih set data berisi penyimpanan DICOM yang ingin Anda edit.
  3. Pilih penyimpanan DICOM tempat Anda menambahkan konfigurasi streaming.
  4. Di tab Overview di halaman Detail datastore, klik Add new streaming configuration.
  5. Di kolom Konfigurasi streaming baru, klik Jelajahi.
    1. Di panel Select table, pilih tabel BigQuery.
    2. Klik Select.
  6. Klik Done.

REST

Contoh berikut menunjukkan cara mengupdate penyimpanan DICOM untuk mengaktifkan streaming BigQuery. Dalam contoh ini, penyimpanan DICOM dan tabel BigQuery berada dalam project yang sama. Untuk mengekspor metadata DICOM ke project lain, lihat Mengekspor metadata DICOM ke project lain.

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: ID project Google Cloud Anda
  • LOCATION: lokasi set data
  • DATASET_ID: set data induk penyimpanan DICOM
  • DICOM_STORE_ID: ID penyimpanan DICOM
  • BIGQUERY_DATASET_ID: nama set data BigQuery yang sudah ada
  • BIGQUERY_TABLE_ID: nama unik untuk tabel di set data BigQuery. Lihat Penamaan tabel untuk persyaratan penamaan. Set data BigQuery harus ada, tetapi Cloud Healthcare API dapat memperbarui tabel yang sudah ada atau membuat tabel baru.

Meminta isi JSON:

{
  'streamConfigs': [{
     'bigqueryDestination': {
      'tableUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
     }
  }]
}

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'
{
  'streamConfigs': [{
     'bigqueryDestination': {
      'tableUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
     }
  }]
}
EOF

Kemudian, jalankan perintah berikut untuk mengirim permintaan REST Anda:

curl -X PATCH \
-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?updateMask=streamConfigs"

PowerShell

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

@'
{
  'streamConfigs': [{
     'bigqueryDestination': {
      'tableUri': 'bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID'
     }
  }]
}
'@  | 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 PATCH `
-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?updateMask=streamConfigs" | Select-Object -Expand Content

APIs Explorer

Salin isi permintaan dan buka halaman referensi metode. Panel APIs Explorer akan 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.

Anda akan melihat respons JSON seperti berikut:

Metadata penghapusan

Pada versi Cloud Healthcare API sebelumnya, metadata instance DICOM hanya diekspor ke BigQuery saat instance DICOM disisipkan ke penyimpanan DICOM. Saat menulis metadata untuk penghapusan ditambahkan, dua kolom baru, bernama Type dan LastUpdated, ditambahkan ke tabel yang dihasilkan yang berisi metadata DICOM.

Setiap metadata dalam tabel yang ada sebelum pengenalan metadata penghapusan memiliki nilai NULL untuk kolom ini. NULL adalah nilai terendah dan muncul terakhir saat mengurutkan berdasarkan urutan menurun.

Tampilan BigQuery yang dihasilkan

Saat Anda menyisipkan atau menghapus instance DICOM di penyimpanan DICOM, tabel BigQuery yang dikonfigurasi akan diperbarui.

Jika tampilan tabel tidak ada, tampilan akan dibuat. Jika tidak, tampilan akan diperbarui.

Batasan dan perilaku tambahan

Beberapa tag DICOM mungkin tidak ada di metadata yang diekspor. Jika demikian, tag yang tidak ada akan ditambahkan ke kolom terpisah bernama DroppedTags.TagName di tabel BigQuery tujuan.

Tag akan hilang karena salah satu alasan berikut:

  • Tag DICOM adalah VR yang tidak didukung yang tercantum di VR yang Dikecualikan.
  • Tag DICOM kira-kira melebihi 1 MB.
  • Jumlah kolom di tabel BigQuery tujuan melebihi jumlah maksimum kolom. Saat mengekspor metadata DICOM ke tabel BigQuery melebihi batas kolom, tag DICOM yang tidak cocok dengan kolom yang ada akan ditambahkan ke kolom DroppedTags.Name. Jika kolom DroppedTags tidak dapat ditambahkan, tag DICOM akan dihapus tanpa notifikasi dan log peringatan akan dibuat. Untuk informasi selengkapnya, lihat Memecahkan masalah permintaan streaming DICOM untuk melihat log.

Menggabungkan metadata penghapusan ke dalam tabel yang ada

Perilaku tampilan yang dihasilkan bergantung pada apakah tabel dasarnya berisi metadata yang ditambahkan sebelum fitur metadata penghapusan diperkenalkan.

Misalkan tabel BigQuery berisi metadata DICOM dari sebelum metadata penghapusan didukung, lalu hal berikut terjadi:

  1. Anda memasukkan instance DICOM ke penyimpanan DICOM.
  2. Anda menghapus instance DICOM dari penyimpanan DICOM.
  3. Anda mengedit tag instance DICOM asli, dan menyisipkan instance DICOM yang dimodifikasi ke penyimpanan DICOM.

Karena tabel BigQuery berisi metadata asli sebelum metadata penghapusan didukung, instance DICOM asli dan versi yang diedit memiliki studi, seri, dan ID unik instance (UID) yang sama. Tampilan yang dihasilkan mungkin berisi instance DICOM asli atau instance DICOM terbaru. Tanpa kolom LastUpdated, tampilan tidak dapat mengidentifikasi instance DICOM mana yang lebih baru.

Untuk memastikan Anda membuat kueri metadata instance DICOM terbaru, lakukan salah satu hal berikut:

  • Mengkueri tabel dasar, bukan tampilan. Pastikan kueri menelusuri tag yang diperbarui dalam instance DICOM yang diedit.
  • Hapus tabel yang ada yang berisi metadata DICOM, lalu buat ulang tabel tersebut dengan mengekspor metadata DICOM ke BigQuery secara manual. Tabel yang dibuat ulang berisi kolom LastUpdated.

    Opsi ini menghapus metadata streaming historis, tetapi memastikan bahwa tabel berisi kolom LastUpdated dengan nilai yang valid.

Memecahkan masalah permintaan streaming DICOM

Jika terjadi error selama metadata ekspor DICOM ke permintaan BigQuery, error tersebut akan dicatat ke dalam log ke Cloud Logging. Untuk mengetahui informasi lebih lanjut, baca bagian Melihat log error di Cloud Logging.

Untuk memfilter log error metadata DICOM streaming di Konsol Google Cloud, selesaikan langkah-langkah berikut:

  1. Buka halaman Logs explorer.

    Buka Logs Explorer

  2. Di kolom Query, masukkan kueri berikut:

    logName="healthcare.googleapis.com%2Fdicom_stream"
    
  3. Klik Jalankan kueri.

    Log error apa pun akan ditampilkan di bagian Query results.