Halaman ini menjelaskan cara mengekspor metadata DICOM ke BigQuery untuk eksplorasi dan analisis. Untuk mendapatkan informasi tentang skema BigQuery yang dibuat saat mengekspor metadata DICOM, lihat Memahami skema DICOM BigQuery.
Menetapkan izin BigQuery
Sebelum mengekspor metadata DICOM ke tabel BigQuery, Anda harus memberikan izin tambahan ke akun layanan Agen Layanan Cloud Healthcare. Untuk informasi selengkapnya, lihat izin BigQuery penyimpanan DICOM.
Menetapkan tujuan BigQuery
Saat menetapkan tujuan BigQuery, gunakan URI yang sepenuhnya memenuhi syarat, seperti berikut:bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_IDPerilaku operasi ekspor dapat bervariasi bergantung pada:
- Apakah tabel tujuan sudah ada
- Apakah Anda telah menetapkan kolom
force
(menggunakan API) atau flag--overwrite-table
(menggunakan Google Cloud CLI) - Apakah Anda telah menetapkan nilai untuk enum
writeDisposition
. Jika Anda menggunakan enumwriteDisposition
, jangan tetapkan kolomforce
.
- Jika tabel tujuan sudah ada dan
force
ditetapkan ketrue
atau tanda--overwrite-table
ditentukan, operasi ekspor akan menimpa tabel yang ada. - Jika tabel tujuan sudah ada dan
force
disetel kefalse
atau tanda--overwrite-table
tidak ditentukan, error akan terjadi. - Jika tabel tujuan belum ada, tabel baru akan dibuat, terlepas dari apakah Anda menentukan kolom
force
atau flag--overwrite-table
. - Perilaku untuk
writeDisposition
dijelaskan dalam dokumentasinya. EnumwriteDisposition
melakukan perilaku yang mirip dengan opsi saat menggunakanforce
, dengan pengecualian berikut: jika tabel tujuan sudah ada, dan kosong, operasi ekspor selesai, bukan menampilkan error.
Mengekspor metadata DICOM
Contoh berikut menunjukkan cara mengekspor metadata DICOM ke tabel BigQuery. Dalam contoh ini, penyimpanan DICOM dan tabel BigQuery berada dalam project yang sama. Untuk mengekspor metadata DICOM ke tabel BigQuery di project lain, lihat Mengekspor metadata DICOM ke project yang berbeda.
Konsol
Untuk mengekspor metadata DICOM ke tabel BigQuery, lakukan langkah-langkah berikut:
Di konsol Google Cloud, buka halaman Datasets.
Klik set data yang memiliki penyimpanan DICOM dengan metadata yang Anda ekspor.
Di baris yang sama dengan toko DICOM, buka daftar Tindakan dan pilih Ekspor.
Di halaman Export DICOM store yang muncul, pilih BigQuery table.
Di kolom Project, klik Browse, lalu pilih project Anda.
Di daftar Set data, pilih set data BigQuery tempat Anda mengekspor metadata DICOM.
Di kolom Tabel, masukkan nama tabel baru. BigQuery memeriksa setiap pilihan untuk memastikan tabel tujuan sudah valid.
Di bagian Destination table write disposition, pilih salah satu dari opsi berikut. Opsi ini berkaitan dengan enum
WriteDisposition
.- Hanya ekspor data jika tabel tujuan kosong: Setara dengan
WRITE_EMPTY
- Menambahkan data ke tabel tujuan: Setara dengan
WRITE_APPEND
- Hapus semua data yang ada di tabel tujuan sebelum menulis instance: Setara dengan
WRITE_TRUNCATE
.
- Hanya ekspor data jika tabel tujuan kosong: Setara dengan
Klik Export untuk mengekspor metadata DICOM ke tabel BigQuery.
- Untuk melacak status operasi, klik tab Operasi. Setelah operasi selesai, indikasi berikut akan muncul:
- Bagian Long-running Operations status memiliki tanda centang hijau di bawah heading OK.
- Bagian Overview memiliki tanda centang hijau dan indikator OK di baris yang sama dengan ID operasi.
gcloud
Untuk mengekspor metadata DICOM ke tabel BigQuery, jalankan perintah gcloud healthcare dicom-stores export bq
.
Mengekspor metadata DICOM.
Sebelum menggunakan salah satu data perintah di bawah, 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 tempat Anda mengekspor metadata DICOM
- BIGQUERY_TABLE_ID: nama tabel baru atau yang sudah ada dalam set data BigQuery. Jika operasi ekspor membuat tabel baru, lihat Penamaan tabel untuk mengetahui persyaratan nama tabel.
- WRITE_DISPOSITION: nilai untuk enum
WriteDisposition
. Gunakan salah satu nilai berikut:write-empty
: hanya mengekspor data jika tabel BigQuery kosong.write-truncate
: hapus semua data yang ada di tabel BigQuery sebelum menulis instance DICOM.write-append
: menambahkan data ke tabel BigQuery.
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud healthcare dicom-stores export bq DICOM_STORE_ID \ --location=LOCATION \ --dataset=DATASET_ID \ --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID \ --write-disposition=WRITE_DISPOSITION
Windows (PowerShell)
gcloud healthcare dicom-stores export bq DICOM_STORE_ID ` --location=LOCATION ` --dataset=DATASET_ID ` --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID ` --write-disposition=WRITE_DISPOSITION
Windows (cmd.exe)
gcloud healthcare dicom-stores export bq DICOM_STORE_ID ^ --location=LOCATION ^ --dataset=DATASET_ID ^ --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID ^ --write-disposition=WRITE_DISPOSITION
name
setelah ekspor selesai. Catat nilaiOPERATION_ID
. Anda memerlukan nilai ini di langkah berikutnya.Respons
Request issued for: [DICOM_STORE_ID] Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete...⠏ name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
Untuk melihat detail operasi selengkapnya, jalankan perintah
gcloud healthcare operations describe
dan berikan OPERATION_ID dari respons:Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
- PROJECT_ID: ID project Google Cloud Anda
- DATASET_ID: ID set data
- LOCATION: lokasi set data
- OPERATION_ID: ID yang ditampilkan dari operasi yang berjalan lama
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud healthcare operations describe OPERATION_ID \ --project=PROJECT_ID \ --dataset=DATASET_ID \ --location=LOCATION
Windows (PowerShell)
gcloud healthcare operations describe OPERATION_ID ` --project=PROJECT_ID ` --dataset=DATASET_ID ` --location=LOCATION
Windows (cmd.exe)
gcloud healthcare operations describe OPERATION_ID ^ --project=PROJECT_ID ^ --dataset=DATASET_ID ^ --location=LOCATION
Anda akan melihat respons seperti berikut:
Respons
done: true // If there were any errors, an `error` field displays instead of a `response` field. // See Troubleshooting long-running operations for a list of response codes. error: ERROR code: ERROR_CODE message: DESCRIPTION metadata: '@type': 'type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata' apiMethodName: 'google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData_bq' counter: success: 'SUCCESS_COUNT' // If there were any failures, they display in the `failure` field. failure: 'FAILURE_COUNT' createTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' endTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' logsUrl: https://console.cloud.google.com/CLOUD_LOGGING_URL name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID // The `response` field only displays if there were no errors. response: '@type': 'type.googleapis.com/google.protobuf.Empty'
REST
Untuk mengekspor metadata DICOM ke tabel BigQuery, gunakan metode projects.locations.datasets.dicomStores.export
.
Mengekspor metadata DICOM.
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 tempat Anda mengekspor metadata DICOM
- BIGQUERY_TABLE_ID: nama tabel baru atau yang sudah ada dalam set data BigQuery. Jika operasi ekspor membuat tabel baru, lihat Penamaan tabel untuk mengetahui persyaratan nama tabel.
- WRITE_DISPOSITION: nilai untuk enum
WriteDisposition
. Gunakan salah satu nilai berikut:WRITE_EMPTY
: hanya mengekspor data jika tabel BigQuery kosong.WRITE_TRUNCATE
: hapus semua data yang ada di tabel BigQuery sebelum menulis instance DICOM.WRITE_APPEND
: menambahkan data ke tabel BigQuery.
Meminta isi JSON:
{ "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } }
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' { "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } } 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:export"PowerShell
Simpan isi permintaan dalam file bernama
request.json
. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:@' { "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } } '@ | 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:export" | Select-Object -Expand ContentAPIs 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 wajib lainnya, lalu klik Jalankan.
OPERATION_ID
. Anda memerlukan nilai ini di langkah berikutnya.Gunakan metode
projects.locations.datasets.operations.get
untuk mendapatkan status operasi yang berjalan lama.Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: ID project Google Cloud Anda
- DATASET_ID: ID set data
- LOCATION: lokasi set data
- 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 ContentAPIs Explorer
Buka halaman referensi metode. Panel APIs Explorer akan terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Lengkapi kolom yang wajib diisi, lalu klik Jalankan.
"done": true
, berarti operasi yang berjalan lama telah selesai.
Mengekspor metadata DICOM ke project lain
Untuk mengekspor metadata DICOM dari penyimpanan DICOM di satu project ke set data BigQuery di project lain, baca terlebih dahulu artikel Mengekspor metadata DICOM ke izin project yang berbeda untuk mengetahui informasi tentang cara menetapkan izin IAM di project tujuan.
gcloud
Untuk mengekspor metadata DICOM dari penyimpanan DICOM di satu project ke tabel BigQuery di project lain, gunakan perintah gcloud healthcare dicom-stores export bq
.
Mengekspor metadata DICOM.
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
- SOURCE_PROJECT_ID: ID project Google Cloud sumber
- SOURCE_LOCATION: lokasi set data sumber
- SOURCE_DATASET_ID: set data induk penyimpanan DICOM sumber
- SOURCE_DICOM_STORE_ID: ID penyimpanan DICOM sumber
- DESTINATION_PROJECT_ID: ID project yang berbeda
- DESTINATION_BIGQUERY_DATASET_ID: nama set data BigQuery yang ada di project tujuan tempat Anda mengekspor metadata DICOM
- DESTINATION_BIGQUERY_TABLE_ID: nama tabel baru atau yang sudah ada dalam set data BigQuery. Jika operasi ekspor membuat tabel baru, lihat Penamaan tabel untuk mengetahui persyaratan nama tabel.
- WRITE_DISPOSITION: nilai untuk enum
WriteDisposition
. Gunakan salah satu nilai berikut:write-empty
: hanya mengekspor data jika tabel BigQuery kosong.write-truncate
: hapus semua data yang ada di tabel BigQuery sebelum menulis instance DICOM.write-append
: menambahkan data ke tabel BigQuery.
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud healthcare dicom-stores export bq SOURCE_DICOM_STORE_ID \ --project=SOURCE_PROJECT_ID \ --location=SOURCE_LOCATION \ --dataset=SOURCE_DATASET_ID \ --bq-table=bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID \ --write-disposition=WRITE_DISPOSITION
Windows (PowerShell)
gcloud healthcare dicom-stores export bq SOURCE_DICOM_STORE_ID ` --project=SOURCE_PROJECT_ID ` --location=SOURCE_LOCATION ` --dataset=SOURCE_DATASET_ID ` --bq-table=bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID ` --write-disposition=WRITE_DISPOSITION
Windows (cmd.exe)
gcloud healthcare dicom-stores export bq SOURCE_DICOM_STORE_ID ^ --project=SOURCE_PROJECT_ID ^ --location=SOURCE_LOCATION ^ --dataset=SOURCE_DATASET_ID ^ --bq-table=bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID ^ --write-disposition=WRITE_DISPOSITION
name
setelah ekspor selesai. Catat nilaiOPERATION_ID
. Anda memerlukan nilai ini di langkah berikutnya.Respons
Request issued for: [SOURCE_DICOM_STORE_ID] Waiting for operation [projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID] to complete...⠏ name: projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID
Untuk melihat detail operasi selengkapnya, jalankan perintah
gcloud healthcare operations describe
dan berikan OPERATION_ID dari respons:Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
- SOURCE_PROJECT_ID: ID project Google Cloud sumber
- SOURCE_LOCATION: lokasi set data sumber
- SOURCE_DATASET_ID: ID set data sumber
- OPERATION_ID: ID yang ditampilkan dari operasi yang berjalan lama
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud healthcare operations describe OPERATION_ID \ --project=SOURCE_PROJECT_ID \ --dataset=SOURCE_DATASET_ID \ --location=SOURCE_LOCATION
Windows (PowerShell)
gcloud healthcare operations describe OPERATION_ID ` --project=SOURCE_PROJECT_ID ` --dataset=SOURCE_DATASET_ID ` --location=SOURCE_LOCATION
Windows (cmd.exe)
gcloud healthcare operations describe OPERATION_ID ^ --project=SOURCE_PROJECT_ID ^ --dataset=SOURCE_DATASET_ID ^ --location=SOURCE_LOCATION
Anda akan melihat respons seperti berikut:
Respons
done: true // If there were any errors, an `error` field displays instead of a `response` field. // See Troubleshooting long-running operations for a list of response codes. error: ERROR code: ERROR_CODE message: DESCRIPTION metadata: '@type': 'type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata' apiMethodName: 'google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData_bq' counter: success: 'SUCCESS_COUNT' // If there were any failures, they display in the `failure` field. failure: 'FAILURE_COUNT' createTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' endTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' logsUrl: https://console.cloud.google.com/CLOUD_LOGGING_URL name: projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID // The `response` field only displays if there were no errors. response: '@type': 'type.googleapis.com/google.protobuf.Empty'
REST
Untuk mengekspor metadata DICOM dari penyimpanan DICOM di satu project ke tabel BigQuery di project lain, gunakan metode projects.locations.datasets.dicomStores.export
.
Mengekspor metadata DICOM.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- SOURCE_PROJECT_ID: ID project Google Cloud sumber
- SOURCE_LOCATION: lokasi set data sumber
- SOURCE_DATASET_ID: set data induk penyimpanan DICOM sumber
- SOURCE_DICOM_STORE_ID: ID penyimpanan DICOM sumber
- DESTINATION_PROJECT_ID: ID project yang berbeda
- DESTINATION_BIGQUERY_DATASET_ID: nama set data BigQuery yang ada di project tujuan tempat Anda mengekspor metadata DICOM
- DESTINATION_BIGQUERY_TABLE_ID: nama tabel baru atau yang sudah ada dalam set data BigQuery. Jika operasi ekspor membuat tabel baru, lihat Penamaan tabel untuk mengetahui persyaratan nama tabel.
- WRITE_DISPOSITION: nilai untuk enum
WriteDisposition
. Gunakan salah satu nilai berikut:WRITE_EMPTY
: hanya mengekspor data jika tabel BigQuery kosong.WRITE_TRUNCATE
: hapus semua data yang ada di tabel BigQuery sebelum menulis instance DICOM.WRITE_APPEND
: menambahkan data ke tabel BigQuery.
Meminta isi JSON:
{ "bigqueryDestination": { "tableUri": "bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } }
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' { "bigqueryDestination": { "tableUri": "bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } } 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/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:export"PowerShell
Simpan isi permintaan dalam file bernama
request.json
. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:@' { "bigqueryDestination": { "tableUri": "bq://DESTINATION_PROJECT_ID.DESTINATION_BIGQUERY_DATASET_ID.DESTINATION_BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" } } '@ | 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/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:export" | Select-Object -Expand ContentAPIs 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 wajib lainnya, lalu klik Jalankan.
OPERATION_ID
. Anda memerlukan nilai ini di langkah berikutnya.Gunakan metode
projects.locations.datasets.operations.get
untuk mendapatkan status operasi yang berjalan lama.Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- SOURCE_PROJECT_ID: ID project Google Cloud sumber
- SOURCE_LOCATION: lokasi set data sumber
- SOURCE_DATASET_ID: ID set data sumber
- 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/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_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/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPIs Explorer
Buka halaman referensi metode. Panel APIs Explorer akan terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Lengkapi kolom yang wajib diisi, lalu klik Jalankan.
"done": true
, berarti operasi yang berjalan lama telah selesai.
Mengekspor metadata DICOM menggunakan filter
Secara default, saat Anda mengekspor file DICOM ke Cloud Storage, semua file DICOM di penyimpanan DICOM yang ditentukan akan diekspor. Demikian pula, saat Anda mengekspor metadata DICOM ke BigQuery, metadata untuk semua data DICOM di penyimpanan DICOM yang ditentukan akan diekspor.
Anda dapat mengekspor subset data atau metadata DICOM menggunakan filter. Anda menentukan filter dalam file filter.
Mengonfigurasi file filter
File filter menentukan file DICOM mana yang akan diekspor ke Cloud Storage atau BigQuery. Anda dapat mengonfigurasi file filter pada tingkat berikut:
- Di tingkat studi
- Di level serial
- Di tingkat instance
File filter terdiri dari beberapa baris dengan setiap baris yang menentukan
studi, rangkaian, atau instance yang ingin
diekspor. Setiap baris menggunakan format /studies/STUDY_UID[/series/SERIES_UID[/instances/INSTANCE_UID]]
.
Jika studi, deret, atau instance tidak ditentukan dalam file filter saat Anda meneruskan file filter, studi, deret, atau instance tersebut tidak akan diekspor.
Hanya bagian /studies/STUDY_UID
dari jalur yang
diperlukan. Anda dapat mengekspor seluruh studi dengan menentukan /studies/STUDY_UID
, atau Anda dapat mengekspor seluruh rangkaian dengan menentukan /studies/STUDY_UID/series/SERIES_UID
.
Pertimbangkan file filter berikut. File filter akan menghasilkan satu studi, dua rangkaian, dan tiga instance individual yang diekspor:
/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
Membuat {i>file<i} filter menggunakan BigQuery
Anda biasanya membuat file filter dengan mengekspor metadata terlebih dahulu dari penyimpanan DICOM ke BigQuery. Hal ini memungkinkan Anda menggunakan BigQuery untuk melihat UID studi, deret, dan instance dari data DICOM di penyimpanan DICOM Anda. Kemudian Anda dapat menyelesaikan langkah-langkah berikut:
-
Buat kueri untuk UID studi, rangkaian, dan instance yang Anda minati.
Misalnya, setelah mengekspor metadata DICOM ke BigQuery, Anda
dapat menjalankan kueri berikut untuk menggabungkan UID studi, rangkaian, dan
instance ke format yang kompatibel dengan persyaratan file
filter:
SELECT CONCAT ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID) FROM [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
- Jika kueri tersebut menampilkan kumpulan hasil besar, Anda dapat mewujud tabel baru dengan menyimpan hasil kueri ke tabel tujuan di BigQuery.
- Jika menyimpan hasil kueri ke tabel tujuan, Anda dapat menyimpan isi tabel tujuan ke file dan mengekspornya ke Cloud Storage. Untuk langkah-langkah cara melakukannya, lihat Mengekspor data tabel. {i>File<i} yang diekspor adalah {i>file filter<i} Anda. Anda dapat menggunakan lokasi file filter di Cloud Storage saat menentukan filter dalam operasi ekspor.
Membuat file filter secara manual
Anda dapat membuat file filter dengan konten kustom dan menguploadnya ke bucket Cloud Storage. Anda dapat menggunakan lokasi file filter di Cloud Storage saat menentukan filter dalam operasi ekspor. Contoh berikut menunjukkan cara mengupload file filter ke bucket Cloud Storage menggunakan perintahgsutil cp
:
gsutil cp FILTER_FILE gs://BUCKET
Meneruskan file filter
Setelah membuat file filter, Anda dapat memanggil operasi ekspor DICOM dan meneruskan file filter menggunakan REST API. Contoh berikut menunjukkan cara mengekspor metadata DICOM menggunakan filter.
gcloud
Untuk mengekspor metadata DICOM ke tabel BigQuery menggunakan filter, jalankan perintah gcloud beta healthcare dicom-stores export bq
.
Mengekspor metadata DICOM.
Sebelum menggunakan salah satu data perintah di bawah, 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 tempat Anda mengekspor metadata DICOM
- BIGQUERY_TABLE_ID: nama tabel baru atau yang sudah ada dalam set data BigQuery. Jika operasi ekspor membuat tabel baru, lihat Penamaan tabel untuk mengetahui persyaratan nama tabel.
- BUCKET: nama bucket Cloud Storage yang berisi file filter. Jika file filter berada di direktori, sertakan direktori tersebut di jalurnya.
- FILTER_FILE: lokasi dan nama file filter di bucket Cloud Storage
- WRITE_DISPOSITION: nilai untuk enum
WriteDisposition
. Gunakan salah satu nilai berikut:write-empty
: hanya mengekspor data jika tabel BigQuery kosong.write-truncate
: hapus semua data yang ada di tabel BigQuery sebelum menulis instance DICOM.write-append
: menambahkan data ke tabel BigQuery.
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud beta healthcare dicom-stores export bq DICOM_STORE_ID \ --location=LOCATION \ --dataset=DATASET_ID \ --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID \ --filter-config-gcs-uri=gs://BUCKET/FILTER_FILE \ --write-disposition=WRITE_DISPOSITION
Windows (PowerShell)
gcloud beta healthcare dicom-stores export bq DICOM_STORE_ID ` --location=LOCATION ` --dataset=DATASET_ID ` --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID ` --filter-config-gcs-uri=gs://BUCKET/FILTER_FILE ` --write-disposition=WRITE_DISPOSITION
Windows (cmd.exe)
gcloud beta healthcare dicom-stores export bq DICOM_STORE_ID ^ --location=LOCATION ^ --dataset=DATASET_ID ^ --bq-table=bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID ^ --filter-config-gcs-uri=gs://BUCKET/FILTER_FILE ^ --write-disposition=WRITE_DISPOSITION
name
setelah ekspor selesai. Catat nilaiOPERATION_ID
. Anda memerlukan nilai ini di langkah berikutnya.Respons
Request issued for: [DICOM_STORE_ID] Waiting for operation [projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID] to complete...⠏ name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID
Untuk melihat detail operasi selengkapnya, jalankan perintah
gcloud healthcare operations describe
dan berikan OPERATION_ID dari respons:Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
- PROJECT_ID: ID project Google Cloud Anda
- DATASET_ID: ID set data
- LOCATION: lokasi set data
- OPERATION_ID: ID yang ditampilkan dari operasi yang berjalan lama
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud healthcare operations describe OPERATION_ID \ --project=PROJECT_ID \ --dataset=DATASET_ID \ --location=LOCATION
Windows (PowerShell)
gcloud healthcare operations describe OPERATION_ID ` --project=PROJECT_ID ` --dataset=DATASET_ID ` --location=LOCATION
Windows (cmd.exe)
gcloud healthcare operations describe OPERATION_ID ^ --project=PROJECT_ID ^ --dataset=DATASET_ID ^ --location=LOCATION
Anda akan melihat respons seperti berikut:
Respons
done: true // If there were any errors, an `error` field displays instead of a `response` field. // See Troubleshooting long-running operations for a list of response codes. error: ERROR code: ERROR_CODE message: DESCRIPTION metadata: '@type': 'type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata' apiMethodName: 'google.cloud.healthcare.v1.dicom.DicomService.ExportDicomData_bq' counter: success: 'SUCCESS_COUNT' // If there were any failures, they display in the `failure` field. failure: 'FAILURE_COUNT' createTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' endTime: 'YYYY-MM-DDTHH:MM:SS+ZZ:ZZ' logsUrl: https://console.cloud.google.com/CLOUD_LOGGING_URL name: projects/SOURCE_PROJECT_ID/locations/SOURCE_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID // The `response` field only displays if there were no errors. response: '@type': 'type.googleapis.com/google.protobuf.Empty'
REST
Untuk mengekspor metadata DICOM ke tabel BigQuery menggunakan filter, gunakan metode projects.locations.datasets.dicomStores.export
.
Mengekspor metadata DICOM.
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 tempat Anda mengekspor metadata DICOM
- BIGQUERY_TABLE_ID: nama tabel baru atau yang sudah ada dalam set data BigQuery. Jika operasi ekspor membuat tabel baru, lihat Penamaan tabel untuk mengetahui persyaratan nama tabel.
- BUCKET: nama bucket Cloud Storage yang berisi file filter. Jika file filter berada di direktori, sertakan direktori tersebut di jalurnya.
- FILTER_FILE: lokasi dan nama file filter di bucket Cloud Storage
- WRITE_DISPOSITION: nilai untuk enum
WriteDisposition
. Gunakan salah satu nilai berikut:WRITE_EMPTY
: hanya mengekspor data jika tabel BigQuery kosong.WRITE_TRUNCATE
: hapus semua data yang ada di tabel BigQuery sebelum menulis instance DICOM.WRITE_APPEND
: menambahkan data ke tabel BigQuery.
Meminta isi JSON:
{ "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" }, "filterConfig": { "resourcePathsGcsUri": "gs://BUCKET/FILTER_FILE" } }
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' { "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" }, "filterConfig": { "resourcePathsGcsUri": "gs://BUCKET/FILTER_FILE" } } 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:export"PowerShell
Simpan isi permintaan dalam file bernama
request.json
. Jalankan perintah berikut di terminal untuk membuat atau menimpa file ini di direktori saat ini:@' { "bigqueryDestination": { "tableUri": "bq://PROJECT_ID.BIGQUERY_DATASET_ID.BIGQUERY_TABLE_ID", "writeDisposition": "WRITE_DISPOSITION" }, "filterConfig": { "resourcePathsGcsUri": "gs://BUCKET/FILTER_FILE" } } '@ | 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:export" | Select-Object -Expand ContentAPIs 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 wajib lainnya, lalu klik Jalankan.
OPERATION_ID
. Anda memerlukan nilai ini di langkah berikutnya.Gunakan metode
projects.locations.datasets.operations.get
untuk mendapatkan status operasi yang berjalan lama.Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: ID project Google Cloud Anda
- DATASET_ID: ID set data
- LOCATION: lokasi set data
- 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 ContentAPIs Explorer
Buka halaman referensi metode. Panel APIs Explorer akan terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Lengkapi kolom yang wajib diisi, lalu klik Jalankan.
"done": true
, berarti operasi yang berjalan lama telah selesai.
Membuat kueri dan menganalisis data DICOM di BigQuery
Setelah mengekspor metadata DICOM ke tabel BigQuery, Anda dapat menjalankan kueri sampel untuk mendapatkan detail lebih lanjut tentang metadata tersebut. Contoh berikut menunjukkan cara menjalankan kueri untuk beberapa kasus penggunaan umum.
Menelusuri seluruh metadata
Anggaplah Anda ingin menelusuri sejumlah besar metadata yang
sulit ditelusuri dalam sistem lain, seperti Picture Archive and Communication System (PACS)
atau Vendor Neutral Archive (VNA). Kueri berikut menunjukkan cara membuat kueri tentang nilai PatientID
pasien dan menggunakan jalur DICOMweb untuk mengambil instance gambar tertentu. Sampel ini menggunakan tabel
chc-nih-chest-xray.nih_chest_xray.nih_chest_xray dari
set data sinar-X NIH Chest.
#standardSQL
SELECT CONCAT('/dicomWeb/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID) as DICOMwebPath
FROM `chc-nih-chest-xray.nih_chest_xray.nih_chest_xray`
WHERE PatientID = '19045';
Kueri tersebut menampilkan studi yang terkait dengan pasien. Respons berikut menggunakan pemformatan JSON:
[
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.169629990647803559688464142879817265366193/series/1.3.6.1.4.1.11129.5.5.141990184899344268273968625887396932057061/instances/1.3.6.1.4.1.11129.5.5.162448513493627342869165322873398445570578"
},
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.114160532832901355654444239008681456919023/series/1.3.6.1.4.1.11129.5.5.178361108150351071908200174504411112440700/instances/1.3.6.1.4.1.11129.5.5.145959606905209488520697484018030440952428"
},
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.177801331756958922168115732894519725643007/series/1.3.6.1.4.1.11129.5.5.134128639331055702643451404466208677561042/instances/1.3.6.1.4.1.11129.5.5.148534317486838863760908141408862094292875"
},
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.119570482687494886334491471870663517807852/series/1.3.6.1.4.1.11129.5.5.148050768676645373034111775531663876425927/instances/1.3.6.1.4.1.11129.5.5.111153708388576066195389700503245704293300"
},
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.144704399171290022427247626928443085419319/series/1.3.6.1.4.1.11129.5.5.190285793344339390593165731988543561416633/instances/1.3.6.1.4.1.11129.5.5.110245902713751842026864359179754889505217"
},
{
"DICOMwebPath": "/dicomWeb/studies/1.3.6.1.4.1.11129.5.5.172276126220388966649736649950361623806435/series/1.3.6.1.4.1.11129.5.5.171512371498506519035489729484464872160452/instances/1.3.6.1.4.1.11129.5.5.111721417729733087384317002785068394901165"
}
]
Membuat kueri untuk studi terbaru
Misalkan Anda ingin mengisi daftar kerja pembacaan PACS dengan studi terbaru dari set data Anda.
Kueri berikut menunjukkan cara mengambil dan menampilkan studi terbaru beserta jumlah instance dan metadata sekitarnya. Sampel ini menggunakan tabel bigquery-public-data.idc_v5.dicom_metadata dari set data TCIA.
#standardSQL
SELECT
MIN(CONCAT(StudyDate, ' ', StudyTime)) as StudyDateTime, MIN(PatientID) as PatientID, StudyInstanceUID, COUNT(*) as InstanceCount
FROM
`bigquery-public-data.idc_v5.dicom_metadata` AS dicom
GROUP BY StudyInstanceUID
ORDER BY StudyDateTime DESC
LIMIT 10;
Kueri tersebut menampilkan informasi berikut:
- 10 studi terbaru yang masuk ke sistem dan kapan mereka memasuki sistem
- Pasien yang terkait dengan setiap studi
- UID studi
- Jumlah instance yang terkait dengan studi
Respons berikut menggunakan pemformatan JSON:
[
{
"StudyDateTime": "2021-07-11 00:38:22",
"PatientID": "C3L-01924",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2466232160.763753303.1625963902816.3.0",
"InstanceCount": "4"
}, {
"StudyDateTime": "2021-07-10 23:52:10",
"PatientID": "C3L-01924",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2463459463.1074873794.1625961130119.3.0",
"InstanceCount": "4"
}, {
"StudyDateTime": "2021-07-10 23:31:13",
"PatientID": "C3L-02513",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2462202516.1453336368.1625959873172.3.0",
"InstanceCount": "7"
}, {
"StudyDateTime": "2021-07-10 23:25:17",
"PatientID": "C3L-01924",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2461846936.496969835.1625959517592.3.0",
"InstanceCount": "4"
}, {
"StudyDateTime": "2021-07-10 22:35:16",
"PatientID": "C3L-02515",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2458845347.1905567435.1625956516003.3.0",
"InstanceCount": "6"
}, {
"StudyDateTime": "2021-07-10 21:49:46",
"PatientID": "C3L-02515",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2456116127.1264613559.1625953786783.3.0",
"InstanceCount": "7"
}, {
"StudyDateTime": "2021-07-10 21:46:04",
"PatientID": "C3L-02513",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2455894080.1705479047.1625953564736.3.0",
"InstanceCount": "6"
}, {
"StudyDateTime": "2021-07-10 21:13:30",
"PatientID": "C3L-01924",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2453939652.2052768474.1625951610308.3.0",
"InstanceCount": "4"
}, {
"StudyDateTime": "2021-07-10 21:10:17",
"PatientID": "C3L-02515",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2453746219.164669562.1625951416875.3.0",
"InstanceCount": "6"
}, {
"StudyDateTime": "2021-07-10 20:05:48",
"PatientID": "C3L-02513",
"StudyInstanceUID": "1.3.6.1.4.1.5962.99.1.2449877792.1996682667.1625947548448.3.0",
"InstanceCount": "6"
}
]
Batasan dan perilaku tambahan
Jika tag DICOM tidak memiliki jenis yang didukung di BigQuery (tercantum dalam VR yang Dikecualikan), tag tersebut tercantum di kolom terpisah (disebut DroppedTags.TagName
) di tabel BigQuery tujuan.
Memecahkan masalah permintaan ekspor 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.