이 페이지에서는 v1 DicomConfig
구성을 사용하여 다음 수준에서 DICOM 인스턴스의 민감한 정보를 익명화하는 방법을 설명합니다.
datasets.deidentify
를 사용하여 데이터 세트 수준dicomStores.deidentify
를 사용하여 DICOM 저장소 수준
이 페이지에서는 DICOM 저장소 수준에서 데이터를 익명화할 때 필터를 적용하는 방법도 설명합니다.
익명화 개요
데이터 세트 수준 익명화
데이터 세트 수준에서 DICOM 데이터를 익명화하려면 datasets.deidentify
작업을 호출합니다. 익명화 API 호출에는 다음과 같은 구성요소가 있습니다.
- 소스 데이터 세트: 민감한 정보가 있는 인스턴스가 하나 이상 있는 DICOM 저장소가 포함된 데이터 세트입니다.
deidentify
작업을 호출하면 데이터 세트의 모든 DICOM 저장소에 있는 모든 인스턴스가 익명화됩니다. - 대상 데이터 세트: 익명화는 원본 데이터 세트 또는 해당 데이터에 영향을 주지 않습니다. 대신 원본 데이터의 익명화된 복사본이 대상 데이터 세트라고 하는 새 데이터 세트에 기록됩니다.
- 익명화할 대상: 데이터 세트 처리 방법을 지정하는 구성 매개변수입니다. DICOM 이미지에서 인스턴스 메타데이터(태그 키워드 사용) 또는 번인 텍스트를 익명화하도록 DICOM 익명화를 구성할 수 있습니다.
DeidentifyConfig
객체를 만들고 다음 작업을 수행합니다.- 요청 본문의
config
필드 설정 - Cloud Storage에 JSON 형식으로 저장하고 요청 본문의
gcsConfigUri
필드를 사용하여 버킷의 파일 위치 지정
- 요청 본문의
이 가이드의 샘플 대부분은 데이터 세트 수준에서 DICOM 데이터를 익명화하는 방법을 보여줍니다.
DICOM 저장소 수준 익명화
DICOM 저장소 수준에서 DICOM 데이터를 익명화하면 어떤 데이터가 익명화되는지 보다 세부적으로 제어할 수 있습니다. 예를 들어 여러 DICOM 저장소가 있는 데이터 세트가 있는 경우 저장소에 있는 데이터 유형에 따라 각 DICOM 저장소를 익명화할 수 있습니다.
DICOM 저장소에서 DICOM 데이터를 익명화하려면 dicomStores.deidentify
메서드를 호출합니다. 익명화 API 호출에는 다음과 같은 구성요소가 있습니다.
- 소스 DICOM 저장소: 민감한 정보가 있는 인스턴스가 하나 이상 포함된 DICOM 저장소입니다.
deidentify
작업을 호출하면 DICOM 저장소의 모든 인스턴스가 익명화됩니다. - 대상 DICOM 저장소: 익명화는 원래 DICOM 저장소 또는 데이터에 영향을 주지 않습니다. 대신 원본 데이터의 익명화된 복사본이 대상 DICOM 저장소에 기록됩니다. 대상 DICOM 저장소가 이미 있어야 합니다.
- 익명화할 대상: DICOM 저장소를 처리하는 방법을 지정하는 구성 매개변수입니다. 이러한 매개변수를
DeidentifyConfig
객체에서 지정하고 다음 중 하나를 수행하여 전달하여 DICOM 이미지에서 DICOM 인스턴스 메타데이터(태그 키워드 사용) 또는 번인 텍스트를 익명화하도록 DICOM 익명화를 구성할 수 있습니다.- 요청 본문의
config
필드 설정 - Cloud Storage에 JSON 형식으로 저장하고 요청 본문의
gcsConfigUri
필드를 사용하여 버킷의 파일 위치 지정
- 요청 본문의
DICOM 저장소 수준에서 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
객체에 keeplist 태그를 지정하면 기본적으로 다음 태그가 추가됩니다.
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
옵션을 사용합니다.
keeplist 태그가 제공되지 않으면 데이터 세트의 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 Contentprojects.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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
다음과 비슷한 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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
Go
Java
Node.js
Python
removelist 태그를 사용한 익명화
DicomConfig
객체에서 removelist를 지정할 수 있습니다. deidentify
작업은 목록에 지정된 태그만 수정합니다. removelist 태그를 제공하지 않으면 익명화 작업이 일반적으로 수행되지만, 대상 데이터 세트의 DICOM 태그가 수정되지 않습니다.
removelist를 지정하면 오버레이 데이터에 PHI가 포함될 수 있으므로 기본적으로 OverlayData
태그가 추가됩니다.
기본적으로 keeplist에 추가된 태그는 removelist에 추가할 수 없습니다.
다음 샘플은 removelist에서 모든 태그를 삭제하여 DICOM 저장소 및 DICOM 데이터가 포함된 데이터 세트를 익명화하는 방법을 보여줍니다. removelist에 없는 태그는 변경되지 않습니다.
Cloud Healthcare API에 이미지를 제출하면 이미지가 다음과 같이 표시됩니다. 삭제 목록에 제공된 태그 외에 PatientBirthDate
만 이미지에서 삭제됩니다. 이미지에 표시되는 메타데이터에 해당하는 삭제 목록의 유일한 태그이기 때문입니다.
이미지 상단의 PatientBirthDate
는 removelist의 구성에 따라 수정되었지만 이미지 하단의 번인 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 Contentprojects.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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
다음과 비슷한 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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
태그 필터 프로필을 사용한 익명화
유지하거나 삭제할 태그를 지정하는 대신 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 Contentprojects.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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
다음과 비슷한 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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
Google Cloud Console에서 데이터 익명화
Google Cloud 콘솔에서 데이터를 익명화하려면 다음 단계를 완료합니다.
Google Cloud 콘솔에서 데이터 세트 페이지로 이동합니다.
익명화할 데이터 세트의 작업 목록에서 익명화를 선택합니다.
익명화 데이터 세트 페이지가 표시됩니다.
대상 데이터 세트 설정을 선택하고 익명화된 데이터를 저장할 새 데이터 세트의 이름을 입력합니다.
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
- 이미지의 모든 텍스트 수정
익명화를 클릭하여 데이터 세트의 데이터를 익명화합니다.
이미지에서 번인 텍스트 수정
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 Contentprojects.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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
다음과 비슷한 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
를 지정하면 됩니다.
기본 DICOM infoType에 지정된 infoType은 REDACT_SENSITIVE_TEXT
가 지정될 때 수정됩니다. 의료 기록 번호(MRN)와 같은 환자 식별자에 대한 추가 커스텀 infoType도 적용되며 환자 식별자가 수정됩니다.
다음 이미지는 환자의 수정되지 않은 x-레이를 보여줍니다.
REDACT_SENSITIVE_TEXT
옵션을 사용하여 Cloud Healthcare API에 이미지를 제출하면 이미지가 다음과 같이 표시됩니다.
다음과 같은 상황을 확인할 수 있습니다.
- 이미지 왼쪽 하단의
PERSON_NAME
이 수정되었습니다. - 이미지 왼쪽 하단의
DATE
이 수정되었습니다.
기본 DICOM infoType에 따라 민감한 텍스트로 간주되지 않으므로 환자 성별이 수정되지 않았습니다.
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 Contentprojects.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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
다음과 비슷한 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
필드의 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 Contentprojects.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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
다음과 비슷한 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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
DICOM 태그와 함께 infoType 및 기본 변환 사용
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을 사용하지만 의료 기록 번호(MRN)와 같은 환자 식별자에 대한 추가 커스텀 infoType도 이미지의 민감한 텍스트에 적용됩니다.
기본 변환 옵션
Cloud Healthcare API 기본 변환 옵션은 다음과 같습니다.
RedactConfig
: 값을 삭제하여 수정합니다.CharacterMaskConfig
: 입력 문자를 지정된 고정 문자로 대체하여 문자열 전체 또는 일부를 마스킹합니다.DateShiftConfig
: 동일한 컨텍스트에 대해 일관적인 옵션으로 무작위 일 수만큼 날짜를 이동합니다.CryptoHashConfig
: SHA-256을 사용하여 입력 값을 지정된 데이터 암호화 키를 사용하여 생성된 해시된 출력 문자열의 base64 인코딩 표현으로 바꿉니다.ReplaceWithInfoTypeConfig
: 해당 infoType의 이름으로 입력 값을 대체합니다.
TextConfig
에서 구성 지정
InfoType 및 기본 변환은 TextConfig
내부의 객체인 InfoTypeTransformation
내에 지정됩니다.
InfoType은 쉼표로 구분된 값으로 infoTypes
배열에 입력됩니다.
infoType 지정은 선택사항입니다. infoType을 하나 이상 지정하지 않으면 변환이 Cloud Healthcare API에 있는 기본 DICOM infoType에 적용됩니다.
InfoTypeTransformation
에 infoType을 지정하는 경우 기본 변환을 하나 이상 지정해야 합니다.
InfoTypeTransformation
은 DEIDENTIFY_TAG_CONTENTS
프로필에만 적용할 수 있습니다.
InfoTypeTransformation
은 TagFilterProfile
에 표시된 다른 프로필에 적용할 수 없습니다.
다음 섹션에서는 InfoTypeTransformation
에서 사용 가능한 기본 변환을 infoType과 함께 사용하여 DICOM 태그를 익명화하는 방식을 맞춤설정하는 방법을 보여줍니다. 이 샘플은 샘플 개요에 제공된 샘플 이미지와 DICOM 태그 익명화에 제공된 샘플 메타데이터를 사용합니다.
기본 구성
기본적으로 TextConfig
객체에 구성을 제공하지 않고 DEIDENTIFY_TAG_CONTENTS
프로필을 설정하면 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 Contentprojects.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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
다음과 비슷한 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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
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 Contentprojects.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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
다음과 비슷한 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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
출력에 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 Contentprojects.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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
다음과 비슷한 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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
출력에서 ReferringPhysicianName
(00080090
) 및 PatientName
(00100010
)의 성이 별표로 대체된 것으로 나타납니다.
이는 이러한 값을 암호화 해싱을 사용하여 변환한 기본 구성의 샘플과 대조됩니다.
DateShiftConfig
Cloud Healthcare API는 미리 설정한 범위 내에서 날짜를 이동하여 변환할 수 있습니다. 익명화 실행에서 날짜 변환을 일관되게 유지하려면 다음 중 하나와 함께 DateShiftConfig
를 사용합니다.
- (지원 중단됨): 원시 AES 128/192/256비트 base 64로 인코딩된 키입니다.
- (권장사항): Cloud Key Management Service(Cloud KMS) 래핑 키입니다. Cloud KMS 래핑 키를 사용하는 방법에 대한 예시는 민감한 텍스트 익명화 및 재식별을 참조하세요.
Cloud KMS 래핑 키를 복호화하려면cloudkms.cryptoKeyVersions.useToDecrypt
권한이 있는 역할을 Cloud Healthcare 서비스 에이전트 서비스 계정에 부여해야 합니다. 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일을 더하거나 뺀 값 내에서 이동합니다.
제공된 CryptoKey인 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 Contentprojects.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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
다음과 비슷한 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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
출력은 StudyDate
(00080020
) 및 PatientBirthDate
(00100030
)에 새 값이 있는 것을 보여줍니다. 이러한 변환은 100일 차이를 제공된 cryptoKey
값과 결합한 결과 발생했습니다. 동일한 cryptoKey
가 제공되는 한 익명화 실행 간에 새 데이터 값은 이 인스턴스에 대해 일관됩니다.
CryptoHashConfig
cryptoHashConfig
를 비워 두거나 다음 중 하나로 제공할 수 있습니다.
- (지원 중단됨): 원시 AES 128/192/256비트 base 64로 인코딩된 키입니다.
- (권장사항): Cloud Key Management Service(Cloud KMS) 래핑 키입니다. Cloud KMS 래핑 키를 사용하는 방법에 대한 예시는 민감한 텍스트 익명화 및 재식별을 참조하세요.
Cloud KMS 래핑 키를 복호화하려면cloudkms.cryptoKeyVersions.useToDecrypt
권한이 있는 역할을 Cloud Healthcare 서비스 에이전트 서비스 계정에 부여해야 합니다. 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는 작업이 실행될 때마다 새 키를 생성합니다. 다른 키를 사용하면 서로 다른 서로게이트 값이 생성됩니다.
다음 샘플에서는 Cloud Healthcare API에서 지원되는 모든 기본 DICOM infoType에 cryptoHashConfig
변환을 적용하는 방법을 보여줍니다. 익명화 요청을 보내면 Cloud Healthcare API에서 해당 DICOM infoType이 있는 값이 서로게이트 값으로 바뀝니다.
또한 이 샘플은 익명화 실행 간에 일관된 서로게이트 값을 생성하기 위해 CryptoKey를 제공하는 방법을 보여줍니다.
제공된 CryptoKey인 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 Contentprojects.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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
다음과 비슷한 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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
동일한 cryptoKey
가 제공되는 한 익명화 실행 간에 출력의 변환은 이 인스턴스에 대해 일관됩니다.
ReplaceWithInfoTypeConfig
replaceWithInfoTypeConfig
를 지정하면 입력 값이 값의 infoType 이름으로 대체됩니다.
다음 샘플에서는 Cloud Healthcare API에서 지원되는 모든 기본 DICOM infoType에 replaceWithInfoTypeConfig
변환을 적용하는 방법을 보여줍니다.
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 Contentprojects.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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
다음과 비슷한 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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
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 저장소의 작업 목록에서 익명화를 선택합니다.
DICOM 저장소 익명화 페이지가 표시됩니다.
대상 데이터 저장소 설정을 선택하고 익명화된 데이터를 저장할 데이터 세트와 DICOM 저장소를 선택합니다.
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 Contentprojects.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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"done": true
가 포함되었으면 장기 실행 작업이 완료된 것입니다.
DICOM 저장소의 하위 집합 익명화
필터를 지정하면 DICOM 저장소의 데이터 하위 집합을 익명화할 수 있습니다.
필터는 DicomFilterConfig
객체의 resourcePathsGcsUri
필드 값으로 지정하는 필터 파일의 형식을 취합니다. Cloud Storage 버킷에 필터 파일이 있어야 합니다. 로컬 머신이나 다른 소스에 있는 필터 파일을 지정할 수 없습니다. 파일 위치는 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
를 지정하여 시리즈를 익명화할 수 있습니다.
다음 필터 파일을 고려해 보세요. 필터 파일로 인해 연구 1개, 시리즈 2개, 개별 인스턴스 3개가 익명화됩니다.
/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 Contentprojects.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 ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"done": true
가 포함되었으면 장기 실행 작업이 완료된 것입니다.
DICOM 익명화 작업 문제해결
DICOM 익명화 작업 중에 오류가 발생하면 오류가 Cloud Logging에 로깅됩니다. 자세한 내용은 Cloud Logging에서 오류 로그 보기를 참조하세요.
전체 작업이 오류를 반환하는 경우 장기 실행 작업 문제 해결을 참조하세요.