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 menyinkronkan tabel dengan data DICOM Anda sehingga Anda dapat menjalankan kueri kompleks pada versi terbaru penyimpanan DICOM Anda.

Sebelum memulai

Sebelum mengonfigurasi penyimpanan DICOM, selesaikan langkah-langkah berikut

Menetapkan izin BigQuery

Sebelum melakukan streaming metadata DICOM ke BigQuery, Anda harus memberikan izin yang diperlukan ke akun layanan Agen Layanan Cloud Healthcare . Untuk mengetahui informasi selengkapnya, lihat Izin BigQuery untuk penyimpanan DICOM.

Mempelajari cara mengekspor metadata DICOM ke BigQuery

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

Mengonfigurasi penyimpanan DICOM

Untuk mengaktifkan streaming ke BigQuery, konfigurasi objek StreamConfig di penyimpanan DICOM Anda. Dalam 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 melakukan streaming BigQuery, selesaikan langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman Datasets.
    Buka Datasets
  2. Pilih set data yang berisi penyimpanan DICOM yang ingin Anda edit.
  3. Pilih penyimpanan DICOM yang akan Anda tambahkan konfigurasi streaming-nya.
  4. Di tab Ringkasan pada halaman Detail datastore, klik Tambahkan konfigurasi streaming baru.
  5. Di kolom New streaming configuration, klik Browse.
    1. Di panel Pilih tabel, pilih tabel BigQuery.
    2. Klik Pilih.
  6. Klik Selesai.

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 Google Cloud project Anda
  • LOCATION: lokasi set data
  • DATASET_ID: set data induk DICOM store
  • DICOM_STORE_ID: ID penyimpanan DICOM
  • BIGQUERY_DATASET_ID: nama set data BigQuery yang 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 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 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 dimasukkan ke penyimpanan DICOM. Saat penulisan metadata untuk penghapusan ditambahkan, dua kolom baru, bernama Type dan LastUpdated, ditambahkan ke tabel yang dihasilkan yang berisi metadata DICOM.

Metadata apa pun 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 dalam metadata yang diekspor. Jika ya, tag yang tidak ada akan ditambahkan ke kolom terpisah bernama DroppedTags.TagName di tabel BigQuery tujuan.

Tag akan tidak ada karena salah satu alasan berikut:

  • Tag DICOM adalah VR yang tidak didukung dan tercantum dalam VR yang Dikecualikan.
  • Tag DICOM kira-kira melebihi 1 MB.
  • Jumlah kolom dalam tabel BigQuery tujuan melebihi jumlah kolom maksimum. Jika mengekspor metadata DICOM ke tabel BigQuery melampaui 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 mengetahui 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 dalam penyimpanan DICOM.
  2. Anda menghapus instance DICOM dari penyimpanan DICOM.
  3. Anda mengedit tag instance DICOM asli, dan memasukkan instance DICOM yang telah diubah ke dalam penyimpanan DICOM.

Karena tabel BigQuery berisi metadata asli sebelum metadata penghapusan didukung, instance DICOM asli dan versi yang diedit memiliki studi, deret, dan ID unik (UID) instance yang sama. Tampilan yang dihasilkan dapat 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:

  • Buat kueri tabel dasar, bukan tampilan. Pastikan kueri menelusuri tag yang diperbarui di instance DICOM yang diedit.
  • Hapus tabel yang ada yang berisi metadata DICOM, lalu buat ulang 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 permintaan ekspor metadata DICOM ke BigQuery, error tersebut dicatat ke Cloud Logging. Untuk mengetahui informasi selengkapnya, lihat 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 Run query.

    Log error akan ditampilkan di bagian Query results.