I.

HL7 메시지 구조 데이터를 담고 있는 매체와
매체의 처리방법에 따른 처리속도 비교평가

A Comparative evaluation of processing speed by process method of media including HL7 message structure data

Hangchan Kim*, Jisu Kim*, Ilkon Kim*

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

Abstract: The HL7 message is a standard for exchanging data in hospital information system. Generally, we need to use the HL7 Engine that helps HL7 message processing (message generation, message verify, message parsing) for exchanging information easily and fast using HL7 international standard message. The HL7 Engine needs to be optimized according to handled messages and it is need to be created automatically by some tool. The HL7 Message Toolkit creates such optimized HL7 Engine. To process HL7 Message structure information for developing HL7 Message Toolkit, we should decide to use which media among database and file. Specially, the most important thing in selection of media is the data processing speed. So we simulated processing speed about database and file(XML format) using various method in this paper. In the case of database, we measure the speed by two methods, ODBC and OLE-DB, using MS Access database. In the case of file(XML format), we measure the speed by two methods, XPath and normal DOM tree search using MS XML DOM Parser because the file has XML format to express HL7 message structure information. And we compared processing speed about 4 method and defined necessary elements for processing HL7 message structure information. In this paper, we describe programs used in each method and properties to compare processing speed. Lastly we suggest which methodology of 4 methodologies is fastest methodology.

Keyword: HL7, HL7 v2.x, XML, Database, XML DOM Parser, Hospital Information System, ODBC, OLE-DB, XPath, Processing Time, HL7 Engine, Toolkit

소 개

보건의료 정보 시스템 사이에서 정보를 교환하기 위한 표준으로 HL7 메시지가 사용되고 있다. HL7 메시지는 문자열로 구성되어 있으며, 구분자들을 이용하여 내부 데이터들을 구분하고 있다(Fig 1). 일반적으로 HL7 메시지는 표준에 따라 데이터를 구성하기에는 복잡해서 프로그램의 도움을 받아야 한다. 보통 HL7 메시지를 생성하고 전송 및 데이터 추출에 필요한 작업들을 도와주는 프로그램을 HL7 엔진이라고 부른다. HL7 엔진은 메시지에 데이터를 입력하기 쉽도록 인터페이스를 제공하고, 데이터가 적절하게 들어있는지를 검증해주는 기능을 제공한다. 본 논문의 저자들을 이러한 HL7 엔진을 생성해 주는 HL7 v2.x Message Toolkit 프로그램을 제작하고 있다. HL7 v2.x Message Toolkit을 만들기 위해서는 가장 우선시 되어야 하는 작업 중에 하나가 HL7 메시지 구조를 담고 있는 데이터베이스를 처리하는 것이다.

Fig . HL7 v2.5 메시지 구조 (입원환자 허가/내원 통지서 - 이벤트 A01)

HL7 메시지 구조는 HL7 표준화 위원회에서 Access 데이터베이스 파일로 제공해 주고 있는데 이 데이터베이스를 이용하여 프로그램을 작성할 수 있다. 하지만 보통의 경우 데이터베이스를 바로 이용하는 것보다 각 모듈에서 필요로 하는 정보들만 모아놓은 메타파일로 데이터베이스의 내용을 변환하여 이용하는 것이 편리하다. 저자들의 프로젝트에서는 HL7 메시지 구조에 데이터를 입력하는 Accessor라는 모듈을 생성하는데 Accessor 모듈은 XML로 구성된 메타파일을 이용한다. 이 메타파일은 HL7 메시지에 데이터를 맵핑하고 HL7 메시지를 생성해 주는 클래스들을 생성하기 위해 필요한 파일로 XML 형태를 취하고 있다. 메타파일의 구조는 Fig 2와 같다.

메타파일을 생성하기 위해서는 크게 두 가지의 방법이 있다. 첫 번째 방법은 데이터베이스에서 메타파일을 생성하는 방법이고, 두 번째 방법은 데이터베이스의 내용을 모두 담고 있는 XML 파일에서 메타파일을 생성하는 방법이다. 두 가지 방법 중 어떠한 방법이 더욱 효율적인지를 알기 위해서 본 논문에서는 속도 측정을 시뮬레이션 하였다. 시뮬레이션을 하기 위해 우선 꼭 필요한 테이블 10개를 추출하였으며, 추출된 테이블들 간의 관계는 Fig 3과 같다.

Fig . XML 메타파일 구조

Fig . 메타파일을 생성하기 위해 사용하는 HL7 테이블들의 연관관계

메타파일을 생성하는데 있어서 데이터를 추출하는 속도를 비교하기 위해서는 추출된 데이터를 같은 방법으로 저장할 필요가 있다. 따라서 본 논문에서는 추출된 데이터들을 입력하면 XML 메타파일을 생성해 주는 공통의 클래스(Fig 4)를 만들었다.

Fig . XML 메타파일을 생성해 주는 공통의 클래스의 클래스 다이어그램

II. 시뮬레이션 방법론

데이터베이스와 XML 데이터를 처리하는 속도를 시뮬레이션 하기 위해서 본 논문에서는 4가지 방법을 이용하였다.

OLE-DB를 이용하여 데이터 추출

ODBC를 이용하여 데이터 추출

XML DOM을 이용하여 데이터 추출

XML DOM에서 XPath를 이용하여 데이터 추출

4가지 방법 모두 Visual C++ 6.0에서 프로그램 하여 테스트 하였다.

1.  OLE-DB를 이용한 방법론

OLE-DB는 데이터베이스뿐만 아니라 파일과 같이 데이터를 가지고 있는 모든 매체에 접근할 수 있도록 지원한다. 또한 OLE-DB는 provider가 제공하는 최적화된 함수들을 이용함으로써 속도가 빠르다. OLE-DB를 이용하여 메타파일을 생성하는 프로그램은 Fig 5와 같다. 각 이벤트를 구성하는 메시지들의 구성과 메시지 내부의 세그먼트들의 구조 등을 볼 수 있다. 사용자가 생성하기를 원하는 Event를 선택하여 “메타파일 생성” 버튼을 누르면 메타파일이 생성되어 나타나고, 생성된 메타파일을 저장하고자 할 때 저장할 수 있다.

2.  ODBC를 이용한 방법론

ODBC를 이용하는 방법은 Fig 5와 같은 방법과 같은 인터페이스를 사용하며 프로그램 내부에서 데이터베이스를 접속하는 모듈만 ODBC들로 변경하여 테스트하였다.

Fig .  XML 파일을 이용하여 T01 메타파일을 생성하는 화면

3.  XML DOM Parser를 이용한 방법론

Fig 3에 나타나는 데이터베이스의 테이블들을 각각 XML 파일로 뽑아내고, 뽑아낸 XML 파일들을 이용하여 메타파일을 생성하는 방법이다. 이 방법론에서는 데이터를 추출할 때 XPath를 사용하지 않고 DOM 함수들만을 이용한 방법론으로 XML의 각 노드들을 루프를 돌면서 메타파일을 생성하였다. 이 방법으로 구성된 프로그램은 Fig 6과 같은 화면 인터페이스를 가지고 있다.

4.  XML DOM에서 XPath를 이용한 방법론

Fig . OLE-DB를 이용하여 메타파일을 생성하는 프로그램

3번째 방법론과 같이 XML 파일을 이용하여 메타파일을 생성하는 방법론으로 차이점은 XPath를 사용하며, XML생성 공통 클래스를 이용하여 메타파일을 생성한다. 이 방법론의 화면 인터페이스는 Fig 6과 같고, 내부 생성 모듈만 다르다.

III. 평 가

본 논문에서는 4가지 방법론을 이용하여 속도를 비교 평가하였다. 속도 비교를 위해 사용한 이벤트는 A04, T01 2가지를 사용하였다. 두 가지 메시지를 사용한 이유는 A04 이벤트와 T01 이벤트의 비교가 가능하기 때문이다. A04 이벤트에서는 메시지를 구성하는 많은 세그먼트와 세그먼트 그룹이 존재하여 처리하는 양이 많기 때문이고, T01 이벤트는 상대적으로 메시지를 구성하는 세그먼트들이 적어서 처리량이 적다. 처리량이 많은 경우와 적은 경우를 비교하여 4가지 방법론을 평가한 결과는 Fig 7과 같다.

Fig . 4가지 방법론들을 모두 비교한 그래프

4가지 방법론 중에서 3번째 방법론인 XML DOM Parser를 이용한 방법이 현저하게 느리다. 이에 비해 나머지 3가지 방법론은 처리속도가 현저하게 빠른 것을 알 수 있다. 4가지 방법론 중 처리속도가 빠른 3가지 방법론을 따로 비교한 그림은 Fig 8과 같다.

Fig . 속도가 빠른 3가지 방법론을 비교한 그래프

Fig 8에서 가장 빠른 방법론은 XPath를 이용하는 방법론이고, 그 다음이 OLE-DB를 이용하는 방법론이고 가장 느린 방법론이 ODBC를 이용하는 방법론이다. 속도를 보면 XPath를 이용한 방법론의 경우가 10초 내로 처리속도가 나왔고, OLE-DB를 이용한 방법론은 30초 내로 처리속도가 나왔으며, ODBC를 이용한 방법론은 40초 내로 처리속도가 나왔다.

각 방법론에서 사용하는 데이터베이스의 크기(6.16MB)와 데이터베이스의 내용을 XML로 추출한 파일의 크기(6.52MB)는 크기에 있어서 차이가 거의 없었다.

IV. 결 과

메타파일 생성 프로그램은 HL7 v2.x Message Toolkit 시스템을 만드는데 있어서 가장 먼저 이루어져야하며, 가장 기초가 되는 모듈이다. 이 모듈이 제일 먼저 위에서 언급한 3번째 방법인 XML DOM을 이용하되 XPath를 사용하지 않는 방법으로 구현이 되었는데 처리 속도가 너무 느렸다. 이로 인해 프로그램의 처리 속도를 향상시킬 필요가 있었다.

따라서 본 논문에서는 데이터베이스를 이용하는 2가지 방법론과 XML에서 XPath를 이용하는 방법론을 추가적으로 시뮬레이션 하여 속도를 평가하였다. 데이터베이스를 이용하여 처리하는 경우에는 OLE-DB를 이용하는 방법론이 20초대의 속도를 보여주었고, ODBC를 이용하는 방법론이 30초대의 처리속도를 보여주었다. 그리고 마지막으로 XPath를 이용하는 방법론이 10초대의 처리속도를 보여 주었다.

XML DOM을 이용하지만 XPath를 사용하지 않는 방법론이 너무 느려서 본 논문의 저자들은 OLE-DB가 가장 빠른 속도를 나타낼 것으로 예상하였다. 하지만 평가결과에서 보듯이 XPath를 사용하는 방법론이 예상을 깨고 가장 빠른 처리속도를 보여주었다.

따라서 HL7 v2.x Message Toolkit 시스템에서 사용할 메타파일 생성기는 XML 파일을 이용하는 XPath 방법론으로 속도를 향상시킬 수 있다는 결론을 내릴 수 있었다.

앞으로의 과제로는 현재는 한 개의 이벤트에 대해서 처리속도를 비교하였는데, 여러 개의 이벤트에 대해 처리할 경우에 처리속도가 어떤 결과를 나타내는지에 대해 알아볼 필요가 있다.

참고문헌

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

2. 최진욱, 김화원, 조한익: 병원간 진료 정보 공유를 위한 HL7 인터페이스 엔진의 구현, 대한의료정보학회지 (1998)

3. Stephen Mohr, Steven Livingstone, Darshan Singh, Danny Ayers, Michael Coming: XML Application Development with MSXML 4.0 : Wrox (2002)