BigQuery로 FHIR (Fast Healthcare Interoperability Resources) 수집

1. 소개

1f4764c4ca4c50d9.png

최종 업데이트: 2020년 5월 16일

이 Codelab에서는 Cloud Healthcare FHIR API를 사용하여 FHIR R4 형식의 의료 데이터 (일반 리소스)를 BigQuery로 수집하는 데이터 수집 패턴을 보여줍니다. 현실적인 의료 테스트 데이터가 생성되어 Google Cloud Storage 버킷 (gs://hcls_testing_data_fhir_10_patients/)에 제공되었습니다.

이 Codelab에서 학습할 내용은 다음과 같습니다.

  • GCS에서 Cloud Healthcare FHIR 저장소로 FHIR R4 리소스를 가져오는 방법
  • FHIR 스토어에서 BigQuery의 데이터 세트로 FHIR 데이터를 내보내는 방법을 알아봅니다.

이 데모를 실행하려면 무엇이 필요한가요?

  • GCP 프로젝트에 액세스해야 합니다.
  • GCP 프로젝트의 소유자 역할을 할당받아야 합니다.
  • NDJSON 형식의 FHIR R4 리소스 (content-structure=RESOURCE)

GCP 프로젝트가 없으면 이 단계에 따라 새 GCP 프로젝트를 만듭니다.

NDJSON 형식의 FHIR R4 리소스는 다음 위치의 GCS 버킷에 미리 로드되었습니다.

  • gs://hcls_testing_data_fhir_10_patients/fhir_r4_ndjson/ - 일반 리소스

위의 모든 리소스는 줄바꿈 구분자 JSON (NDJSON) 파일 형식을 사용하지만 콘텐츠 구조가 다릅니다.

  • ndjson 형식의 일반 리소스 - 파일의 각 줄에 JSON 형식의 핵심 FHIR 리소스 (예: 환자, 관찰 등)가 포함됩니다. 각 ndjson 파일에는 동일한 리소스 유형의 FHIR 리소스가 포함되어 있습니다. 예를 들어 Patient.ndjson에는 resourceType = ‘ Patient’의 FHIR 리소스가 하나 이상 포함됩니다. Observation.ndjson에는 resourceType = ‘ Observation'의 FHIR 리소스가 하나 이상 포함됩니다.

새 데이터 세트가 필요한 경우 언제든지 SyntheaTM를 사용하여 데이터 세트를 생성할 수 있습니다. 그런 다음 Codelab에서 제공한 버킷을 사용하는 대신 GCS에 업로드합니다.

2. 프로젝트 설정

Healthcare API를 사용 설정하고 필요한 권한을 부여하려면 다음 단계를 따르세요.

환경의 셸 변수 초기화

PROJECT_NUMBERPROJECT_ID를 찾으려면 프로젝트 식별을 참고하세요.

<!-- CODELAB: Initialize shell variables -->
export PROJECT_ID=<PROJECT_ID>
export PROJECT_NUMBER=<PROJECT_NUMBER>
export SRC_BUCKET_NAME=hcls_testing_data_fhir_10_patients
export BUCKET_NAME=<BUCKET_NAME>
export DATASET_ID=<DATASET_ID>
export FHIR_STORE=<FHIR_STORE>
export BQ_DATASET=<BQ_DATASET>

Healthcare API 사용 설정

다음 단계를 수행하면 GCP 프로젝트에서 Healthcare API가 사용 설정됩니다. Healthcare API 서비스 계정이 프로젝트에 추가됩니다.

  1. GCP Console API 라이브러리로 이동합니다.
  2. 프로젝트 목록에서 프로젝트를 선택합니다.
  3. API 라이브러리에서 사용 설정할 API를 선택합니다. API를 찾는 데 도움이 필요하면 검색 필드 및 필터를 사용하세요.
  4. API 페이지에서 사용 설정을 클릭합니다.

합성 데이터 세트 액세스 권한 얻기

  1. Cloud 콘솔에 로그인할 때 사용하는 이메일 주소에서 hcls-solutions-external+subscribe@google.com으로 가입을 요청하는 이메일을 전송합니다.
  2. 작업을 확인하는 방법에 대한 지침이 포함된 이메일이 전송됩니다.
  3. 옵션을 사용하여 이메일에 답장하고 그룹에 참여하세요.
  4. 525a0fa752e0acae.png버튼을 클릭하지 마세요. 하지만 소용없어요.
  5. 확인 이메일을 받으면 Codelab의 다음 단계로 진행할 수 있습니다.

GCP 프로젝트에 Google Cloud Storage 버킷 만들기

gsutil mb gs://$BUCKET_NAME

GCP 프로젝트에 합성 데이터 복사

gsutil -m cp gs://$SRC_BUCKET_NAME/fhir_r4_ndjson/**.ndjson \
gs://$BUCKET_NAME/fhir_r4_ndjson/

권한 부여

Cloud Storage에서 FHIR 리소스를 가져와 BigQuery로 내보내기 전에 Cloud Healthcare 서비스 에이전트 서비스 계정에 추가 권한을 부여해야 합니다. 자세한 내용은 FHIR 저장소 Cloud StorageFHIR 저장소 BigQuery 권한을 참조하세요.

스토리지 관리자 권한 부여

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member=serviceAccount:service-$PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com \
  --role=roles/storage.objectViewer

BigQuery 관리자 권한 부여하기

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member=serviceAccount:service-$PROJECT_NUMBER@gcp-sa-healthcare.iam.gserviceaccount.com \
  --role=roles/bigquery.admin

3. 환경 설정

Cloud Healthcare FHIR API를 사용하여 NDJSON 파일의 데이터를 BigQuery의 의료 데이터 세트로 수집하려면 다음 단계를 따르세요.

Healthcare 데이터 세트 및 FHIR 저장소 만들기

Cloud Healthcare API를 사용하여 Healthcare 데이터 세트 만들기

gcloud beta healthcare datasets create $DATASET_ID --location=us-central1

Cloud Healthcare API를 사용하여 데이터 세트에 FHIR 저장소 만들기

gcloud beta healthcare fhir-stores create $FHIR_STORE \
  --dataset=$DATASET_ID --location=us-central1 --version=r4

4. FHIR 저장소로 데이터 가져오기

Google Cloud Storage에서 FHIR 스토어로 테스트 데이터를 가져옵니다.

GCS 버킷에서 미리 로드된 파일을 사용합니다. 이러한 파일에는 NDJSON 형식의 FHIR R4 일반 리소스가 포함되어 있습니다. 응답으로 검증 단계에서 사용할 수 있는 OPERATION_NUMBER를 받게 됩니다.

GCP 프로젝트의 GCS 버킷에서 일반 리소스 가져오기

gcloud beta healthcare fhir-stores import gcs $FHIR_STORE \
  --dataset=$DATASET_ID --async \
  --gcs-uri=gs://$BUCKET_NAME/fhir_r4_ndjson/**.ndjson \
  --location=us-central1 --content-structure=RESOURCE

확인

검증 작업이 완료되었습니다. 완료하는 데 몇 분 정도 걸릴 수 있으므로 약간의 지연으로 이 명령어를 몇 번 반복해야 할 수 있습니다.

gcloud beta healthcare operations describe OPERATION_NUMBER \
  --dataset=$DATASET_ID --location=us-central1

5. FHIR 스토어에서 BigQuery로 데이터 내보내기

BigQuery 데이터 세트 만들기

bq mk --location=us --dataset $PROJECT_ID:$BQ_DATASET

FHIR Store에서 BigQuery 데이터 세트로 의료 데이터 내보내기

gcloud beta healthcare fhir-stores export bq $FHIR_STORE \
  --dataset=$DATASET_ID --location=us-central1 --async \
  --bq-dataset=bq://$PROJECT_ID.$BQ_DATASET \
  --schema-type=analytics

응답으로 검증 단계에서 사용할 수 있는 OPERATION_NUMBER를 받게 됩니다.

확인

작업 완료 검증

gcloud beta healthcare operations describe OPERATION_NUMBER \
  --dataset=$DATASET_ID --location=us-central1

BigQuery 데이터 세트에 16개의 테이블이 모두 있는지 확인

bq ls $PROJECT_ID:$BQ_DATASET

6. 삭제

이 튜토리얼에서 사용한 리소스 비용이 Google Cloud Platform 계정에 청구되지 않도록 하려면 GCP에서 만든 리소스가 할당량을 차지하여 이후에 요금이 청구되지 않도록 할 수 있습니다. 다음 섹션에서는 이러한 리소스를 삭제 또는 해제하는 방법을 설명합니다.

프로젝트 삭제

비용이 청구되지 않도록 하는 가장 쉬운 방법은 튜토리얼에서 만든 프로젝트를 삭제하는 것입니다.

프로젝트를 삭제하는 방법은 다음과 같습니다.

  1. GCP 콘솔에서 프로젝트 페이지로 이동합니다. 프로젝트 페이지로 이동
  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력하고 종료를 클릭하여 프로젝트를 삭제합니다.

프로젝트를 유지해야 하는 경우 다음 안내에 따라 Cloud Healthcare 데이터 세트 및 BigQuery 데이터 세트를 삭제할 수 있습니다.

Cloud Healthcare API 데이터 세트 삭제

GCP 콘솔과 gcloud CLI를 모두 사용하여 Healthcare API 데이터 세트를 삭제하려면 단계를 따르세요.

빠른 CLI 명령어:

gcloud beta healthcare datasets delete $DATASET_ID --location=us-central1

BigQuery 데이터 세트 삭제

단계에 따라 다른 인터페이스를 사용하여 BigQuery 데이터 세트를 삭제합니다.

빠른 CLI 명령어:

bq rm -r -f $PROJECT_ID:$DATASET_ID

7. 축하합니다

축하합니다. Cloud Healthcare API를 사용하여 BigQuery에서 의료 데이터를 수집하는 Codelab을 완료했습니다.

Google Cloud Storage에서 FHIR R4 규정을 준수하는 합성 데이터를 Cloud Healthcare FHIR API로 가져왔습니다.

Cloud Healthcare FHIR API에서 BigQuery로 데이터를 내보냈습니다.

지금까지 Google Cloud Platform에서 BigQuery로 의료 데이터 분석 여정을 시작하는 데 필요한 주요 단계를 알아봤습니다.