이 페이지에서는 Cloud Healthcare API의 v1beta1 DicomTagConfig
구성을 사용하여 다음 수준에서 DICOM 인스턴스의 민감한 정보를 익명화하는 방법을 설명합니다.
datasets.deidentify
를 사용하여 데이터 세트 수준dicomStores.deidentify
를 사용하여 DICOM 저장소 수준
이 페이지에서는 DICOM 저장소 수준에서 데이터를 익명화할 때 필터를 적용하는 방법도 설명합니다.
기존 v1 DicomConfig
객체 또는 v1beta1 DicomTagConfig
객체를 사용하여 DICOM 익명화 작업을 구성할 수 있습니다. DicomTagConfig
를 사용하는 것이 좋습니다.
익명화 작업에 이미 DicomConfig
를 사용하는 경우 DicomTagConfig
를 사용하도록 마이그레이션하는 것이 좋습니다. 새 기능의 요약은 DicomTagConfig
의 새로운 구성 옵션을 참고하세요.
이전 방법에 관한 안내는 DicomTagConfig
를 사용하도록 요청 및 응답 마이그레이션을 참고하세요.
DicomTagConfig
의 새로운 구성 옵션
컨텍스트 익명화를 사용하여 텍스트 익명화
DicomTagConfig.Options.CleanDescriptorsOption
객체를 구성하여 구조화되지 않은 메타데이터 텍스트를 컨텍스트에서 익명화하도록 설정할 수 있습니다.
이 옵션은 설명어 정리 옵션을 기반으로 합니다.
DicomTagConfig.Options.CleanDescriptorsOption
을 지정하면 검사 중에 추가 infoType이 사용되어 결제 비용에 영향을 미칠 수 있습니다.
DicomTagConfig.Options.CleanDescriptorsOption
옵션을 사용하면 삭제된 태그와 일치하는 구조화되지 않은 메타데이터 텍스트를 변환하여 익명화 품질을 개선할 수 있습니다. 예를 들어, X선을 익명화하고 X선 환자는 Wall
과 같이 역시 명사인 성을 가지고 있다고 가정합니다. 인스턴스의 메타데이터(예: StudyDescription
의 텍스트)에 단어 Wall
이 포함된 경우 텍스트가 변환됩니다.
CleanDescriptorsOption
옵션은 태그가 다음 작업 코드 중 하나와 일치하는 경우 DICOM 기본 프로필에서 삭제로 지정된 태그와 일치하는 컨텍스트 구문을 수정합니다.
D
Z
X
U
일치하는 컨텍스트 구문은 [CTX]
토큰으로 대체됩니다.
다음을 지정하여 수정할 태그를 구성할 수 있습니다.
ProfileType
객체의 enum입니다. enum을 지정할 필요는 없습니다.- 특정 태그에 대한
CleanTextTag
필터입니다.
그러나 DICOM 기본 프로필에 사용되는 태그는 변경할 수 없습니다.
컨텍스트 익명화를 사용하여 번인된 텍스트 수정
TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS
enum을 지정하여 이미지에 번인된 텍스트의 컨텍스트 익명화를 사용 설정할 수 있습니다.
이 옵션은 설명어 정리 옵션을 기반으로 합니다.
TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS
enum을 지정하면 검사 중에 추가 infoType이 사용되며 결제 비용에 영향을 줄 수 있습니다.
TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS
enum은 다음 방법으로 지정할 수 있습니다.
DicomTagConfig.Options.ImageConfig.TextRedactionMode
를 사용하여Options.ImageConfig
객체에서 지정. 이 옵션을 지정하면PixelData (7FE0,0010)
태그가 수정할 태그 목록에 자동으로 추가됩니다.DicomTagConfig.Action.CleanImageTag.TextRedactionMode
를 사용하여Action.CleanImageTag
객체에서 지정. 이 옵션을 지정하면PixelData
태그를Action.queries[]
배열에 수동으로 추가해야 합니다.Action.CleanImageTag
를 사용할 때 지원되는 유일한 태그는PixelData
태그입니다.
TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS
옵션은 태그가 다음 작업 코드 중 하나와 일치하는 경우 DICOM 기본 프로필에서 삭제로 지정된 태그와 일치하는 번인된 텍스트를 수정합니다.
D
Z
X
U
ProfileType
객체에 enum을 사용하여 사용 설정 또는 사용 중지하는 것 외에는 번인된 텍스트의 컨텍스트 익명화를 위한 추가 구성은 없습니다. enum을 지정할 필요는 없습니다.
이미지 익명화의 추가 infoType
정보 유형(infoType)을 사용하여 태그에서 익명화를 수행할 때 스캔할 데이터를 지정할 수 있습니다. infoType은 환자 이름, 이메일 주소, 전화번호, 신분증 또는 신용카드 번호와 같은 민감한 정보 유형입니다.
DicomTagConfig.Options.ImageConfig
객체에서 다음 필드를 구성하여 DICOM 이미지 익명화 중에 사용할 infoType을 결정할 수 있습니다.
이 필드는 DicomTagConfig.Options.ImageConfig.TextRedactionMode
가 다음 값 중 하나로 설정된 경우에만 적용됩니다.
DicomTagConfig
를 사용하도록 요청 및 응답 마이그레이션
Cloud Healthcare API v1beta1에서 사용할 수 있으며 기존 DicomConfig
대신 사용할 수 있는 DicomTagConfig
를 사용하여 DICOM 익명화를 구성할 수 있습니다.
요청을 보낼 때 DicomConfig
및 DicomTagConfig
를 모두 포함할 수는 없습니다.
다음 섹션에서는 DicomConfig
의 구성과 이를 DicomTagConfig
로 이전하는 방법을 설명합니다.
TagFilterProfile
에서 ProfileType
으로
DicomConfig
TagFilterProfile
객체를 DicomTagConfig
ProfileType
객체로 바꿉니다. 동일한 TagFilterProfileType
의 4개 프로필을 ProfileType
에서 사용할 수 있습니다.
다음 예는 요청을 TagFilterProfile
사용에서 ProfileType
사용으로 이전하는 방법을 보여줍니다.
DicomConfig | DicomTagConfig |
---|---|
|
|
keepList
, removeList
DicomConfig
keepList
및 removeList
필드는 더 이상 DicomTagConfig
에서 사용할 수 없습니다. 프로필을 사용하는 대신 keepList
및 removeList
를 사용하여 보존하거나 삭제할 태그를 지정한 경우, 태그 작동 방식을 지정하는 새 Action
객체로 마이그레이션해야 합니다. Action
객체는 태그를 변환하는 추가 옵션을 제공합니다.
다음 예는 요청을 keepList
사용에서 Action.keepTag
사용으로 이전하는 방법을 보여줍니다. 이 요청은 익명화 작업 중에 PatientID
태그의 값이 유지된다고 지정합니다.
DicomConfig | DicomTagConfig |
---|---|
|
|
유지 목록, 삭제 목록, 프로필 결합
DicomConfig
객체에서 유지 목록, 삭제 목록, 프로필에 따라 데이터를 유지 또는 삭제할지 여부를 결정할 수 있습니다. 이 옵션은 상호 배타적입니다.
DicomTagConfig
객체를 사용할 때, Action
객체에서 유지 및 삭제할 태그를 지정하고 또한 ProfileType
에서 프로필을 지정하여 이러한 옵션을 지정할 수 있습니다.
Action
객체에 구성된 옵션은 ProfileType
프로필에 구성된 옵션보다 우선 적용됩니다. Action
객체의 옵션은 요청에 제공된 순서대로 적용됩니다.
skipIdRedaction
에서 Objects.primaryIds
로
DicomConfig
객체의 skipIdRedaction
필드를 DicomTagConfig
객체의 primaryIds
필드로 바꿉니다. Options
객체에 있는 primaryIds
필드에는 다음 enum 중 하나를 지정하는 PrimaryIdsOption
객체가 포함됩니다.
PRIMARY_IDS_OPTION_UNSPECIFIED
:PrimaryIdsOption
에 값이 제공되지 않은 경우의 기본 동작입니다. 기본값은ProfileType
에 지정된 옵션입니다.KEEP
: 기본 ID는 변경하지 않습니다.REGEN
: 기본 ID를 다시 생성합니다.
다음 예는 요청을 skipIdRedaction
사용에서 Options.primaryIds
사용으로 이전하는 방법을 보여줍니다. 요청은 익명화 작업 중에 기본 ID의 값이 유지되도록 지정합니다.
DicomConfig | DicomTagConfig |
---|---|
|
|
DeidentifyConfig.ImageConfig
에서 DicomTagConfig.Options.ImageConfig
로
DeidentifyConfig.ImageConfig
객체를 DicomTagConfig.Options.ImageConfig
객체로 바꿉니다.
ImageConfig
객체의 옵션은 두 버전에서 동일합니다.
다음 예는 요청을 DeidentifyConfig.image
내 ImageConfig
사용에서 DeidentifyConfig.DicomTagConfig.Options.cleanImage
내 ImageConfig
사용으로 이전하는 방법을 보여줍니다.
요청은 익명화 작업 중에 이미지의 모든 텍스트를 수정해야 한다고 지정합니다.
DeidentifyConfig.image | DeidentifyConfig.DicomTagConfig.Options.cleanImage |
---|---|
|
|
익명화 개요
데이터 세트 수준 익명화
데이터 세트 수준에서 DICOM 데이터를 익명화하려면 datasets.deidentify
메서드를 호출합니다. datasets.deidentify
메서드에는 다음과 같은 구성요소가 있습니다.
- 소스 데이터 세트: 민감한 정보가 있는 인스턴스가 하나 이상 있는 DICOM 저장소가 포함된 데이터 세트입니다.
datasets.deidentify
메서드를 호출하면 데이터 세트의 모든 DICOM 저장소에 있는 모든 인스턴스가 익명화됩니다. - 대상 데이터 세트: 익명화는 원본 데이터 세트 또는 해당 데이터에 영향을 주지 않습니다. 대신 원본 데이터의 익명화된 복사본이 대상 데이터 세트라고 하는 새 데이터 세트에 기록됩니다.
- 익명화할 대상: 데이터 세트의 DICOM 데이터를 처리하는 방법을 지정하는 구성 매개변수입니다.
DeidentifyConfig
객체에 이러한 매개 변수를 지정하여 DICOM 이미지에서 인스턴스 메타데이터(태그 키워드 사용) 또는 번인 텍스트를 익명화하도록 DICOM 익명화를 구성할 수 있습니다.
이 가이드의 샘플 대부분은 데이터 세트 수준에서 DICOM 데이터를 익명화하는 방법을 보여줍니다.
DICOM 저장소 수준 익명화
DICOM 저장소 수준에서 DICOM 데이터를 익명화하면 어떤 데이터가 익명화되는지 보다 세부적으로 제어할 수 있습니다. 예를 들어 여러 DICOM 저장소가 있는 데이터 세트가 있는 경우 저장소에 있는 데이터 유형에 따라 각 DICOM 저장소를 익명화할 수 있습니다.
DICOM 저장소에서 DICOM 데이터를 익명화하려면 dicomStores.deidentify
메서드를 호출합니다. dicomStores.deidentify
메서드에는 다음과 같은 구성요소가 있습니다.
- 소스 DICOM 저장소: 민감한 정보가 있는 인스턴스가 하나 이상 포함된 DICOM 저장소입니다.
dicomStores.deidentify
작업을 호출하면 DICOM 저장소의 모든 인스턴스가 익명화됩니다. - 대상 DICOM 저장소: 익명화는 원래 DICOM 저장소 또는 데이터에 영향을 주지 않습니다. 대신 원본 데이터의 익명화된 복사본이 대상 DICOM 저장소에 기록됩니다. 대상 DICOM 저장소가 이미 있어야 합니다.
- 익명화할 대상: DICOM 저장소를 처리하는 방법을 지정하는 구성 매개변수입니다.
DeidentifyConfig
객체에 이러한 매개 변수를 지정하여 DICOM 이미지에서 인스턴스 메타데이터(태그 키워드 사용) 또는 번인 텍스트를 익명화하도록 DICOM 익명화를 구성할 수 있습니다.
DICOM 저장소 수준에서 DICOM 데이터를 익명화하는 방법의 예시는 DICOM 스토어 수준에서 데이터 익명화를 참조하세요.
필터
DICOM 스토어 수준에서 DICOM 데이터를 익명화할 때, 필터 파일을 구성하고 dicomStores.deidentify
요청에 파일을 지정하면 DICOM 스토어의 데이터 하위 집합을 익명화할 수 있습니다. 예시는 DICOM 스토어의 하위 집합 익명화를 참조하세요.
샘플 개요
이 가이드의 샘플은 dicom_deid_instance_sample.dcm
이름의 단일 DICOM 인스턴스를 사용하지만 여러 인스턴스를 익명화할 수도 있습니다. 이 페이지의 예시에 있는 샘플 DICOM 인스턴스를 사용하려면 파일을 로컬 머신에 다운로드하고 DICOM 데이터 저장의 안내를 따라 DICOM 스토어에 저장합니다.
다음 섹션에서는 DICOM 인스턴스의 이미지 모양과 인스턴스의 메타데이터를 보여줍니다.
샘플 이미지
이 페이지의 일부 샘플에는 익명화된 이미지의 출력이 포함되어 있습니다. 각 샘플은 다음과 같은 원본 이미지를 입력으로 사용합니다. 각 익명화 작업의 출력 이미지를 이 원본 이미지와 비교하여 작업의 효과를 확인할 수 있습니다.
샘플 메타데이터
이 페이지의 대부분의 샘플에는 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"
]
}
}
]
이미지에서 번인된 텍스트 수정
Action
객체 내의 ImageConfig
객체를 사용하여 DICOM 이미지에서 번인 텍스트를 익명화할 수 있습니다. ImageConfig
내에서 포함하거나 제외할 infoType과 TextRedactionMode
객체를 사용하여 텍스트를 수정하는 방법을 지정할 수 있습니다.
모든 텍스트 수정
다음 샘플은 TextRedactionMode
를 REDACT_ALL_TEXT
로 설정하여 DICOM 인스턴스를 익명화하는 방법을 보여줍니다.
이 구성은 이미지에서 모든 번인된 텍스트를 수정합니다.
REST
데이터 세트를 익명화합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- SOURCE_DATASET_ID: 익명화할 데이터가 포함된 데이터 세트의 ID
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
JSON 요청 본문:
{ "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "options": { "cleanImage": { "textRedactionMode": "REDACT_ALL_TEXT" } } } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "options": { "cleanImage": { "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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.@' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "options": { "cleanImage": { "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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand ContentOPERATION_ID
의 값을 확인합니다. 다음 단계에서 이 값이 필요합니다.projects.locations.datasets.operations.get
메서드를 사용하여 장기 실행 작업의 상태를 가져옵니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- SOURCE_DATASET_ID: 익명화할 데이터가 포함된 데이터 세트의 ID
- OPERATION_ID: 장기 실행 작업에서 반환된 ID
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"done": true
가 포함되었으면 장기 실행 작업이 완료된 것입니다.익명화가 성공하면 익명화된 인스턴스의 메타데이터를 검색하여 어떻게 변경되었는지 확인할 수 있습니다. 익명화된 인스턴스에는 새로운 연구 UID, 시리즈 UID, 인스턴스 UID가 있으므로 먼저 새 데이터 세트에서 익명화된 인스턴스를 검색해야 합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- DESTINATION_DICOM_STORE_ID: 대상 데이터 세트의 DICOM 저장소 ID. 이는 소스 데이터 세트의 DICOM 저장소 ID와 동일합니다.
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content다음과 비슷한 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
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- DESTINATION_DICOM_STORE_ID: 대상 데이터 세트의 DICOM 저장소 ID. 이는 소스 데이터 세트의 DICOM 저장소 ID와 동일합니다.
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_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 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
REDACT_ALL_TEXT
를 사용하여 이미지를 익명화하면 이미지는 다음과 비슷합니다. 이미지 하단의 번인 텍스트가 모두 수정된 것을 볼 수 있습니다.
설명어 정리 옵션을 사용하여 민감한 텍스트 수정
다음 샘플은 TextRedactionMode
를 REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS
로 설정하여 DICOM 인스턴스를 익명화하는 방법을 보여줍니다.
CleanDescriptorsOption
옵션에 관한 자세한 내용은 컨텍스트 익명화를 사용하여 텍스트 익명화를 참고하세요.
REST
데이터 세트를 익명화합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- SOURCE_DATASET_ID: 익명화할 데이터가 포함된 데이터 세트의 ID
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
JSON 요청 본문:
{ "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "options": { "cleanImage": { "textRedactionMode": "REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS" } } } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "options": { "cleanImage": { "textRedactionMode": "REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS" } } } } } 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.@' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "options": { "cleanImage": { "textRedactionMode": "REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS" } } } } } '@ | 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand ContentOPERATION_ID
의 값을 확인합니다. 다음 단계에서 이 값이 필요합니다.projects.locations.datasets.operations.get
메서드를 사용하여 장기 실행 작업의 상태를 가져옵니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- SOURCE_DATASET_ID: 익명화할 데이터가 포함된 데이터 세트의 ID
- OPERATION_ID: 장기 실행 작업에서 반환된 ID
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"done": true
가 포함되었으면 장기 실행 작업이 완료된 것입니다.익명화가 성공하면 익명화된 인스턴스의 메타데이터를 검색하여 어떻게 변경되었는지 확인할 수 있습니다. 익명화된 인스턴스에는 새로운 연구 UID, 시리즈 UID, 인스턴스 UID가 있으므로 먼저 새 데이터 세트에서 익명화된 인스턴스를 검색해야 합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- DESTINATION_DICOM_STORE_ID: 대상 데이터 세트의 DICOM 저장소 ID. 이는 소스 데이터 세트의 DICOM 저장소 ID와 동일합니다.
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content다음과 비슷한 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
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- DESTINATION_DICOM_STORE_ID: 대상 데이터 세트의 DICOM 저장소 ID. 이는 소스 데이터 세트의 DICOM 저장소 ID와 동일합니다.
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_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 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS
를 사용하여 이미지를 익명화하면 이미지는 다음과 비슷합니다. 이미지 하단의 번인 텍스트가 일부만 수정된 것을 볼 수 있습니다. PatientSex (0010,0040)
이 기본 DICOM infoType 중 하나가 아니므로 Female
텍스트가 계속 표시됩니다.
DICOM 태그 익명화
DICOM 메타데이터의 태그 키워드를 기준으로 DICOM 인스턴스를 익명화할 수 있습니다.
DicomTagConfig
Action
객체에서는 다음과 같은 태그 필터링 메서드를 사용할 수 있습니다.
각 Action
옵션을 DICOM 태그 ID, 이름 또는 값 표현(VR) 목록으로 지정한 다음 이 옵션을 통해 목록의 태그에서 작업을 수행합니다. 태그 목록에서 Action
옵션을 두 개 이상 지정할 수 없습니다.
각 Action
객체는 태그 목록을 지정할 수 있는 queries[]
목록을 제공합니다. 다음과 같은 태그 형식이 지원됩니다.
- 태그 ID(예:
"00100010"
) - 태그 이름(예:
"PatientName"
) - 값 표현(VR)(예:
"PN"
)
queries[]
목록에 제공할 수 있는 태그 수에는 제한이 없습니다.
하지만 각 태그에는 하나의 Action
옵션만 실행할 수 있습니다.
서로 다른 Action
옵션이 실행되는 여러 태그를 지정하려면 여러 Action
객체를 지정해야 합니다.
태그 유지
DicomTagConfig
객체의 KeepTag
객체에 태그를 지정하여 태그 값이 수정되지 않도록 할 수 있습니다.
KeepTag
객체를 사용하는 동안 유효한 DICOM 객체를 생성하려면 MINIMAL_KEEP_LIST_PROFILE
또는 DEIDENTIFY_TAG_CONTENTS
값을 ProfileType
객체에 지정합니다.
이러한 프로필 중 하나를 지정하면 다음 태그가 자동으로 유지되어 익명화된 DICOM 인스턴스가 유효한 DICOM이 되도록 합니다.
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
일부 태그의 값이 다시 생성되므로 확정적 변환을 통해 다른 값으로 바뀝니다. 자세한 내용은 DICOM 표준의 UID 옵션 유지를 참고하세요.
StudyInstanceUID
, SeriesInstanceUID
, SOPInstanceUID
, MediaStorageSOPInstanceUID
값을 '기본 ID'라고 합니다. 기본 ID가 변환되는 방식을 결정하려면 PrimaryIdsOption
에 값을 지정합니다.
다음 샘플은 KeepTag
객체를 사용하여 익명화 중 특정 태그 값이 변경되지 않도록 유지하는 방법을 보여줍니다.
PatientName
태그가 queries[]
목록에 추가되므로 익명화 중에 PatientName
값이 수정되지 않습니다.
샘플에 PrimaryIdsOption
이 지정되지 않았으므로 primaryIds
필드의 기본값은 PRIMARY_IDS_OPTION_UNSPECIFIED
이고 ProfileType
의 값이 기본값입니다. 또한 ProfileType
이 지정되지 않았으므로 profileType
필드의 기본값은 PROFILE_TYPE_UNSPECIFIED
이고 이는 속성 비밀유지 기본 프로필(DICOM 표준 버전 2018e)을 기반으로 태그를 삭제합니다.
REST
데이터 세트를 익명화합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- SOURCE_DATASET_ID: 익명화할 데이터가 포함된 데이터 세트의 ID
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
JSON 요청 본문:
{ "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "keepTag": {} } ] } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "keepTag": {} } ] } } } 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.@' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "keepTag": {} } ] } } } '@ | 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand ContentOPERATION_ID
의 값을 확인합니다. 다음 단계에서 이 값이 필요합니다.projects.locations.datasets.operations.get
메서드를 사용하여 장기 실행 작업의 상태를 가져옵니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- SOURCE_DATASET_ID: 익명화할 데이터가 포함된 데이터 세트의 ID
- OPERATION_ID: 장기 실행 작업에서 반환된 ID
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"done": true
가 포함되었으면 장기 실행 작업이 완료된 것입니다.익명화가 성공하면 익명화된 인스턴스의 메타데이터를 검색하여 어떻게 변경되었는지 확인할 수 있습니다. 익명화된 인스턴스에는 새로운 연구 UID, 시리즈 UID, 인스턴스 UID가 있으므로 먼저 새 데이터 세트에서 익명화된 인스턴스를 검색해야 합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- DESTINATION_DICOM_STORE_ID: 대상 데이터 세트의 DICOM 저장소 ID. 이는 소스 데이터 세트의 DICOM 저장소 ID와 동일합니다.
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content다음과 비슷한 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
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- DESTINATION_DICOM_STORE_ID: 대상 데이터 세트의 DICOM 저장소 ID. 이는 소스 데이터 세트의 DICOM 저장소 ID와 동일합니다.
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_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 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
태그 삭제
다음 샘플은 RemoveTag
객체를 사용하여 익명화 중 특정 태그 값을 삭제하는 방법을 보여줍니다. 삭제된 태그는 빈 값으로 대체됩니다.
다음 샘플에서는 PatientName
태그가 queries[]
목록에 추가되고 값이 익명화 중에 빈 값으로 바뀝니다.
REST
데이터 세트를 익명화합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- SOURCE_DATASET_ID: 익명화할 데이터가 포함된 데이터 세트의 ID
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
JSON 요청 본문:
{ "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "removeTag": {} } ] } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "removeTag": {} } ] } } } 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.@' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "removeTag": {} } ] } } } '@ | 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand ContentOPERATION_ID
의 값을 확인합니다. 다음 단계에서 이 값이 필요합니다.projects.locations.datasets.operations.get
메서드를 사용하여 장기 실행 작업의 상태를 가져옵니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- SOURCE_DATASET_ID: 익명화할 데이터가 포함된 데이터 세트의 ID
- OPERATION_ID: 장기 실행 작업에서 반환된 ID
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"done": true
가 포함되었으면 장기 실행 작업이 완료된 것입니다.익명화가 성공하면 익명화된 인스턴스의 메타데이터를 검색하여 어떻게 변경되었는지 확인할 수 있습니다. 익명화된 인스턴스에는 새로운 연구 UID, 시리즈 UID, 인스턴스 UID가 있으므로 먼저 새 데이터 세트에서 익명화된 인스턴스를 검색해야 합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- DESTINATION_DICOM_STORE_ID: 대상 데이터 세트의 DICOM 저장소 ID. 이는 소스 데이터 세트의 DICOM 저장소 ID와 동일합니다.
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content다음과 비슷한 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
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- DESTINATION_DICOM_STORE_ID: 대상 데이터 세트의 DICOM 저장소 ID. 이는 소스 데이터 세트의 DICOM 저장소 ID와 동일합니다.
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_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 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
태그 삭제
다음 샘플은 DeleteTag
객체를 사용하여 익명화 중에 특정 태그를 삭제하는 방법을 보여줍니다.
REST
데이터 세트를 익명화합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- SOURCE_DATASET_ID: 익명화할 데이터가 포함된 데이터 세트의 ID
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
JSON 요청 본문:
{ "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "deleteTag": {} } ] } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "deleteTag": {} } ] } } } 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.@' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "deleteTag": {} } ] } } } '@ | 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand ContentOPERATION_ID
의 값을 확인합니다. 다음 단계에서 이 값이 필요합니다.projects.locations.datasets.operations.get
메서드를 사용하여 장기 실행 작업의 상태를 가져옵니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- SOURCE_DATASET_ID: 익명화할 데이터가 포함된 데이터 세트의 ID
- OPERATION_ID: 장기 실행 작업에서 반환된 ID
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"done": true
가 포함되었으면 장기 실행 작업이 완료된 것입니다.익명화가 성공하면 익명화된 인스턴스의 메타데이터를 검색하여 어떻게 변경되었는지 확인할 수 있습니다. 익명화된 인스턴스에는 새로운 연구 UID, 시리즈 UID, 인스턴스 UID가 있으므로 먼저 새 데이터 세트에서 익명화된 인스턴스를 검색해야 합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- DESTINATION_DICOM_STORE_ID: 대상 데이터 세트의 DICOM 저장소 ID. 이는 소스 데이터 세트의 DICOM 저장소 ID와 동일합니다.
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content다음과 비슷한 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
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- DESTINATION_DICOM_STORE_ID: 대상 데이터 세트의 DICOM 저장소 ID. 이는 소스 데이터 세트의 DICOM 저장소 ID와 동일합니다.
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_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 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
태그를 자리표시자 값으로 재설정
다음 샘플은 ResetTag
객체를 사용하여 익명화 중에 태그 값을 PLACEHOLDER
문자열로 설정하는 방법을 보여줍니다.
REST
데이터 세트를 익명화합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- SOURCE_DATASET_ID: 익명화할 데이터가 포함된 데이터 세트의 ID
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
JSON 요청 본문:
{ "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "resetTag": {} } ] } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "resetTag": {} } ] } } } 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.@' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "resetTag": {} } ] } } } '@ | 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand ContentOPERATION_ID
의 값을 확인합니다. 다음 단계에서 이 값이 필요합니다.projects.locations.datasets.operations.get
메서드를 사용하여 장기 실행 작업의 상태를 가져옵니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- SOURCE_DATASET_ID: 익명화할 데이터가 포함된 데이터 세트의 ID
- OPERATION_ID: 장기 실행 작업에서 반환된 ID
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"done": true
가 포함되었으면 장기 실행 작업이 완료된 것입니다.익명화가 성공하면 익명화된 인스턴스의 메타데이터를 검색하여 어떻게 변경되었는지 확인할 수 있습니다. 익명화된 인스턴스에는 새로운 연구 UID, 시리즈 UID, 인스턴스 UID가 있으므로 먼저 새 데이터 세트에서 익명화된 인스턴스를 검색해야 합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- DESTINATION_DICOM_STORE_ID: 대상 데이터 세트의 DICOM 저장소 ID. 이는 소스 데이터 세트의 DICOM 저장소 ID와 동일합니다.
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content다음과 비슷한 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
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- DESTINATION_DICOM_STORE_ID: 대상 데이터 세트의 DICOM 저장소 ID. 이는 소스 데이터 세트의 DICOM 저장소 ID와 동일합니다.
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_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 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
특히
PatientName
태그 값이PLACEHOLDER
으로 설정되어 있다는 점에 유의하세요.Original metadata
ResetTag
실행 후 메타데이터"00100010": { "vr": "PN", "Value": [ { "Alphabetic": "Ann Johnson" } ] }
"00100010": { "vr": "PN", "Value": [ { "Alphabetic": "PLACEHOLDER" } ] }
태그에서 민감한 텍스트 검사 및 변환
다음 샘플은 CleanTextTag
객체를 사용하여 태그를 검사하고 TextConfig
객체의 구성에 따라 태그 값을 변환하는 방법을 보여줍니다.
이 샘플에서는 다음 옵션이 Actions
객체에 설정됩니다.
CleanTextTag
객체PatientName
DICOM 태그가 포함된queries[]
목록
다음 옵션이 TextConfig
객체에 설정됩니다.
- 특정 infoType과 일치하는 텍스트를 변환하는
InfoTypeTransformation
객체입니다. - 일치하는 텍스트를 infoType의 이름으로 바꾸는
ReplaceWithInfoTypeConfig
객체입니다. PERSON_NAME
infoType이 포함된infoTypes[]
목록입니다.
이러한 익명화 구성이 설정된 상태에서 익명화 작업이 PatientName
태그를 검사하고, 태그를 PERSON_NAME
infoType과 일치시키고, 태그 값을 PERSON_NAME
infoType으로 바꿉니다.
PatientName
태그에는 CleanTextTag
객체에서 지원되는 VR 중 하나인 PN
의 값 표현(VR)이 있습니다.
REST
데이터 세트를 익명화합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- SOURCE_DATASET_ID: 익명화할 데이터가 포함된 데이터 세트의 ID
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
JSON 요청 본문:
{ "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "cleanTextTag": {} } ] }, "text": { "additionalTransformations": [ { "infoTypes": [ "PERSON_NAME" ], "replaceWithInfoTypeConfig": {} } ] } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "cleanTextTag": {} } ] }, "text": { "additionalTransformations": [ { "infoTypes": [ "PERSON_NAME" ], "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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.@' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "cleanTextTag": {} } ] }, "text": { "additionalTransformations": [ { "infoTypes": [ "PERSON_NAME" ], "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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand ContentOPERATION_ID
의 값을 확인합니다. 다음 단계에서 이 값이 필요합니다.projects.locations.datasets.operations.get
메서드를 사용하여 장기 실행 작업의 상태를 가져옵니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- SOURCE_DATASET_ID: 익명화할 데이터가 포함된 데이터 세트의 ID
- OPERATION_ID: 장기 실행 작업에서 반환된 ID
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"done": true
가 포함되었으면 장기 실행 작업이 완료된 것입니다.익명화가 성공하면 익명화된 인스턴스의 메타데이터를 검색하여 어떻게 변경되었는지 확인할 수 있습니다. 익명화된 인스턴스에는 새로운 연구 UID, 시리즈 UID, 인스턴스 UID가 있으므로 먼저 새 데이터 세트에서 익명화된 인스턴스를 검색해야 합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- DESTINATION_DICOM_STORE_ID: 대상 데이터 세트의 DICOM 저장소 ID. 이는 소스 데이터 세트의 DICOM 저장소 ID와 동일합니다.
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content다음과 비슷한 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
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- DESTINATION_DICOM_STORE_ID: 대상 데이터 세트의 DICOM 저장소 ID. 이는 소스 데이터 세트의 DICOM 저장소 ID와 동일합니다.
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_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 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
특히
PatientName
태그 값이[PERSON_NAME]
으로 설정되어 있다는 점에 유의하세요.Original metadata
CleanTextTag
실행 후 메타데이터"00100010": { "vr": "PN", "Value": [ { "Alphabetic": "Ann Johnson" } ] }
"00100010": { "vr": "PN", "Value": [ { "Alphabetic": "[PERSON_NAME]" } ] }
UID를 생성된 UID로 바꾸기
다음 샘플은 RegenUidTag
객체를 사용하여 UID를 새로 생성된 UID로 바꾸는 방법을 보여줍니다. RegenUidTag
객체에서 지원하는 유일한 VR은 UI
입니다.
기본적으로 샘플 메타데이터에서 VR이 UI
인 모든 태그에는 익명화 중에 UID가 생성됩니다. 특정 태그에 UID를 생성하는 방법을 보여주기 위해 샘플에 다음 옵션이 설정됩니다.
ProfileType
를KEEP_ALL
enum으로 설정하여 DICOM 메타데이터가 익명화되는 것을 방지합니다.PrimaryIdsOption
가KEEP
enum으로 설정되어 기본 ID(StudyInstanceUID
,SeriesInstanceUID
,SOPInstanceUID
,MediaStorageSOPInstanceUID
)가 변경되지 않습니다.
이 옵션을 설정하면 샘플 데이터의 기본 ID UID가 새로 생성된 값으로 대체되지 않습니다. 하지만 Action.queries[]
배열에 SOPInstanceUID
를 추가하면 SOPInstanceUID
태그용으로 새 UID를 생성할 수 있습니다.
REST
데이터 세트를 익명화합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- SOURCE_DATASET_ID: 익명화할 데이터가 포함된 데이터 세트의 ID
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
JSON 요청 본문:
{ "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "options": { "primaryIds": "KEEP" }, "actions": [ { "queries": [ "00080018" ], "regenUidTag": {} } ], "profileType": "KEEP_ALL_PROFILE" } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "options": { "primaryIds": "KEEP" }, "actions": [ { "queries": [ "00080018" ], "regenUidTag": {} } ], "profileType": "KEEP_ALL_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.@' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "options": { "primaryIds": "KEEP" }, "actions": [ { "queries": [ "00080018" ], "regenUidTag": {} } ], "profileType": "KEEP_ALL_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand ContentOPERATION_ID
의 값을 확인합니다. 다음 단계에서 이 값이 필요합니다.projects.locations.datasets.operations.get
메서드를 사용하여 장기 실행 작업의 상태를 가져옵니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- SOURCE_DATASET_ID: 익명화할 데이터가 포함된 데이터 세트의 ID
- OPERATION_ID: 장기 실행 작업에서 반환된 ID
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"done": true
가 포함되었으면 장기 실행 작업이 완료된 것입니다.익명화가 성공하면 익명화된 인스턴스의 메타데이터를 검색하여 어떻게 변경되었는지 확인할 수 있습니다.
Action.queries[]
배열에 지정된SOPInstanceUID
태그로 인해 익명화된 인스턴스에 새 인스턴스 UID가 있으므로 먼저 익명화된 인스턴스의 새 데이터 세트를 검색해야 합니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- DESTINATION_DICOM_STORE_ID: 대상 데이터 세트의 DICOM 저장소 ID. 이는 소스 데이터 세트의 DICOM 저장소 ID와 동일합니다.
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content다음과 비슷한 JSON 응답이 표시됩니다.
다음 표는 인스턴스 UID가 어떻게 변경되었는지 보여줍니다.
원본 인스턴스 메타데이터 익명화된 인스턴스 메타데이터 인스턴스 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
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- DESTINATION_DICOM_STORE_ID: 대상 데이터 세트의 DICOM 저장소 ID. 이는 소스 데이터 세트의 DICOM 저장소 ID와 동일합니다.
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/2.25.70541616638819138568043293671559322355/series/1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694/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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/2.25.70541616638819138568043293671559322355/series/1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
기본 ID 중
SOPInstanceUID
에만 새로 생성된 UID가 있습니다.
중첩된 Sequence
의 태그를 재귀적으로 익명화
다음 샘플은 RecurseTag
객체를 사용하여 Sequence
에서 중첩된 DICOM 태그를 재귀적으로 익명화하는 방법을 보여줍니다.
RecurseTag
객체는 Sequence
의 VR인 SQ
VR만 지원합니다.
SQ
VR에 관한 자세한 내용은 7.5 데이터 세트 중첩을 참고하세요.
이 페이지에 제공된 DICOM 샘플 인스턴스에는 SQ
VR이 있는 DICOM 태그가 없습니다.
JSON 메타데이터 및 JPEG 파일에서 DICOM 인스턴스 만들기에 기반한 다음 단계를 완료하면 SQ
VR이 포함된 허위 데이터로 DICOM 인스턴스를 만들고 저장할 수 있습니다.
다음 단계에서 만드는 DICOM 인스턴스는 가짜 데이터를 사용하며 RecurseTag
의 동작을 보여주기 위한 용도로만 사용됩니다.
다음 DICOM 메타데이터를
instance.json
이름의 JSON 파일에 저장합니다. 메타데이터에는PhysiciansReadingStudyIdentificationSequence
(00081062
) 태그가 포함됩니다. 태그는SQ
VR이 있으며 두 개의 중첩된PersonIdentificationCodeSequence
(00401101
) 태그를 포함합니다. 중첩된 태그에도SQ
VR이 있으며 각각 다음과 같은 중첩된 태그가 포함됩니다.CodeValue
(00080100
)CodingSchemeDesignator
(00080102
)
[{ "00020010": { "vr": "UI", "Value": [ "1.2.840.10008.1.2.4.50" ] }, "00080005": { "vr": "CS", "Value": [ "ISO_IR 192" ] }, "00080016": { "vr": "UI", "Value": [ "1111111" ] }, "00080018": { "vr": "UI", "Value": [ "2222222" ] }, "0020000D": { "vr": "UI", "Value": [ "3333333" ] }, "0020000E": { "vr": "UI", "Value": [ "4444444" ] }, "00280002": { "vr": "US", "Value": [ 3 ] }, "00280004": { "vr": "CS", "Value": [ "YBR_FULL_422" ] }, "00280006": { "vr": "US", "Value": [ 0 ] }, "00280008": { "vr": "IS", "Value": [ 1 ] }, "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 ] }, "7FE00010": { "vr": "OB", "BulkDataURI": "jpeg-image" }, "00081062": { "vr": "SQ", "Value": [ { "00401101": { "vr": "SQ", "Value": [ { "00080100": { "vr": "SH", "Value": [ "CodeValue1" ] }, "00080102": { "vr": "SH", "Value": [ "CodingSchemeDesignator1" ] } } ] } }, { "00401101": { "vr": "SQ", "Value": [ { "00080100": { "vr": "SH", "Value": [ "CodeValue2" ] }, "00080102": { "vr": "SH", "Value": [ "CodingSchemeDesignator2" ] } } ] } } ] } }]
google.jpg
파일을 로컬 머신에 다운로드합니다. Cloud Healthcare API DICOMweb API는 메타데이터가 유효한 경우 JSON 메타데이터와 쌍을 이루는 모든 JPEG 이미지를 허용합니다.다음 명령어를 실행하여 시작(JSON 메타데이터), 중간(JPEG) 이미지, 종료 경계를 만듭니다.
echo -ne "--DICOMwebBoundary\r\nContent-Type: application/dicom+json\r\n\r\n" > opening.file echo -ne "\r\n--DICOMwebBoundary\r\nContent-Location: jpeg-image\r\nContent-Type: image/jpeg; transfer-syntax=1.2.840.10008.1.2.4.50\r\n\r\n" > middle.file echo -ne "\r\n--DICOMwebBoundary--" > closing.file
중간 및 종료 경계 내에서
google.jpg
이미지를 래핑합니다. Cloud Healthcare API로 전송하는 출력 파일은multipart-request.file
이라고 부릅니다.cat opening.file instance.json middle.file google.jpg closing.file > multipart-request.file
multipart-request.file
파일을 저장합니다.REST
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- SOURCE_DATASET_ID: 익명화할 데이터가 포함된 데이터 세트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- SOURCE_DICOM_STORE_ID: 소스 데이터 세트 내의 DICOM 스토어의 ID
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: multipart/related; type=\"application/dicom+json\"; boundary=DICOMwebBoundary" \
--data-binary @multipart-request.file \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID/dicomWeb/studies"PowerShell
다음 명령어를 실행합니다.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-InFile multipart-request.file `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID/dicomWeb/studies" | Select-Object -Expand Content다음과 비슷한 JSON 응답이 표시됩니다.
저장된 DICOM 인스턴스를 익명화하려면 다음 단계를 완료하세요.
REST
데이터 세트를 익명화합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- SOURCE_DATASET_ID: 익명화할 데이터가 포함된 데이터 세트의 ID
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
JSON 요청 본문:
{ "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PhysiciansReadingStudyIdentificationSequence" ], "recurseTag": {} } ] } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PhysiciansReadingStudyIdentificationSequence" ], "recurseTag": {} } ] } } } 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"PowerShell
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.@' { "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PhysiciansReadingStudyIdentificationSequence" ], "recurseTag": {} } ] } } } '@ | 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand ContentOPERATION_ID
의 값을 확인합니다. 다음 단계에서 이 값이 필요합니다.projects.locations.datasets.operations.get
메서드를 사용하여 장기 실행 작업의 상태를 가져옵니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- SOURCE_DATASET_ID: 익명화할 데이터가 포함된 데이터 세트의 ID
- OPERATION_ID: 장기 실행 작업에서 반환된 ID
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"done": true
가 포함되었으면 장기 실행 작업이 완료된 것입니다.익명화가 성공하면 익명화된 인스턴스의 메타데이터를 검색하여 어떻게 변경되었는지 확인할 수 있습니다. 익명화된 인스턴스에는 새로운 연구 UID, 시리즈 UID, 인스턴스 UID가 있으므로 먼저 새 데이터 세트에서 익명화된 인스턴스를 검색해야 합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- DESTINATION_DICOM_STORE_ID: 대상 데이터 세트의 DICOM 저장소 ID. 이는 소스 데이터 세트의 DICOM 저장소 ID와 동일합니다.
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content다음과 비슷한 JSON 응답이 표시됩니다.
다음 표는 연구 UID, 시리즈 UID, 인스턴스 UID가 어떻게 변경되었는지 보여줍니다.
원본 인스턴스 메타데이터 익명화된 인스턴스 메타데이터 연구 UID( 0020000D
)3333333
1.3.6.1.4.1.11129.5.1.222168347996079463826250565085126257314
시리즈 UID( 0020000E
)4444444
1.3.6.1.4.1.11129.5.1.25205702030237830896398173746777399347
인스턴스 UID( 00080018
)2222222
1.3.6.1.4.1.11129.5.1.286710307126045768765142714621897494633
새 값을 사용하여 인스턴스의 메타데이터를 검색합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- DESTINATION_DICOM_STORE_ID: 대상 데이터 세트의 DICOM 저장소 ID. 이는 소스 데이터 세트의 DICOM 저장소 ID와 동일합니다.
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.222168347996079463826250565085126257314/series/1.3.6.1.4.1.11129.5.1.25205702030237830896398173746777399347/instances/1.3.6.1.4.1.11129.5.1.286710307126045768765142714621897494633/metadata"PowerShell
다음 명령어를 실행합니다.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.222168347996079463826250565085126257314/series/1.3.6.1.4.1.11129.5.1.25205702030237830896398173746777399347/instances/1.3.6.1.4.1.11129.5.1.286710307126045768765142714621897494633/metadata" | Select-Object -Expand ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
특히 중첩된
CodeValue
및CodingSchemaDesignator
태그의 값이PLACEHOLDER
로 설정되어 있다는 점에 유의하세요.Original metadata
RecurseTag
실행 후 메타데이터{ "00081062": { "vr": "SQ", "Value": [ { "00401101": { "vr": "SQ", "Value": [ { "00080100": { "vr": "SH", "Value": [ "CodeValue1" ] }, "00080102": { "vr": "SH", "Value": [ "CodingSchemeDesignator1" ] } } ] } }, { "00401101": { "vr": "SQ", "Value": [ { "00080100": { "vr": "SH", "Value": [
"CodeValue2"
] }, "00080102": { "vr": "SH", "Value": ["CodingSchemeDesignator2"
] } } ] } } ] } }{ "00081062": { "vr": "SQ", "Value": [ { "00401101": { "vr": "SQ", "Value": [ { "00080100": { "vr": "SH", "Value": [ "PLACEHOLDER" ] }, "00080102": { "vr": "SH", "Value": [ "PLACEHOLDER" ] } } ] } }, { "00401101": { "vr": "SQ", "Value": [ { "00080100": { "vr": "SH", "Value": [ "PLACEHOLDER" ] }, "00080102": { "vr": "SH", "Value": [ "PLACEHOLDER" ] } } ] } } ] } }
DICOM 스토어 수준에서 데이터 익명화
앞의 샘플은 데이터 세트 수준에서 DICOM 데이터를 익명화하는 방법을 보여줍니다. 이 섹션에서는 DICOM 저장소 수준에서 데이터를 익명화하는 방법을 설명합니다.
데이터 세트 익명화 요청을 DICOM 저장소 익명화 요청으로 변경하려면 다음과 같이 변경합니다.
- 요청 본문의
destinationDataset
를destinationStore
로 교체 - 대상을 지정할 때
destinationStore
의 값 끝에dicomStores/DESTINATION_DICOM_STORE_ID
추가 - 소스 데이터의 위치를 지정할 때
dicomStores/SOURCE_DICOM_STORE_ID
추가
다음 예시에서는 데이터 세트 수준 익명화 요청과 DICOM 스토어 수준 익명화 요청을 수정하는 방법을 보여줍니다.
데이터 세트 수준 익명화:
"destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID" ... "https://healthcare.googleapis.com/v1beta1/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/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:deidentify"
다음 샘플은 DICOM 스토어에서 DICOM 인스턴스를 익명화하고 익명화된 데이터를 새 DICOM 스토어에 쓰는 방법을 보여줍니다. 샘플을 실행하기 전에 대상 DICOM 스토어 ID가 이미 있어야 합니다.
REST
데이터 세트를 익명화합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- SOURCE_DATASET_ID: 익명화할 데이터가 포함된 데이터 세트의 ID
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID. 익명화 작업을 실행하기 전에 이미 있어야 합니다.
- DESTINATION_DICOM_STORE_ID: 대상 데이터 세트의 DICOM 스토어. 익명화 작업을 실행하기 전에 이미 있어야 합니다.
JSON 요청 본문:
{ "destinationStore": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "keepTag": {} } ] } } }
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.cat > request.json << 'EOF' { "destinationStore": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "keepTag": {} } ] } } } 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID:deidentify"PowerShell
요청 본문을
request.json
파일에 저장합니다. 터미널에서 다음 명령어를 실행하여 현재 디렉터리에 이 파일을 만들거나 덮어씁니다.@' { "destinationStore": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID", "config": { "dicomTagConfig": { "actions": [ { "queries": [ "PatientName" ], "keepTag": {} } ] } } } '@ | 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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID:deidentify" | Select-Object -Expand ContentOPERATION_ID
의 값을 확인합니다. 다음 단계에서 이 값이 필요합니다.projects.locations.datasets.operations.get
메서드를 사용하여 장기 실행 작업의 상태를 가져옵니다.요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- SOURCE_DATASET_ID: 익명화할 데이터가 포함된 데이터 세트의 ID
- OPERATION_ID: 장기 실행 작업에서 반환된 ID
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"done": true
가 포함되었으면 장기 실행 작업이 완료된 것입니다.익명화가 성공하면 익명화된 인스턴스의 메타데이터를 검색하여 어떻게 변경되었는지 확인할 수 있습니다. 익명화된 인스턴스에는 새로운 연구 UID, 시리즈 UID, 인스턴스 UID가 있으므로 먼저 새 데이터 세트에서 익명화된 인스턴스를 검색해야 합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- DESTINATION_DICOM_STORE_ID: 대상 데이터 세트의 DICOM 저장소 ID. 이는 소스 데이터 세트의 DICOM 저장소 ID와 동일합니다.
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content다음과 비슷한 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
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- DESTINATION_DICOM_STORE_ID: 대상 데이터 세트의 DICOM 저장소 ID. 이는 소스 데이터 세트의 DICOM 저장소 ID와 동일합니다.
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_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 저장소의 데이터 하위 집합을 익명화할 수 있습니다.
필터는 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
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- SOURCE_DATASET_ID: 익명화할 데이터가 포함된 데이터 세트의 ID
- OPERATION_ID: 장기 실행 작업에서 반환된 ID
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPI 탐색기
메서드 참조 페이지를 엽니다. 페이지 오른쪽에 API 탐색기 패널이 열립니다. 이 도구를 사용하여 요청을 보낼 수 있습니다. 모든 필수 필드를 입력하고 실행을 클릭합니다.
"done": true
가 포함되었으면 장기 실행 작업이 완료된 것입니다.익명화가 성공하면 익명화된 인스턴스의 메타데이터를 검색하여 어떻게 변경되었는지 확인할 수 있습니다. 익명화된 인스턴스에는 새로운 연구 UID, 시리즈 UID, 인스턴스 UID가 있으므로 먼저 새 데이터 세트에서 익명화된 인스턴스를 검색해야 합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트의 ID
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- DESTINATION_DICOM_STORE_ID: 대상 데이터 세트의 DICOM 저장소 ID. 이는 소스 데이터 세트의 DICOM 저장소 ID와 동일합니다.
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content다음과 비슷한 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
- DESTINATION_DATASET_ID: 익명화된 데이터가 작성되는 대상 데이터 세트의 ID
- SOURCE_DATASET_LOCATION: 소스 데이터 세트 위치
- DESTINATION_DICOM_STORE_ID: 대상 데이터 세트의 DICOM 저장소 ID. 이는 소스 데이터 세트의 DICOM 저장소 ID와 동일합니다.
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
다음 명령어를 실행합니다.
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_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 익명화 작업 중에 오류가 발생하면 오류가 Cloud Logging에 로깅됩니다. 자세한 내용은 Cloud Logging에서 오류 로그 보기를 참조하세요.
전체 작업이 오류를 반환하는 경우 장기 실행 작업 문제 해결을 참조하세요.