本頁說明如何使用 v1 DicomConfig
設定,在下列層級將 DICOM 執行個體中的機密資料去識別化:
- 在資料集層級使用
datasets.deidentify
- 在 DICOM 儲存庫層級使用
dicomStores.deidentify
本頁面也會說明如何在 DICOM 存放區層級去識別化資料時套用篩選器。
去識別化總覽
資料集層級去識別化
如要在資料集層級將 DICOM 資料去識別化,請呼叫 datasets.deidentify
作業。去識別化 API 呼叫包含下列元件:
- 來源資料集:包含 DICOM 儲存庫的資料集,其中有一或多個含有私密資料的執行個體。呼叫
deidentify
作業時,資料集中所有 DICOM 儲存庫的所有執行個體都會經過去識別化處理。 - 目的地資料集:去識別化不會影響原始資料集或其資料。而是將原始資料的去識別化副本寫入新的資料集 (稱為「目的地資料集」)。
- 要將哪些內容去識別化:指定如何處理資料集的設定參數。您可以設定 DICOM 去識別化,透過在
DeidentifyConfig
物件中指定這些參數,並執行下列操作,將 DICOM 執行個體中繼資料 (使用標記關鍵字) 或 DICOM 影像中的烙印文字去識別化:- 設定要求主體的
config
欄位 - 以 JSON 格式儲存在 Cloud Storage 中,並使用要求主體的
gcsConfigUri
欄位,指定 bucket 中的檔案位置
- 設定要求主體的
本指南中的大多數範例,都會說明如何將資料集層級的 DICOM 資料去識別化。
DICOM 儲存庫層級去識別化
在 DICOM 儲存庫層級將 DICOM 資料去識別化,可讓您進一步控管要將哪些資料去識別化。舉例來說,如果資料集有多個 DICOM 儲存庫,您可以根據儲存庫中的資料類型,對每個 DICOM 儲存庫進行去識別化。
如要將 DICOM 儲存庫中的 DICOM 資料去識別化,請呼叫 dicomStores.deidentify
方法。去識別化 API 呼叫作業包含下列元件:
- 來源 DICOM 儲存庫:包含一或多個含有私密資料的執行個體。呼叫
deidentify
作業時,系統會將 DICOM 儲存庫中的所有執行個體去識別化。 - 目的地 DICOM 儲存庫:去識別化不會影響原始 DICOM 儲存庫或其資料。而是將原始資料的去識別化副本寫入目標 DICOM 儲存庫。目的地 DICOM 儲存庫必須已存在。
- 要將哪些內容去識別化:指定如何處理 DICOM 儲存庫的設定參數。您可以透過在
DeidentifyConfig
物件中指定這些參數,並透過下列其中一種方式傳遞該物件,設定 DICOM 去識別化功能,以去識別化 DICOM 執行個體中繼資料 (使用標記關鍵字) 或 DICOM 圖片中的烙印文字:- 設定要求主體的
config
欄位 - 以 JSON 格式儲存在 Cloud Storage 中,並使用要求主體的
gcsConfigUri
欄位,指定 bucket 中的檔案位置
- 設定要求主體的
如要瞭解如何將 DICOM 存放區層級資料去識別化,請參閱將 DICOM 存放區層級資料去識別化。
篩選器
您可以設定篩選器檔案,並在 dicomStores.deidentify
要求中指定該檔案,藉此將 DICOM 存放區中的部分資料去識別化。如需範例,請參閱去識別化 DICOM 儲存庫的子集。
範例總覽
本指南中的範例使用單一 DICOM 執行個體,但您也可以去識別多個執行個體。
以下各節提供範例,說明如何使用各種方法去識別 DICOM 資料。每個樣本都會提供去識別化圖片的輸出內容。每個範例都會使用下列原始圖片做為輸入內容:
您可以比較各項去識別化作業的輸出圖片與原始圖片,瞭解作業效果。
將 DICOM 標記去識別化
您可以根據 DICOM 中繼資料中的標記關鍵字,將 DICOM 執行個體去識別化。您可以在 DicomConfig
物件中使用下列標記篩選方法:
keepList
:要保留的標記清單。移除所有其他標記。removeList
:要移除的標記清單。保留所有其他標記。filterProfile
:用於判斷要保留或移除哪些標記的標記篩選設定檔。
本節中的每個範例都會提供 DICOM 執行個體變更後的中繼資料輸出內容。以下是執行個體的原始中繼資料,用做每個範例的輸入內容:
[
{
"00020002":{"vr":"UI","Value":["1.2.840.10008.5.1.4.1.1.7"]},
"00020003":{"vr":"UI","Value":["1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695"]},
"00020010":{"vr":"UI","Value":["1.2.840.10008.1.2.4.50"]},
"00020012":{"vr":"UI","Value":["1.2.276.0.7230010.3.0.3.6.1"]},
"00020013":{"vr":"SH","Value":["OFFIS_DCMTK_361"]},
"00080005":{"vr":"CS","Value":["ISO_IR 100"]},
"00080016":{"vr":"UI","Value":["1.2.840.10008.5.1.4.1.1.7"]},
"00080018":{"vr":"UI","Value":["1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695"]},
"00080020":{"vr":"DA","Value":["20110909"]},
"00080030":{"vr":"TM","Value":["110032"]},
"00080050":{"vr":"SH"},
"00080064":{"vr":"CS","Value":["WSD"]},
"00080070":{"vr":"LO","Value":["Manufacturer"]},
"00080090":{"vr":"PN","Value":[{"Alphabetic":"John Doe"}]},
"00081090":{"vr":"LO","Value":["ABC1"]},
"00100010":{"vr":"PN","Value":[{"Alphabetic":"Ann Johnson"}]},
"00100020":{"vr":"LO","Value":["S1214223-1"]},
"00100030":{"vr":"DA","Value":["19880812"]},
"00100040":{"vr":"CS","Value":["F"]},
"0020000D":{"vr":"UI","Value":["2.25.70541616638819138568043293671559322355"]},
"0020000E":{"vr":"UI","Value":["1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694"]},
"00200010":{"vr":"SH"},
"00200011":{"vr":"IS"},
"00200013":{"vr":"IS"},
"00200020":{"vr":"CS"},
"00280002":{"vr":"US","Value":[3]},
"00280004":{"vr":"CS","Value":["YBR_FULL_422"]},
"00280006":{"vr":"US","Value":[0]},
"00280010":{"vr":"US","Value":[1024]},
"00280011":{"vr":"US","Value":[1024]},
"00280100":{"vr":"US","Value":[8]},
"00280101":{"vr":"US","Value":[8]},
"00280102":{"vr":"US","Value":[7]},
"00280103":{"vr":"US","Value":[0]},
"00282110":{"vr":"CS","Value":["01"]},
"00282114":{"vr":"CS","Value":["ISO_10918_1"]}
}
]
使用 keepList 標記去識別化
在 DicomConfig
物件中指定保留清單標記時,系統預設會新增下列標記:
StudyInstanceUID
SeriesInstanceUID
SOPInstanceUID
TransferSyntaxUID
MediaStorageSOPInstanceUID
MediaStorageSOPClassUID
PixelData
Rows
Columns
SamplesPerPixel
BitsAllocated
BitsStored
Highbit
PhotometricInterpretation
PixelRepresentation
NumberOfFrames
PlanarConfiguration
PixelAspectRatio
SmallestImagePixelValue
LargestImagePixelValue
RedPaletteColorLookupTableDescriptor
GreenPaletteColorLookupTableDescriptor
BluePaletteColorLookupTableDescriptor
RedPaletteColorLookupTableData
GreenPaletteColorLookupTableData
BluePaletteColorLookupTableData
ICCProfile
ColorSpace
WindowCenter
WindowWidth
VOILUTFunction
deidentify
作業不會遮蓋先前的標記。不過,部分標記的值會重新產生,也就是說,這些值會透過確定性轉換替換為其他值。詳情請參閱 DICOM 標準中的「保留 UID 選項」。如要保留先前代碼的原始值,請使用 SkipIdRedaction
選項。
如未提供保留清單標記,系統就不會遮蓋資料集中的任何 DICOM 標記。
下列範例說明如何將含有 DICOM 儲存庫和 DICOM 資料的資料集去識別化,同時保留部分標記不變。
將圖片提交給 Cloud Healthcare API 後,圖片看起來會如下所示。雖然圖片頂端角落顯示的中繼資料已遭遮蓋,但圖片底部的受保護健康資訊 (PHI) 仍會顯示。如要一併移除內建文字,請參閱「從圖片中遮蓋內建文字」。
REST
將資料集去識別化。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- SOURCE_DATASET_ID:包含要進行去識別化資料的資料集 ID
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
JSON 要求主體:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "keepList": { "tags": [ "PatientID" ] } } } }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "keepList": { "tags": [ "PatientID" ] } } } } EOF
接著,請執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:@' { "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "keepList": { "tags": [ "PatientID" ] } } } } '@ | Out-File -FilePath request.json -Encoding utf8
接著,請執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content- 使用
projects.locations.datasets.operations.get
方法取得長時間執行的作業狀態。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- DATASET_ID:資料集 ID
- LOCATION:資料集位置
- OPERATION_ID:長時間執行的作業傳回的 ID
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
"done": true
,表示長時間執行的作業已完成。 - 去識別化成功後,您可以擷取去識別化執行個體的中繼資料,查看變更情形。去識別化執行個體會有新的研究 UID、系列 UID 和執行個體 UID,因此您必須先在新的資料集中搜尋去識別化執行個體。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- SOURCE_DATASET_LOCATION:來源資料集位置
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
- DESTINATION_DICOM_STORE_ID:目的地資料集中的 DICOM 儲存庫 ID。與來源資料集中的 DICOM 儲存庫 ID 相同。
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"PowerShell
執行下列指令:
$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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
您應該會收到如下的 JSON 回應:
下表顯示研究 UID、系列 UID 和執行個體 UID 的變化:原始執行個體中繼資料 去識別化執行個體中繼資料 研究 UID ( 0020000D
)2.25.70541616638819138568043293671559322355
1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
系列 UID ( 0020000E
)1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694
1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
檢查實例 UID ( 00080018
)1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695
1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
使用新值擷取執行個體的中繼資料。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
- DESTINATION_DICOM_STORE_ID:目的地資料集中的 DICOM 儲存庫 ID。與來源資料集中的 DICOM 儲存庫 ID 相同。
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"PowerShell
執行下列指令:
$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/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
Go
Java
Node.js
Python
使用 removelist 標記去識別化
您可以在 DicomConfig
物件中指定移除清單。deidentify
作業只會遮蓋清單中指定的標記。如果未提供任何 removelist 標記,去識別化作業會照常進行,但不會遮蓋目標資料集中的任何 DICOM 標記。
指定移除清單時,系統預設會新增 OverlayData
標記,因為疊加資料可能含有受保護的健康資訊。
預設會新增至保留清單的標記無法新增至移除清單。
下列範例說明如何從含有 DICOM 儲存庫和 DICOM 資料的資料集中,移除 removelist 中的所有標記,藉此將資料去識別化。不在移除清單中的標記不會變更。
將圖片提交給 Cloud Healthcare API 後,圖片看起來會如下所示。在移除清單中提供的標記中,只有 PatientBirthDate
會從圖片中移除,因為這是移除清單中唯一對應至圖片中顯示中繼資料的標記。
雖然系統已根據 removelist 中的設定,將圖片頂端角落的 PatientBirthDate
遮蓋,但圖片底部的內建 PHI 仍存在。如要一併移除內建文字,請參閱「從圖片中遮蓋內建文字」。
REST
將資料集去識別化。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- SOURCE_DATASET_ID:包含要進行去識別化資料的資料集 ID
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
JSON 要求主體:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "removeList": { "tags": [ "PatientBirthName", "PatientBirthDate", "PatientAge", "PatientSize", "PatientWeight", "PatientAddress", "PatientMotherBirthName" ] } } } }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "removeList": { "tags": [ "PatientBirthName", "PatientBirthDate", "PatientAge", "PatientSize", "PatientWeight", "PatientAddress", "PatientMotherBirthName" ] } } } } EOF
接著,請執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:@' { "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "removeList": { "tags": [ "PatientBirthName", "PatientBirthDate", "PatientAge", "PatientSize", "PatientWeight", "PatientAddress", "PatientMotherBirthName" ] } } } } '@ | Out-File -FilePath request.json -Encoding utf8
接著,請執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content- 使用
projects.locations.datasets.operations.get
方法取得長時間執行的作業狀態。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- DATASET_ID:資料集 ID
- LOCATION:資料集位置
- OPERATION_ID:長時間執行的作業傳回的 ID
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
"done": true
,表示長時間執行的作業已完成。 - 去識別化成功後,您可以擷取去識別化執行個體的中繼資料,查看變更情形。去識別化執行個體會有新的研究 UID、系列 UID 和執行個體 UID,因此您必須先在新的資料集中搜尋去識別化執行個體。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- SOURCE_DATASET_LOCATION:來源資料集位置
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
- DESTINATION_DICOM_STORE_ID:目的地資料集中的 DICOM 儲存庫 ID。與來源資料集中的 DICOM 儲存庫 ID 相同。
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"PowerShell
執行下列指令:
$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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
您應該會收到如下的 JSON 回應:
下表顯示研究 UID、系列 UID 和執行個體 UID 的變化:原始執行個體中繼資料 去識別化執行個體中繼資料 研究 UID ( 0020000D
)2.25.70541616638819138568043293671559322355
1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
系列 UID ( 0020000E
)1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694
1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
檢查實例 UID ( 00080018
)1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695
1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
使用新值擷取執行個體的中繼資料。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
- DESTINATION_DICOM_STORE_ID:目的地資料集中的 DICOM 儲存庫 ID。與來源資料集中的 DICOM 儲存庫 ID 相同。
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"PowerShell
執行下列指令:
$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/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
使用標記篩選設定檔去識別化
您可以設定 DicomConfig
物件中的 TagFilterProfile
,不必指定要保留或移除哪些標記。代碼篩選設定檔是預先定義的設定檔,可決定要保留、移除或轉換哪些代碼。如需可用設定檔,請參閱TagFilterProfile
說明文件。
以下範例說明如何使用標記篩選器設定檔 ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE
,將含有 DICOM 儲存庫和 DICOM 資料的資料集去識別化。這個標記篩選設定檔會根據 DICOM 標準的屬性機密性基本設定檔移除標記。Cloud Healthcare API 並不完全符合屬性機密性基本設定檔。舉例來說,選取標記的動作時,Cloud Healthcare API 不會檢查資訊物件定義 (IOD) 限制。
使用 ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE
標記篩選設定檔將圖片提交給 Cloud Healthcare API 後,圖片看起來會如下所示。雖然圖片頂端角落顯示的中繼資料已遭塗銷,但圖片底部的內建 PHI 仍存在。
如要一併移除內建文字,請參閱「從圖片中遮蓋內建文字」。
REST
將資料集去識別化。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- SOURCE_DATASET_ID:包含要進行去識別化資料的資料集 ID
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
JSON 要求主體:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE" } } }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE" } } } EOF
接著,請執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:@' { "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE" } } } '@ | Out-File -FilePath request.json -Encoding utf8
接著,請執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content- 使用
projects.locations.datasets.operations.get
方法取得長時間執行的作業狀態。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- DATASET_ID:資料集 ID
- LOCATION:資料集位置
- OPERATION_ID:長時間執行的作業傳回的 ID
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
"done": true
,表示長時間執行的作業已完成。 - 去識別化成功後,您可以擷取去識別化執行個體的中繼資料,查看變更情形。去識別化執行個體會有新的研究 UID、系列 UID 和執行個體 UID,因此您必須先在新的資料集中搜尋去識別化執行個體。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- SOURCE_DATASET_LOCATION:來源資料集位置
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
- DESTINATION_DICOM_STORE_ID:目的地資料集中的 DICOM 儲存庫 ID。與來源資料集中的 DICOM 儲存庫 ID 相同。
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"PowerShell
執行下列指令:
$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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
您應該會收到如下的 JSON 回應:
下表顯示研究 UID、系列 UID 和執行個體 UID 的變化:原始執行個體中繼資料 去識別化執行個體中繼資料 研究 UID ( 0020000D
)2.25.70541616638819138568043293671559322355
1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
系列 UID ( 0020000E
)1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694
1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
檢查實例 UID ( 00080018
)1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695
1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
使用新值擷取執行個體的中繼資料。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
- DESTINATION_DICOM_STORE_ID:目的地資料集中的 DICOM 儲存庫 ID。與來源資料集中的 DICOM 儲存庫 ID 相同。
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"PowerShell
執行下列指令:
$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/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
在 Google Cloud 控制台中將資料去識別化
如要在 Google Cloud 控制台中去識別化資料,請完成下列步驟:
前往 Google Cloud 控制台的「資料集」頁面。
在要解除識別的資料集「動作」清單中,選擇「解除識別」。
「De-identify Dataset」(取消識別資料集) 頁面隨即顯示。
選取「設定目的地資料集」,然後輸入新資料集的名稱,以儲存去識別化資料。
選取「DICOM tag de-identification」(DICOM 標記去識別化),然後選取要將哪些資料去識別化的設定檔。資料去識別化方式如下:
KEEP_ALL_PROFILE
- 保留所有 DICOM 中繼標記DEIDENTIFY_TAG_CONTENTS
- 將中繼標記中的資料去識別化ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE
- 根據 DICOM 標準的基本設定檔移除中繼標記MINIMAL_KEEP_LIST_PROFILE
- 僅保留有效 DICOM 物件所需的中繼標記- 略過 ID 遮蓋程序:根據 DICOM 標準重新產生 UID 欄位
選取「DICOM 烙印文字遮蓋」,設定去識別化期間的圖片遮蓋方式。您可以按照下列方式設定圖片遮蓋:
REDACT_NO_TEXT
- Do not redact text in imagesREDACT_SENSITIVE_TEXT
- 僅遮蓋圖片中的機密文字REDACT_ALL_TEXT
- 遮蓋圖片中的所有文字
按一下「去識別化」,將資料集中的資料去識別化。
遮蓋圖片中的內建文字
Cloud Healthcare API 可遮蓋圖片中內建的機密文字。API 會偵測 PHI 等機密資料,並使用不透明的矩形遮蔽這些資料。API 會以相同格式傳回您提供的同一張 DICOM 圖片,但依據您的條件識別為含有機密資訊的任何文字則會受到遮蓋。
如要從圖片中遮蓋內建文字,請在 ImageConfig
物件中指定 TextRedactionMode
選項。如要查看可能的值,請參閱 TextRedactionMode
說明文件。
遮蓋圖片中所有內建文字
以下範例顯示如何遮蓋資料集中 DICOM 圖片的所有烙印文字。方法是在 TextRedactionMode
欄位中指定 REDACT_ALL_TEXT
。
使用 REDACT_ALL_TEXT
選項將圖片提交給 Cloud Healthcare API 後,圖片看起來會如下所示。雖然圖片底部的內建文字已移除,但圖片頂端角落的中繼資料仍保留。如要一併移除中繼資料,請參閱將 DICOM 標記去識別化。
REST
將資料集去識別化。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- SOURCE_DATASET_ID:包含要進行去識別化資料的資料集 ID
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
JSON 要求主體:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": {}, "image": { "textRedactionMode": "REDACT_ALL_TEXT" } } }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": {}, "image": { "textRedactionMode": "REDACT_ALL_TEXT" } } } EOF
接著,請執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:@' { "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": {}, "image": { "textRedactionMode": "REDACT_ALL_TEXT" } } } '@ | Out-File -FilePath request.json -Encoding utf8
接著,請執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content- 使用
projects.locations.datasets.operations.get
方法取得長時間執行的作業狀態。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- DATASET_ID:資料集 ID
- LOCATION:資料集位置
- OPERATION_ID:長時間執行的作業傳回的 ID
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
"done": true
,表示長時間執行的作業已完成。 - 去識別化成功後,您可以擷取去識別化執行個體的中繼資料,查看變更情形。去識別化執行個體會有新的研究 UID、系列 UID 和執行個體 UID,因此您必須先在新的資料集中搜尋去識別化執行個體。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- SOURCE_DATASET_LOCATION:來源資料集位置
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
- DESTINATION_DICOM_STORE_ID:目的地資料集中的 DICOM 儲存庫 ID。與來源資料集中的 DICOM 儲存庫 ID 相同。
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"PowerShell
執行下列指令:
$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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
您應該會收到如下的 JSON 回應:
下表顯示研究 UID、系列 UID 和執行個體 UID 的變化:原始執行個體中繼資料 去識別化執行個體中繼資料 研究 UID ( 0020000D
)2.25.70541616638819138568043293671559322355
1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
系列 UID ( 0020000E
)1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694
1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
檢查實例 UID ( 00080018
)1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695
1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
只遮蓋圖片中內建的機密文字
下列範例說明如何從資料集中的 DICOM 圖片遮蓋內建的機密文字。方法是在 TextRedactionMode
欄位中指定 REDACT_SENSITIVE_TEXT
。
指定 REDACT_SENSITIVE_TEXT
時,系統會遮蓋預設 DICOM infoType 中指定的 infoType。此外,系統也會套用病患 ID 的自訂 infoType,例如病歷號碼 (MRN),並將病患 ID 遮蓋。
下圖顯示未經過編輯的病患 X 光片:
使用 REDACT_SENSITIVE_TEXT
選項將圖片提交給 Cloud Healthcare API 之後,圖片看起來會如下所示:
您可以看到發生了下列情況:
- 圖片左下方的
PERSON_NAME
已遭塗銷 - 圖片左下方的
DATE
已遭塗銷
由於根據預設 DICOM infoTypes,病患性別不屬於私密文字,因此未經過修訂。
REST
將資料集去識別化。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- SOURCE_DATASET_ID:包含要進行去識別化資料的資料集 ID
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
JSON 要求主體:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": {}, "image": { "textRedactionMode": "REDACT_SENSITIVE_TEXT" } } }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": {}, "image": { "textRedactionMode": "REDACT_SENSITIVE_TEXT" } } } EOF
接著,請執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:@' { "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": {}, "image": { "textRedactionMode": "REDACT_SENSITIVE_TEXT" } } } '@ | Out-File -FilePath request.json -Encoding utf8
接著,請執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content- 使用
projects.locations.datasets.operations.get
方法取得長時間執行的作業狀態。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- DATASET_ID:資料集 ID
- LOCATION:資料集位置
- OPERATION_ID:長時間執行的作業傳回的 ID
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
"done": true
,表示長時間執行的作業已完成。 - 去識別化成功後,您可以擷取去識別化執行個體的中繼資料,查看變更情形。去識別化執行個體會有新的研究 UID、系列 UID 和執行個體 UID,因此您必須先在新的資料集中搜尋去識別化執行個體。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- SOURCE_DATASET_LOCATION:來源資料集位置
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
- DESTINATION_DICOM_STORE_ID:目的地資料集中的 DICOM 儲存庫 ID。與來源資料集中的 DICOM 儲存庫 ID 相同。
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"PowerShell
執行下列指令:
$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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
您應該會收到如下的 JSON 回應:
下表顯示研究 UID、系列 UID 和執行個體 UID 的變化:原始執行個體中繼資料 去識別化執行個體中繼資料 研究 UID ( 0020000D
)2.25.70541616638819138568043293671559322355
1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
系列 UID ( 0020000E
)1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694
1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
檢查實例 UID ( 00080018
)1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695
1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
結合標記去識別化和烙印文字遮蓋功能
您可以結合使用標記去識別化和遮蓋圖片內建文字,以更精細的層級去識別化 DICOM 執行個體。舉例來說,您可以將 TextRedactionMode
欄位中的 REDACT_ALL_TEXT
與 TagFilterProfile
欄位中的 REDACT_ALL_TEXT
結合,執行下列操作:DEIDENTIFY_TAG_CONTENTS
REDACT_ALL_TEXT
:遮蓋圖片中所有內建文字。DEIDENTIFY_TAG_CONTENTS
:檢查標記內容並轉換機密文字。如要進一步瞭解DEIDENTIFY_TAG_CONTENTS
的行為,請參閱預設設定。
使用 REDACT_ALL_TEXT
和 DEIDENTIFY_TAG_CONTENTS
選項將圖片提交給 Cloud Healthcare API 後,圖片看起來會如下所示。請注意下列異動:
- 圖片左上角和右上角的名稱已使用
CryptoHashConfig
轉換 - 圖片左上角和右上角的日期已使用
DateShiftConfig
轉換 - 圖片底部的內建文字已經過編輯
REST
將資料集去識別化。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- SOURCE_DATASET_ID:包含要進行去識別化資料的資料集 ID
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
JSON 要求主體:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "image": { "textRedactionMode": "REDACT_ALL_TEXT" } } }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "image": { "textRedactionMode": "REDACT_ALL_TEXT" } } } EOF
接著,請執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:@' { "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "image": { "textRedactionMode": "REDACT_ALL_TEXT" } } } '@ | Out-File -FilePath request.json -Encoding utf8
接著,請執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content- 使用
projects.locations.datasets.operations.get
方法取得長時間執行的作業狀態。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- DATASET_ID:資料集 ID
- LOCATION:資料集位置
- OPERATION_ID:長時間執行的作業傳回的 ID
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
"done": true
,表示長時間執行的作業已完成。 - 去識別化成功後,您可以擷取去識別化執行個體的中繼資料,查看變更情形。去識別化執行個體會有新的研究 UID、系列 UID 和執行個體 UID,因此您必須先在新的資料集中搜尋去識別化執行個體。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- SOURCE_DATASET_LOCATION:來源資料集位置
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
- DESTINATION_DICOM_STORE_ID:目的地資料集中的 DICOM 儲存庫 ID。與來源資料集中的 DICOM 儲存庫 ID 相同。
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"PowerShell
執行下列指令:
$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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
您應該會收到如下的 JSON 回應:
使用新值擷取執行個體的中繼資料。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
- DESTINATION_DICOM_STORE_ID:目的地資料集中的 DICOM 儲存庫 ID。與來源資料集中的 DICOM 儲存庫 ID 相同。
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"PowerShell
執行下列指令:
$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/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
使用 infoType 和原始轉換搭配 DICOM 標記
Cloud Healthcare API 可使用「資訊類型」(infoType) 定義在對標記執行去識別化時,要掃描哪些資料。infoType 是一種機密資料,如病患姓名、電子郵件地址、電話號碼、身分證號碼或信用卡號。
原始轉換是指用於轉換輸入值的規則。您可以對每個標記的 infoType 套用基本轉換,自訂 DICOM 標記的去識別化方式。舉例來說,您可以指定 LAST_NAME
infoType 和 CharacterMaskConfig
原始轉換,將病患的姓氏去識別化,並替換為一連串星號。
預設 DICOM infoType
將中繼資料去識別化時,系統會使用下列預設 DICOM infoType:
AGE
CREDIT_CARD_NUMBER
DATE
EMAIL_ADDRESS
IP_ADDRESS
LOCATION
MAC_ADDRESS
PASSPORT
PERSON_NAME
PHONE_NUMBER
SWIFT_CODE
US_DRIVERS_LICENSE_NUMBER
US_SOCIAL_SECURITY_NUMBER
US_VEHICLE_IDENTIFICATION_NUMBER
US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER
使用 REDACT_SENSITIVE_TEXT
對圖片中的私密文字進行去識別化時,Cloud Healthcare API 會使用上述 infoType,但也會對圖片中的私密文字套用病患 ID 的額外自訂 infoType,例如病歷號碼 (MRN)。
原始轉換選項
Cloud Healthcare API 原始轉換選項包括:
RedactConfig
:透過移除的方式刪減值。CharacterMaskConfig
:將輸入字元替換為指定的固定字元,以完全或局部遮蔽字串。DateShiftConfig
:按隨機天數轉移日期,並提供讓相同背景資訊保持一致的選項。CryptoHashConfig
:使用 SHA-256 將輸入值替換為以 Base64 編碼的雜湊輸出字串,該字串是使用指定的資料加密金鑰產生。ReplaceWithInfoTypeConfig
:將輸入值替換為其 infoType 名稱。
在「TextConfig
」中指定設定
InfoType 和原始轉換是在 InfoTypeTransformation
中指定,這是 TextConfig
內的物件。InfoType 會以半形逗號分隔值形式輸入 infoTypes
陣列。
您可以選擇是否指定 infoType。如果未指定至少一個 infoType,轉換會套用至 Cloud Healthcare API 中找到的預設 DICOM infoType。
如果您在 InfoTypeTransformation
中指定任何 infoType,則必須指定至少一個原始轉換。
你只能將 InfoTypeTransformation
套用至DEIDENTIFY_TAG_CONTENTS
商家檔案。InfoTypeTransformation
無法套用至 TagFilterProfile
中列出的其他設定檔。
以下各節說明如何使用 InfoTypeTransformation
中提供的原始轉換和 infoType,自訂 DICOM 標記的去識別化方式。這些範例會使用「範例總覽」中提供的範例圖片,以及「取消識別 DICOM 標記」中提供的範例中繼資料。
預設設定
根據預設,如果設定 DEIDENTIFY_TAG_CONTENTS
設定檔時未在 TextConfig
物件中提供任何設定,Cloud Healthcare API 會使用預設 DICOM infoType 替換私密資料。不過,DATE
和 PERSON_NAME
infoType 的行為不同,如下所示:
DateShiftConfig
會套用至分類為DATE
infoType 的文字。DateShiftConfig
使用日期偏移技術,差異為 100 天。CryptoHashConfig
會套用至分類為PERSON_NAME
infoType 的文字。CryptoHashConfig
會使用加密編譯雜湊產生替代值,藉此執行代碼化。
此外,也適用下列行為:
- 任何大於或等於 90 的患者年齡值都會轉換為 90。
- 如果因 DICOM 格式限制而無法套用轉換,系統會提供與標記的值表示 (VR) 相對應的預留位置值。
- 如果其他值對應至 Cloud Healthcare API 中的預設 DICOM infoType,則會替換為該 infoType。舉例來說,如果
PatientComments
代碼包含「Ann Johnson went to Anytown Hospital」(安‧強森前往安城醫院) 字串,則「Anytown」會替換為LOCATION
infoType。
以下範例顯示在含有 DICOM 儲存庫和 DICOM 資料的資料集上,使用DEIDENTIFY_TAG_CONTENTS
預設設定檔的輸出內容。您可以比較這個預設輸出內容,以及使用各種原始轉換和 infoType 組合時的輸出內容。範例使用單一 DICOM 執行個體,但您可以將多個執行個體去識別化。
使用 DEIDENTIFY_TAG_CONTENTS
設定檔將圖片提交給 Cloud Healthcare API 後,圖片看起來會如下所示。
請注意下列異動:
- 圖片左上角和右上角的名稱已使用
CryptoHashConfig
轉換 - 圖片左上角和右上角的日期已使用
DateShiftConfig
轉換
REST
將資料集去識別化。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- SOURCE_DATASET_ID:包含要進行去識別化資料的資料集 ID
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
JSON 要求主體:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" } } }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" } } } EOF
接著,請執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:@' { "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" } } } '@ | Out-File -FilePath request.json -Encoding utf8
接著,請執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content- 使用
projects.locations.datasets.operations.get
方法取得長時間執行的作業狀態。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- DATASET_ID:資料集 ID
- LOCATION:資料集位置
- OPERATION_ID:長時間執行的作業傳回的 ID
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
"done": true
,表示長時間執行的作業已完成。 - 去識別化成功後,您可以擷取去識別化執行個體的中繼資料,查看變更情形。去識別化執行個體會有新的研究 UID、系列 UID 和執行個體 UID,因此您必須先在新的資料集中搜尋去識別化執行個體。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- SOURCE_DATASET_LOCATION:來源資料集位置
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
- DESTINATION_DICOM_STORE_ID:目的地資料集中的 DICOM 儲存庫 ID。與來源資料集中的 DICOM 儲存庫 ID 相同。
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"PowerShell
執行下列指令:
$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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
您應該會收到如下的 JSON 回應:
使用新值擷取執行個體的中繼資料。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
- DESTINATION_DICOM_STORE_ID:目的地資料集中的 DICOM 儲存庫 ID。與來源資料集中的 DICOM 儲存庫 ID 相同。
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"PowerShell
執行下列指令:
$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/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
RedactConfig
指定 redactConfig
會透過將值徹底移除的方式遮蓋指定值。
redactConfig
訊息沒有引數;指定這個物件會啟用轉換。
下列範例會擴充預設設定,但現在包含使用 redactConfig
轉換設定 PERSON_NAME
infoType。傳送這項要求會從 DICOM 執行個體中刪除所有名稱。
使用 redactConfig
轉換將圖片提交給 Cloud Healthcare API 之後,圖片看起來會如下所示:
REST
將資料集去識別化。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- SOURCE_DATASET_ID:包含要進行去識別化資料的資料集 ID
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
JSON 要求主體:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [ "PERSON_NAME" ], "redactConfig": {} } ] } } }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [ "PERSON_NAME" ], "redactConfig": {} } ] } } } EOF
接著,請執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:@' { "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [ "PERSON_NAME" ], "redactConfig": {} } ] } } } '@ | Out-File -FilePath request.json -Encoding utf8
接著,請執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content- 使用
projects.locations.datasets.operations.get
方法取得長時間執行的作業狀態。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- DATASET_ID:資料集 ID
- LOCATION:資料集位置
- OPERATION_ID:長時間執行的作業傳回的 ID
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
"done": true
,表示長時間執行的作業已完成。 - 去識別化成功後,您可以擷取去識別化執行個體的中繼資料,查看變更情形。去識別化執行個體會有新的研究 UID、系列 UID 和執行個體 UID,因此您必須先在新的資料集中搜尋去識別化執行個體。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- SOURCE_DATASET_LOCATION:來源資料集位置
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
- DESTINATION_DICOM_STORE_ID:目的地資料集中的 DICOM 儲存庫 ID。與來源資料集中的 DICOM 儲存庫 ID 相同。
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"PowerShell
執行下列指令:
$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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
您應該會收到如下的 JSON 回應:
使用新值擷取執行個體的中繼資料。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
- DESTINATION_DICOM_STORE_ID:目的地資料集中的 DICOM 儲存庫 ID。與來源資料集中的 DICOM 儲存庫 ID 相同。
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"PowerShell
執行下列指令:
$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/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
輸出內容顯示 ReferringPhysicianName
(00080090
) 和 PatientName
(00100010
) 中的值已移除。這與預設設定中的範例不同,後者是使用加密雜湊轉換這些值。
CharacterMaskConfig
指定 characterMaskConfig
會將與指定 infoType 對應的字串替換為指定的固定字元。舉例來說,您可以將病患姓名替換為一連串星號 (*
),而非遮蓋或使用加密雜湊轉換姓名。您可以將固定字元指定為 maskingCharacter
欄位的值。
下列範例會擴充預設設定,但現在包含使用 characterMaskConfig
轉換設定 LAST_NAME
infoType。未提供固定字元,因此遮蓋預設會使用星號。
範例使用單一 DICOM 執行個體,但您可以將多個執行個體去識別化。
使用 characterMaskConfig
轉換將圖片提交給 Cloud Healthcare API 之後,圖片看起來會如下所示:
REST
將資料集去識別化。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- SOURCE_DATASET_ID:包含要進行去識別化資料的資料集 ID
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
JSON 要求主體:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [ "PERSON_NAME" ], "characterMaskConfig": { "maskingCharacter": "" } } ] } } }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [ "PERSON_NAME" ], "characterMaskConfig": { "maskingCharacter": "" } } ] } } } EOF
接著,請執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:@' { "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [ "PERSON_NAME" ], "characterMaskConfig": { "maskingCharacter": "" } } ] } } } '@ | Out-File -FilePath request.json -Encoding utf8
接著,請執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content- 使用
projects.locations.datasets.operations.get
方法取得長時間執行的作業狀態。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- DATASET_ID:資料集 ID
- LOCATION:資料集位置
- OPERATION_ID:長時間執行的作業傳回的 ID
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
"done": true
,表示長時間執行的作業已完成。 - 去識別化成功後,您可以擷取去識別化執行個體的中繼資料,查看變更情形。去識別化執行個體會有新的研究 UID、系列 UID 和執行個體 UID,因此您必須先在新的資料集中搜尋去識別化執行個體。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- SOURCE_DATASET_LOCATION:來源資料集位置
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
- DESTINATION_DICOM_STORE_ID:目的地資料集中的 DICOM 儲存庫 ID。與來源資料集中的 DICOM 儲存庫 ID 相同。
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"PowerShell
執行下列指令:
$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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
您應該會收到如下的 JSON 回應:
使用新值擷取執行個體的中繼資料。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
- DESTINATION_DICOM_STORE_ID:目的地資料集中的 DICOM 儲存庫 ID。與來源資料集中的 DICOM 儲存庫 ID 相同。
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"PowerShell
執行下列指令:
$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/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
輸出結果顯示 ReferringPhysicianName
(00080090
) 和 PatientName
(00100010
) 中的姓氏已替換為星號。這與預設設定中的範例不同,在該範例中,這些值是使用加密雜湊轉換。
DateShiftConfig
Cloud Healthcare API 可在預設範圍內移動日期,藉此轉換日期。如要確保在多個去識別化作業中,日期轉換作業保持一致,請搭配下列任一方法使用 DateShiftConfig
:
- (已淘汰):以 Base64 編碼的原始 AES 128/192/256 位元金鑰。
- (建議):Cloud Key Management Service (Cloud KMS) 包裝的金鑰。如需如何使用 Cloud KMS 包裝金鑰的範例,請參閱「將機密文字去識別化及重新識別化」。
您必須將具有 cloudkms.cryptoKeyVersions.useToDecrypt
權限的角色授予 Cloud Healthcare Service Agent 服務帳戶,才能解密 Cloud KMS 包裝金鑰。建議使用 Cloud KMS CryptoKey 解密者角色 (roles/cloudkms.cryptoKeyDecrypter
)。使用 Cloud KMS 進行加密作業時,系統會收取費用。詳情請參閱 Cloud Key Management Service 定價。
Cloud Healthcare API 會使用這個金鑰,計算日期 (例如病患的出生日期) 在 100 天差異內轉移的量。
如果您未提供金鑰,Cloud Healthcare API 會在每次對日期值執行去識別化作業時,自行產生金鑰。這可能會導致每次執行時的日期輸出不一致。
以下範例說明如何在 DICOM 執行個體上,使用 DateShiftConfig
轉換設定 DATE
和 DATE_OF_BIRTH
infoType。將去識別化要求傳送至 Cloud Healthcare API 後,執行個體中的日期值會轉移,與原始值相差最多 100 天。
提供的加密金鑰 U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=
是原始的 AES 加密 256 位元 Base64 編碼金鑰,使用下列指令產生。系統提示時,請為指令提供空白密碼:
echo -n "test" | openssl enc -e -aes-256-ofb -a -salt
使用 dateShiftConfig
轉換將圖片提交給 Cloud Healthcare API 之後,圖片看起來會如下所示:
REST
將資料集去識別化。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- SOURCE_DATASET_ID:包含要進行去識別化資料的資料集 ID
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
JSON 要求主體:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [ "DATE", "DATE_OF_BIRTH" ], "dateShiftConfig": { "cryptoKey": "U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=" } } ] } } }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [ "DATE", "DATE_OF_BIRTH" ], "dateShiftConfig": { "cryptoKey": "U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=" } } ] } } } EOF
接著,請執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:@' { "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [ "DATE", "DATE_OF_BIRTH" ], "dateShiftConfig": { "cryptoKey": "U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=" } } ] } } } '@ | Out-File -FilePath request.json -Encoding utf8
接著,請執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content- 使用
projects.locations.datasets.operations.get
方法取得長時間執行的作業狀態。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- DATASET_ID:資料集 ID
- LOCATION:資料集位置
- OPERATION_ID:長時間執行的作業傳回的 ID
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
"done": true
,表示長時間執行的作業已完成。 - 去識別化成功後,您可以擷取去識別化執行個體的中繼資料,查看變更情形。去識別化執行個體會有新的研究 UID、系列 UID 和執行個體 UID,因此您必須先在新的資料集中搜尋去識別化執行個體。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- SOURCE_DATASET_LOCATION:來源資料集位置
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
- DESTINATION_DICOM_STORE_ID:目的地資料集中的 DICOM 儲存庫 ID。與來源資料集中的 DICOM 儲存庫 ID 相同。
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"PowerShell
執行下列指令:
$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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
您應該會收到如下的 JSON 回應:
使用新值擷取執行個體的中繼資料。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
- DESTINATION_DICOM_STORE_ID:目的地資料集中的 DICOM 儲存庫 ID。與來源資料集中的 DICOM 儲存庫 ID 相同。
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"PowerShell
執行下列指令:
$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/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
輸出內容會顯示 StudyDate
(00080020
) 和 PatientBirthDate
(00100030
) 的新值。這些轉換是將 100 天的差異與提供的 cryptoKey
值合併所致。只要提供相同的 cryptoKey
,這個執行個體在去識別化執行期間的新日期值就會保持一致。
CryptoHashConfig
你可以將 cryptoHashConfig
留空,也可以提供下列任一項:
- (已淘汰):以 Base64 編碼的原始 AES 128/192/256 位元金鑰。
- (建議):Cloud Key Management Service (Cloud KMS) 包裝的金鑰。如需如何使用 Cloud KMS 包裝金鑰的範例,請參閱「將機密文字去識別化及重新識別化」。
您必須將具有 cloudkms.cryptoKeyVersions.useToDecrypt
權限的角色授予 Cloud Healthcare Service Agent 服務帳戶,才能解密 Cloud KMS 包裝金鑰。建議使用 Cloud KMS CryptoKey 解密者角色 (roles/cloudkms.cryptoKeyDecrypter
)。使用 Cloud KMS 進行加密作業時,系統會收取費用。詳情請參閱 Cloud Key Management Service 定價。
Cloud Healthcare API 可以將值替換為加密雜湊 (也稱為替代值),藉此轉換資料。如要這麼做,請指定 cryptoHashConfig
訊息。
如果您未提供金鑰,Cloud Healthcare API 會產生金鑰。Cloud Healthcare API 會使用這個金鑰產生替代值。如果您為每次執行作業提供相同的金鑰,Cloud Healthcare API 會產生一致的替代值。如果您未提供金鑰,Cloud Healthcare API 每次執行作業時都會產生新金鑰。使用不同金鑰會產生不同的替代值。
下列範例說明如何將 cryptoHashConfig
轉換套用至 Cloud Healthcare API 支援的所有預設 DICOM infoType。傳送去識別化要求後,Cloud Healthcare API 中具有對應 DICOM infoType 的值會替換為替代值。
這個範例也說明如何提供加密金鑰,在去識別化作業之間產生一致的替代值。
提供的加密金鑰 U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=
是原始的 AES 加密 256 位元 Base64 編碼金鑰,使用下列指令產生。系統提示時,請為指令提供空白密碼:
echo -n "test" | openssl enc -e -aes-256-ofb -a -salt
使用 cryptoHashConfig
轉換將圖片提交給 Cloud Healthcare API 之後,圖片看起來會如下所示:
REST
將資料集去識別化。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- SOURCE_DATASET_ID:包含要進行去識別化資料的資料集 ID
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
JSON 要求主體:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [], "cryptoHashConfig": { "cryptoKey": "U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=" } } ] } } }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [], "cryptoHashConfig": { "cryptoKey": "U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=" } } ] } } } EOF
接著,請執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:@' { "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [], "cryptoHashConfig": { "cryptoKey": "U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=" } } ] } } } '@ | Out-File -FilePath request.json -Encoding utf8
接著,請執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content- 使用
projects.locations.datasets.operations.get
方法取得長時間執行的作業狀態。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- DATASET_ID:資料集 ID
- LOCATION:資料集位置
- OPERATION_ID:長時間執行的作業傳回的 ID
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
"done": true
,表示長時間執行的作業已完成。 - 去識別化成功後,您可以擷取去識別化執行個體的中繼資料,查看變更情形。去識別化執行個體會有新的研究 UID、系列 UID 和執行個體 UID,因此您必須先在新的資料集中搜尋去識別化執行個體。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- SOURCE_DATASET_LOCATION:來源資料集位置
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
- DESTINATION_DICOM_STORE_ID:目的地資料集中的 DICOM 儲存庫 ID。與來源資料集中的 DICOM 儲存庫 ID 相同。
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"PowerShell
執行下列指令:
$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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
您應該會收到如下的 JSON 回應:
使用新值擷取執行個體的中繼資料。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
- DESTINATION_DICOM_STORE_ID:目的地資料集中的 DICOM 儲存庫 ID。與來源資料集中的 DICOM 儲存庫 ID 相同。
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"PowerShell
執行下列指令:
$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/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
只要提供相同的 cryptoKey
,這個執行個體在去識別化作業之間,輸出內容的轉換就會保持一致。
ReplaceWithInfoTypeConfig
指定 replaceWithInfoTypeConfig
會將輸入值替換為該值的 infoType 名稱。
下列範例說明如何將 replaceWithInfoTypeConfig
轉換套用至 Cloud Healthcare API 支援的所有預設 DICOM infoType。replaceWithInfoTypeConfig
訊息沒有引數;指定這個物件會啟用轉換。
使用 replaceWithInfoTypeConfig
轉換將圖片提交給 Cloud Healthcare API 之後,圖片看起來會如下所示:
REST
將資料集去識別化。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- SOURCE_DATASET_ID:包含要進行去識別化資料的資料集 ID
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
JSON 要求主體:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [], "replaceWithInfoTypeConfig": {} } ] } } }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [], "replaceWithInfoTypeConfig": {} } ] } } } EOF
接著,請執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:@' { "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [], "replaceWithInfoTypeConfig": {} } ] } } } '@ | Out-File -FilePath request.json -Encoding utf8
接著,請執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content- 使用
projects.locations.datasets.operations.get
方法取得長時間執行的作業狀態。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- DATASET_ID:資料集 ID
- LOCATION:資料集位置
- OPERATION_ID:長時間執行的作業傳回的 ID
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
"done": true
,表示長時間執行的作業已完成。 - 去識別化成功後,您可以擷取去識別化執行個體的中繼資料,查看變更情形。去識別化執行個體會有新的研究 UID、系列 UID 和執行個體 UID,因此您必須先在新的資料集中搜尋去識別化執行個體。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- SOURCE_DATASET_LOCATION:來源資料集位置
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
- DESTINATION_DICOM_STORE_ID:目的地資料集中的 DICOM 儲存庫 ID。與來源資料集中的 DICOM 儲存庫 ID 相同。
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"PowerShell
執行下列指令:
$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/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
您應該會收到如下的 JSON 回應:
使用新值擷取執行個體的中繼資料。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
- DESTINATION_DICOM_STORE_ID:目的地資料集中的 DICOM 儲存庫 ID。與來源資料集中的 DICOM 儲存庫 ID 相同。
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"PowerShell
執行下列指令:
$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/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
將 DICOM 存放區層級資料去識別化
上述範例說明如何將資料集層級的 DICOM 資料去識別化。 本節說明如何將 DICOM 存放區層級資料去識別化。
如要將資料集去識別化要求變更為 DICOM 儲存庫去識別化要求,請進行下列變更:
- 將要求主體中的
destinationDataset
修改為destinationStore
- 指定目的地時,在
destinationStore
中值的結尾新增dicomStores/DESTINATION_DICOM_STORE_ID
- 指定來源資料位置時,請加入
dicomStores/SOURCE_DICOM_STORE_ID
例如:
資料集層級去識別化:
"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"
DICOM 儲存庫層級去識別化:
"destinationStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID" ... "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:deidentify"
下列範例會擴充合併標記去識別化和烙印文字遮蓋的內容,但去識別化作業會在單一 DICOM 儲存庫上進行,且去識別化資料會複製到新的 DICOM 儲存庫。執行範例前,DESTINATION_DICOM_STORE_ID 參照的 DICOM 儲存庫必須已存在。
控制台
如要使用 Google Cloud 控制台將 DICOM 儲存庫中的資料去識別化,請完成下列步驟。
前往 Google Cloud 控制台的「資料集」頁面。
按一下包含要去識別化資料的資料集。
在 DICOM 儲存庫清單中,從要進行去識別化處理的 DICOM 儲存庫的「動作」清單中,選擇「去識別化」。
系統會顯示「De-identify DICOM store」(DICOM 儲存庫去識別化) 頁面。
選取「設定目的地資料存放區」,然後選擇要將去識別化資料儲存至哪個資料集和 DICOM 存放區。
選取「DICOM tag de-identification」(DICOM 標記去識別化),設定資料去識別化方式。您可以透過下列方式將資料去識別化:
KEEP_ALL_PROFILE
:保留所有 DICOM 中繼標記DEIDENTIFY_TAG_CONTENTS
:將中繼標記中的資料去識別化ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE
:根據 DICOM 標準的基本設定檔移除中繼標記MINIMAL_KEEP_LIST_PROFILE
:僅保留有效 DICOM 物件所需的中繼標記- 略過 ID 遮蓋程序:根據 DICOM 標準重新產生 UID 欄位
選取「DICOM 烙印文字遮蓋」,設定去識別化期間的圖片遮蓋方式。您可以按照下列方式設定圖片遮蓋:
REDACT_NO_TEXT
:請勿遮蓋圖片中的文字REDACT_SENSITIVE_TEXT
:只遮蓋圖片中的敏感文字REDACT_ALL_TEXT
:遮蓋圖片中的所有文字
按一下「去識別化」,將 DICOM 存放區中的資料去識別化。
REST
將資料集去識別化。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- SOURCE_DATASET_ID:包含要進行去識別化資料的資料集 ID
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
- SOURCE_DICOM_STORE_ID:包含要進行去識別化資料的 DICOM 儲存庫 ID
- DESTINATION_DICOM_STORE_ID:目的地資料集中的 DICOM 儲存庫 ID
JSON 要求主體:
{ "destinationStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "image": { "textRedactionMode": "REDACT_ALL_TEXT" } } }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:cat > request.json << 'EOF' { "destinationStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "image": { "textRedactionMode": "REDACT_ALL_TEXT" } } } EOF
接著,請執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:deidentify"PowerShell
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:@' { "destinationStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "image": { "textRedactionMode": "REDACT_ALL_TEXT" } } } '@ | Out-File -FilePath request.json -Encoding utf8
接著,請執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:deidentify" | Select-Object -Expand Content- 使用
projects.locations.datasets.operations.get
方法取得長時間執行的作業狀態。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- DATASET_ID:資料集 ID
- LOCATION:資料集位置
- OPERATION_ID:長時間執行的作業傳回的 ID
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
"done": true
,表示長時間執行的作業已完成。
將 DICOM 儲存庫的子集去識別化
您可以指定篩選器,將 DICOM 存放區中的部分資料去識別化。
篩選條件會採用篩選條件檔案的形式,您可以在 DicomFilterConfig
物件中,將篩選條件檔案指定為 resourcePathsGcsUri
欄位的值。篩選器檔案必須位於 Cloud Storage bucket 中,您無法指定本機或其他來源的篩選器檔案。檔案位置的格式必須為 gs://BUCKET/PATH/TO/FILE
。
建立篩選器檔案
篩選器檔案會定義要將哪些 DICOM 檔案去識別化。 您可以依下列層級篩選檔案:
- 研究層級
- 在影集層級
- 在執行個體層級
篩選器檔案的每一行代表您要匿名處理的研究、序列或執行個體。每行都採用 /studies/STUDY_UID[/series/SERIES_UID[/instances/INSTANCE_UID]]
格式。
每行結尾都有換行字元:\n
或 \r\n
。
如果您在呼叫去識別化作業時傳遞的篩選器檔案中,未指定研究、系列或執行個體,系統就不會對該研究、系列或執行個體去識別化,且不會出現在目的地 DICOM 存放區。
路徑中只需要 /studies/STUDY_UID
部分。也就是說,您可以指定 /studies/STUDY_UID
來去識別研究,也可以指定 /studies/STUDY_UID/series/SERIES_UID
來去識別序列。
請參考下列篩選器檔案。篩選器檔案會導致一項研究、兩個序列和三個個別例項去識別化:
/studies/1.123.456.789
/studies/1.666.333.111/series/123.456\n
/studies/1.666.333.111/series/567.890\n
/studies/1.888.999.222/series/123.456/instances/111\n
/studies/1.888.999.222/series/123.456/instances/222\n
/studies/1.888.999.222/series/123.456/instances/333\n
使用 BigQuery 建立篩選器檔案
您通常會先將 DICOM 儲存庫中的中繼資料匯出至 BigQuery,然後建立篩選器檔案。這樣一來,您就能使用 BigQuery 查看 DICOM 儲存庫中 DICOM 資料的研究、系列和執行個體 UID。接著,你可以執行下列操作:
查詢您感興趣的研究、系列和執行個體 UID。 舉例來說,將中繼資料匯出至 BigQuery 後,您可以執行下列查詢,將研究、系列和例項 UID 串連至符合篩選器檔案需求的格式:
SELECT CONCAT ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID) FROM [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
如果查詢傳回大型結果集,您可以將查詢結果儲存至 BigQuery 中的目的地資料表,具體化新資料表。
將查詢結果儲存到目標資料表後,您可以將目標資料表的內容儲存到檔案,然後匯出至 Cloud Storage。如需相關步驟,請參閱「匯出資料表資料」。匯出的檔案就是篩選器檔案。在匯出作業中指定篩選條件時,您會使用 Cloud Storage 中的篩選條件檔案位置。
手動建立篩選器檔案
您可以建立含有自訂內容的篩選器檔案,然後將其上傳至 Cloud Storage 值區。在去識別化作業中指定篩選條件時,您會使用 Cloud Storage 中的篩選條件檔案位置。下列範例說明如何使用 gcloud storage cp
指令,將篩選器檔案上傳至 Cloud Storage 值區:
gcloud storage cp PATH/TO/FILTER_FILE gs://BUCKET/DIRECTORY
例如:
gcloud storage cp /home/user/Desktop/filters.txt gs://my-bucket/my-directory
使用篩選器
設定篩選器檔案後,您可以將其做為 filterConfig
物件中 resourcePathsGcsUri
欄位的值傳遞。
下列範例會擴充將 DICOM 存放區層級資料去識別化,但會提供 Cloud Storage 中的篩選器檔案,用於判斷要將哪些 DICOM 資源去識別化。
REST
將資料集去識別化。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- LOCATION:資料集位置
- SOURCE_DATASET_ID:包含要進行去識別化資料的資料集 ID
- DESTINATION_DATASET_ID:去識別化資料的寫入目的地資料集 ID
- SOURCE_DICOM_STORE_ID:包含要進行去識別化資料的 DICOM 儲存庫 ID
- DESTINATION_DICOM_STORE_ID:目的地資料集中 DICOM 儲存庫的 ID
- BUCKET/PATH/TO/FILE:Cloud Storage 值區中篩選器檔案的位置
JSON 要求主體:
{ "destinationStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "image": { "textRedactionMode": "REDACT_ALL_TEXT" } }, "filterConfig": { "resourcePathGcsUri": "gs://BUCKET/PATH/TO/FILE" } }
如要傳送要求,請選擇以下其中一個選項:
curl
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:cat > request.json << 'EOF' { "destinationStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "image": { "textRedactionMode": "REDACT_ALL_TEXT" } }, "filterConfig": { "resourcePathGcsUri": "gs://BUCKET/PATH/TO/FILE" } } EOF
接著,請執行下列指令來傳送 REST 要求:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:deidentify"PowerShell
將要求主體儲存在名為
request.json
的檔案中。 在終端機中執行下列指令,在目前目錄中建立或覆寫這個檔案:@' { "destinationStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "image": { "textRedactionMode": "REDACT_ALL_TEXT" } }, "filterConfig": { "resourcePathGcsUri": "gs://BUCKET/PATH/TO/FILE" } } '@ | Out-File -FilePath request.json -Encoding utf8
接著,請執行下列指令來傳送 REST 要求:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:deidentify" | Select-Object -Expand Content- 使用
projects.locations.datasets.operations.get
方法取得長時間執行的作業狀態。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的 Google Cloud 專案 ID
- DATASET_ID:資料集 ID
- LOCATION:資料集位置
- OPERATION_ID:長時間執行的作業傳回的 ID
如要傳送要求,請選擇以下其中一個選項:
curl
執行下列指令:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"PowerShell
執行下列指令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPIs Explorer
開啟方法參考頁面。系統會在頁面右側開啟 APIs Explorer 面板。您可以使用這項工具來傳送要求。完成任何必填欄位,然後按一下「執行」。
"done": true
,表示長時間執行的作業已完成。
排解 DICOM 去識別化作業問題
如果 DICOM 去識別化作業期間發生錯誤,系統會將錯誤記錄至 Cloud Logging。詳情請參閱「查看 Cloud Logging 中的錯誤記錄檔」。
如果整個作業傳回錯誤,請參閱「排解長期執行的作業問題」。