Health Information/FHIR

FHIR란?

안녕하세요. 씨앤텍시스템즈 박선희 연구원입니다.

FHIR( Fast Healthcare Interoperability Resources) 에 대해서 알아보겠습니다.

FHIR

FHIR ( Fast Heathcare Interoperability Resources )는 HL7 ( Health Level Seven International) 이라는 국제 표준기구에서 만들었고,  '자원'이라고 알려진 데이터 형식 및 요소 그리고 의료 데이터 교환을 위한 API 의 표준입니다. FHIR는 이전 버전인 HL7 v2와 v3와 같은 이전 데이터 형식 표준을 기반으로 만들어졌습니다. 하지만 전 버전에 비해 여러 가지 최신 웹 기반 API 기술을 사용하기 때문에 구현하기가 더 쉽습니다. 단순히 의료서비스 제공자와 컴퓨터 간의 교환뿐만 아니라 태블릿, 휴대폰 그리고 웨어러블 기기를 통해 의료 정보를 쉽게 제공하고 허용하는 것입니다. 초기 표준화하는 비용, 시간은 많이 들 수 있지만 그만큼 표준화가 된다면 더욱 실용성이 커질 것입니다.

 

 

FHIR로 표준화를 하게 되면 그림과 같이 서비스 제공자 즉 다양한 의료기관뿐만 아니라 환자 또는 기업들이 개인 의료정보를 편리하게 조회해 할 수 있는 환경이 구성됩니다. 각기 다른 의료 데이터가 이러한 표준화를 한다면 여러 병원들은 의료 데이터를 공유하기 쉬운 환경이 만들어질 것입니다.

 


내가 생각하는 FHIR이란?

 

FHIR란 서류봉투

 

서류봉투( FHIR ) 안에는 여러 개의 서류( 자원 ) 들이 들어있고 이 서류봉투를 교환하는 것입니다.

 

 

왜 FHIR이 필요할까?

 

다양한 의료 시스템이 서로 통신할 수 있는 여러 가지 유연한 표준, 지침 및 방법을 지정합니다. 이러한 지침 또는 데이터 표준은 정보가 균일하고 일관된 방식으로 공유 및 처리될 수 있도록 하는 일련의 규칙입니다. 이러한 데이터 표준은 의료 기관이 임상 정보를 쉽게 공유할 수 있도록 하기 위한 것입니다. 이론적으로 이러한 정보 교환 능력은 의료 서비스가 지리적으로 격리되어 있고 매우 다양한 경향을 최소화하는 데 도움이 됩니다.

 

 

개발 배경

 

FHIR는 이전에 만들어진 HL7 version 2.x , HL7 version 3.x 를 기반으로 만들어졌습니다.

이 중 v2는 가장 오래되었고 현재까지도 많이 사용되고 있습니다.

 

 

 

HL7 v2 예제

그림과 같이 v2는 직관적이라 보기 쉽지만 정형화된 구조이기 때문에 정해진 항목에 알맞은 데이터만을 넣어야 한다는 단점이 있습니다. 다양한 데이터들을 모두 수용할 수 없습니다.

 

 

 

HL7 v3 예시

v3에서는 xml을 도입해 구조화된 문서를 지향하게 되었고 객체 지향 언어와도 잘 맞았습니다. 또한 RIM 모델을 통해 하나의 메시지에 하나만 담을 수 있는 v2와는 달리 v3는 한 메세지에 여러 개를 담을 수 있습니다. 하지만 v3는 RIM 이 추상적이고 "어떻게 만드는지"에 대한 설명이 부족해 도입률이 현저히 낮아 실패했습니다.

 

 

 

FHIR JSON / XML

반면에 FHIR는 v2, CDA의 장점을 가져와 여러 항목을 쓸 수 있는 것은 물론 원하는 항목을 쓸 수 있습니다. 또한 HTTP 기반 Restful 프로토콜, 사용자 인터페이스 통합을 위한 html 및 CSS, 데이터 표현을 위한 JSON, XML 등 을 이용해 웹 기반 API를 사용하기 때문에 더 빠르고 쉬운 구현이 가능합니다.

 

*여기서 CDA(Clinial Document Architecture)이란 상호작용을 위한 임상 문서의 문법, 구조 그리고 인코딩을 명시하기 위함을 목표로 한 XML 기반의 마크업 표준입니다..  2000년 11월에 Release 1.0 발표.

 

*HL7 FHIR 공식 홈페이지

http://hl7.org/fhir/

 

Index - FHIR v4.0.1

This page is part of the FHIR Specification (v4.0.1: R4 - Mixed Normative and STU). This is the current published version. For a full list of available versions, see the Directory of published versions FHIR is a standard for health care data exchange, publ

hl7.org

 


구성

 

공식 홈페이지 상단메뉴바

공식 홈페이지의 상단 메뉴바 Resource에 들어가면 FHIR에 있는 자원들을 볼 수 있습니다. 여러 자원들의 이용방법, 속성 등을 살펴볼 수 있습니다. 이 페이지를 통해 FHIR의 구조에 대해 어느 정도 파악할 수 있습니다.

 

 

 

FHIR 구조
FHIR의 여러 자원들

그림과 같이 FHIR에는 여러 자원들이 있고 그림 외에도 많은 자원들이 정의되어 있습니다. 이 자원들은  여러 가지 데이터 형식이나, 요소들이 정의되어 있습니다. 의료 데이터를 알맞은 분류에 맞게 데이터를 저장해 FHIR로 변환할 수 있습니다.

 

 

patient 자원 구조

 

그림은 Patient 자원의 구조입니다. 보기와 같이 여러 가지 데이터 형식 및 요소가 존재합니다. 이런 항목들을 모두 사용해도 무방하지만 필요한 일부분만 세팅해서 사용해도 됩니다. 

 


구현

using Hl7.Fhir.Model;	// FHIR 패키지 사용

Patient patient = new Patient();	// 자원생성
patient.BirthDate = "1955-01-01";	// 생년원일
patient.Gender = AdministrativeGender.Male;	//성별

 

FHIR의 Patient를 생성하고 특정 데이터를 삽입할 경우를 알아보겠습니다.

필자는 Asp.net Core 프레임워크와 C#을 이용했습니다. Hl7.Fhir.model 패키지를 사용했고 상단에 추가해주었습니다.  순서는 Patient 자원을 생성해주고 필요한 데이터를 넣어주는 형식입니다.

이때 어떤 데이터가 들어갈 수 있고 어떠한 데이터 형식을 갖추고 있는지는 Patient 자원 구조를 보거나 API를 확인해서 알 수 있습니다.

 

 

그림과 같이 Patient의 API에는 여러 데이터 요소 및 형식이 존재합니다.

BirthDate 같은 경우 string 형식으로 되어 있고 Gender는 AdministrativeGender로 되어있습니다.

string 은 아시겠지만 AdministrativeGender 은 모르실 거예요. 

 

홈페이지에 Patient의 gender를 보시면 그림과 같이 description에 AdministrativeGender를 보실 수 있습니다.

이 URL에 들어가시면 그림과 같이 나와있고 이러한 FHIR 속성을 이용해서 성별을 저장하게 됩니다.

 


FHIR은 의료 데이터가 상호작용을 하기 위해서는 서로의 형식, 형태를 맞추는 방법입니다. 영어를 쓰는 사람과 한국어를 쓰는 사람이 소통하기 어렵듯이 데이터 또한 마찬가지입니다. 그럼 지금까지 간단하게 FHIR에 대한 설명, 자원 생성 방법에 대해 알아보았습니다.

 

감사합니다.

728x90