Menggunakan Cloud Healthcare API untuk patologi digital

Halaman ini menjelaskan cara menyimpan, menganalisis, dan mengelola seluruh gambar slide (WSIs) menggunakan Cloud Healthcare API.

Ringkasan

Patologi digital memungkinkan penyimpanan, pemrosesan, dan pengelolaan slide kaca konvensional dengan mendigitalkan slide tersebut untuk menghasilkan gambar slide utuh (WSI).

WSI biasanya merupakan file besar yang dapat mencapai beberapa GB. File tersebut tersedia dalam berbagai format file, yang dapat menyulitkan pengelolaannya. Cloud Healthcare API menyederhanakan proses penyimpanan, analisis, dan pengelolaan WSI.

Menyimpan seluruh gambar slide menggunakan DICOM

Cloud Healthcare API menyediakan layanan terkelola untuk menyimpan gambar DICOM. Layanan ini juga mendukung penyimpanan dan pengambilan WSI. Untuk informasi lebih lanjut tentang DICOM di Cloud Healthcare API, lihat DICOM.

Menggunakan DICOM memiliki manfaat berikut:

  • Mendukung banyak vendor dan software.
  • DICOM adalah format file dan juga protokol jaringan yang menentukan DICOMweb dan DIMSE API. API ini, yang digunakan untuk mengambil dan menyimpan instance DICOM, menyediakan fungsi yang luas dan menyederhanakan interaksi dengan gambar.

Mengonversi seluruh gambar slide ke DICOM

Sebagian besar pemindai WSI tidak menghasilkan file DICOM secara native dari WSI. Akibatnya, Anda harus mengonversi WSI ke file DICOM secara manual.

Alat berikut dapat mengonversi WSI menjadi DICOM:

Bagian berikut menunjukkan cara menggunakan alat command line wsi2dcm untuk menghasilkan file DICOM.

Membuat file DICOM menggunakan alat command line wsi2dcm

Sebelum menyelesaikan langkah-langkah berikut, pastikan Anda memiliki file WSI yang valid. Data sampel tersedia dari OpenSlide dan referensi lainnya yang tercantum di situs Digital Pathology Association.

Jalankan alat command line wsi2dcm:

wsi2dcm \
    --input=INPUT_WSI \
    --outFolder=PATH/TO/OUTPUT/FOLDER \
    --seriesDescription=WSI_DESCRIPTION

dengan:

  • INPUT_WSI adalah jalur dan nama file WSI.
  • PATH/TO/OUTPUT/FOLDER adalah jalur tempat alat menghasilkan file DICOM yang dikonversi.
  • WSI_DESCRIPTION adalah deskripsi pilihan Anda untuk file DICOM yang dikonversi.

Menjalankan alat ini akan menghasilkan beberapa file DICOM dari WSI. File DICOM memiliki akhiran .dcm.

Mengupload file DICOM ke Cloud Healthcare API

Jika Anda belum membuat penyimpanan DICOM, lakukan sekarang.

Anda dapat mengupload file DICOM yang dihasilkan di penyimpanan DICOM menggunakan salah satu metode berikut:

Mengambil file DICOM dan metadatanya

Setelah mengupload file DICOM ke penyimpanan DICOM, Anda dapat mencantumkan dan melihat metadata tentang gambar DICOM.

Membuat daftar seluruh gambar slide

Setiap WSI adalah studi DICOM. Untuk mencantumkan WSI, Anda dapat memanggil metode dicomStores.searchForStudies:

REST

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

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"

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" | Select-Object -Expand Content

APIs 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.

Anda akan melihat respons JSON seperti berikut:

Melihat seluruh metadata gambar slide

Setiap studi berisi beberapa instance, dan setiap instance berisi subset kartu WSI. Untuk melihat metadata instance dari sebuah instance dalam studi, panggil metode dicomStores.searchForInstances:

REST

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
  • STUDY_INSTANCE_UID: ID unik (UID) instance studi

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/instances?StudyInstanceUID=STUDY_INSTANCE_UID"

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/instances?StudyInstanceUID=STUDY_INSTANCE_UID" | Select-Object -Expand Content

APIs 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.

Anda akan melihat respons JSON seperti berikut:

Melihat seluruh ubin gambar slide

Setiap instance biasanya berisi beberapa frame. Frame mewakili satu ubin WSI pada tingkat zoom tertentu dalam "piramida" WSI. Untuk mengambil satu frame dalam format JPEG, panggil metode frames.retrieveRendered:

curl

Untuk mengambil satu frame dalam format JPEG, buat permintaan GET dan tentukan informasi berikut:

  • Nama set data induk
  • Nama penyimpanan DICOM
  • UID studi
  • UID seri
  • UID instance
  • Token akses

Contoh berikut menunjukkan permintaan GET yang menggunakan curl.

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Accept: image/jpeg" \
    --output FILENAME \
    "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/frames/0/rendered"

Jika permintaan berhasil, file JPEG akan ditulis ke komputer Anda.

PowerShell

Untuk mengambil satu frame dalam format JPEG, buat permintaan GET dan tentukan informasi berikut:

  • Nama set data induk
  • Nama penyimpanan DICOM
  • UID studi
  • UID seri
  • UID instance
  • Token akses

Contoh berikut menunjukkan permintaan GET menggunakan Windows PowerShell.

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred"; "Accept" = "image/jpeg" }

Invoke-RestMethod `
  -Method Get `
  -Headers $headers `
  -OutFile FILENAME `
  -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/frames/0/rendered"

Jika permintaan berhasil, file JPEG akan ditulis ke komputer Anda.

Mengambil semua gambar slide

Untuk mengambil seluruh instance, yang berisi WSI, gunakan metode instances.retrieveInstance:

curl

Untuk mengambil seluruh instance, buat permintaan GET dan tentukan informasi berikut:

  • Nama set data induk
  • Nama penyimpanan DICOM
  • UID studi
  • UID seri
  • UID instance
  • Token akses

Contoh berikut menunjukkan permintaan GET yang menggunakan curl.

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Accept: application/dicom" \
    --output FILENAME \
    "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"

Jika permintaan berhasil, file DICOM akan ditulis ke komputer Anda.

PowerShell

Untuk mengambil seluruh instance, buat permintaan GET dan tentukan informasi berikut:

  • Nama set data induk
  • Nama penyimpanan DICOM
  • UID studi
  • UID seri
  • UID instance
  • Token akses

Contoh berikut menunjukkan permintaan GET menggunakan Windows PowerShell.

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred"; "Accept" = "application/dicom" }

Invoke-RestMethod `
  -Method Get `
  -Headers $headers `
  -OutFile FILENAME `
  -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"

Jika permintaan berhasil, file DICOM akan ditulis ke komputer Anda.

Melihat slide menggunakan penampil gambar slide secara keseluruhan

Bagian sebelumnya menunjukkan cara melihat metadata WSI dan mengambil setiap kartu. Untuk melihat seluruh WSI, Anda perlu menggunakan penampil WSI yang didukung oleh DICOMweb.

Viewer berikut kompatibel dengan Cloud Healthcare API:

Melihat file DICOM WSI yang dikonversi menggunakan penampil WSI DICOMweb

Selesaikan bagian berikut untuk menggunakan Penampil WSI DICOMweb guna melihat file DICOM WSI yang dikonversi.

Mendownload penampil

Download Penampil WSI DICOMweb:

git clone https://github.com/GoogleCloudPlatform/dicomweb-wsi-viewer.git

Mendapatkan rahasia klien

Rahasia klien mengautentikasi pengguna saat pengguna mengakses aplikasi. Anda dapat menyematkan rahasia klien dalam kode sumber DICOMweb WSI Viewer. Untuk mendapatkan rahasia klien, selesaikan langkah-langkah berikut:

  1. Buka halaman Credentials di Konsol Google Cloud.
    Buka halaman Kredensial.

  2. Klik Buat kredensial, lalu pilih ID klien OAuth.

  3. Di bagian Jenis aplikasi, pilih Aplikasi web.

  4. Tambahkan Nama pilihan Anda.

  5. Di bagian Asal JavaScript yang sah dan URI pengalihan yang diotorisasi, masukkan http://localhost:8000.

  6. Klik Buat, lalu klik Oke di jendela klien OAuth yang muncul. Salin client ID untuk digunakan di bagian berikutnya.

Mengonfigurasi rahasia klien di penampil

Selesaikan langkah-langkah berikut menggunakan client ID yang Anda dapatkan di bagian sebelumnya:

  1. Dalam direktori dicomweb-wsi-viewer, buka file viewer.js.

  2. Ganti baris berikut sehingga berisi ID klien Anda.

    const CLIENT_ID = 'INSERT-YOUR-CLIENT-ID-HERE'
    

    Sebagai gantinya, baris akan terlihat seperti contoh berikut:

    const CLIENT_ID = 'PROJECT_ID-VALUE.apps.googleusercontent.com';
  3. Simpan file.

Jika Anda belum mengonfigurasi layar izin OAuth project Google Cloud, selesaikan langkah-langkah berikut:

  1. Buka Layar izin OAuth.
    Buka layar izin OAuth

  2. Di bagian Support email, pilih alamat email yang ingin Anda tampilkan sebagai kontak publik. Alamat email ini harus berupa alamat email Anda atau Google Grup yang Anda miliki.

  3. Masukkan Application name yang ingin ditampilkan.

  4. Klik Tambahkan cakupan. Pada dialog yang muncul, masukkan https://www.googleapis.com/auth/cloud-healthcare, lalu klik Add.

  5. Klik Save.

Untuk mengubah informasi pada layar izin OAuth nanti, seperti nama produk atau alamat email, ulangi langkah-langkah sebelumnya untuk mengonfigurasi layar izin.

Jika sudah mengonfigurasi layar izin OAuth project Google Cloud, Anda perlu menambahkan https://www.googleapis.com/auth/cloud-healthcare dalam dialog Add scope.

Menjalankan penampil WSI DICOMweb

  1. Dalam direktori dicomweb-wsi-viewer, jalankan perintah berikut:

    python -m http.server 8000
    
  2. Buka https://localhost:8000 di komputer tempat Anda menjalankan perintah sebelumnya.

  3. Di UI, klik Login/Otorisasi untuk mengakses layar izin OAuth dan berikan izin kepada pelihat untuk mengakses project Google Cloud dan resource Cloud Healthcare API Anda.