Health Information/FHIR

FHIR Server와 FHIR Client 차이점

안녕하세요 씨앤텍 시스템즈 최홍준 연구원입니다.

이번 포스트는 FHIR Restful API Server와 Client에 대한

차이점에 대해서 설명하겠습니다.

 


[1. FHIR Server]

FHIR Server의 기능은 대표적으로 2가지가 있습니다.


1. Restful API

2. Repository


첫 번째 Restful API 기능은 FHIR 통신을 Restful을 이용하여 통신합니다.

 

* Restful API란 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어입니다.

 

HTTP 통신에서는 GET / POST / PUT / DELETE 방식으로 통신을 하는데 해당 통신 방식을

REST에서 다음과 같은 형태로 동작합니다.

그림1. REST 구조


GET = Select

POST = Create

PUT = Update

DELETE = Delete


 

예시로 FHIR REST API에서 GET 방식은 다음과 같은 형태입니다.

GET [base]/[type]/[id] {?_format=[mime-type]}

 

그림1. REST API GET방식

위 사진과 같이 통신 형태 Server URI / Resource / Resource ID로 나눠져 있습니다.

 

이러한 방식을 해석을 한다면 Server URI에 해당 Resource에 특정 Resource ID 데이터를 Select 한다라는 의미입니다.

만약 Resource에 모든 데이터를 Select 할 경우 id부분을 빼고 입력하시면 됩니다.

 

더 자세한 기능은 아래 홈페이지에 적혀있습니다.

https://www.hl7.org/fhir/R4/http.html

 

Http - 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 in it's permanent home (it will always be available at this URL). For a full list of available versions, see the Directory of publishe

www.hl7.org

 


두 번째는 Repository 기능을 제공합니다.

그림2. FHIR Server Repository

위 사진을 보면 EHR 데이터를 FHIR Server로 보내면 해당 Resource 별로 각각 데이터를 저장합니다.

그리고 FHIR API와 연결되어 있는 Mobile / Portal / Internal Apps / Partner Apps에 각각 연결되어 있습니다.

해당 서비스에 FHIR Server로 데이터 요청 시 FHIR API를 통해 해당 데이터를 불러오게 되는 구조입니다.

 


[1. FHIR Client]

FHIR Client는 한마디로 FHIR Server를 사용할 수 있는 사람입니다.

그림3. C# FHIR Client 사용

위 사진은 C# simplifier 모듈을 이용하여 FHIR 데이터 생성하는 코드입니다.

이러한 코드를 만들어 Server에 보내거나

저장되어 있는 데이터를 Restful API를 이용하여 데이터를 가져오는 방식을 Client라고 부릅니다.


FHIR 프로젝트를 시작한다면 FHIR Server / Client를 준비를 해야 합니다.

FHIR Server에서는 EHR에 만들어진 데이터를 Resource별로 Repository에 저장하고

Client는 그 데이터를 저장 및 요청을 하는 기능을 만들어야 합니다.

 

만약 EHR Data를 별도로 저장할 필요가 없다면 Client 부분만 만들어서 사용하시면 되는데 해당 기능은 다음과 같이

구현하면 됩니다.

 

그림4. C# Resource 파싱

매개변수로 FHIR 데이터를 받고 해당 Data를 FhirParser로 각 리소스 별로 뽑아오는 형태입니다.


감사합니다.

728x90