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