Cloud Healthcare API를 통해 의료 이미지 익명화

소개

이 문서에서는 연구원, 데이터 과학자, IT 팀, 의료 및 생명과학 조직이 Cloud Healthcare API를 사용하여 Digital Imaging and Communications in Medicine(DICOM) 데이터에서 개인 식별 정보(PII) 및 보호 건강 정보(PHI)를 삭제하는 방법을 설명합니다. 익명화라고 하는 이 프로세스는 환자의 개인정보를 보호하고 연구, 데이터 공유, 머신러닝에 사용하기 위한 DICOM 데이터를 준비하는 데 도움이 됩니다.

동반된 가이드인 의료 이미지 익명화를 위한 Cloud Healthcare API 사용에서는 Cloud Healthcare API를 사용하여 의료 이미지 데이터를 익명화하는 두 가지 사용 사례를 안내합니다.

DICOM 데이터 익명화 작동 방식

임상 목적으로 얻은 의료 이미지에는 연구 프로젝트 및 교육 라이브러리에서 보조 자료로 사용하기 위한 중요 정보가 포함될 수 있습니다. 하지만 DICOM 이미지를 분석하거나 승인된 공동작업자와 공유하기 전에 민감한 정보 요소 (PII 또는 PHI)를 삭제하거나 수정해야 할 수도 있습니다.

다음 다이어그램은 Google Cloud로 라우팅되고 Cloud Healthcare API 익명화 작업으로 익명화되는 온프레미스 소스에서 시작되는 의료 이미지의 몇 가지 파이프라인을 보여줍니다.

DICOM 익명화 파이프라인

먼저 DICOM 형식의 의료 이미지를 Cloud Storage에 업로드한 후 Cloud Healthcare API에 업로드합니다. 또는 DICOM 이미지를 Cloud Healthcare API로 직접 업로드할 수 있습니다. 의료 이미지는 Cloud Healthcare API의 DICOM 저장소에 저장된 후 이미지 및 연관된 메타데이터의 익명화를 위해 Cloud Healthcare API 익명화 프로세스를 통해 라우팅됩니다.

예를 들어 의료 연구원은 온프레미스 사진 보관 및 커뮤니케이션 시스템(PACS)에서 환자의 척추골절 X선 이미지를 확인할 수 있습니다. Storage Transfer Service, Transfer Appliance, 하이브리드 연결 제품 중 하나를 사용하여 Cloud Storage로 이미지 픽셀 데이터를 이동할 수 있습니다. 그런 후 Cloud Storage에서 Cloud Healthcare API로 데이터를 복사하거나 이동할 수 있습니다. 데이터가 Cloud Healthcare API에 저장된 다음에는 이를 백업 용도로 사용하거나, 원격으로 확인할 수 있고, 승인된 타사 클라우드 서비스 및 앱에서 액세스하도록 허용할 수 있습니다.

또 다른 시나리오에서는 의료 팀의 척추골절 X선 이미지 판별을 돕기 위해 모델 학습 용도로 익명화된 DICOM 이미지를 AutoML Vision으로 전송할 수 있습니다. 이렇게 하면 사용자 고유 데이터를 사용하여 임상 결정 지원 도구를 빌드할 수 있습니다.

Cloud Healthcare API

Cloud Healthcare API는 Google Cloud에서 의료 데이터를 보관 및 액세스하고, 기존 치료 시스템과 Google Cloud에 호스팅된 애플리케이션 사이의 중요한 연결 다리를 제공하기 위한 관리형 솔루션을 제공합니다.

Google Cloud 프로젝트 내에서 Cloud Healthcare API를 통해 수집된 데이터는 Google Cloud 리전에 따라 지리적 위치에 존재하는 데이터 세트에 저장됩니다. Cloud Healthcare API는 리전에 나열된 리전을 지원합니다. Google Cloud 제품 및 제품이 구현되는 리전 목록은 Cloud 위치를 참조하세요.

DICOM, Fast Healthcare Interoperability Resources(FHIR), HL7v2와 같은 각 의료 데이터 형식은 구조 및 처리 관련 특성이 서로 다르기 때문에, 데이터 세트가 형식별 저장소로 분할됩니다.

다음 다이어그램은 Cloud Healthcare API에서 임상 데이터가 위치, 데이터세트, 저장소별로 분류되는 방식을 보여줍니다.

Cloud Healthcare API의 임상 데이터 구성

각 데이터세트에는 앱의 필요에 따라 동일한 형식 또는 서로 다른 형식을 제공하는 하나 이상의 저장소가 포함됩니다. 앱이 서로 다른 유형의 데이터를 처리할 때는 동일 데이터세트에서 여러 저장소를 사용하는 것이 적합할 수 있습니다. 예를 들어 해당 소스 병원, 의료원 또는 부서에 따라 데이터를 구분해야 할 수 있습니다. 앱은 성능 저하 없이 필요한 만큼 많은 데이터세트 또는 저장소에 액세스할 수 있습니다. 컴퓨팅 리소스 또는 최종 사용자에 대한 근접성, 분할, 액세스 제어와 같은 조직 전반의 목표를 충족하도록 전체 데이터세트 및 저장소 아키텍처를 디자인하는 것이 중요합니다.

다음 다이어그램은 HL7v2, DICOM, FHIR 저장소가 포함된 2개의 데이터세트를 보여줍니다.

HL7v2 및 DICOM 저장소의 데이터 세트 아키텍처

여러 소스로부터 DICOM 이미지를 데이터 세트 내부의 DICOM 저장소에 복사할 수 있습니다. 자세한 내용은 DICOM 저장소 만들기 및 관리를 참조하세요.

DICOM 데이터 익명화

Cloud Healthcare API에는 지정된 구성에 따라 텍스트 및 이미지의 민감한 콘텐츠를 확장 가능한 방식으로 수정 (삭제)하거나 수정할 수 있는 익명화 도구가 포함됩니다.

이러한 도구는 DICOM 및 FHIR과 같은 특정 의료 기록 형식으로 인코딩된 텍스트 및 이미지에서 작동합니다. DICOM 인스턴스로 작업할 때 익명화 API 호출에 대한 구성요소는 다음과 같습니다.

  • 소스: 민감한 정보와 함께 하나 이상의 DICOM 인스턴스를 갖고 있는 데이터 세트 또는 DICOM 저장소입니다. 동반된 가이드에 데이터 세트가 사용되지만, 단일 DICOM 저장소에서 작동하도록 예시를 수정할 수 있습니다.
  • 익명화할 대상: 데이터 세트 처리 방법을 지정하는 구성 매개변수입니다. 태그 키워드를 사용하거나 DICOM 이미지에서 번인 텍스트를 제거하거나 혹은 두 가지 방법 모두를 통해 DICOM 인스턴스 메타데이터를 익명화하도록 DICOM 익명화 작업을 구성할 수 있습니다.
  • 대상: 익명화는 원본 데이터 세트 또는 해당 데이터에 영향을 주지 않습니다. 대신 원본 데이터를 처리한 사본이 대상이라고 부르는 새 데이터세트 또는 DICOM 저장소에 기록됩니다. 동반된 가이드에 데이터세트가 사용되지만, DICOM 저장소에서 작동하도록 예시를 수정할 수 있습니다.

다음 두 이미지는 익명화하기 전과 후의 샘플 X선 이미지를 보여줍니다. 여기서 익명화 목적은 이미지와 연관된 모든 메타데이터 및 번인 텍스트를 삭제하거나 수정하는 것입니다.

첫 번째 이미지는 메타데이터 및 번인 텍스트 모두에 샘플 PII 및 PHI 데이터가 포함된 X선 이미지를 보여줍니다.

익명화 이전의 샘플 X선 이미지(샘플 데이터 포함)

두 번째 이미지는 모든 샘플 PII 및 PHI 메타데이터가 삭제되었거나 가려진 상태의 동일 X선 이미지를 보여줍니다.

익명화 이후의 샘플 X선 이미지(샘플 데이터 포함)

익명화 후에는 모든 이미지 메타데이터가 삭제되고, 이미지에 번인된 모든 텍스트가 불투명 직사각형으로 가려집니다. 이러한 익명화 구성은 추가 분석, 머신러닝(ML) 모델 학습 또는 추론을 위해 이미지 픽셀 데이터만 필요한 경우에 유용합니다.

예를 들어 X선 이미지에서 골절 여부를 판단하기 위해 이미지 분류 모델 학습이 필요할 수 있습니다. 이러한 모델 학습을 위해서는 골절이 포함된 이미지와 그렇지 않은 이미지를 포함해서 많은 수의 이미지 샘플이 필요합니다. 하지만 환자 성별, 나이, 생일 등의 민감한 정보는 이 모델과 관련이 없으므로, 필요하지 않습니다.

또는 환자의 연령대별 환자 모집단에서 특정 질병의 진행 상태를 분석해야 할 수 있습니다. 이 경우에는 환자의 나이와 성별은 물론 각 연구 날짜와 같은 정보가 임상 분석과 관련되기 때문에 이를 알 필요가 있습니다. 이 경우에는 환자 이름 및 의료 기록 번호와 같은 다른 식별 가능한 환자 정보를 수정하면서도 일부 메타데이터를 보존하도록 선택할 수 있습니다.

권장사항은 상대적인 시간대를 유지하면서도 환자별 매칭이 불가능하도록 연구에 포함된 날짜를 변경하는 것입니다. 자세한 내용은 날짜 이동을 참조하세요.

필요한 액세스 권한과 Identity and Access Management 역할

Google Cloud에서 리소스에 대한 액세스는 Identity and Access Management(IAM) 역할을 통해 관리합니다. Cloud Healthcare API에 액세스하려면 사용자가 수행하려는 기능에 적합한 역할이 IAM 계정에 있어야 합니다.

사용자 계정(Google Cloud Console에 액세스하는 데 사용하는 계정) 또는 IAM 서비스 계정을 사용할 수 있습니다. 동반된 튜토리얼에서는 사용자 계정 사용을 위해 필요한 의료 이미지 보기를 제외하고 서비스 계정이 사용됩니다. 여기에 제공된 일반 정보는 모든 계정 유형에 적용됩니다.

대상 데이터 세트를 만들려면 소스 데이터에 대한 healthcare.datasets.deidentify 이상 권한과 Google Cloud 프로젝트에 대한 healthcare.datasets.create 이상 권한이 있어야 합니다. Healthcare 데이터 세트 관리자 IAM 역할에는 이 두 권한이 모두 포함되어 있습니다.

데이터 세트 및 DICOM 저장소의 액세스 제어 방법에 대한 자세한 내용은 Cloud Healthcare API 리소스를 참조하세요. 데이터세트 메서드에 필요한 권한에 대한 자세한 내용은 액세스 제어 또는 Cloud Healthcare API를 참조하세요.

의료 이미지 뷰어

다음 DICOM 뷰어는 Cloud Healthcare API와 통합되었으며 이를 사용하여 익명화 이전과 이후의 이미지를 볼 수 있습니다.

뷰어가 올바르게 작동하기 위해서는 사용자 인증 정보에 healthcare.dicomViewer 역할이 포함되어 있어야 합니다.

API 구조

Google Cloud 프로젝트, 위치, 데이터 세트, 저장소 유형, 저장소 이름별로 각 저장소를 식별하는 REST API를 사용하여 Cloud Healthcare API 데이터 세트 및 저장소의 데이터를 액세스하고 관리할 수 있습니다. Cloud Healthcare API는 각 형식에 대해 산업 표준과 일치하는 형식별 액세스 표준을 구현합니다. 예를 들어 Cloud Healthcare API는 DICOMweb 표준과 일치하는 DICOM 연구 및 시리즈를 읽기 위한 작업을 고유하게 제공합니다.

특성별 저장소에 액세스하는 작업에는 기본 경로 및 특성별 요청 경로로 구성된 요청 경로가 사용됩니다. 일반적으로 위치, 데이터세트, 데이터 저장소에서만 작동하는 관리 작업에는 기본 경로만 사용될 수 있습니다.

Cloud Healthcare API 데이터세트 내의 특정 저장소를 참조하려면 다음과 비슷한 구조의 기본 경로를 사용합니다.

 /projects/project/locations/location/datasets/dataset/store-type/store-name

다음을 바꿉니다.

  • project: Google Cloud 프로젝트
  • location: 리소스가 있는 영역
  • dataset: 데이터세트의 이름
  • store-type: 데이터 저장소의 유형
  • store-name: 데이터 저장소의 이름

다음은 기본 경로 예시입니다.

/projects/MyProj/locations/us-central1/datasets/dataset1/dicomStores/dicomstore1

앞의 경로 예시는 US-central 리전에서 dataset1이라는 데이터세트에 있고 이름이 dicomstore1인 Google Cloud 프로젝트 MyProj에 있는 Cloud Healthcare API DICOM 저장소를 참조합니다.

데이터 조각에 액세스하려면 기본 경로를 적합한 형식 표준에 맞게 형식이 지정된 요청 경로와 조합합니다. 예를 들어 DICOM 저장소에 대한 DICOMweb 요청은 다음과 같을 수 있습니다.

 base-path/dicomWeb/studies/{study_id}/series?PatientName={patient_name}

경로의 base-path 부분은 이 요청에 대한 기본 경로를 나타냅니다. 경로의 {study_id} 부분은 특정 DICOM 연구를 나타내며, 환자 이름은 {patient_name}으로 지정됩니다. 앞의 예시에서 경로 사양은 DICOMweb 표준 경로 구조와 일치합니다.

태그 및 이미지 수정 구성을 사용한 익명화

DICOM 데이터 익명화에는 두 가지 프로세스가 포함됩니다.

  • DICOM 메타데이터 익명화
  • 이미지에서 번인된 텍스트 수정

Cloud Healthcare API에서 메타데이터 익명화는 DICOM 태그를 기준으로 하며, 번인된 텍스트 수정은 TextRedactionMode 옵션을 통해 수행됩니다.

익명화를 위한 태그 및 프로필 사용

DICOM 메타데이터의 태그 키워드를 기준으로 DICOM 인스턴스를 익명화할 수 있습니다. DicomConfig 객체에서는 다음과 같은 태그 필터링 메서드를 사용할 수 있습니다.

  • keepList: 보관할 태그 목록입니다. 다른 모든 태그를 삭제합니다.
  • removeList: 삭제할 태그 목록입니다. 다른 모든 태그는 유지됩니다.
  • TagFilterProfile: 보관하거나 삭제할 태그를 지정하는 태그 필터링 프로필입니다.

DICOM 최소 속성 태그

다음 태그는 Cloud Healthcare API 내의 유효한 DICOM 인스턴스의 최소 속성입니다.

  • StudyInstanceUID
  • SeriesInstanceUID
  • SOPInstanceUID
  • TransferSyntaxUID
  • MediaStorageSOPInstanceUID
  • MediaStorageSOPClassUID
  • PixelData
  • Rows
  • Columns
  • SamplesPerPixel
  • BitsAllocated
  • BitsStored
  • Highbit
  • PhotometricInterpretation
  • PixelRepresentation
  • NumberOfFrames

keepList

keepList 태그 필터링 메서드를 사용하려면 태그 이름 목록을 제공해야 합니다. 이러한 태그는 익명화된 리소스에 보존되는 유일한 항목입니다. DicomConfig 객체에 keeplist 태그를 지정하면 DICOM 최소 속성 태그가 기본적으로 추가됩니다.

keeplist 태그를 제공하지 않으면 데이터세트의 DICOM 태그가 삭제되지 않습니다. 일반적으로 태그가 보존된 경우에는 원본과 비교해서 출력에 변경되지 않은 상태로 표시됩니다. 하지만 StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID, MediaStorageSOPInstanceUID 태그는 출력에서 새로운 고유 값으로 다시 생성됩니다.

removeList

DicomConfig 객체에 removeList 태그를 지정할 수 있습니다. 익명화 작업은 목록에 지정된 태그만 삭제합니다. removeList 태그를 제공하지 않으면 익명화 작업이 일반적으로 수행되지만, 대상 데이터세트의 DICOM 태그가 수정되지 않습니다.

DICOM 최소 속성 태그는 removeList에 추가될 수 없습니다.

TagFilterProfile

보존하거나 삭제할 태그를 지정하는 대신 TagFilterProfile 프로필을 사용할 수 있습니다. 이 사전 정의된 프로필은 태그의 처리 및 수정 방법을 결정합니다. 예를 들어 MINIMAL_KEEP_LIST_PROFILE 프로필은 유효한 DICOM 리소스를 생성하는 데 필요한 태그만 보존하고 다른 모든 태그는 삭제합니다. 자세한 내용은 TagFilterProfile 문서를 참조하세요.

사전 선택된 프로필을 사용하면 모든 DICOM 태그와 해당 콘텐츠를 검토하고 이해할 필요가 없기 때문에 전문 기술자가 아닌 사용자의 경우 특히 TagFilterProfile 프로필을 태그 필터링 메서드로 사용하는 것이 좋습니다.

자주 사용되는 프로필

ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE 프로필을 사용하여 DICOM 표준의 속성 기밀성 프로필을 기준으로 태그를 삭제하는 업계 일반 익명화 사용 사례 중 하나를 수행할 수 있습니다.

자주 사용되는 또 다른 프로필은 태그 콘텐츠 내에서 메타데이터를 조사하고 민감한 텍스트를 바꿔주는 DEIDENTIFY_TAG_CONTENTS입니다. DEIDENTIFY_TAG_CONTENTS 프로필을 사용할 때는 정보 유형기본 변환과 같은 구성을 적용할 수도 있습니다. 정보 유형 및 기본 변환은 다른 프로필에 적용될 수 없습니다.

정보 유형을 사용하면 태그를 사용해서 익명화를 수행할 때 스캔되는 데이터를 정의할 수 있습니다. 정보 유형은 환자 이름, 이메일 주소, 전화 번호, 식별 번호, 신용 카드 번호와 같은 민감한 데이터 유형입니다. 자세한 내용은 InfoTypesinfoType 감지기를 참조하세요.

기본 변환은 입력 값 변환을 위해 사용되는 규칙입니다. 각 태그의 정보 유형에 기본 변환을 적용하여 DICOM 태그의 익명화 방법을 맞춤설정할 수 있습니다. 예를 들어 환자의 성을 익명화하고 이를 일련의 별표로 바꿀 수 있습니다. 기본 변환에 대한 자세한 내용은 기본 변환 옵션을 참조하세요.

동반된 가이드에서는 MINIMAL_KEEP_LIST_PROFILE 프로필의 사용 사례를 제공합니다.

기본 정보 유형

기본적으로 DEIDENTIFY_TAG_CONTENTS 프로필은 다음 정보 유형을 처리합니다.

  • AGE
  • CREDIT_CARD_NUMBER
  • DATE
  • EMAIL_ADDRESS
  • IP_ADDRESS
  • LOCATION
  • MAC_ADDRESS
  • PERSON_NAME
  • PHONE_NUMBER
  • SWIFT_CODE
  • US_DRIVERS_LICENSE_NUMBER
  • US_PASSPORT
  • US_SOCIAL_SECURITY_NUMBER
  • US_VEHICLE_IDENTIFICATION_NUMBER
  • US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER

이전 목록에서 정보 유형만 수정하려는 경우에는 추가 매개변수 없이 DEIDENTIFY_TAG_CONTENTS 프로필을 사용할 수 있습니다.

이미지에서 번인된 텍스트 수정

Cloud Healthcare API는 이미지에서 민감한 번인된 텍스트를 수정할 수 있습니다. PII 또는 PHI와 같은 민감한 데이터가 Cloud Healthcare API에서 감지된 후 불투명한 직사각형으로 가려집니다. Cloud Healthcare API가 동일한 DICOM 이미지를 입력으로 반환하지만 사용자 기준에 따라 민감한 정보가 포함된 것으로 식별된 모든 텍스트는 수정됩니다.

ImageConfig 객체 내에 TextRedactionMode 옵션을 지정하여 이미지에서 번인된 텍스트를 수정할 수 있습니다.

  • REDACT_ALL_TEXT: 데이터세트의 DICOM 이미지에서 모든 번인된 텍스트를 수정합니다.
  • REDACT_SENSITIVE_TEXT: 데이터세트의 DICOM 이미지에서 민감한 번인된 텍스트를 수정합니다.

REDACT_SENSITIVE_TEXT를 지정할 때는 default infoTypescustom infoType이 환자 식별자로 수정됩니다. 의료 기록 번호(MRN)와 같은 정보가 이미지에서 수정됩니다.

이미지 수정 구성에 대한 자세한 내용은 이미지에서 번인된 텍스트 수정을 참조하세요.

다음 단계