HL7 표준 정리: 레거시부터 최신까지
헬스데이터 스타트업이라면 반드시 알아야 할 국제 표준이 있다.
바로 HL7 (Health Level Seven) 이다.
이 글에서는 HL7 중 v2의 특징, 그리고 실제 메시지 구조까지 하나하나 정리해봤다.
1. HL7이란
- 의료기관의 전산 시스템이 서로 정보를 주고받을 수 있게 해주는 국제 표준 언어이다.
- 환자 등록, 검사 결과, 처방, 영상 리포트, 보험 청구 등 모든 데이터 교환에 활용된다.
- 즉, 병원 간 “공통된 언어” 역할을 한다.
2. HL7 v2 (레거시지만 여전히 현역에서 활발히 사용 중)
HL7 v2는 1980년대부터 지금까지 가장 널리 사용되는 의료 데이터 교환 표준이다.
메시지는 여러 줄로 이루어져 있으며, 각 줄은 세그먼트(segment) 라고 부른다.
각 세그먼트는 |
기호로 구분된 필드들로 구성된다.
1) HL7 v2 메시지의 큰 구조
대표적인 검사결과 메시지(ORU^R01)는 다음 순서로 세그먼트들이 온다.
MSH → PID → PV1 → OBR → OBX
- MSH (Message Header) : 메시지 전체의 헤더
- PID (Patient Identification) : 환자 정보
- PV1 (Patient Visit) : 입원/외래 방문 정보
- OBR (Observation Request) : 검사/관찰 요청 정보
- OBX (Observation Result) : 검사/관찰 결과
참고: 상황에 따라 ORC(주문 공통 정보), NTE(메모/주석) 같은 세그먼트가 추가될 수 있다.
2) 주요 세그먼트 역할
세그먼트 | 풀네임 | 역할 |
---|---|---|
MSH | Message Header | 메시지 메타데이터: 보낸/받는 시스템, 메시지 타입, 버전 등 |
PID | Patient Identification | 환자 ID, 이름, 생년월일, 성별, 연락처 |
PV1 | Patient Visit | 입원/외래 방문 정보 (병동, 병실, 주치의, 방문 번호 등) |
ORC | Common Order | 검사/처방 등 주문에 대한 공통 정보 |
OBR | Observation Request | 특정 검사 요청 정보 (검사명, 요청자, 시각 등) |
OBX | Observation Result | 실제 검사/관찰 결과 값 |
NTE | Notes | 주석이나 부가 설명 |
3) 실제 예시: 혈압 검사 결과 메시지
MSH|^~\&|HIS|HOSP_A|LAB|HOSP_B|202508261030||ORU^R01|MSG0001|P|2.9
PID|1||12345^^^HOSP_A||Kim^Minjun||19900101|M|||Seoul^^KR||010-1234-5678
PV1|1|I|WARD^101^1^HOSP_A||||1234^Lee^Doctor
OBR|1|||BP^Blood Pressure^LN|||202508261030
OBX|1|NM|8480-6^Systolic BP^LN||120|mm[Hg]|90-140|N|||F||202508261030
OBX|2|NM|8462-4^Diastolic BP^LN||80|mm[Hg]|60-90|N|||F||202508261030
4) 세그먼트별 해설
1) MSH (Message Header):
MSH|^~\&|HIS|HOSP_A|LAB|HOSP_B|202508261030||ORU^R01|MSG0001|P|2.9
HIS
= 보내는 애플리케이션 (병원 전산 시스템, HIS)^~\&
= 데이터를 어떻게 나눠야 하는지 알려주는 구분자.HOSP_A
= 보내는 기관 (병원 A)LAB
= 받는 애플리케이션 (검사실 시스템)HOSP_B
= 받는 기관 (병원 B)202508261030
= 메시지 생성 시각ORU^R01
= 메시지 타입 (Observation Result, 검사 결과 보고)MSG0001
= 메시지 컨트롤 ID (메시지 고유 식별자)P
= 운영 모드 (Production)2.9
= HL7 버전
PID (Patient Identification, 환자 정보):
PID|1||12345^^^HOSP_A||Kim^Minjun||19900101|M|||Seoul^^KR||010-1234-5678
12345^^^HOSP_A
= 환자 ID(12345), 발급 기관=HOSP_AKim^Minjun
= 환자 이름 (성=Kim, 이름=Minjun)19900101
= 환자 생년월일 (1990년 01월 01일)M
= 성별 (Male, 남자)Seoul^^KR
= 주소 (서울, 대한민국)010-1234-5678
= 환자 연락처
PV1 (Patient Visit, 환자 방문 정보):
PV1|1|I|WARD^101^1^HOSP_A||||1234^Lee^Doctor
I
= 방문 유형 (Inpatient, 입원)WARD^101
= 병동/병실 (101호)Lee^Doctor
= 담당 의사
OBR (Observation Request, 검사 요청):
OBR|1|||BP^Blood Pressure^LN|||202508261030
BP^Blood Pressure^LN
= 검사 항목: 혈압 (코드=BP, 표시명=Blood Pressure, 코드체계=LOINC: LN)202508261030
= 검사 요청 시각
OBX (Observation Result, 검사 결과) - 수축기 혈압:
OBX|1|NM|8480-6^Systolic BP^LN||120|mm[Hg]|90-140|N|||F||202508261030
NM
= Numeric, 값은 숫자8480-6^Systolic BP^LN
= 수축기 혈압, LOINC 코드 8480-6120
= 측정값mm[Hg]
= 단위 (밀리미터 수은주)90-140
= 참고 범위N
= 정상 (Normal)F
= Final (최종 결과)202508261030
= 결과 생성 시각
OBX (Observation Result, 검사 결과) - 이완기 혈압:
OBX|2|NM|8462-4^Diastolic BP^LN||80|mm[Hg]|60-90|N|||F||202508261030
NM
= Numeric8462-4^Diastolic BP^LN
= 이완기 혈압, LOINC 코드 8462-480
= 측정값mm[Hg]
= 단위60-90
= 참고 범위N
= 정상F
= Final (최종 결과)202508261030
= 결과 생성 시각
HL7 v2 요약
- HL7 v2 메시지는 여러 세그먼트로 구성된 텍스트 메시지이다.
- MSH → PID → PV1 → OBR → OBX 순으로
환자 정보, 방문 정보, 검사 요청, 검사 결과가 기록된다. - OBX는 실제 결과 값을 담는 부분일 뿐, 항상 앞뒤 세그먼트와 함께 묶여서 온다.
- 이 구조를 이해하면 HL7 메시지를 해석하고, 병원 EHR 시스템에 맞게 매핑할 수 있다.