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 langkah-langkah 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 mengetahui 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 mengupdate penyimpanan DICOM guna mengaktifkan 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 tempat Anda menambahkan konfigurasi streaming.
  4. Di tab Ringkasan pada halaman Detail datastore, klik Tambahkan konfigurasi streaming baru.
  5. Di kolom New streaming configuration, klik Browse.
    1. Di panel Select table, pilih tabel BigQuery.
    2. Klik Pilih.
  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 ada
  • BIGQUERY_TABLE_ID: nama unik untuk tabel dalam set data BigQuery. Lihat Penamaan tabel untuk mengetahui 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 API 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 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 diperkenalkannya metadata penghapusan memiliki nilai NULL untuk kolom ini. NULL adalah nilai terendah dan muncul terakhir saat mengurutkan menurut 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 demikian, tag yang hilang akan ditambahkan ke kolom terpisah bernama DroppedTags.TagName di tabel BigQuery tujuan.

Tag tidak akan 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. 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.

Menyertakan metadata penghapusan ke dalam tabel yang ada

Perilaku tampilan yang dihasilkan bergantung pada apakah tabel dasar 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 menyisipkan 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 diubah ke penyimpanan DICOM.

Karena tabel BigQuery berisi metadata asli sebelum metadata penghapusan didukung, instance DICOM asli dan versi yang diedit memiliki ID unik (UID) studi, seri, dan instance yang sama. Tampilan yang dihasilkan mungkin berisi instance DICOM asli atau instance DICOM terbaru. Tanpa kolom LastUpdated, tampilan tidak dapat mengidentifikasi instance DICOM 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 error terjadi selama permintaan metadata ekspor DICOM ke BigQuery, error tersebut akan 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.

    Semua log error ditampilkan di bagian Query results.