Halaman ini menjelaskan cara melakukan de-identifikasi data sensitif dalam resource FHIR menggunakan Cloud Healthcare API di tingkat berikut:
- Di tingkat set data menggunakan
datasets.deidentify - Di tingkat FHIR store menggunakan
fhirStores.deidentify
Halaman ini juga menjelaskan cara menerapkan filter saat melakukan de-identifikasi data di tingkat FHIR store.
Ringkasan de-identifikasi
De-identifikasi tingkat set data
Untuk melakukan de-identifikasi data FHIR di tingkat set data, panggil operasi
datasets.deidentify. Panggilan API de-identifikasi memiliki komponen berikut:
- Set data sumber: Set data yang berisi penyimpanan FHIR dengan satu atau beberapa resource yang memiliki data sensitif.
- Set data tujuan: De-identifikasi tidak memengaruhi set data asli atau datanya. Sebagai gantinya, salinan data asli yang tidak dapat diidentifikasi ditulis ke set data baru, yang disebut set data tujuan.
- Hal yang harus dilakukan untuk de-identifikasi: Parameter konfigurasi yang menentukan cara memproses
set data. Anda dapat mengonfigurasi parameter ini dengan menentukannya di
FhirConfigdan/atauTextConfigdi dalam objekDeidentifyConfigdan meneruskannya dengan salah satu cara berikut:- Menetapkan kolom
configisi permintaan - Menyimpannya di Cloud Storage dalam format JSON dan menentukan
lokasi file di bucket menggunakan kolom
gcsConfigUridari isi permintaan
- Menetapkan kolom
Sebagian besar contoh dalam panduan ini menunjukkan cara melakukan de-identifikasi data FHIR di tingkat set data.
De-identifikasi tingkat FHIR store
Melakukan de-identifikasi data FHIR di tingkat FHIR store memungkinkan Anda memiliki kontrol yang lebih besar atas data FHIR yang akan di-de-identifikasi.
Untuk melakukan de-identifikasi data FHIR di penyimpanan FHIR, panggil metode
fhirStores.deidentify. Panggilan API de-identifikasi
memiliki komponen berikut:
- Penyimpanan FHIR sumber: Penyimpanan FHIR yang berisi satu atau beberapa resource yang memiliki data sensitif.
- FHIR store tujuan: De-identifikasi tidak memengaruhi FHIR store asli atau datanya. Sebagai gantinya, salinan data asli yang telah di-de-identifikasi ditulis ke penyimpanan FHIR tujuan. FHIR store tujuan harus sudah ada.
- Hal yang harus dilakukan untuk de-identifikasi: Parameter konfigurasi yang menentukan cara memproses
FHIR store. Anda dapat mengonfigurasi parameter ini dengan menentukannya di
FhirConfigdan/atauTextConfigdi dalam objekDeidentifyConfigdan meneruskannya dengan salah satu cara berikut:- Menetapkan kolom
configisi permintaan - Menyimpannya di Cloud Storage dalam format JSON dan menentukan
lokasi file di bucket menggunakan kolom
gcsConfigUridari isi permintaan
- Menetapkan kolom
Untuk contoh cara melakukan de-identifikasi data FHIR di tingkat penyimpanan FHIR, lihat Melakukan de-identifikasi data di tingkat penyimpanan FHIR.
Filter
Anda dapat melakukan de-identifikasi subset data di penyimpanan FHIR dengan menentukan daftar ID resource FHIR dalam permintaan fhirStores.deidentify. Untuk melihat contohnya, lihat
Melakukan de-identifikasi subset FHIR store.
Contoh resource FHIR yang digunakan dalam panduan ini
Contoh dalam panduan ini menggunakan resource Pasien
(DSTU2,
STU3,
dan R4)
di penyimpanan FHIR. Pasien memiliki properti yang ditampilkan dalam contoh
berikut. Nilai id dihasilkan oleh server. Jika Anda membuat resource Pasien
di penyimpanan FHIR Anda sendiri, nilai id yang ditampilkan akan berbeda dengan
nilai yang ditampilkan dalam sampel Pasien.
{
"address": [
{
"city": "Anycity",
"district": "Anydistrict",
"line": [
"123 Main Street"
],
"period": {
"start": "1990-12-05"
},
"postalCode": "12345",
"state": "CA",
"text": "123 Main Street Anycity, Anydistrict, CA 12345",
"type": "both",
"use": "home"
}
],
"birthDate": "1980-12-05",
"gender": "female",
"id": "r77433dd-dkeuc-633743nfd-383nfdsjds732",
"name": [
{
"family": "Smith",
"given": [
"Darcy"
],
"use": "official"
}
],
"resourceType": "Patient",
"text": {
"status": "generated",
"div": "<div><p><b>Patient</b></p><p><b>Name</b>: Smith, Darcy</p><p><b>DateOfBirth</b>: 1980-12-05</p><p><b>Gender</b>: Female</p></div>"
}
}
De-identifikasi data FHIR default
Anda dapat melakukan de-identifikasi data FHIR menggunakan metode "default" yang menyamarkan informasi kesehatan terlindungi (PHI) umum dalam resource di penyimpanan FHIR. Metode default menyamarkan informasi berikut:
- infoType yang ditentukan dalam infoType FHIR default
- Jalur yang ditentukan dalam profil de-identifikasi FHIR default
Contoh berikut menunjukkan cara menghilangkan identitas resource Pasien menggunakan metode default FHIR. Saat menggunakan metode default, gunakan FhirConfig kosong
di dalam objek DeidentifyConfig.
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'destinationDataset': 'projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID', 'config': { 'fhir': {} } }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"
}
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_ID"
"done": true.
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1.dataset.DatasetService.DeidentifyDataset",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.deidentify.DeidentifySummary",
"successStoreCount": "1",
"successResourceCount": "1"
}
}
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/fhir+json; charset=utf-8" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/datasets/DESTINATION_DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/r77433dd-dkeuc-633743nfd-383nfdsjds732"
{
"address": [
{
"city": "",
"district": "",
"line": [
""
],
"period": {
"start": "1990-12-05"
},
"postalCode": "",
"state": "CA",
"text": "",
"type": "both",
"use": "home"
}
],
"birthDate": "1981-02-24",
"gender": "female",
"id": "r77433dd-dkeuc-633743nfd-383nfdsjds732",
"meta": {
"lastUpdated": "2018-01-01T2018-01-01T00:00:00+00:00",
"versionId": "MTU0MDU4NTcxNjI2MTUxNDAwMA"
},
"name": [
{
"family": "",
"given": [
""
],
"use": "official"
}
],
"resourceType": "Patient",
"text": {
"div": "<div><p><b>Patient</b></p><p><b>Name</b>: [PERSON_NAME][PERSON_NAME][PERSON_NAME]</p><p><b>DateOfBirth</b>: 1981-02-24</p><p><b>Gender</b>: Female</p></div>",
"status": "generated"
}
}
PowerShell
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body "{ 'destinationDataset': 'projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID', 'config': { 'fhir': {} } }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"
}
get operasi
untuk melacak status operasi:
$cred = gcloud auth print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Get ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
"done": true.
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_NUMBER",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1.dataset.DatasetService.DeidentifyDataset",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.deidentify.DeidentifySummary",
"successStoreCount": "1",
"successResourceCount": "1"
}
}
$cred = gcloud auth print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -ContentType: "application/fhir+json; charset=utf-8" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/datasets/DESTINATION_DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/r77433dd-dkeuc-633743nfd-383nfdsjds732" | ConvertTo-Json
{
"address": [
{
"city": "",
"district": "",
"line": [
""
],
"period": {
"start": "1990-12-05"
},
"postalCode": "",
"state": "CA",
"text": "",
"type": "both",
"use": "home"
}
],
"birthDate": "1981-02-24",
"gender": "female",
"id": "r77433dd-dkeuc-633743nfd-383nfdsjds732",
"meta": {
"lastUpdated": "2018-01-01T2018-01-01T00:00:00+00:00",
"versionId": "MTU0MDU4NTcxNjI2MTUxNDAwMA"
},
"name": [
{
"family": "",
"given": [
""
],
"use": "official"
}
],
"resourceType": "Patient",
"text": {
"div": "<div><p><b>Patient</b></p><p><b>Name</b>: [PERSON_NAME][PERSON_NAME][PERSON_NAME]</p><p><b>DateOfBirth</b>: 1981-02-24</p><p><b>Gender</b>: Female</p></div>",
"status": "generated"
}
}
Anda dapat melihat bahwa nilai berikut diubah untuk menganonimkan resource:
- Nilai baru diberikan di kolom
birthDatemenggunakan teknik pergeseran tanggal dengan diferensial 100 hari. - Nilai dalam
address.citydisamarkan. - Nilai dalam
address.districtdisamarkan. - Nilai dalam
address.linedisamarkan. - Nilai dalam
address.postalCodedisamarkan. - Nilai dalam
address.textdisamarkan. - Nilai dalam
name.familydisamarkan. - Nilai dalam
name.givendisamarkan. - Teks bebas di kolom
text.divdiubah untuk mengganti nama pasien dengan infoType-nya,[PERSON_NAME]. Nilai tanggal lahir pasien diubah dengan cara yang sama seperti nilai di kolombirthDatediubah.
Melakukan de-identifikasi jalur FHIR tertentu
Untuk menentukan jalur FHIR mana yang akan di-de-identifikasi dan cara mengubahnya, konfigurasi
fieldMetadataList
dalam objek FhirConfig.
Di dalam fieldMetadataList, Anda menentukan daftar nama kolom atau nama jenis resource FHIR yang dipisahkan dengan titik dalam daftar paths. Selanjutnya,
Anda menentukan nilai Action
yang akan diterapkan ke semua item yang tercantum di paths. Lihat dokumentasi Action untuk mengetahui kemungkinan nilai.
Untuk
informasi tentang cara menyetel kolom paths di Cloud Healthcare API, lihat paths.
Pemformatan nilai dalam paths didasarkan pada FHIRPath.
Profil de-identifikasi FHIR default
Secara default, jika Anda tidak menentukan jalur FHIR apa pun di fieldMetadataList,
Cloud Healthcare API akan menerapkan profil de-identifikasi berikut
untuk memilih dan mengubah jalur FHIR. Profil yang diterapkan bergantung
pada versi FHIR yang Anda gunakan. Anda dapat meluaskan bagian berikut untuk melihat profil versi yang Anda gunakan. Anda juga dapat mendownload profil
(DSTU2,
STU3,
dan R4).
Menggunakan jalur untuk melakukan de-identifikasi resource
Contoh berikut menunjukkan cara mengonfigurasi penghapusan identitas resource Pasien dengan kriteria berikut:
- Nilai
HumanName(DSTU2, STU3, dan R4) untuk resource Pasien akan otomatis diterapkanTRANSFORM(penyensoran). Untuk pasien sampel, nilai HumanName adalah"family": "Smith"dan"given": [ "Darcy" ].
Tidak ada nilai lain yang diberikan dalam daftar paths di dalam fieldMetadataList,
sehingga data yang tersisa tidak berubah.
Contoh berikut menunjukkan cara menghilangkan identitas nilai HumanName resource Pasien:
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'destinationDataset': 'projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID', 'config': { 'fhir': { 'fieldMetadataList': [ { 'paths': [ 'Patient.HumanName' ], 'action': 'TRANSFORM' } ] } } }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"
}
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_ID"
"done": true.
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1.dataset.DatasetService.DeidentifyDataset",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.deidentify.DeidentifySummary",
"successStoreCount": "1",
"successResourceCount": "1"
}
}
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/fhir+json; charset=utf-8" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/datasets/DESTINATION_DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/r77433dd-dkeuc-633743nfd-383nfdsjds732"
{
"address": [
{
"city": "Anycity",
"district": "Anydistrict",
"line": [
"123 Main Street"
],
"period": {
"start": "1990-12-05"
},
"postalCode": "12345",
"state": "CA",
"text": "123 Main Street Anycity, Anydistrict, CA 12345",
"type": "both",
"use": "home"
}
],
"birthDate": "1980-12-05",
"gender": "female",
"id": "r77433dd-dkeuc-633743nfd-383nfdsjds732",
"meta": {
"lastUpdated": "2018-01-01T2018-01-01T00:00:00+00:00",
"versionId": "MTU0MDU4NTcxNjI2MTUxNDAwMAA"
},
"name": [
{
"family": "",
"given": [
""
],
"use": "official"
}
],
"resourceType": "Patient",
"text": {
"div": "<div><p><b>Patient</b></p><p><b>Name</b>: Smith, Darcy</p><p><b>DateOfBirth</b>: 1980-12-05</p><p><b>Gender</b>: Female</p></div>",
"status": "generated"
}
}
PowerShell
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body "{ 'destinationDataset': 'projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID', 'config': { 'fhir': { 'fieldMetadataList': [ { 'paths': [ 'Patient.HumanName' ], 'action': 'TRANSFORM' } ] } } }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"
}
get operasi
untuk melacak status operasi:
$cred = gcloud auth print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Get ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
"done": true.
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_NUMBER",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1.dataset.DatasetService.DeidentifyDataset",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.deidentify.DeidentifySummary",
"successStoreCount": "1",
"successResourceCount": "1"
}
}
$cred = gcloud auth print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -ContentType: "application/fhir+json; charset=utf-8" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/datasets/DESTINATION_DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/r77433dd-dkeuc-633743nfd-383nfdsjds732" | ConvertTo-Json
{
"address": [
{
"city": "Anycity",
"district": "Anydistrict",
"line": [
"123 Main Street"
],
"period": {
"start": "1990-12-05"
},
"postalCode": "12345",
"state": "CA",
"text": "123 Main Street Anycity, Anydistrict, CA 12345",
"type": "both",
"use": "home"
}
],
"birthDate": "1980-12-05",
"gender": "female",
"id": "r77433dd-dkeuc-633743nfd-383nfdsjds732",
"meta": {
"lastUpdated": "2018-01-01T2018-01-01T00:00:00+00:00",
"versionId": "MTU0MDU4NTcxNjI2MTUxNDAwMAA"
},
"name": [
{
"family": "",
"given": [
""
],
"use": "official"
}
],
"resourceType": "Patient",
"text": {
"div": "<div><p><b>Patient</b></p><p><b>Name</b>: Smith, Darcy</p><p><b>DateOfBirth</b>: 1980-12-05</p><p><b>Gender</b>: Female</p></div>",
"status": "generated"
}
}
Anda dapat melihat bahwa nilai berikut diubah untuk menganonimkan resource:
- Nilai dalam
name.familydisamarkan. - Nilai dalam
name.givendisamarkan.
Namun, tidak seperti sampel dalam de-identifikasi FHIR default, yang mengubah PHI umum, address, birthDate, dan teks bebas pasien dalam text.div tidak diubah karena tidak ditambahkan ke daftar paths di fieldMetadataList.
Menggunakan infoType dan transformasi dasar dengan resource FHIR
Cloud Healthcare API dapat menggunakan jenis informasi (infoTypes) untuk menentukan data yang dipindai saat melakukan de-identifikasi pada resource FHIR. infoType adalah jenis data sensitif, seperti nama pasien, alamat email, nomor telepon, nomor identifikasi, atau nomor kartu kredit. infoType yang digunakan dalam operasi de-identifikasi Cloud Healthcare API mencakup infoType yang ditemukan di Cloud Data Loss Prevention.
Transformasi dasar adalah aturan yang digunakan untuk mengubah nilai input.
infoType FHIR default
InfoType default yang digunakan saat melakukan de-identifikasi data FHIR adalah:
AGECREDIT_CARD_NUMBERDATEEMAIL_ADDRESSIP_ADDRESSLOCATIONMAC_ADDRESSPASSPORTPERSON_NAMEPHONE_NUMBERSWIFT_CODEUS_DRIVERS_LICENSE_NUMBERUS_SOCIAL_SECURITY_NUMBERUS_VEHICLE_IDENTIFICATION_NUMBERUS_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER
Opsi transformasi dasar
Opsi transformasi primitif Cloud Healthcare API mencakup:
RedactConfig: Menyensor nilai dengan menghapusnya.CharacterMaskConfig: Menyamarkan string sepenuhnya atau sebagian dengan mengganti karakter input dengan karakter tetap yang ditentukan.DateShiftConfig: Menggeser tanggal dengan jumlah hari acak, dengan opsi untuk konsisten pada konteks yang sama.CryptoHashConfig: Menggunakan SHA-256 untuk mengganti nilai input dengan representasi berenkode base64 dari string output yang di-hash yang dihasilkan menggunakan kunci enkripsi data tertentu.ReplaceWithInfoTypeConfig: Mengganti nilai input dengan nama infoType-nya.
Menentukan konfigurasi di TextConfig
InfoType dan transformasi dasar ditentukan dalam
InfoTypeTransformation,
yang merupakan objek di dalam
TextConfig.
Tentukan infoType dalam array infoTypes sebagai nilai yang dipisahkan koma.
Menentukan infoType bersifat opsional. Jika Anda tidak menentukan setidaknya satu infoType, transformasi akan berlaku untuk semua infoType bawaan dalam data.
Jika Anda menentukan infoType apa pun di InfoTypeTransformation, tentukan setidaknya satu transformasi dasar.
Bagian berikut menunjukkan cara menggunakan transformasi primitif yang tersedia
di InfoTypeTransformation bersama dengan infoType untuk menyesuaikan cara sumber daya FHIR
dianonimkan.
RedactConfig
Menentukan redactConfig akan menyamarkan nilai tertentu dengan menghapusnya sepenuhnya. Pesan
redactConfig tidak memiliki argumen; menentukannya akan mengaktifkan transformasi.
Contoh berikut menunjukkan cara menyamarkan tanggal lahir resource Pasien di
kolom Patient.text.div.
Tugas ini dilakukan dengan menyetel infoType DATE dengan
jalur Patient.text.div dan transformasi redactConfig.
Setelah mengirim
permintaan de-identifikasi ke Cloud Healthcare API, tanggal
lahir dalam nilai Patient.text.div akan disamarkan.
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'destinationDataset': 'projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID', 'config': { 'fhir': { 'fieldMetadataList': { 'paths': [ 'Patient.text.div' ], 'action': 'INSPECT_AND_TRANSFORM' } }, 'text': { 'transformations': [ { 'infoTypes': [ 'DATE' ], 'redactConfig': {} } ] } } }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"
}
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_ID"
"done": true.
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1.dataset.DatasetService.DeidentifyDataset",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.deidentify.DeidentifySummary",
"successStoreCount": "1",
"successResourceCount": "1"
}
}
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/fhir+json; charset=utf-8" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/datasets/DESTINATION_DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/r77433dd-dkeuc-633743nfd-383nfdsjds732"
{
"address": [
{
"city": "Anycity",
"district": "Anydistrict",
"line": [
"123 Main Street"
],
"period": {
"start": "1990-12-05"
},
"postalCode": "12345",
"state": "CA",
"text": "123 Main Street Anycity, Anydistrict, CA 12345",
"type": "both",
"use": "home"
}
],
"birthDate": "1980-12-05",
"gender": "female",
"id": "r77433dd-dkeuc-633743nfd-383nfdsjds732",
"meta": {
"lastUpdated": "2018-01-01T2018-01-01T00:00:00+00:00",
"versionId": "MTU0MDU4NTcxNjI2MTUxNDAwMAA"
},
"name": [
{
"family": "Smith",
"given": [
"Darcy"
],
"use": "official"
}
],
"resourceType": "Patient",
"text": {
"div": "<div><p><b>Patient</b></p><p><b>Name</b>: Smith, Darcy</p><p><b>DateOfBirth</b>: </p><p><b>Gender</b>: Female</p></div>",
"status": "generated"
}
}
PowerShell
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body "{ 'destinationDataset': 'projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID', 'config': { 'fhir': { 'fieldMetadataList': { 'paths': [ 'Patient.text.div' ], 'action': 'INSPECT_AND_TRANSFORM' } }, 'text': { 'transformations': [ { 'infoTypes': [ 'DATE' ], 'redactConfig': {} } ] } } }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"
}
get operasi
untuk melacak status operasi:
$cred = gcloud auth print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Get ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
"done": true.
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_NUMBER",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1.dataset.DatasetService.DeidentifyDataset",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.deidentify.DeidentifySummary",
"successStoreCount": "1",
"successResourceCount": "1"
}
}
$cred = gcloud auth print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -ContentType: "application/fhir+json; charset=utf-8" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/datasets/DESTINATION_DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/r77433dd-dkeuc-633743nfd-383nfdsjds732" | ConvertTo-Json
{
"address": [
{
"city": "Anycity",
"district": "Anydistrict",
"line": [
"123 Main Street"
],
"period": {
"start": "1990-12-05"
},
"postalCode": "12345",
"state": "CA",
"text": "123 Main Street Anycity, Anydistrict, CA 12345",
"type": "both",
"use": "home"
}
],
"birthDate": "1980-12-05",
"gender": "female",
"id": "r77433dd-dkeuc-633743nfd-383nfdsjds732",
"meta": {
"lastUpdated": "2018-01-01T2018-01-01T00:00:00+00:00",
"versionId": "MTU0MDU4NTcxNjI2MTUxNDAwMAA"
},
"name": [
{
"family": "Smith",
"given": [
"Darcy"
],
"use": "official"
}
],
"resourceType": "Patient",
"text": {
"div": "<div><p><b>Patient</b></p><p><b>Name</b>: Smith, Darcy</p><p><b>DateOfBirth</b>: </p><p><b>Gender</b>: Female</p></div>",
"status": "generated"
}
}
Output menunjukkan bahwa nilai DateOfBirth di text.div telah dihapus. Hal ini berbeda dengan contoh di Menghilangkan identitas jalur FHIR tertentu
tempat nilai DateOfBirth di text.div tidak dihapus menggunakan konfigurasi default.
CharacterMaskConfig
Menentukan characterMaskConfig akan mengganti string yang sesuai dengan infoType yang diberikan dengan karakter tetap yang ditentukan. Misalnya, daripada menyamarkan nama pasien atau mengubahnya menggunakan
hashing kriptografi, Anda dapat mengganti nama tersebut dengan serangkaian tanda bintang (*).
Tentukan karakter tetap sebagai nilai untuk kolom maskingCharacter.
Contoh berikut menunjukkan cara memperluas contoh yang digunakan dalam
Menghilangkan identitas jalur FHIR tertentu,
tetapi sekarang menyertakan penetapan infoType PERSON_NAME dengan
transformasi characterMaskConfig. Tidak ada karakter tetap yang diberikan, sehingga
masking secara default menggunakan tanda bintang. Setelah mengirimkan permintaan de-identifikasi ke Cloud Healthcare API, nilai di name.family dan name.given akan diganti dengan tanda bintang.
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'destinationDataset': 'projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID', 'config': { 'fhir': { 'fieldMetadataList': { 'paths': [ 'Patient.HumanName' ], 'action': 'TRANSFORM' } }, 'text': { 'transformations': [ { 'infoTypes': [ 'PERSON_NAME' ], 'characterMaskConfig': { 'maskingCharacter': '' } } ] } } }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"
}
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_ID"
"done": true.
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1.dataset.DatasetService.DeidentifyDataset",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.deidentify.DeidentifySummary",
"successStoreCount": "1",
"successResourceCount": "1"
}
}
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/fhir+json; charset=utf-8" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/datasets/DESTINATION_DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/r77433dd-dkeuc-633743nfd-383nfdsjds732"
{
"address": [
{
"city": "Anycity",
"district": "Anydistrict",
"line": [
"123 Main Street"
],
"period": {
"start": "1990-12-05"
},
"postalCode": "12345",
"state": "CA",
"text": "123 Main Street Anycity, Anydistrict, CA 12345",
"type": "both",
"use": "home"
}
],
"birthDate": "1980-12-05",
"gender": "female",
"id": "r77433dd-dkeuc-633743nfd-383nfdsjds732",
"meta": {
"lastUpdated": "2018-01-01T2018-01-01T00:00:00+00:00",
"versionId": "MTU0MDU4NTcxNjI2MTUxNDAwMAA"
},
"name": [
{
"family": "*****",
"given": [
"*****"
],
"use": "official"
}
],
"resourceType": "Patient",
"text": {
"div": "<div><p><b>Patient</b></p><p><b>Name</b>: Smith, Darcy</p><p><b>DateOfBirth</b>: 1980-12-05</p><p><b>Gender</b>: Female</p></div>",
"status": "generated"
}
}
PowerShell
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body "{ 'destinationDataset': 'projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID', 'config': { 'fhir': { 'fieldMetadataList': { 'paths': [ 'Patient.HumanName' ], 'action': 'TRANSFORM' } }, 'text': { 'transformations': [ { 'infoTypes': [ 'PERSON_NAME' ], 'characterMaskConfig': { 'maskingCharacter': '' } } ] } } }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"
}
get operasi
untuk melacak status operasi:
$cred = gcloud auth print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Get ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
"done": true.
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_NUMBER",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1.dataset.DatasetService.DeidentifyDataset",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.deidentify.DeidentifySummary",
"successStoreCount": "1",
"successResourceCount": "1"
}
}
$cred = gcloud auth print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -ContentType: "application/fhir+json; charset=utf-8" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/datasets/DESTINATION_DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/r77433dd-dkeuc-633743nfd-383nfdsjds732" | ConvertTo-Json
{
"address": [
{
"city": "Anycity",
"district": "Anydistrict",
"line": [
"123 Main Street"
],
"period": {
"start": "1990-12-05"
},
"postalCode": "12345",
"state": "CA",
"text": "123 Main Street Anycity, Anydistrict, CA 12345",
"type": "both",
"use": "home"
}
],
"birthDate": "1980-12-05",
"gender": "female",
"id": "r77433dd-dkeuc-633743nfd-383nfdsjds732",
"meta": {
"lastUpdated": "2018-01-01T2018-01-01T00:00:00+00:00",
"versionId": "MTU0MDU4NTcxNjI2MTUxNDAwMAA"
},
"name": [
{
"family": "*****",
"given": [
"*****"
],
"use": "official"
}
],
"resourceType": "Patient",
"text": {
"div": "<div><p><b>Patient</b></p><p><b>Name</b>: Smith, Darcy</p><p><b>DateOfBirth</b>: 1980-12-05</p><p><b>Gender</b>: Female</p></div>",
"status": "generated"
}
}
Output menunjukkan bahwa nilai dalam name.family dan name.given telah
diganti dengan tanda bintang. Hal ini berbeda dengan contoh di Menghilangkan identitas jalur FHIR tertentu
tempat nilai di name.family dan name.given disamarkan.
DateShiftConfig
Cloud Healthcare API dapat mengubah tanggal dengan menggesernya dalam rentang preset. Untuk menjaga konsistensi transformasi tanggal di seluruh proses penghapusan identitas, gunakan DateShiftConfig dengan salah satu opsi berikut:
- (Tidak digunakan lagi): Kunci berenkode base64 AES 128/192/256-bit mentah.
- (Direkomendasikan): Kunci yang digabungkan Cloud Key Management Service (Cloud KMS). Lihat Melakukan de-identifikasi dan mengidentifikasi ulang teks sensitif untuk melihat contoh cara menggunakan kunci gabungan Cloud KMS.
Anda harus memberikan peran dengan izin cloudkms.cryptoKeyVersions.useToDecrypt
ke akun layanan Agen Layanan Cloud Healthcare
untuk mendekripsi kunci yang di-wrap Cloud KMS. Sebaiknya gunakan peran
Cloud KMS CryptoKey Decrypter (roles/cloudkms.cryptoKeyDecrypter).
Saat Anda menggunakan Cloud KMS untuk operasi kriptografi, biaya akan berlaku. Lihat
Harga Cloud Key Management Service untuk mengetahui informasi selengkapnya.
Cloud Healthcare API menggunakan kunci ini untuk menghitung jumlah pergeseran tanggal, seperti tanggal lahir pasien, dalam diferensial 100 hari.
Jika Anda tidak memberikan kunci, Cloud Healthcare API akan membuat kuncinya sendiri setiap kali operasi de-identifikasi berjalan pada nilai tanggal. Hal ini dapat menyebabkan output tanggal antar-operasi berjalan tidak konsisten.
Contoh berikut menunjukkan cara menyetel infoType DATE dengan transformasi DateShiftConfig di jalur Patient.birthDate dan Patient.text.div. Setelah mengirimkan permintaan de-identifikasi ke Cloud Healthcare API, nilai birthDate dan tanggal lahir di Patient.text.div akan bergeser dalam rentang plus atau minus 100 hari dari tanggal lahir asli, 1980-12-05.
Kunci kriptografis yang disediakan dalam contoh, U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=, adalah kunci berenkode base64 256-bit yang dienkripsi AES mentah dan dibuat menggunakan perintah berikut. Saat diminta, berikan sandi pilihan Anda ke perintah:
echo -n "test" | openssl enc -e -aes-256-ofb -a -salt
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'destinationDataset': 'projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID', 'config': { 'fhir': { 'fieldMetadataList': { 'paths': [ 'Patient.birthDate', 'Patient.text.div' ], 'action': 'INSPECT_AND_TRANSFORM' } }, 'text': { 'transformations': { 'infoTypes': [ 'DATE' ], 'dateShiftConfig': { 'cryptoKey': 'U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=' } } } } }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"
}
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_ID"
"done": true.
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1.dataset.DatasetService.DeidentifyDataset",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.deidentify.DeidentifySummary",
"successStoreCount": "1",
"successResourceCount": "1"
}
}
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/fhir+json; charset=utf-8" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/datasets/DESTINATION_DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/r77433dd-dkeuc-633743nfd-383nfdsjds732"
{
"address": [
{
"city": "Anycity",
"district": "Anydistrict",
"line": [
"123 Main Street"
],
"period": {
"start": "1990-12-05"
},
"postalCode": "12345",
"state": "",
"text": "123 Main Street Anycity, Anydistrict, CA 12345",
"type": "both",
"use": "home"
}
],
"birthDate": "1981-02-19",
"gender": "female",
"id": "r77433dd-dkeuc-633743nfd-383nfdsjds732",
"meta": {
"lastUpdated": "2018-01-01T2018-01-01T00:00:00+00:00",
"versionId": "MTU0MDU4NTcxNjI2MTUxNDAwMAA"
},
"name": [
{
"family": "Smith",
"given": [
"Darcy"
],
"use": "official"
}
],
"resourceType": "Patient",
"text": {
"div": "<div><p><b>Patient</b></p><p><b>Name</b>: Smith, Darcy</p><p><b>DateOfBirth</b>: 1981-02-19</p><p><b>Gender</b>: Female</p></div>",
"status": "generated"
}
}
PowerShell
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body "{ 'destinationDataset': 'projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID', 'config': { 'fhir': { 'fieldMetadataList': { 'paths': [ 'Patient.HumanName', 'Patient.text.div' ], 'action': 'INSPECT_AND_TRANSFORM' } }, 'text': { 'transformations': { 'infoTypes': [ 'DATE' ], 'dateShiftConfig': { 'cryptoKey': 'U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=' } } } } }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"
}
get operasi
untuk melacak status operasi:
$cred = gcloud auth print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Get ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
"done": true.
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_NUMBER",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1.dataset.DatasetService.DeidentifyDataset",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.deidentify.DeidentifySummary",
"successStoreCount": "1",
"successResourceCount": "1"
}
}
$cred = gcloud auth print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -ContentType: "application/fhir+json; charset=utf-8" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/datasets/DESTINATION_DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/r77433dd-dkeuc-633743nfd-383nfdsjds732" | ConvertTo-Json
{
"address": [
{
"city": "Anycity",
"district": "Anydistrict",
"line": [
"123 Main Street"
],
"period": {
"start": "1990-12-05"
},
"postalCode": "12345",
"state": "",
"text": "123 Main Street Anycity, Anydistrict, CA 12345",
"type": "both",
"use": "home"
}
],
"birthDate": "1981-02-19",
"gender": "female",
"id": "r77433dd-dkeuc-633743nfd-383nfdsjds732",
"meta": {
"lastUpdated": "2018-01-01T2018-01-01T00:00:00+00:00",
"versionId": "MTU0MDU4NTcxNjI2MTUxNDAwMAA"
},
"name": [
{
"family": "Smith",
"given": [
"Darcy"
],
"use": "official"
}
],
"resourceType": "Patient",
"text": {
"div": "<div><p><b>Patient</b></p><p><b>Name</b>: Smith, Darcy</p><p><b>DateOfBirth</b>: 1981-02-19</p><p><b>Gender</b>: Female</p></div>",
"status": "generated"
}
}
Output menunjukkan bahwa nilai di birthDate dan tanggal lahir di
Patient.text.div telah diubah menjadi
nilai baru 1981-02-19. Transformasi ini terjadi sebagai hasil dari penggabungan diferensial 100 hari dengan ID Pasien dan nilai cryptoKey yang diberikan.
Nilai baru untuk birthDate dan tanggal lahir di Patient.text.div konsisten untuk Pasien ini di antara proses penghapusan identitas selama cryptoKey yang sama diberikan.
CryptoHashConfig
Cloud Healthcare API dapat mentransformasi data dengan mengganti nilai dengan hash kriptografi (juga disebut nilai pengganti). Untuk melakukannya, tentukan pesan
cryptoHashConfig.
Anda dapat mengosongkan cryptoHashConfig, atau Anda dapat memberikannya dengan:
- (Tidak digunakan lagi): Kunci berenkode base64 AES 128/192/256-bit mentah.
- (Direkomendasikan): Kunci yang digabungkan Cloud Key Management Service (Cloud KMS). Lihat Melakukan de-identifikasi dan mengidentifikasi ulang teks sensitif untuk melihat contoh cara menggunakan kunci gabungan Cloud KMS.
Anda harus memberikan peran dengan izin cloudkms.cryptoKeyVersions.useToDecrypt
ke akun layanan Agen Layanan Cloud Healthcare
untuk mendekripsi kunci yang di-wrap Cloud KMS. Sebaiknya gunakan peran
Cloud KMS CryptoKey Decrypter (roles/cloudkms.cryptoKeyDecrypter).
Saat Anda menggunakan Cloud KMS untuk operasi kriptografi, biaya akan berlaku. Lihat
Harga Cloud Key Management Service untuk mengetahui informasi selengkapnya.
Menyediakan kunci yang konsisten akan menghasilkan nilai pengganti yang konsisten di antara proses penghapusan identifikasi. Jika Anda tidak memberikan kunci, Cloud Healthcare API akan membuat kunci baru setiap kali operasi berjalan. Menggunakan kunci yang berbeda akan menghasilkan nilai pengganti yang berbeda.
Contoh berikut memperluas contoh yang digunakan dalam
Menghilangkan identitas jalur FHIR tertentu,
tetapi sekarang menyertakan setelan infoType PERSON_NAME dengan transformasi cryptoKey
pada jalur Patient.HumanName. Setelah mengirim permintaan de-identifikasi ke Cloud Healthcare API, nilai name.family dan name.given diganti dengan nilai pengganti.
Kunci kriptografis yang disediakan dalam contoh, U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=, adalah kunci berenkode base64 256-bit yang dienkripsi AES mentah dan dibuat menggunakan perintah berikut. Saat diminta, berikan sandi pilihan Anda ke perintah:
echo -n "test" | openssl enc -e -aes-256-ofb -a -salt
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'destinationDataset': 'projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID', 'config': { 'fhir': { 'fieldMetadataList': { 'paths': [ 'Patient.HumanName' ], 'action': 'INSPECT_AND_TRANSFORM' } }, 'text': { 'transformations': { 'infoTypes': [ 'PERSON_NAME' ], 'cryptoHashConfig': { 'cryptoKey': 'U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=' } } } } }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"
}
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_ID"
"done": true.
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1.dataset.DatasetService.DeidentifyDataset",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.deidentify.DeidentifySummary",
"successStoreCount": "1",
"successResourceCount": "1"
}
}
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/fhir+json; charset=utf-8" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/datasets/DESTINATION_DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/r77433dd-dkeuc-633743nfd-383nfdsjds732"
{
"address": [
{
"city": "Anycity",
"district": "Anydistrict",
"line": [
"123 Main Street"
],
"period": {
"start": "1990-12-05"
},
"postalCode": "12345",
"state": "CA",
"text": "123 Main Street Anycity, Anydistrict, CA 12345",
"type": "both",
"use": "home"
}
],
"birthDate": "1980-12-05",
"gender": "female",
"id": "r77433dd-dkeuc-633743nfd-383nfdsjds732",
"meta": {
"lastUpdated": "2018-01-01T2018-01-01T00:00:00+00:00",
"versionId": "MTU0MDU4NTcxNjI2MTUxNDAwMAA"
},
"name": [
{
"family": "NlVBV12Hhb5DD8WNqlTpXboFxzlUSlqAmYDet/jIViQ=",
"given": [
"FSH4D/IGb80a1rS0L0kqfC3DCDt6//17VPhIkOzH2pk="
],
"use": "official"
}
],
"resourceType": "Patient",
"text": {
"div": "<div><p><b>Patient</b></p><p><b>Name</b>: Smith, Darcy</p><p><b>DateOfBirth</b>: 1980-12-05</p><p><b>Gender</b>: Female</p></div>",
"status": "generated"
}
}
PowerShell
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body "{ 'destinationDataset': 'projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID', 'config': { 'fhir': { 'fieldMetadataList': { 'paths': [ 'Patient.HumanName' ], 'action': 'TRANSFORM' } }, 'text': { 'transformations': { 'infoTypes': [ 'PERSON_NAME' ], 'cryptoHashConfig': { 'cryptoKey': 'U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=' } } } } }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"
}
get operasi
untuk melacak status operasi:
$cred = gcloud auth print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Get ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
"done": true.
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_NUMBER",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1.dataset.DatasetService.DeidentifyDataset",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.deidentify.DeidentifySummary",
"successStoreCount": "1",
"successResourceCount": "1"
}
}
$cred = gcloud auth print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -ContentType: "application/fhir+json; charset=utf-8" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/datasets/DESTINATION_DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/r77433dd-dkeuc-633743nfd-383nfdsjds732" | ConvertTo-Json
{
"address": [
{
"city": "Anycity",
"district": "Anydistrict",
"line": [
"123 Main Street"
],
"period": {
"start": "1990-12-05"
},
"postalCode": "12345",
"state": "CA",
"text": "123 Main Street Anycity, Anydistrict, CA 12345",
"type": "both",
"use": "home"
}
],
"birthDate": "1980-12-05",
"gender": "female",
"id": "r77433dd-dkeuc-633743nfd-383nfdsjds732",
"meta": {
"lastUpdated": "2018-01-01T2018-01-01T00:00:00+00:00",
"versionId": "MTU0MDU4NTcxNjI2MTUxNDAwMAA"
},
"name": [
{
"family": "NlVBV12Hhb5DD8WNqlTpXboFxzlUSlqAmYDet/jIViQ=",
"given": [
"FSH4D/IGb80a1rS0L0kqfC3DCDt6//17VPhIkOzH2pk="
],
"use": "official"
}
],
"resourceType": "Patient",
"text": {
"div": "<div><p><b>Patient</b></p><p><b>Name</b>: Smith, Darcy</p><p><b>DateOfBirth</b>: 1980-12-05</p><p><b>Gender</b>: Female</p></div>",
"status": "generated"
}
}
Output menunjukkan bahwa nilai untuk name.family dan name.given
telah diubah menggunakan hashing kriptografi. Transformasi ini terjadi sebagai hasil penggabungan ID Pasien dan nilai cryptoKey yang diberikan.
Nilai name.family dan name.given baru konsisten untuk Pasien ini di antara proses penghilangan identitas selama cryptoKey yang sama diberikan.
ReplaceWithInfoTypeConfig
Cloud Healthcare API dapat mentransformasi data dengan mengganti nilai dengan
nama infoType nilai tersebut. Anda dapat melakukannya dengan menentukan pesan
replaceWithInfoTypeConfig.
Contoh berikut memperluas contoh yang digunakan dalam
Melakukan de-identifikasi jalur FHIR tertentu,
tetapi contoh ini menentukan transformasi replaceWithInfoType pada PERSON_NAME dan jalur fieldMetadataList yang ditetapkan ke Patient.HumanName.
Setelah mengirim permintaan de-identifikasi ke Cloud Healthcare API, nilai name.family dan name.given diganti dengan infoType nilai.
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'destinationDataset': 'projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID', 'config': { 'fhir': { 'fieldMetadataList': { 'paths': [ 'Patient.HumanName' ], 'action': 'INSPECT_AND_TRANSFORM' } }, 'text': { 'transformations': { 'infoTypes': [ 'PERSON_NAME' ], 'replaceWithInfoType': {} } } } }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"
}
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_ID"
"done": true.
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1.dataset.DatasetService.DeidentifyDataset",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.deidentify.DeidentifySummary",
"successStoreCount": "1",
"successResourceCount": "1"
}
}
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/fhir+json; charset=utf-8" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/datasets/DESTINATION_DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/r77433dd-dkeuc-633743nfd-383nfdsjds732"
{
"address": [
{
"city": "Anycity",
"district": "Anydistrict",
"line": [
"123 Main Street"
],
"period": {
"start": "1990-12-05"
},
"postalCode": "12345",
"state": "CA",
"text": "123 Main Street Anycity, Anydistrict, CA 12345",
"type": "both",
"use": "home"
}
],
"birthDate": "1980-12-05",
"gender": "female",
"id": "r77433dd-dkeuc-633743nfd-383nfdsjds732",
"meta": {
"lastUpdated": "2018-01-01T2018-01-01T00:00:00+00:00",
"versionId": "MTU0MDU4NTcxNjI2MTUxNDAwMAA"
},
"name": [
{
"family": "[PERSON_NAME]",
"given": [
"[PERSON_NAME]"
],
"use": "official"
}
],
"resourceType": "Patient",
"text": {
"div": "<div><p><b>Patient</b></p><p><b>Name</b>: Smith, Darcy</p><p><b>DateOfBirth</b>: 1980-12-05</p><p><b>Gender</b>: Female</p></div>",
"status": "generated"
}
}
PowerShell
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body "{ 'destinationDataset': 'projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID', 'config': { 'fhir': { 'fieldMetadataList': { 'paths': [ 'Patient.HumanName' ], 'action': 'TRANSFORM' } }, 'text': { 'transformations': { 'infoTypes': [ 'PERSON_NAME' ], 'replaceWithInfoTypeConfig': {} } } } }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"
}
get operasi
untuk melacak status operasi:
$cred = gcloud auth print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Get ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
"done": true.
{
"name": "projects/PROJECT_ID/locations/REGION/datasets/SOURCE_DATASET_ID/operations/OPERATION_NUMBER",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1.dataset.DatasetService.DeidentifyDataset",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/viewer/CLOUD_LOGGING_URL"
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.deidentify.DeidentifySummary",
"successStoreCount": "1",
"successResourceCount": "1"
}
}
$cred = gcloud auth print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -ContentType: "application/fhir+json; charset=utf-8" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/datasets/DESTINATION_DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/r77433dd-dkeuc-633743nfd-383nfdsjds732" | ConvertTo-Json
{
"address": [
{
"city": "Anycity",
"district": "Anydistrict",
"line": [
"123 Main Street"
],
"period": {
"start": "1990-12-05"
},
"postalCode": "12345",
"state": "CA",
"text": "123 Main Street Anycity, Anydistrict, CA 12345",
"type": "both",
"use": "home"
}
],
"birthDate": "1980-12-05",
"gender": "female",
"id": "r77433dd-dkeuc-633743nfd-383nfdsjds732",
"meta": {
"lastUpdated": "2018-01-01T2018-01-01T00:00:00+00:00",
"versionId": "MTU0MDU4NTcxNjI2MTUxNDAwMAA"
},
"name": [
{
"family": "[PERSON_NAME]",
"given": [
"[PERSON_NAME]"
],
"use": "official"
}
],
"resourceType": "Patient",
"text": {
"div": "<div><p><b>Patient</b></p><p><b>Name</b>: Smith, Darcy</p><p><b>DateOfBirth</b>: 1980-12-05</p><p><b>Gender</b>: Female</p></div>",
"status": "generated"
}
}
Output menunjukkan bahwa nilai untuk name.family dan name.given
telah diganti dengan infoType nilai.
Melakukan de-identifikasi data di tingkat FHIR store
Contoh sebelumnya menunjukkan cara melakukan de-identifikasi data FHIR di tingkat set data. Untuk mengubah permintaan de-identifikasi set data menjadi permintaan de-identifikasi FHIR store, lakukan perubahan berikut:
- Ubah
destinationDatasetdi isi permintaan menjadidestinationStore - Tambahkan
fhirStores/DESTINATION_FHIR_STORE_IDdi akhir nilai dalamdestinationStore - Tambahkan
fhirStores/SOURCE_FHIR_STORE_IDsaat menentukan lokasi data sumber.
Contoh:
De-identifikasi tingkat set data:
'destinationDataset': 'projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID' … "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"
De-identifikasi tingkat FHIR store:
'destinationStore': 'projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/fhirStores/DESTINATION_FHIR_STORE_ID' … "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/fhirStores/SOURCE_FHIR_STORE_ID:deidentify"
Contoh berikut memperluas De-identifikasi jalur FHIR tertentu, tetapi de-identifikasi terjadi pada satu penyimpanan FHIR dan data yang telah dide-identifikasi disalin ke penyimpanan FHIR baru. Perhatikan bahwa FHIR store yang dirujuk oleh DESTINATION_FHIR_STORE_ID harus sudah ada.
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'destinationStore': 'projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/fhirStores/DESTINATION_FHIR_STORE_ID', 'config': { 'fhir': { 'fieldMetadataList': [ { 'paths': [ 'Patient.HumanName' ], 'action': 'TRANSFORM' } ] } } }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/fhirStores/SOURCE_FHIR_STORE_ID:deidentify"
Jika permintaan berhasil, server akan menampilkan respons dalam format JSON:
{
"name": "projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"
}
Respons berisi nama operasi. Anda dapat menggunakan
Metode get operasi
untuk melacak status operasi:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"
Jika permintaan berhasil, server akan menampilkan respons dalam format JSON.
Setelah proses de-identifikasi selesai,
respons akan berisi "done": true.
{
"name": "projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1.deidentify.DeidentifyService.DeidentifyFhirStore",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
"counter": {
"success": "SUCCESS_COUNT"
}
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.deidentify.DeidentifyFhirStoreSummary"
}
}
PowerShell
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body "{ 'destinationStore': 'projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/fhirStores/DESTINATION_FHIR_STORE_ID', 'config': { 'fhir': { 'fieldMetadataList': [ { 'paths': [ 'Patient.HumanName' ], 'action': 'TRANSFORM' } ] } } }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/fhirStores/SOURCE_FHIR_STORE_ID:deidentify" | Select-Object -Expand Content
Jika permintaan berhasil, server akan menampilkan respons dalam format JSON:
{
"name": "projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"
}
Respons berisi ID operasi. Anda dapat menggunakan
Metode get operasi
untuk melacak status operasi:
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Get ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
Jika permintaan berhasil, server akan menampilkan
respons dalam format JSON. Setelah proses de-identifikasi selesai, respons
akan berisi "done": true.
{
"name": "projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1.deidentify.DeidentifyService.DeidentifyFhirStore",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
"counter": {
"success": "SUCCESS_COUNT"
}
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.deidentify.DeidentifyFhirStoreSummary"
}
}
Melakukan de-identifikasi subset FHIR store
Saat melakukan de-identifikasi data FHIR di tingkat penyimpanan FHIR, Anda dapat melakukan de-identifikasi subkumpulan data dengan menentukan filter.
Filter berbentuk daftar ID resource FHIR. Anda menentukan ID
dalam objek Resources
di dalam objek FhirFilter.
Contoh berikut memperluas Melakukan de-identifikasi data di tingkat penyimpanan FHIR, tetapi daftar dua ID resource FHIR (satu untuk Pasien dan satu untuk Observasi) disediakan yang menentukan resource mana yang akan di-de-identifikasi.
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'destinationStore': 'projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/fhirStores/DESTINATION_FHIR_STORE_ID', 'config': { 'fhir': { 'fieldMetadataList': [ { 'action': 'TRANSFORM', 'paths': [ 'Patient.HumanName' ] } ] } }, 'resourceFilter': { 'resources': { 'resources': [ 'Patient/PATIENT_ID', 'Observation/OBSERVATION_ID' ] } } }" "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/fhirStores/SOURCE_FHIR_STORE_ID:deidentify"
Jika permintaan berhasil, server akan menampilkan respons dalam format JSON:
{
"name": "projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"
}
Respons berisi nama operasi. Anda dapat menggunakan
Metode get operasi
untuk melacak status operasi:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"
Jika permintaan berhasil, server akan menampilkan respons dalam format JSON.
Setelah proses de-identifikasi selesai,
respons akan berisi "done": true.
{
"name": "projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1.deidentify.DeidentifyService.DeidentifyFhirStore",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
"counter": {
"success": "SUCCESS_COUNT"
}
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.deidentify.DeidentifyFhirStoreSummary"
}
}
PowerShell
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body "{ 'destinationStore': 'projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/fhirStores/DESTINATION_FHIR_STORE_ID', 'resourceFilter': { 'resources': { 'resources': [ 'Patient/PATIENT_ID', 'Observation/OBSERVATION_ID' ] } }, 'config': { 'fhir': { 'fieldMetadataList': [ { 'paths': [ 'Patient.HumanName' ], 'action': 'TRANSFORM' } ] } } }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/fhirStores/SOURCE_FHIR_STORE_ID:deidentify" | Select-Object -Expand Content
Jika permintaan berhasil, server akan menampilkan respons dalam format JSON:
{
"name": "projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID"
}
Respons berisi ID operasi. Anda dapat menggunakan
Metode get operasi
untuk melacak status operasi:
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Get ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
Jika permintaan berhasil, server akan menampilkan
respons dalam format JSON. Setelah proses de-identifikasi selesai, respons
akan berisi "done": true.
{
"name": "projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
"apiMethodName": "google.cloud.healthcare.v1.deidentify.DeidentifyService.DeidentifyFhirStore",
"createTime": "CREATE_TIME",
"endTime": "END_TIME",
"logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
"counter": {
"success": "SUCCESS_COUNT"
}
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.healthcare.v1.deidentify.DeidentifyFhirStoreSummary"
}
}
Melakukan de-identifikasi data di konsol Google Cloud
Anda dapat melakukan de-identifikasi data di konsol Google Cloud , baik untuk set data maupun penyimpanan FHIR. Konfigurasi de-identifikasi FHIR default digunakan untuk melakukan de-identifikasi set data dan FHIR store. Untuk mengetahui informasi selengkapnya, lihat De-identifikasi data FHIR default.
Melakukan de-identifikasi data untuk set data
Untuk menganonimkan data set data, selesaikan langkah-langkah berikut:
Di konsol Google Cloud , buka halaman Datasets.
Pilih Hilangkan identitas dari daftar Tindakan untuk set data yang identitasnya Anda hilangkan.
Halaman De-identify Dataset akan ditampilkan.
Pilih Setel set data tujuan dan masukkan nama untuk set data baru guna menyimpan data yang tidak diidentifikasi.
Klik De-identifikasi untuk melakukan de-identifikasi data dalam set data.
Melakukan de-identifikasi data di penyimpanan FHIR
Untuk melakukan de-identifikasi data di penyimpanan FHIR, selesaikan langkah-langkah berikut:
Di konsol Google Cloud , buka halaman Datasets.
Klik set data yang datanya ingin Anda de-identifikasi.
Dalam daftar penyimpanan FHIR, pilih De-identifikasi dari daftar Tindakan untuk penyimpanan FHIR yang Anda de-identifikasi.
Halaman De-identifikasi FHIR Store akan ditampilkan.
Pilih Setel penyimpanan data tujuan, lalu pilih set data dan penyimpanan FHIR tempat data yang di-de-identifikasi disimpan.
Catatan: Jika Anda ingin menyimpan data yang telah di-de-identifikasi di penyimpanan FHIR baru, Anda harus membuat penyimpanan baru terlebih dahulu, lalu memilihnya sebagai penyimpanan FHIR tujuan.
Klik De-identify untuk melakukan de-identifikasi data di penyimpanan FHIR.
Memecahkan masalah operasi de-identifikasi FHIR
Jika terjadi error selama operasi de-identifikasi FHIR, error tersebut akan dicatat ke Cloud Logging. Untuk mengetahui informasi selengkapnya, lihat artikel Melihat log error di Cloud Logging.
Jika seluruh operasi menampilkan error, lihat Memecahkan masalah operasi yang berjalan lama.