Tutorial dan dokumen konseptual yang menyertainya, De-identifikasi gambar medis melalui Cloud Healthcare API, ditujukan untuk peneliti, data scientist, tim IT, serta organisasi layanan kesehatan dan ilmu hayati. Tutorial ini memandu Anda dalam menjalani dua kasus penggunaan umum terkait de-identifikasi data gambar medis menggunakan Cloud Healthcare API. Dokumen konseptual ini menjelaskan alasan de-identifikasi data DICOM dan menguraikan langkah-langkah tingkat tingginya.
Tutorial ini mengasumsikan bahwa Anda memiliki pengetahuan dasar tentang Linux. Pemahaman dasar tentang standar Google Cloud dan DICOM juga sangat membantu. Jalankan semua perintah dalam tutorial ini di terminal Linux.
Tujuan
- Menggunakan operasi de-identifikasi DICOM pada Cloud Healthcare API untuk menghapus atau mengubah PII dan PHI pada instance DICOM di penyimpanan DICOM.
- Menghapus atau mengubah metadata PII dan PHI serta teks sisipan dalam satu panggilan Cloud Healthcare API.
- Menggunakan alat command line
curl
atau Google Cloud CLI untuk melakukan panggilan Cloud Healthcare API de-identifikasi DICOM.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
Tutorial ini mengasumsikan bahwa gambar DICOM Anda telah diimpor ke penyimpanan DICOM. Untuk mengetahui informasi tentang cara membuat penyimpanan DICOM di Google Cloud, lihat Membuat dan mengelola penyimpanan DICOM. Untuk informasi tentang cara mengimpor data DICOM ke penyimpanan DICOM, lihat Mengimpor dan mengekspor data DICOM menggunakan Cloud Storage.
Selain itu, tutorial ini mengasumsikan bahwa:
- Anda bekerja dalam project bernama
MyProj
. - Anda telah membuat set data bernama
dataset1
di region Google Cloudus-central1
diMyProj
. - Anda telah membuat penyimpanan DICOM bernama
dicomstore1
didataset1
.
Jika nama resource berbeda, Anda harus mengubah perintah yang tercantum dalam dokumen ini.
- Di konsol Google Cloud, buka halaman Pemilih project.
Buka halaman Pemilih project - Pilih project Google Cloud bernama
MyProj
. -
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Enable the Cloud Healthcare API.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
- Dalam shell, jalankan perintah
gcloud components update
untuk memastikan Anda memiliki gcloud CLI versi terbaru yang menyertakan fungsi terkait Cloud Healthcare API.
Membuat akun layanan IAM
Peran Healthcare Dataset Administrator mencakup semua peran yang diperlukan untuk tutorial ini.
Tetapkan peran Healthcare Dataset Administrator ke akun layanan.
Aktifkan kunci akun layanan Anda:
gcloud auth activate-service-account --key-file=path-to-key-file
Outputnya adalah sebagai berikut:
Activated service account credentials for: [key-name@project-name.iam.gserviceaccount.com]
key-name
adalah nama yang Anda tetapkan ke kunci akun layanan.project-name
adalah nama project Google Cloud Anda.
Menggunakan viewer gambar medis
Tutorial ini menggunakan viewer diagnostik Mach7 sebagai viewer gambar medis. Anda dapat meminta versi demonstrasi viewer di situs Mach7
Untuk menggunakan viewer ini, tetapkan peran Healthcare DICOM Viewer ke akun pengguna Anda dengan melakukan langkah-langkah berikut:
Sebagai administrator di konsol Google Cloud, buka halaman IAM.
Klik Tambahkanperson_add.
Di kolom Akun utama baru, masukkan akun pengguna atau alamat Gmail Anda.
Di menu drop-down Pilih peran, pilih Cloud Healthcare.
Arahkan kursor ke Cloud Healthcare, lalu pilih peran Healthcare DICOM Viewer.
Klik Simpan.
Agar dapat menggunakan viewer untuk tujuan produksi, Anda perlu mendapatkan versi lengkap.
Mendapatkan token akses OAuth 2.0
Agar dapat menggunakan Cloud Healthcare API untuk menyerap data, Anda memerlukan token akses OAuth 2.0
yang diperoleh perintah dalam tutorial ini untuk Anda. Dalam tutorial
ini, beberapa contoh permintaan Cloud Healthcare API menggunakan alat
command line curl
. Contoh ini menggunakan perintah gcloud auth print-access-token
untuk mendapatkan token pemilik OAuth 2.0 dan menyertakan token tersebut di
header otorisasi permintaan. Untuk mengetahui informasi selengkapnya tentang perintah ini, lihat
gcloud auth application-default print-access-token
.
Tutorial ini membahas dua kasus penggunaan paling umum dalam menghapus informasi
identitas dari data DICOM. Dalam kedua kasus tersebut, solusi disediakan dengan menggunakan
alat command line curl
atau Google Cloud CLI. Untuk
mengetahui informasi selengkapnya tentang melakukan de-identifikasi data DICOM menggunakan
Cloud Healthcare API, opsi konfigurasi, serta contoh perintah curl
dan Windows PowerShell, lihat Melakukan de-identifikasi data DICOM.
Menyiapkan variabel lingkungan
Langkah ini berlaku untuk kedua kasus penggunaan.
Ekspor variabel lingkungan berdasarkan lokasi dan atribut penyimpanan DICOM tempat gambar Anda disimpan.
export PROJECT_ID=MyProj export REGION=us-central1 export SOURCE_DATASET_ID=dataset1 export DICOM_STORE_ID=dicomstore1 export DESTINATION_DATASET_ID=deid-dataset1
Kasus penggunaan I: Menghapus semua metadata dan menyamarkan semua teks sisipan
Kasus penggunaan ini menunjukkan cara melakukan de-identifikasi set data yang berisi penyimpanan DICOM dan data DICOM dengan menghapus semua metadata (kecuali data minimum yang diperlukan untuk resource DICOM yang valid) dan dengan menyamarkan semua teks sisipan dari DICOM gambar. Anda dapat melakukan fungsi berikut:
- Buat permintaan
POST
dan masukkan nama set data tujuan dan token akses. - Hapus semua metadata dan buat kumpulan tag
keepList
minimum agar memiliki resource DICOM yang valid. - Samarkan semua teks sisipan yang sensitif dari gambar DICOM dengan membuat
objek
DeidentifyConfig
denganimage.text_redaction_mode
yang ditetapkan keREDACT_ALL_TEXT
.
Anda dapat melakukan semua fungsi ini dalam satu perintah curl
seperti berikut:
curl -X POST \
-H "Authorization: Bearer "$(gcloud auth print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
--data "{
'destinationDataset': 'projects/$PROJECT_ID/locations/$REGION/datasets/$DESTINATION_DATASET_ID',
'config': {
'dicom': {'keepList': {
'tags': [
'StudyInstanceUID',
'SOPInstanceUID',
'TransferSyntaxUID',
'PixelData',
'Columns',
'NumberOfFrames',
'PixelRepresentation',
'MediaStorageSOPClassUID',
'MediaStorageSOPInstanceUID',
'Rows',
'SamplesPerPixel',
'BitsAllocated',
'HighBit',
'PhotometricInterpretation',
'BitsStored' ] }
},
'image': {
'textRedactionMode': 'REDACT_ALL_TEXT'
}
}
}" "https://healthcare.googleapis.com/v1/projects/$PROJECT_ID/locations/$REGION/datasets/$SOURCE_DATASET_ID:deidentify"
Atau, Anda dapat menyelesaikan operasi de-identifikasi yang sama tanpa mengetahui atau
menentukan nama tag dengan menggunakan profil filter tag
MINIMAL_KEEP_LIST_PROFILE
. Lihat contoh berikut:
curl -X POST \
-H "Authorization: Bearer "$(gcloud auth print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
--data "{
'destinationDataset': 'projects/$PROJECT_ID/locations/$REGION/datasets/$DESTINATION_DATASET_ID',
'config': {
'dicom':{'filterProfile':'MINIMAL_KEEP_LIST_PROFILE'},
'image': {
'textRedactionMode': 'REDACT_ALL_TEXT'
}
}
}" "https://healthcare.googleapis.com/v1/projects/$PROJECT_ID/locations/$REGION/datasets/$SOURCE_DATASET_ID:deidentify"
Dalam semua perintah sebelumnya, jika permintaan berhasil, server akan menampilkan respons dalam format JSON, seperti berikut:
{ "name": "projects/$PROJECT_ID/locations/$REGION/datasets/$SOURCE_DATASET_ID/OPERATION_NAME" }
Respons berisi nama operasi. Anda dapat menggunakan nama operasi dengan
Metode get
operasi
untuk melacak status operasi.
curl -X GET \
-H "Authorization: Bearer "$(gcloud auth print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
"https://healthcare.googleapis.com/v1/projects/$PROJECT_ID/locations/$REGION/datasets/$SOURCE_DATASET_ID/operations/OPERATION_NAME"
Jika permintaan berhasil, server akan menampilkan respons dalam format JSON.
Setelah proses de-identifikasi selesai, respons akan menyertakan "done":
true
.
{ "name": "projects/$PROJECT_ID/locations/$REGION/datasets/$SOURCE_DATASET_ID/operations/OPERATION_NAME", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1.dataset.DatasetService.DeidentifyDataset", "createTime": "2018-01-01T00:00:00Z", "endTime": "2018-01-01T00:00:00Z" }, "done": true, "response": { "@type": "...", "successStoreCount": "SUCCESS_STORE_COUNT" } }
Anda juga dapat menggunakan Google Cloud CLI ke Google Cloud untuk menjalankan semua
versi Cloud Healthcare API, termasuk de-identifikasi API.
Untuk daftar lengkap perintah yang tersedia, lihat
dokumentasi gcloud
Cloud Healthcare API atau jalankan perintah
berikut:
gcloud healthcare --help
Contoh berikut menunjukkan cara menggunakan gcloud CLI untuk melakukan de-identifikasi set data yang berisi penyimpanan DICOM dan data DICOM untuk menghapus semua metadata dan menyamarkan semua teks sisipan dari gambar DICOM.
gcloud healthcare datasets deidentify $SOURCE_DATASET_ID \
--location $REGION \
--dicom-filter-tags=StudyInstanceUID,SOPInstanceUID,TransferSyntaxUID,PixelData,Columns,NumberOfFrames,PixelRepresentation,MediaStorageSOPClassUID,MediaStorageSOPInstanceUID,Rows,SamplesPerPixel,BitsAllocated,HighBit,PhotometricInterpretation,BitsStored \
--text-redaction-mode all \
--destination-dataset projects/$PROJECT_ID/locations/$REGION/datasets/$DESTINATION_DATASET_ID \
--async
Jika permintaan berhasil, server akan menampilkan respons seperti berikut:
Request issued for: [$SOURCE_DATASET_ID] Check operation [OPERATION NAME] for status. name: projects/$PROJECT_ID/locations/$REGION/datasets/$SOURCE_DATASET_ID/operations/OPERATION_NAME
Untuk memeriksa status operasi, jalankan perintah berikut:
gcloud healthcare operations describe --dataset $SOURCE_DATASET_ID OPERATION_NAME
Jika permintaan berhasil, server akan menampilkan respons seperti berikut:
Setelah proses de-identifikasi selesai, respons akan berisi
"done": true
.
done: true metadata: '@type': type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata apiMethodName: google.cloud.healthcare.v1.dataset.DatasetService.DeidentifyDataset "createTime": "2018-01-01T00:00:00Z", "endTime": "2018-01-01T00:00:00Z" name: "projects/$PROJECT_ID/locations/$REGION/datasets/$SOURCE_DATASET_ID/operations/OPERATION_NAME" response: '@type': type.googleapis.com/google.cloud.healthcare.v1.dataset.DeidentifySummary successResourceCount: 'SUCCESS_RESOURCE_COUNT' successStoreCount: 'SUCCESS_STORE_COUNT'
Kasus penggunaan II: Mengubah metadata dan menyamarkan teks sisipan yang sensitif
Kasus penggunaan ini menunjukkan cara melakukan de-identifikasi set data yang berisi penyimpanan DICOM dan
data DICOM dengan menggunakan metode pemfilteran tag filterProfile
untuk menghapus beberapa
metadata, mengubah metadata lainnya, dan menyamarkan teks sisipan yang sensitif yang terkait
dengan gambar. Tujuannya adalah untuk menyamarkan nilai PERSON_NAME
, mengganti
nilai PHONE_NUMBER
dengan tanda bintang, dan mengubah DATE
dan DATE_OF_BIRTH
menjadi
nilai tanggal dalam rentang 100 hari nilai-nilai aslinya.
Dalam kasus penggunaan ini, kunci kriptografis
yang disediakan, U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=
, adalah kunci berenkode base64
yang dienkripsi AES 256 bit dan dibuat menggunakan perintah berikut. Saat diminta,
sandi kosong akan diberikan ke perintah:
echo -n "test" | openssl enc -e -aes-256-ofb -a -salt
Anda dapat melakukan fungsi berikut:
- Buat permintaan
POST
dan masukkan nama set data tujuan dan token akses. - Hapus beberapa metadata dan ubah metadata lainnya dalam tag DICOM menggunakan
profil filter
DEIDENTIFY_TAG_CONTENT
dengan kombinasi jenis info dan transformasi primitif yang sesuai. - Samarkan teks sisipan dari gambar DICOM dengan menyetel
image.text_redaction_mode ke
REDACT_SENSITIVE_TEXT
.
Anda dapat melakukan semua fungsi ini dalam satu perintah curl
seperti berikut:
curl -X POST \
-H "Authorization: Bearer "$(gcloud auth print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
--data "{
'destinationDataset': 'projects/$PROJECT_ID/locations/$REGION/datasets/$DESTINATION_DATASET_ID',
'config':{
'dicom':{'filterProfile':'DEIDENTIFY_TAG_CONTENTS'},
'text':{
'transformations':[
{'infoTypes':['PERSON_NAME'], 'redactConfig':{}},
{'infoTypes':['PHONE_NUMBER'], 'characterMaskConfig':{'maskingCharacter':''}},
{'infoTypes':['DATE', 'DATE_OF_BIRTH'], 'dateShiftConfig':{'cryptoKey':'U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU='}}]},
'image':{'textRedactionMode':'REDACT_SENSITIVE_TEXT'}}}" \
"https://healthcare.googleapis.com/v1/projects/$PROJECT_ID/locations/$REGION/datasets/$SOURCE_DATASET_ID:deidentify"
Jika permintaan berhasil, server akan menampilkan respons dalam format JSON seperti berikut:
{ "name": "projects/$PROJECT_ID/locations/$REGION/datasets/$SOURCE_DATASET_ID/OPERATION_NAME" }
Respons berisi nama operasi. Anda dapat menggunakan
Metode get
operasi
untuk melacak status operasi:
curl -X GET \
-H "Authorization: Bearer "$(gcloud auth print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
"https://healthcare.googleapis.com/v1/projects/$PROJECT_ID/locations/$REGION/datasets/$SOURCE_DATASET_ID/operations/OPERATION_NAME"
Jika permintaan berhasil, server akan menampilkan respons berikut dalam format JSON:
{ "name": "projects/$PROJECT_ID/locations/$REGION/datasets/$SOURCE_DATASET_ID/operations/OPERATION_NAME", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1.dataset.DatasetService.DeidentifyDataset", "createTime": "2018-01-01T00:00:00Z", "endTime": "2018-01-01T00:00:00Z" }, "done": true, "response": { "@type": "...", "successStoreCount": "SUCCESS_STORE_COUNT" } }
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Menghapus project
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus setiap resource
Hapus set data tujuan. Jika perlu, tambahkan parameter
--location
dan tentukan region untuk set data Anda.gcloud healthcare datasets delete $DESTINATION_DATASET_ID
Langkah selanjutnya
- De-identifikasi gambar medis melalui Cloud Healthcare API
- Melakukan de-identifikasi Data DICOM
- Pengumuman Healthcare API Beta
- Mengekspor Metadata DICOM ke BigQuery
- Untuk mengetahui informasi selengkapnya tentang kemampuan DICOM, lihat Pernyataan kesesuaian DICOM.
Untuk mengetahui informasi selengkapnya tentang Cloud Healthcare API, termasuk informasi tentang dukungan untuk FHIR dan HL7v2, lihat Dokumentasi Cloud Healthcare API.
Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.