들어가며: 왜 의료 기록 디지털화가 중요한가
국내 병원 현장에서는 아직도 종이 진료 기록이 광범위하게 사용되고 있습니다. 환자가 다른 병원으로 이동할 때마다 진료 기록을 수동으로 입력하거나, 심지어 종이를 팩스로 보내는 경우도 많습니다. 이는 진료 지연, 중복 검사, 환자 안전 위험을 초래합니다.
핵심 문제:
- 수동 데이터 입력은 비용이 많이 들고 오류가 발생하기 쉬움
- 비정형 문서(PDF, 스캔 이미지)에서 임상 정보를 추출하는 것은 기술적으로 어려움
- 각 병원마다 다른 양식을 처리하려면 별도의 ML 모델이나 템플릿이 필요
이 글에서는 Amazon Bedrock Data Automation (BDA) 과 AWS HealthLake를 사용해 PDF 의료 기록을 FHIR R4 표준 데이터로 자동 변환하는 완전 서버리스 파이프라인을 구축하는 방법을 다룹니다. 별도의 ML 모델 학습 없이 20분 안에 배포할 수 있습니다.
참고: 이 솔루션은 교육 목적으로 합성 데이터(synthetic data)만 사용해야 합니다. 실제 환자 데이터(PHI)를 처리하려면 추가 HIPAA 보안 통제가 필요합니다. 자세한 내용은 원문 블로그를 참고하세요.

아키텍처 개요: 이벤트 기반 서버리스 파이프라인
이 솔루션은 완전히 이벤트 기반으로 동작합니다. 별도의 스케줄러나 오케스트레이터 없이 각 단계가 자동으로 다음 단계를 트리거합니다.
핵심 AWS 서비스
| 서비스 | 역할 |
|---|---|
| Amazon Bedrock Data Automation | PDF에서 50개 이상의 임상 필드(진단명, 약물, 활력징후 등)를 AI로 추출 |
| AWS Lambda | 두 개의 함수로 파이프라인 오케스트레이션 (BDA 트리거 + FHIR 변환) |
| Amazon S3 | 입력/출력 버킷, 이벤트 알림으로 파이프라인 구동 |
| AWS HealthLake | FHIR R4 호환 데이터 저장소, 표준 API로 데이터 제공 |
| AWS CloudFormation | 전체 인프라를 코드로 배포 (약 15-20분 소요) |
동작 흐름
1. PDF 업로드 → S3 입력 버킷
2. S3 이벤트 → BDA Lambda 함수 트리거
3. BDA 처리 → 50+ 임상 필드 추출 (신뢰도 점수 포함)
4. JSON 저장 → S3 출력 버킷
5. S3 이벤트 → FHIR Processor Lambda 트리거
6. FHIR 변환 → FHIR R4 Bundle (JSON + NDJSON) 생성
7. HealthLake Import → NDJSON 수집 및 검증
8. FHIR API 접근 → 표준 엔드포인트로 데이터 조회
핵심 코드: 배포 명령어
의존성 관리 도구인 Poetry와 AWS CLI가 설치되어 있다면 다음 4개 명령어로 전체 파이프라인을 배포할 수 있습니다.
# 1. 저장소 클론
gh repo clone aws-samples/amazon-bedrock-data-automation-healthcare-samples
cd amazon-bedrock-data-automation-healthcare-samples
# 2. Poetry로 의존성 설치
poetry install
# 3. AWS 자격 증명 설정 (이미 설정되어 있으면 생략)
aws configure
# 4. CloudFormation 스택 배포 (us-east-1 또는 us-west-2 리전 필수)
poetry run cdk deploy --region us-east-1
배포가 완료되면 다음 리소스가 자동으로 생성됩니다:
- Amazon Bedrock Data Automation 블루프린트 및 프로젝트 (50개 이상 필드 스키마)
- S3 입력/출력 버킷 (이벤트 알림 포함)
- 두 개의 Lambda 함수 (BDA Trigger, FHIR Processor)
- AWS HealthLake FHIR R4 데이터 스토어
- IAM 역할 및 정책 (최소 권한 원칙)
- CloudWatch 로그 그룹
FHIR 데이터 조회 예제 (Python)
import boto3
import requests
from requests_auth_aws_sigv4 import AWSSigV4
# AWS HealthLake 데이터 스토어 엔드포인트
healthlake_endpoint = "https://your-healthlake-endpoint.east-1.healthlakeaws.com"
datastore_id = "your-datastore-id"
# SigV4 인증
auth = AWSSigV4('healthlake',
region='us-east-1',
credentials=boto3.Session().get_credentials())
# 환자 데이터 조회
response = requests.get(
f"{healthlake_endpoint}/datastore/{datastore_id}/r4/Patient",
auth=auth
)
print(response.json())
# 특정 진단명으로 조건 검색
response = requests.get(
f"{healthlake_endpoint}/datastore/{datastore_id}/r4/Condition?code=ICD-10:I10",
auth=auth
)
print(response.json())

실무 적용 시 주의사항 및 한계
1. 국내 의료 환경에서의 적용 맥락
국내에서는 의료법과 개인정보보호법이 매우 엄격합니다. AWS HealthLake는 HIPAA Eligible Service이지만, 국내 규제(K-ISMS, 의료법 시행규칙)를 충족하려면 추가 검토가 필요합니다.
- K-ISMS 인증: 의료 정보를 클라우드에 저장하려면 한국인터넷진흥원(KISA)의 인증을 받은 서비스를 사용하거나, 자체적으로 정보보호 관리체계를 구축해야 합니다.
- 데이터 주권: 환자 데이터는 국내에 저장되어야 합니다. 현재 Amazon Bedrock Data Automation은
us-east-1과us-west-2에서만 사용 가능하므로, 한국 리전(ap-northeast-2)에서의 직접 사용은 아직 불가능합니다. AWS 한국 리전에 BDA가 출시되면 그때 국내 도입을 본격 검토할 수 있습니다. - 의료법 제21조: 진료 기록은 5년 이상 보관해야 하며, 파기 시에도 기록을 남겨야 합니다. AWS HealthLake의 데이터 생명주기 관리 정책을 이에 맞게 설정해야 합니다.
2. 기술적 한계 및 주의사항
- 신뢰도 점수(Confidence Score) 활용: BDA는 각 필드에 대해 0.0~1.0 사이의 신뢰도 점수를 반환합니다. 신뢰도가 낮은(예: 0.7 미만) 필드는 자동 변환하지 않고 인간 검토(Human-in-the-loop) 로 라우팅하는 것이 안전합니다. 아래와 같은 로직을 FHIR Processor Lambda에 추가하는 것을 권장합니다.
# 신뢰도 기반 필터링 예시
CONFIDENCE_THRESHOLD = 0.7
if field.confidence < CONFIDENCE_THRESHOLD:
# 낮은 신뢰도 필드는 별도 S3 버킷에 저장 후 수동 검토
send_to_review_queue(field)
else:
# FHIR Bundle에 포함
add_to_fhir_bundle(field)
- PDF 품질 의존성: BDA는 스캔된 PDF에서도 잘 동작하지만, 손글씨가 심하게 불분명하거나 문서가 훼손된 경우 추출 정확도가 떨어집니다. 이러한 경우 OCR 전처리(Amazon Textract 등)를 추가하는 것을 고려하세요.
- 비용 관리: 100페이지/월 기준 약 $50-100, 10,000페이지/월 기준 $2,000-3,000 정도의 비용이 예상됩니다. 비용을 절감하려면 테스트 후 CloudFormation 스택을 삭제하고, AWS Budgets 알림을 설정하세요.
3. 다음 단계 학습 방향
이 파이프라인을 확장하려면 다음을 고려해보세요:
- SQS 버퍼 추가: 대량 PDF 업로드 시 BDA 동시성 제한을 관리하기 위해 Amazon SQS를 S3 이벤트와 Lambda 사이에 버퍼로 추가
- Step Functions 오케스트레이션: 오류 처리, 재시도 로직, 저신뢰도 추출에 대한 인간 검토 라우팅을 AWS Step Functions로 구현
- Kinesis 실시간 처리: 여러 소스에서 지속적으로 수집해야 하는 경우 Amazon Kinesis Data Streams 사용
- EHR 연동: FHIR API를 통해 기존 전자의무기록(EMR) 시스템과 통합

결론: 지금 바로 시작할 수 있는 것
이 튜토리얼에서는 Amazon Bedrock Data Automation과 AWS HealthLake를 활용해 PDF 의료 기록을 FHIR R4 표준 데이터로 자동 변환하는 서버리스 파이프라인을 구축하는 방법을 살펴보았습니다.
핵심 요약:
- 템플릿 불필요: BDA가 문서 구조를 자동으로 이해하므로, 각 병원의 다양한 양식을 처리하기 위해 별도 ML 모델이나 템플릿을 만들 필요가 없습니다.
- 완전 서버리스: Lambda + S3 이벤트 기반 아키텍처로 운영 부담이 거의 없으며, 각 단계가 독립적으로 확장됩니다.
- 표준 준수: FHIR R4 표준을 따르므로 기존 EHR 시스템과의 통합이 용이합니다.
- 보안 책임 공유: AWS는 인프라 보안을 담당하고, 고객은 데이터 보안 및 규정 준수를 책임집니다. 실제 환자 데이터를 다루기 전에 반드시 HIPAA 및 국내 규제 요구사항을 검토하세요.
한국 개발자를 위한 조언: 현재 한국 리전에서 BDA를 사용할 수 없지만, 이 아키텍처는 클라우드 중립적으로 설계되어 있습니다. 향후 국내 리전에 BDA가 출시되거나, 유사한 기능을 제공하는 국내 클라우드 서비스가 등장하면 이 구조를 그대로 적용할 수 있습니다. 지금은 합성 데이터로 개념 증명(PoC)을 진행하며 역량을 쌓아두는 것을 추천합니다.