I.

HL7 메시지를 처리하는 HL7 Engine을 생성해 주는 HL7 Message Toolkit 설계와 개발

The Architecture design and development of the HL7 Message Toolkit generating the HL7 Engine that processes HL7 Messages

Hangchan Kim*, Ilkon Kim*

* Department of Computer Science, Kyungpook National University, 1370 Sankyuk-dong Buk-ku, Daegu, hangchan_kim@hotmail.com, ikkim@knu.ac.kr

Abstract: In the healthcare domain necessity of sharing healthcare information is rising, so the international standard HL7 message that supports sharing healthcare information is more and more  important. But system developers in hospital are not easy they create and process HL7 messages. So we designed the architecture of the HL7 Message Toolkit that helps dealing with HL7 messages and developed it which supports generating the HL7 Engine easily. Also the HL7 Message Toolkit has the function for creating more compact HL7 Engine in each department and other additional functions as message browser, help provider, message optimizer, message profile manager etc. In this paper, Architecture of the HL7 Message Toolkit is divided by 3 parts and each part's main purpose is explained and developed programs in each part are introduced. So if developers in hospital use the HL7 Message Toolkit for sharing healthcare information using HL7 Message, we describe what advantages and helps are given to them.

Keyword: HL7, HL7 v2.x, HL7 Engine, HL7 Message Toolkit, Hospital Information System

소 개

병원 내의 다양한 시스템들이 각각 독립적으로 동작하고 있을 경우 이러한 시스템들이 서로 연동되기 위해서는 정보 공유가 필수적으로 이루어져야 한다. 이러한 정보 공유를 위해서는 서로 독립적인 시스템간에 메시지를 교환하는 방법이 가장 일반적이다. 이러한 메시지는 향후 다양한 시스템간의 호환성을 위해서라도 국제 표준 메시지를 사용하는 것이 바람직하다. HL7 메시지는 병원 정보를 교환하기 위해 만들어진 국제 표준 메시지로, 병원 도메인에서 정보 공유를 위해 필요한 모든 메시지들을 정의하고 있다.

HL7 Engine은 HL7 메시지를 처리하기 위한 핵심 모듈로써 HL7 Message를 생성, 검증, 파싱하는 역할을 수행한다. HL7 Engine은 HL7 표준에서 정의된 모든 메시지를 처리할 수 있는 상태로 만들어질 수 있지만, 불필요한 메시지들을 제외하고 꼭 필요한 메시지를 처리하는 최적화된 Engine으로 만들어질 수도 있다. 최적화된 Engine을 생성하게 되면 디스크 공간도 적게 차지하고, 수행 속도도 빠르기 때문에 병원 시스템 측면에서는 최적화된 Engine을 생성할 필요가 있다. 따라서 병원에서 각 부서나 시스템에서 필요로 하는 최적화된 HL7 Engine을 생성하기 위해서는 이러한 작업을 도와주는 도구가 필요하다.

HL7 Message Toolkit은 최적화된 HL7 Engine을 생성해 주는 기능을 수행한다. HL7 Message Toolkit은 HL7 표준에서 제공하는 모든 메시지 구조 정보를 가지고 있고, HL7 Engine에 포함될 표준 메시지들을 선택할 수 있다. 또한 병원에서 사용하는 정보들을 Table 구조에 입력하여 Engine에서 병원 고유의 데이터를 이용할 수 있도록 지원하고 있다. 본 논문에서 개발한 HL7 Message Toolkit을 이용하여 HL7 Engine을 생성하는 과정은 Fig 1과 같다.

Fig . HL7 Message Toolkit을 사용하여 HL7 Engine을 생성하는 흐름도

HL7 Message Toolkit 도구 사용자는 병원에서 정보공유에 필요한 HL7 메시지들을 선택하고, 병원에 맞게 수정 가능한 데이터를 수정하여 프로젝트를 생성한다. 생성된 프로젝트는 Client와 Server로 나뉘는데, 둘 다 HL7 Engine을 포함하고 있으며 기본적인 UI 인터페이스를 가지고 있다. 프로그램 개발자는 Client와 Server에서 메시지에 담길 데이터를 처리하기 위해 필요한 코드를 작성한다. 작성된 Client와 Server 프로그램을 병원의 적절한 위치에 설치하게 되면, HL7 메시지를 교환하여 병원 정보를 교환할 수 있게 된다.

II. 관련연구

현재까지 국내에서는 HL7 메시지를 적용하기 위해 HL7 Engine을 개발한 논문들이 몇몇 존재한다. 하지만 이러한 논문들은 대부분 특정 메시지만을 처리하는데 국한되거나 HL7 표준의 모든 메시지를 처리하는 Engine 자체를 연구, 개발하고 있다.  병원에서 사용할 메시지만을 처리하고, 병원에 맞도록 수정된 메시지를 처리하는 HL7 Engine 자체를 생성해 주는 도구 개발에 대한 연구는 아직까지 전무한 상태이다. 본 논문에서는 HL7 Engine 자체를 생성해 주는 한 수준 위의 도구에 대해 다루고 있다. 이렇게 한 수준 위의 도구는 이미 국외의 경우 상용화 되어 판매되고 있다. iNTERFACEWARE 회사의 Chameleon 제품은 HL7 Engine 자체를 생성해 주고, ORION Health 회사의 Rhapsody 제품은 중앙에서 다양한 포맷의 데이터를 HL7 메시지로 변환할 수 있도록 지원해 주고 있다. 이와 같이 국외에서는 다양한 HL7 메시지 지원 도구가 존재하지만 국내에는 아직까지 이러한 도구가 없으므로, 국내에서도 HL7 Message Toolkit 에 대한 개발과 연구가 이루어질 필요가 있다.

III. HL7 Message Toolkit 설계

본 논문에서는 HL7 Engine을 생성해주는 HL7 Message Toolkit을 개발하기 위해 architecture를 디자인하고 실제 개발을 완료하였다. Fig 1에서 설명한 것과 같이 HL7 Message Toolkit을 이용하여 HL7 Engine을 생성하기 위해서는 HL7 표준 메시지 구조 정보를 가지고 있는 데이터가 필요하다. HL7 표준화 위원회에서는 HL7 표준을 만들면서 표준 구조에 대한 정보를 담고 있는 MS Access 데이터베이스도 같이 제공해 주고 있다(현재까지는 v2.31 과 v2.4 정보를 제공). 따라서 이 데이터를 이용하여 HL7 Message Toolkit을 개발하면 좀 더 정확한 정보로 빠르게 개발을 할 수 있게 된다. 본 논문에서 개발한 HL7 Message Toolkit은 HIToolkit이라는 이름으로 개발되었으며, 앞으로 이 명칭을 사용하도록 하겠다. HIToolkit의 Architecture 디자인은 Fig 2와 같다.

HIToolkit 디자인 설계에서는 크게 3부분으로 나뉘어 진다. 첫 번째 External 부분은 HL7 메시지 구조 정보를 HIToolkit에서 사용할 수 있는 정보로 변환해 주는 부분이다. 여기서는 HL7 표준화 위원회에서 제공해 주는 데이터베이스 자료(HL7 메시지 구조 정보를 담고 있음)를 HIToolkit에서 사용할 수 있는 데이터로 변환한다(직접 개발한 "DB to File Translator" 프로그램을 이용). 이 프로그램은 데이터베이스에 있는 HL7 메시지 구조 정보 중에 원하는 버전(v2.31 or v2.4)을 변환시키는 기능을 가지고 있다. 두 번째 HIToolkit 부분은 실제 HIToolkit 응용 프로그램을 사용하는 부분으로 전체 HL7 메시지 중에서 사용하길 원하는 메시지를 선택하여 Sample 프로젝트를 생성할 수 있다. 또한 HIToolkit 에서는 메시지 검증 테스트, 메시지 정보 검색, 메시지 정보 최적화, 메시지 프로파일 생성과 같은 다양한 기능을 제공하며 사용이 편리한 인터페이스를 제공하고 있다. 마지막으로 Sample 프로젝트 부분은 HIToolkit에서 생성한 HL7 Engine과 기본 User Interface를 가지고 있으며, Server와 Client 2개의 프로그램으로 구성되어 있다. Sample 프로젝트에서 메시지를 생성하는 함수와 메시지를 처리하는 함수에서 코딩을 하여 실행시켜 주면 Client에서는 메시지를 생성하여 전송해 주며, Server에서는 메시지를 수신, 검증, 파싱하여 결과를 보여주게 된다. 실제 도메인에 적용할 때에는 Sample 프로젝트에 있는 Client 와 Server 프로그램의 UI를 변경하고 내부 코드를 조금만 수정하면 된다.

Fig . HL7 Message Toolkit Design Architecture - HIToolkit

IV. HL7 Message Toolkit 구현

이번 장에서는 HL7 Message Toolkit을 구성하는 3가지 부분에서 실제로 개발된 각각의 프로그램들과 기능을 설명한다.

1. External PART

MS Access 데이터베이스에 들어있는 HL7 Message 구조에 대한 정보를 HIToolkit에서 사용할 파일 데이터로 변환한다(Fig 3 변환 프로그램)

.

Fig  DB to File Translator

이렇게 DB 데이터를 파일로 변환하는 이유는 DB 데이터의 경우 데이터베이스 프로그램이 있어야만 하기 때문에 HITookit 프로그램이 DB 데이터를 이용할 경우 HIToolkit 프로그램을 사용하는 사용자는 항상 MS Access 프로그램을 가지고 있어야 한다. 이것은 사용자에게 상당한 불편을 주고, HIToolkit 프로그램도 손쉽게 사용할 수 없기 때문에 데이터베이스가 없어도 사용가능하도록 파일로 변환할 필요가 있다.

2.  HIToolkit PART

HITookit 프로그램은 전체 HL7 메시지 구조 중에서 원하는 메시지를 선택하여 편집하여 HL7 Engine을 생성하는 기능을 제공한다. 기본적인 화면 인터페이스는 Fig 4와 같다. 기본적인 기능으로는 이벤트 정보관리, 메시지 구조 관리, 세그먼트 관리, 컴포지트 및 서브 컴포지트 관리, 그리고 HL7 테이블 관리기능을 제공한다. 또한 HIToolkit 프로그램은 HL7 메시지를 검증하는 Message Browser, HL7 표준 정보를 제공하는 Help Provider, 메시지 구조 편집 후 불필요한 정보를 제거해 주는 메시지 최적화 기능을 수행하는 Message Optimizer, 마지막으로 다른 사용자와 HL7 메시지 구조 정보를 공유 할 수 있는 기능을 제공하는 Message Profile Manager와 같은 도구들을 부가적으로 제공하고 있다.

3.  Sample 프로젝트 PART

Fig . HIToolkit 프로그램 - A03 이벤트(Discharge/end visit)의 ADT_A03 메시지를 처리하는 화면

HIToolkit 프로그램에서 처리할 메시지들을 선택하고, 필요한 내용들을 수정하고 나면 Sample 프로젝트를 생성하게 된다. 이 Sample 프로젝트는 HL7 Engine을 포함하는 Client 와 Server 프로그램을 가지고 있으며, 사용자가 HL7 Engine을 어떻게 사용하는지를 쉽게 알 수 있도록 샘플 코드를 제공하고 있다. 현재 HIToolkit에서 생성을 지원하는 프로젝트는 Microsoft Visual C++ 6.0 프로젝트이고, 실제 작업 화면은 Fig 5와 같다.

Fig . Sample Project Coding Screen

이 프로젝트에서 제공되는 샘플 코드를 이용하여 Client와 Server 프로그램을 컴파일하고 실행을 하면 Fig 6과 같은 화면을 볼 수 있다.

Fig . Client 와 Server 프로그램 실행화면

Client 프로그램을 작동시키면 IP Address와 Port 번호를 세팅하고 보낼 메시지를 ComboBox에서 선택하여 “Send" 버튼을 누르면 HL7 메시지를 생성하여 지정된 IP 주소로 메시지를 보내게 된다. Server 프로그램은 프로그램이 시작하면 바로 Socket을 열고 클라이언트의 접속을 기다리게 되고, Client가 접속하면 접속한 Client의 IP Address를 표시해 주고, 받은 메시지 내용을 보여주게 되며, 메시지를 처리한 후에는 ACK 메시지를 전송하게 된다. 송수신 프로토콜은 HL7 표준에서 언급하고 있는 LLP(Low Layer Protocol)을 사용하고 있다.

V. 비교평가

HIToolkit 프로그램은 국내 최초로 HL7 Engine을 생성해 내는 도구이지만 해외에서는 상용화된 제품들이 있다. 이 제품들과 기능을 비교한 Table 1을 보면, HIToolkit이 대부분의 주요 기능들을 제공하고 있으며, 상당히 저렴한 비용으로 HL7 메시지를 처리할 수 있는 장점을 가지고 있음을 알 수 있다.

Table 1. 상용 제품들과 HIToolkit의 기능 비교평가

제품종류 비교내용	Chameleon	Rhapsody	HIToolkit
병원 환경에 맞도록 HL7 메시지 수정기능	O	X	O
HL7 Engine 생성기능	O	X	O
모든 메시지 format 변환 기능	X	O	X
Message Profile 생성	X	X	O
다양한 개발 언어 지원	O	X	X
상대적인 구입 비용	Mid	High	Low

VI. 결론

본 논문에서는 의료정보 공유를 위하여 만들어진 국제 표준 HL7 메시지를 의료 도메인에서 보다 쉽고 빠르게 처리할 수 있도록 도와주는 HL7 Engine을 생성해 주는 HL7 Message Toolkit을 설계하고 개발하였다. HIToolkit 프로그램은 3가지 부분으로 설계가 되었으며, 각 부분에서 필요한 프로그램들이 개발되어 유기적으로 연동되고 있다. 첫 번째 part에서는 HIToolkit 프로그램이 HL7 표준의 변화에 빠르게 대처하고, DB 프로그램에 의존하지 않도록 도와주는 "DB to File Translator" 프로그램을 개발하였다. 두 번째 part에서 개발된 HIToolkit 프로그램은 깔끔하고 편리한 사용자 인터페이스로 구성된 기본 기능을 제공하면서 Message Browser, Help Provider, Message Optimizer, Message Profile Manager와 같은 다양한 부가 기능들을 제공하고 있다. 세 번째 part에서는 사용자들이 생성된 HL7 Engine을 보다 쉽고 빠르게 사용할 수 있도록 Client와 Server 프로그램으로 구성된 Sample 프로젝트를 제공해 주고 있다. 따라서 본 논문에서 제시하고 있는 HL7 Message Toolkit 프로그램들을 이용한다면, 병원 도메인에서 정보공유가 필요한 곳에 보다 적은 시간과 비용을 투자하여 정보 공유에 필요한 프로그램을 작성할 수 있게 될 것이다. 마지막으로 HL7 V3 메시지를 지원하기 위해 HL7 Message Toolkit 설계를 어떻게 바꿀지에 대한 연구가 필요하며, 실제 병원 도메인에 적용하여 작동하기 위해 필요한 다양한 언어지원이 구현 측면에서 필요할 것이다.

참고문헌

1. Health Level 7, HL7 Standard Version 2.4 and 2.5 Specification, http://www.hl7.org

2. Bernd Blobel: Advanced and secure architectural EHR approaches, International Journal of Medical Informatics (2006)