[HealthCare] HL7 v2 정리


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_A
    • Kim^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-6
    • 120 = 측정값
    • 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 = Numeric
    • 8462-4^Diastolic BP^LN = 이완기 혈압, LOINC 코드 8462-4
    • 80 = 측정값
    • mm[Hg] = 단위
    • 60-90 = 참고 범위
    • N = 정상
    • F = Final (최종 결과)
    • 202508261030 = 결과 생성 시각

HL7 v2 요약

  • HL7 v2 메시지는 여러 세그먼트로 구성된 텍스트 메시지이다.
  • MSH → PID → PV1 → OBR → OBX 순으로
    환자 정보, 방문 정보, 검사 요청, 검사 결과가 기록된다.
  • OBX는 실제 결과 값을 담는 부분일 뿐, 항상 앞뒤 세그먼트와 함께 묶여서 온다.
  • 이 구조를 이해하면 HL7 메시지를 해석하고, 병원 EHR 시스템에 맞게 매핑할 수 있다.

Author: Ruby Kim
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source Ruby Kim !
Comments
  TOC