본문 바로가기
HL7

의료 데이터 표준 통신 프로토콜 : FHIR ( Fast Healthcare Interoperability Resources )

by andante131 2024. 10. 23.

FHIR 란 HL7 이라는 헬스케어 데이터에 대한 표준에서 지정한 상호운용성을 위한 통신 프로토콜이다. 

 

상호운용성이란, 다른 시스템간의 통신의 용이함을 말한다. 

 

배경은 다음과 같다. 

병원에서는 의료 데이터를 취급한다. 각 데이터 들이 다른 병원과 통신,통합 될 필요성이 생겼다. 이 과정에서 표준이되는 형식이 없어

서로간의 데이터를 운용하기에 불편이 생겼다. 

출처: https://www.youtube.com/watch?v=AkqNuxVBQKY

 

 

 

FHIR는 기존 의료 데이터 표준의 복잡성과 부족한 유연성을 해결하고자 만들어졌으며, RESTful API를 기반으로 하여 데이터를 효율적으로 교환하고 관리할 수 있다.

 

HL7에서는 FHIR 데이터를 Resource 라는 단위로 정의하고, 해당 형식에 맞는 데이터로 통신을 하도록 하고 있다.

아래 사이트에서 확인 가능하다. 

https://hl7.org/fhir/R4/resourcelist.html

 

이 중 몇개의 데이터 샘플을 살펴보며 FHIR 표준에 대해서 알아보자. 


예시 데이터는 다음과 같다.

 

아래는 Subscription 에 대한 예시다. 

Subscription, 즉 구독 데이터란 주기적으로 전송되는 데이터 형식을 말한다. 

예시에서는 특정 환자의 기기 측정 정보를 지속적으로 보내고 있다.

환자 번호 9876번에 대한 구독 요청 데이터이다. 

 

Subscripiton 의 동작방식은

구독 요청 -> 구독 요청 완료 -> 실제 구독 데이터 -> 구독 취소 -> 구독 취소 완료 와 같은 식으로 이뤄진다.

 

 

https://drive.google.com/file/d/1gMdg-PPpAjUZiJP6t-CkjB4EODN2ggww/view?usp=sharing

 

fhir_순서도.drawio

 

drive.google.com

FHIR 구독 프로세스 설명

 

{					
  "resourceType": "Subscription",					
  "id": "subscription",					
  "text": {					
    "status": "generated",					
    "div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">측정정보 구독 신청</div>"					
  },					
  "status": "requested",					
  "end": "2024-12-31T00:00:00Z",					
  "reason": "Device 측정 정보 조회",					
  "criteria": "Observation?device=Device/12321&subject=Patient/09876",
  "channel": {
    "type": "rest-hook",					
    "endpoint": "https://test.example.com",					
    "payload": "application/fhir+json"			
  }					
}

 

각 필드는 다음을 나타낸다.

resourceType: FHIR 에서 모든 데이터들은 Resource 라는 형태로 나타나는데, 어떤 종류의 리소스인지를 명시한다. 위의 링크에 나오는 값들로 Subscription, Observartion, Bundle 등이 있다.

id : 이 리소스를 구분하기 위한 id 이다.

  1. resourceType: "Subscription"
    • 이 리소스의 유형을 나타냅니다. 여기서는 구독을 의미합니다.FHIR 에서 모든 데이터들은 Resource 라는 형태로 나타나는데, 어떤 종류의 리소스인지를 명시한다. 위의 링크에 나오는 값들로 Subscription, Observartion, Bundle 등이 있다.
  2. id: "subscription"
    • 이 구독 리소스의 고유 ID입니다. 실제 환경에서는 이 값이 고유한 값으로 지정됩니다. ex) SUBSCRIPTION-DVC-ALM-131
  3. text:
    • status: "generated"
      • 이 리소스의 텍스트 표현이 자동으로 생성되었음을 나타냅니다.
    • div: "<div xmlns=\"http://www.w3.org/1999/xhtml\">측정정보 구독 신청</div>"
      • XHTML 형식의 텍스트를 포함한 설명입니다. 구독을 신청했다는 내용이 한국어로 표시됩니다.
  4. status: "requested"
    • 구독 상태를 나타냅니다. "requested"는 구독이 요청되었음을 의미합니다. 다른 상태로는 "active", "off", "error", "entered-in-error" 등이 있습니다.
  5. end: "2024-12-31T00:00:00Z"
    • 구독이 만료되는 시점을 나타냅니다. 이 경우 2024년 12월 31일 자정에 만료됩니다.
  6. reason: "Device 측정 정보 조회"
    • 구독 신청 이유를 나타냅니다. 여기서는 기기의 측정 정보를 조회하기 위한 이유입니다.
  7. criteria: "Observation?device=Device/12321&subject=Patient/09876"
    • 구독의 기준을 정의합니다. 여기서는 특정 기기(12321)로부터 관찰된 정보가 특정 환자(09876)와 관련된 데이터를 대상으로 합니다. 즉, 이 기준에 부합하는 변경 사항이 발생할 때 구독자에게 알림이 전송됩니다.
  8. channel:
    • 알림이 전송될 방식 및 세부 정보입니다.
    • type: "rest-hook"
      • 알림이 전송되는 방식으로, 여기서는 REST API 호출을 통해 알림을 전달하는 방식입니다.
    • endpoint: "https://test.example.com"
    • payload: "application/fhir+json"
      • 알림 시 전송될 데이터 형식을 정의합니다. 여기서는 FHIR 표준 JSON 형식으로 전송됩니다.

 

구독 리소스는 주로 의료 기기와 관련된 관찰 데이터를 특정 대상(이 경우는 09876번 환자) 에 대해 구독하는 경우에 사용되며, 기기나 환자의 관련 데이터를 실시간으로 알림 받을 수 있도록 설정된다.