打开文本图片集
DOI:10.16644/j.cnki.cn33-1094/tp.2016.09.001
摘 要: 为实现符合HL7标准的医学信息的解析、网络传输,以及ER7格式与XML格式的转换,将HL7信息解析成为“Message”抽象数据结构实现解析;通过构建符合HL7标准的客户端和服务器实现HL7的传输通信;通过先将ER7/XML格式的HL7信息解析为“Message”数据类型,再构建成另外一种信息格式(XML/ER7),实现两种格式的互相转换。实现了HL7解析、传输与格式转换功能,并用Messaging Workbench对消息传输进行了测试验证,证明构造的客户端和服务器能够相互通信并符合HL7标准。HL7信息解析、传输是众多医疗信息系统的核心功能,对解决“信息孤岛”问题是大有裨益的。
关键词: HL7标准; HAPI工具包; 解析; 传输; 格式转换
中图分类号:TP391 文献标志码:A 文章编号:1006-8228(2016)09-01-04
Research and implementation of HL7 message parsing, transmitting
and format converting technology
Gu Yu1, Liu Yang1,2
(1. School of Information Engineering, Inner Mongolia University of Science and Technology, Baotou, Inner Mongolia, 014010;
2. BaoTou Wulan Road Depatrment, China Galaxy Securities Co.,LTD)
Abstract: For medical information of HL7 standard to realize the parsing, transmission and format conversion between ER7 and XML, HL7 messages is parsed to "Message" abstract data structure; HL7 client and HL7 server is constructed and a two step converting method is used. The functions of parsing, transmission and format conversion are realized in this paper, and the message transmission function is tested and verified by Messaging Workbench. The constructed client and server are proved to be able to communicate each other, and to meet the HL7 standard. HL7 information parsing and transmission are the core function of many medical information systems, which is helpful to solve the "information island" problem.
Key words: HL7 standard; HAPI; parsing; transmission; format conversion
0 引言
随着大数据时代的到来,采用统一的医学信息化标准共享海量的医疗数据,方便医生更好地诊断病患,已成趋势。国务院办公厅在全国医疗卫生服务体系规划纲要(2015-2020年)中明确指出:“加强人口健康信息化建设,到2020年,实现全员人口信息、电子健康档案和电子病历三大数据库基本覆盖全国人口并信息动态更新。全面建成互联互通的国家、省、市、县四级人口健康信息平台,实现公共卫生、计划生育、医疗服务、医疗保障、药品供应、综合管理等六大业务应用系统的互联互通和业务协同[1]。”
目前,HL7(Health Level 7)作为OSI第七层即应用层相关标准。HL7标准是由美国HL7组织开发的国际标准,具有世界权威(多于55个国家,多于1600个个人会员,多于500个企业会员使用HL7),用于医学信息系统的互通互联[2]。HL7标准已经成为医疗信息行业中应用最为广泛的医疗信息交换标准之一[3]。
由于控制开发成本等原因,我国的医院信息系统一般都是医院与设备开发厂商协商解决。不同的医院信息系统,采用不同的数据格式,严重地阻碍了不同医院、不同设备开发商的医院信息系统之间的互联互通、信息共享,使得各医疗卫生机构的信息系统由于不能相互通信而成为“信息孤岛”[4]。采用国际通用标准HL7,作为我国统一的医学信息化标准对解决数据格式不统一而造成的“信息孤岛”问题是大有裨益的。
1 概述
1.1 HL7标准
HL7组织成立于1987年,是一个非盈利的、ANSI公认的标准研发组织,致力于提供交流,整合,共享和检索电子健康信息,支持临床实践和管理、健康服务评价。HL7指在OSI网络七层模型中,HL7将应用在第七层,作为应用层的相关标准,重点开发医疗卫生行业,特别是临床、检验、保险及管理等部门,以加强医学信息资源的共享和整合。
随着HL7标准的广泛应用,采用HL7国际标准实现医疗信息化,可以使不同设备厂商、不同医院的信息系统和医用仪器,医疗设备可以无障碍的互通互联、信息资源共享。在医疗信息化的基础上,可进一步实现患者与医生、医务人员、医疗设备、医疗机构之间互动,为智慧医疗奠定基础。
1.2 HAPI开源工具
HAPI,由加拿大Health Network大学编写,是解析HL7 v2.x消息的面向对象的Java开源工具[6]。2014年5月,HAPI推出最新版,HAPI 2.2。在该最新版本中,HAPI引入了FHIR(Fast Healthcare Interoperability Resources,快速医疗互操作性资源)规范,可以方便的实现基于HL7标准编程。
采用HAPI开源工具,可以节省支持HL7 v2.x标准的医疗信息系统研发时间,提高效率,降低难度。由于HAPI开源工具对HL7 v2.x消息的构造和解析提供了非常良好的支持,所以采用HAPI工具对开发支持HL7的医院信息系统、HL7引擎、HL7中间件、DICOM/HL7网关、健康管理系统等信息系统大有帮助[9]。
1.3 Messaging Workbench工具
HL7 Messaging Workbench(MWB),是基于Windows平台的HL7一致性测试工具[7]。MWB由Peter Rontey开发,隶属于HL7一致性特殊兴趣小组(HL7 Conformance SIG)。MWB可对HL7 v2.x消息进行一致性验证。本文采用HL7 Messaging Workbench作为测试工具,对研究工作中的HL7医学信息传输功能进行了互联互通测试。
2 基于HAPI实现HL7消息的解析、传输与HL7消息格式转换
2.1 HL7消息的解析
HL7消息解析是将符合HL7标准的HL7消息,解析成为一种抽象的数据结构,在该数据结构中包含了医院信息系统等相关系统所需要获取的数据。在HAPI中,这种抽象数据结构被定义为“Message”, “Message”是一个接口类型,它可以描述一个完整的HL7消息,包含HL7信息中的所有的结构、段和字段[10-12]。
2.2 HL7消息的传输
2.2.1 HL7客户端——HL7Client
本文采用C/S架构实现HL7医学信息的传输通信。其中HL7客户端工作原理如下:首先,初始化设置网络连接,根据IP地址以及端口号寻找并连接处于正处于监听状态的HL7服务器;然后,对要发送的ER7或XML格式的HL7消息进行解析,判断发送的消息是否符合HL7标准,如果不符合,需要重新构建;最后,发送HL7消息至HL7服务器,并接收来自HL7服务器的确认消息。HL7Client工作流程如图1所示。
[No][No][Yes][Yes][初始化网络][连接成功?] [开始][连接HL7监听服务器][解析HL7消息(ER7/XML格式)][解析成功?] [发送HL7消息][接收HL7确认消息][回收资源][结束]
图1 HL7Client工作流程
系统HL7客户端具备以下功能:①建立/删除与HL7服务器之间的连接;②支持采用单端口或双端口通信(消息发送和接收可以分别采用不同的端口);③将服务器与客户端的连接进行记录并存储;④发送HL7信息并接收来自HL7服务器的确认信息,完成通信。
2.2.2 HL7服务器——HL7Server
HL7服务器工作原理:首先,初始化网络,设置监听端口号,使HL7Server处于监听状态。然后按照HL7客户端的连接请求,建立与HL7客户端相应的连接。接收来自HL7客户端的HL7消息,并根据服务器的HL7消息接收状态返回相应的确认消息进行确认。HL7Server工作流程如图2所示。
[No][No][Yes][Yes][初始化网络][连接成功?] [开始][建立与客户端的连接][接收HL7消息][解析成功?] [发送HL7确认消息][关闭服务器][结束] [监听连接] [解析接收到的HL7消息(ER7/XML)][创建失败信息]
图2 HL7Server工作流程
系统HL7服务器具备以下功能:①监听来自客户端的连接请求;②支持单端口和双端口通信(双端口通信是指消息发送和接收采用不同的端口);③接收来自客户端的HL7消息,并保存至数据库;④对接收到的HL7消息进行处理,根据处理状态,回复确认消息。
研究工作采用多线程技术和线程同步技术构建HL7Server,可以避免一直处于监听状态的HL7Server阻塞。利用多线程,分别用于监听来自HL7Client的连接、接收HL7消息并根据处理状态返回确认消息、并将接收的HL7消息和确认信息存储及显示。为了避免采用多线程技术中存在的访问冲突情况,采用线程同步技术,对访问对象上锁,确保线程同步互斥访问。
2.3 HL7消息格式转换
HL7消息格式转换是指HL7传统格式ER7 (“vertical bar” encoded)与XML格式的转换。因为XML是国际上通用的数据交换格式,系统支持ER7与XML格式相互转换,不仅可以直接利用目前大量的成熟XML处理工具,节省了研发ER7格式解析模块的精力和时间,减小了研发和维护的系统开销,而且还可以更加方便与采用XML数据格式的医疗相关系统,如商业财政管理系统相互通信,也方便今后HL7 v2.x系统向HL7 v3升级[13]。HAPI定义的构造解析器中,PipeParser用于构造解析ER7格式的HL7消息,DefaultXMLParser用于构造解析XML格式的HL7消息。当XML格式向ER7格式转换时,先用DefaultXMLParser将XML格式的消息字符串解析为“Message”,再对已解析的消息用PipeParser进行ER7格式构造,生成ER7格式的HL7消息字符串,因而完成了XML格式向ER7格式的转换,反之亦然。
3 实现结果
3.1 解析HL7消息
HAPI开源工具定义了四种构造解析器,FastParser、PipeParser、DefaultXMLParser和GenericParser:其中FastParser和PipeParser用于构造/解析ER7格式、DefaultXMLParser用于构造/解析XML格式,GenericParser用于构造/解析ER7或 XML格式的消息字符串。研究工作采用GenericParser,将ER7格式或者XML格式的HL7消息字符串解析为抽象数据结构“Message”,并根据HL7消息自身的层次结构特点,以树结构进行显示。图3为HL7消息解析以及ER7格式与XML格式的HL7信息互相转换。
图3 HL7解析、构造、ER7格式与XML格式的互相转换
3.2 传输HL7消息
3.2.1 设置HL7Server
⑴ HL7Server初始化设置,设置HL7Server要监听的端口号,可以选择单端口或双端口进行监听。
⑵ 运行HL7Server。
初始化设置后,HL7Server的监听服务开启,并可以执行停止监听以及清除服务器信息等操作。
3.2.2 设置HL7Client
⑴ HL7Client初始化设置,设置HL7Server的主机名(IP地址)和其监听的端口号(采用余HL7Server监听的单端口或者双端口一致的设置),找到正在监听状态的HL7Server,并连接。
⑵ 运行HL7Client。
当HL7Client与HL7Server的连接建立后,HL7Client通过连接向HL7Server发送HL7消息、并接收来自HL7Server的确认消息。通信完成后,断开与HL7Server之间的连接。
研究工作采用HL7官方提供的测试验证工具Messaging Workbench,对HL7Client以及HL7Server进行连接测试。其中对HL7Client的连接测试如图4所示。测试结果证明,研究工作构建的HL7Client和HL7Server运行成功,符合HL7标准。
图4 用Messaging Workbench对客户端进行测试
4 结束语
在支持HL7标准的系统构建过程中,HL7医学信息解析、数据传输和消息格式转换是实现医疗信息交换的关键技术之一。本文根据HL7消息的自身层次结构特点进行解析,采用Client/Server架构,构建符合HL7标准的客户端和服务器实现HL7信息通信,并实现了对两种HL7的消息格式:XML格式和ER7格式互相转换。研究工作采用HL7官方组织提供的测试验证工具HL7 Messaging Workbench(MWB),对符合HL7标准的客户端和服务器的进行数据传输测试。测试结果成功地验证了HL7客户端和HL7服务器功能的正确性,并符合HL7标准。由于HL7 V3标准实现难度较大,目前本文没有实现对HL7 V3标准的消息进行处理。在今后的工作中,会对功能进行扩展,支持HL7 V3标准,使功能更全面。
随着医学信息技术的快速发展,医院内的HIS和RIS、HIS和PACS,医院间的HIS和HIS之间的信息融合与信息共享的需求越来越强烈,因此,医疗信息行业需要统一的国际标准,以促使医院设备能够相互通信。目前,HL7已经成为一个公认的医疗信息系统间相互通信的国际标准,研究并应用HL7医疗信息国际标准,实现医疗数据的传输与共享,将具有非常重要的价值和现实意义。
参考文献(References):
[1] 全国医疗卫生服务体系规划纲要(2015—2020年)[DB/
OL].http:///zhengce/content/2015-03/30/content_9560.htm
[2] 齐国隆,孔令人,邹宗峰.HL7在公共卫生信息系统中的应用[J].
现代预防医学,2006.33(6):962-964
[3] 蔡晓白.HL7标准下的医疗信息系统融合[J].医学信息学,
2012.31(1):28-31
[4] 陈薇薇.Mirth平台和HL7标准下的PACS/RIS与HIS接口
设计及其应用[J].医学信息学,2012.31(1):25-27
[5] 王海舜,王宏宇.基于HL7的HIS信息交换解决方案探讨[J].
中国医疗器械杂志,2008.32(2):111-123
[6] HAPI http://hl7api.sourceforge.net/
[7] Lopez Diego M., Blobel Bernd G.M.E.development
framework for semantically interoperable health information systems[J]. International Journal of Medical Informatics,2009.78(2):83-103
[8] 梁铭会,俞汝龙.医疗健康信息传输与交换标准HEALTH
LEVEL SEVEN (HL7) v2.4[M].北京大学医学出版社,2007.
[9] 宋超荣,唐琳,庄龙等.基于 Web 的职业健康管理信息系统的
设计与实现[J].科学技术与工程,2005.5(18):1276-1281
[10] 谷宇.HL7消息解析及传输技术的研究与实现[D].内蒙古
科技大学,2010.
[11] 俞汝龙.HL7组织与HL7标准简介[J].中国数字医学,
2007.7:41-43
[12] 吕晓琪,贾伟涛,谷宇,于宁.基于MIF文件实现HL7 V3消
息解析器[J].重庆医学,2012.42(5):526-528
[13] 谭定英,叶辉,李学征.HL7在电子病历信息交换的应用[J].
医学信息,2007.20(6):909-910