I.

메시지 구조 테이블에 기반을 둔 HL7 메시지 생성 및 해석 알고리즘 개발

Algorithm Development for HL7 Message Generating and Parsing Based on Message Structure Table

Ki Sung Um, MPH, Hune Cho, Ph.D., Il Kon Kim, Ph.D., Yun Sik Kwak, M.D., Ph.D.

Dept. of Medical Informatics, Kyungpook National University School of Medicine, Daegu 700-721, altturbo@hanmail.net

Abstract: Recent commercial HL7 interface software packages are mostly based on 'Object Oriented Programming(OOP)' method as a programming technique. HL7 application programming is difficult and thus found to be impractical. Moreover, the packages are expensive. This study suggests a new algorithm for generating and parsing HL7 message using the 'Message Structure Table' that contains information about rule of message composition. Because this algorithm applies simple sequencing processes within repetitive related structure(e.g. 'While Loop'), this HL7 message structure can be easily recognized the programmer who is developing HL7 applications. This 'Message Structure Table' is constructed from selecting fundamental information from 'Attribute Table', and is also supported by component and sub-component structure for each element. The preliminary results have shown that observed due to parsing delimiter symbol '∼'. Except for problem related this delimiter symbol, the result of experiment strongly indicates that this algorithm can be effectively used to analyze HL7 messages with ease.

Keyword: HL7, message structure, algorithm, message generating, message parsing

배 경

HL7은 의료기관간 정보교환을 목적으로 제정된 정보통신 규약이다[1]. 그러나 규약으로서의 HL7은 단지 교환되는 정보의 양식과 규격만을 정의한 것으로 이것만으로는 의료기관간의 정보교환이 가능하리라고는 보장할 수가 없다. 그런 의미에서 HL7은 진료정보를 교환하는데 있어서 응용프로그램을 작성하는데 필수적으로 참고하여야할 일종의 지침 또는 규정으로 여겨도 무방하리라 여겨진다. 이는 결국 응용 프로그램으로 적용받지 못하는 HL7 규약은 그 의미를 잃어버린다는 것으로 해석할 수도 있을 것이다.

그러나 HL7은 의료정보가 복잡한 구조를 가지고 있는 만큼 그 규약의 내용과 구성역시 복잡한 구조를 가지고 있을 수밖에 없다. HL7의 규약 내용이 방대하고 복잡하다는 사실은 이를 응용하고 프로그램을 개발해야하는 개발자들에게 스스로 해결하기에는 벅찬 어려운 과제를 내어주고 있는 현실이다. 아무리 숙련된 프로그래머라 할지라도 HL7을 처음 접하게 되면 그 복잡성과 내용의 방대함으로 인해 당황하게 되고 이를 극복하고 본연의 프로그래밍의 실력을 발휘하기 까지는 일정한 기간의 적응기간이 필요하다.

이를 지원하기 위하여 상업용으로 HL7 개발지원도구가 출시되어 있기는 하지만 대부분 가격대가 높아 손쉽게 구입할 수 있는 조건에 있지 않고 또한 그 활용법 역시 쉽다고 볼 수는 없다[2]. 특히, 이들 지원도구는 대부분 객체지향기술에 기반으로 한 개체의 Tree구조의 메시지 구성 원리에 기반을 두고 있기 때문에 프로그래머 입장에서 이들 HL7 개발지원 도구에서 서비스하는 코드 생성기능을 통하여 생성된 프로그램들을 통하여 프로그램을 작성한다는 것이 그리 수월하게 다가설 수 있는 수준이 아니다[3].

본 연구는 이러한 HL7 메시지의 생성과 해석과 관련된 프로그래밍에 적용될 수 있는 손쉬운 알고리즘으로서 사전에 작성된 HL7 메시지의 구성 원리를 데이터베이스에 테이블로 표현한 다음 이를 응용하여 손쉽게 HL7메시지 관련 프로그램을 손쉽게 짤 수 있는 새로운 알고리즘을 제시하고자 한다.

II. 방 법

1. 개발 환경

본 연구에서 적용된 개발환경은 주 개발 장비로서 Windows Me를 사용하는 Pentium 850MHz PC와 개발 언어로서는 Java가 주로 사용되었고 보조적으로 Visual Basic 6.0이 활용되었다[4][5]. Rule Table을 관리하는 DBMS환경은 주로 Windows 환경에서는 MS-Access가, Linux환경에서는 MySQL이 활용되었다[6][7].

2. 메시지 구조 테이블 구성

본 연구에서 새로이 제시되는 HL7 메시지구성 알고리즘은 데이터베이스 법칙 테이블의 활용에 기반을 둔 개념이기 때문에 우선 메시지 구조 테이블이 작성  되어야 한다. 가장 신뢰할 수 있는 메시지 구성의 원리는 HL7 매뉴얼이 가장 확실하다고 판단하여 우선 HL7 버전 2.4 전자 매뉴얼로부터 각 세그먼트별 구조를 설명하는 각 장의 Attribute Table을 복사하여 별도의 파일에 담아 두었다[8]. 이러한 과정을 거쳐 통합된 Attribute Table 파일의 형태를 변환하여 MS-Access에 담아두는 프로그램을 개발하여 필드레벨의 일차적인 세그먼트 구성에 대한 메시지 구조 테이블을 완성할 수 있었다.

Fig . 세그먼트와 필드, 컴포넌트,       서브컴포넌트의 구조관계

그 다음 필드레벨마다 각각의 데이터 타입별로 컴포넌트 및 서브 컴포넌트 정보를 삽입시키는 프로그램을 작성 및 실행을 시켜 2차 컴포넌트 레벨 및 3차 서브 컴포넌트 레벨까지의 세그먼트 구성 법칙을 MS-Access 테이블로의 표현을 완성할 수 있었다. 그림1은 Attribute Table에서 하나의 필드가 컴포넌트와 서브 컴포넌트로의 분화 과정을 보여주고 있고, 그림2는 그 결과로 얻어진 메시지 구조 테이블의 일부를 MS-Access 화면으로 보여주고 있다.

Fig . 완성된 Message Structure Table의 일부 (MS-Access 화면)

마지막으로 메시지 타입별로 세그먼트의 구성 법칙은 HL7 매뉴얼의 각 장에서 각각의 메시지타입을 기술, 설명하는 부분인 Trigger Event and Message Definition에 표시된 각 메시지 타입별 메시지 구성 도표를 개별 복사한 다음 이 역시 변환 프로그램을 통하여 이 정보를 MS-Access 테이블로 변환 저장하였다. 이에 관하여는 선행 연구로서 이미 발표된 내용이기 때문에 상세한 설명은 생략하겠다[9].

3. 메시지 구성 알고리즘(Generating Algorithm)

그림3은 메시지 구조 테이블을 활용하여 메시지 세그먼트가 구성되는 원리를 설명한 내용이다. 메시지가 구성되려면 응용 프로그램에서 메시지에 들어가야 할 데이터들이 투입되어야 하는데 이는 응용프로그램에서 확보한 버퍼에 저장이 된다. 메시지 구성 데이터 버퍼에는 소속될 세그먼트와 필드 및 컴포넌트 서브 컴포넌트 순번이 같이 입력되고 데이터의 수집이 완료되면 메시지 타입별로 정해진 세그먼트 순서대로 정렬을 시키고 그다음 필드, 컴포넌트, 서브 컴포넌트 순번대로 정열을 실시한다.

그 다음, 각각의 세그먼트별로 세그먼트 구성정보를 메시지 구조 테이블로부터 추출하여 별도의 버퍼에 저장한 다음 메시지 구조 테이블의 각각의 필드, 컴포넌트, 서브 컴포넌트별 정보를 하나하나 추출하여 해당 순번의 데이터 버퍼에 해당 데이터가 있으면 데이터를 삽입한 후 델리미터를 첨가하고 해당되는 데이터가 없는 경우에는 그냥 델리미터만을 첨가시켜 세그먼트를 구성해 나간다.

4. 메시지 해석 알고리즘(Parsing Algorithm)

메시지 해석 알고리즘은 구성 알고리즘에 비하여 대단히 복잡하고 그 구성원리가 복잡하다. 우선 하나의 메시지에 대하여 세그먼트, 필드, 컴포넌트, 서브 컴포넌트 별로 네 겹의 중복 While 반복문이 구성되기 때문에 프로그램의 구조가 매우 복잡해진다.

Java에서는 StringTokenizer라는 개체가 제공되어 델리미터를 이용하는 HL7메시지를 분해하는데 유용하게 활용될 수 있다. 세그먼트, 필드, 컴포넌트, 서브 컴포넌트별로 StringTokenizer 개체를 이용하여 완전분해를 실시하고 이들 분해 된 각각의 데이터마다 While Loop에서 nextToken()함수를 이용하여 추출한 뒤 메시지 구조 테이블의 해당 세그먼트, 필드, 컴포넌트, 서브 컴포넌트 정보와 결합시켜 나간다.

Fig . 메시지 생성과정의 예

Fig . Web 기반 메시지 해석용 Browser 화면

III. 결 과

본 연구에서 개발된 알고리즘의 효용성을 실험하기 위하여 메시지 구성 알고리즘을 실험하기 위하여 Visual Basic으로 가상의 임상정보에 대한 메시지 생성 프로그램을 작성하였고 해석 알고리즘의 성능을 실험하기 위하여 Java Servlet 프로그램으로 Web에서 동작하는 메시지 브라우저를 개발하였다. 그림4는 이 메시지 브라우저의 화면을 보여주고 있다[10][11].

또한 해석결과를 점검하기 위하여 상용 HL7 인터페이스 도구인 Chameleon의 메시지 브라우저를 이용하여 해석결과를 비교하였다[12].

메시지 생성기능에 적용될 메시지 타입으로는 ADT_A01와 ADT_A03 메시지를 적용하였고 생성된 메시지를 자체 Web 기반의 메시지 브라우저와 Chameleon 메시지 브라우저를 통하여 해석기능을 점검하여 보았다.

시험결과 메시지 생성기를 통하여 생성된 20개의 메시지에 대하여 해석을 실시한 결과 모두 오류 없이 해석이 완료 되었다. 그러나 이중 반복 구조 델리미터(□∼□)가 적용된 6개의 메시지에서 반복구조의 메시지 해석이 이루어지지 않아 이의 보완이 필요한 것으로 여겨졌다.

IV. 결 론

짧은 개발기간과 제한적으로 투입된 자원에 비하여 산출된 결과는 전반적으로 비교적 양호한 것으로 판단되었다. 반복구조 델리미터에 대한 해석은 현재 메시지 구조 테이블에 기반한 해석기법이 갖고 있는 최대의 해결과제 여겨진다. 이 반복구조 델리미터의 문제가 해결하기 어려운 이유는 각 단계별의 델리미터를 StringTokenizer로 분해하고 또한 이를 Rule Table의 필드, 컴포넌트, 서브 컴포넌트별 정보(Attribute)와 결합시키는 과정이 4중 Loop 구조를 이용하여 단방향성으로 진행되기 때문에 반복구조 델리미터의 경우 특정한 엘리먼트에서 재귀적인 연결동작이 요구되는 경우를 만족시키기가 쉽지 않기 때문이다. 이에 대한 해결은 지속적으로 연구하여 반드시 해결하여야할 과제로 여겨진다.

그러나 반복구조가 적용되지 않는 메시지에 대해서는 지금까지의 시험작동 결과 아무 문제없이 메시지 해석이 이루어지는 것으로 판단되고 있다.

향후 보다 다양한 형태의 메시지에 대한 점검과 시험이 필요할 것으로 여겨지며 보다 손쉽게 응용프로그램에 적용되어질 수 있도록 이를 규격화하고 기능별로 모듈화 하는 작업도 향후 필수적으로 해결하여야할 과제로 여겨진다.

참고문헌

1. 한국보건산업진흥원, Introduction to Health Level Seven, 2000. 12.

2. 임창수, HL7을 위한 Toolkit과 시스템 설계, HL7 Korea 1차 Workshop, 2001.2.16.

3. 공재근외, Health Level Seven과 개발도구, 한국보건산업진흥원, 2002.12.

4. 이현우, 천영환, Java Bible Programming for JDK 1.3, 영진.com, 2001.

5. 김희연, 한글 비주얼베이직 6.0 입문에서 활용까지, 삼양출판사, 2000.

6. 김창수, 이수진, 액세스 데이터베이스, 혜지원, 2003.

7. 허정수, 한규섭, Powered by MySQL, 베스트북, 2002.

8. Health Level Seven Standard version 2.4, 2000

9. Um KS, Cho H, Kim IK, Kwak YS, Development of Verifying Algorithm for Segment Structures of HL7 Message Event Types Using Tree Data Structure and Event Type Database, Journal of KOSMI, Vol8, Supplement1, 2002 Fall, pp134-135

10. Um KS, Cho H, Kim IK, Kwak YS, Development of HL7 Message Browser on Web Environment, Journal of KOSMI, Vol8 Number3, 2002 Sep., pp1-9

11. http://155.230.148.142:8080/um/msg2.html

12, Chameleon Engine ver.3.206, iNTERFACEWARE, 2001.