HL7
HL7 卫生信息交换标准(Health Level 7)标准化的卫生信息传输协议,是医疗领域不同应用之间电子传输的协议。HL7汇集了不同厂商用来设计应用软件之间界面的标准格式,它将允许各个医疗机构在异构系统之间,进行数据交互。
HL7 概况
1、HL7委员会及发展史。
HL7(Health Level 7)作为一个机构,成立于1987年,从1994年起是美国国家标准局(ANSI)授权的标准开发组织(SDO)之一,是从事医疗服务信息传输协议及标准研究和开发的非盈利组织。
HL7现有会员2200多,其中团体会员超过1500个,代表世界上主要国家和包括医疗方面90%的信息系统供应商。参与HL7技术合作与推广的国家和地区除美国外,还有澳大利亚、加拿大、中国、芬兰、德国、日本、荷兰、新西兰、英国、印度、阿根廷、南非、瑞典、韩国、台湾等。
HL7委员会的目的是开发和研制医院数据信息传输协议及标准,优化临床及其管理数据信息程序,降低医院信息系统互连的成本,提高医院信息系统之间数据信息共享的程度。
HL7委员会目前(截至2002年12月为止)设立了21个技术委员会
技术指导、构建回溯体系、 临床上下文对象工作组(CCOW), 临床诊断支持,控制、查询,教育,财务管理, 国际会员接纳,营销,病历记录、信息管理, 建模和方法学,医嘱、观察资料,病人管理,病人护理, 人员管理,处理步骤改善, 出版,临床研究信息管理,工作安排和后勤,结构化文档,术语
15个特殊兴趣委员会(Special Interest Groups,SIGs):
阿登语法,附件,临床指导方针, 临床基因, 社会基本健康服务,兼容性, 电子病历(EMR) ,政府计划,图像集成,Java ,实验室自动化和测试,药物治疗,安全和责任,模板,XML
HL7的委员会并不是固定不变的,特别是SIGs是可以由会员自由申请成立的 。
2、HL7标准的目标与特点。
HL7作为标准它是开放系统互联(OSI)七层协议第七层(应用层)的协议。
是作为规范各医疗机构之间,医疗机构与病人、医疗事业行政单位、保险单位以及其它单位之间各种不同信息系统之间进行医疗数据传递的标准。
作为信息交换标准,HL7自1987年发布V1.0版后相继发布了v2.0 v2.1 v2.2 v2.3 v2.3.1,2000年发布了v2.4版,现已用XML开发了v3.0版,但HL7 v2.4版本仍是目前ANSI正式发布的版本 。
HL7目标:
(1) HL7标准应该支持各种技术环境下的数据交换,同时也应支持各种编程语言和操作系统,以及支持各种通讯环境。
(2) 同时支持单数据流和多数据流两种通讯方式。
(3) 最大限度的兼容性,预留了供不同使用者 使用的特殊的表、编码定义、和消息段(如:HL7的Z-segments)。
(4) 标准必须具有可扩展性,以支持新的要求,这包括协议本身的扩展及与现有系统和新 系统的兼容。
(5) 标准应该是在充分参考现有的产品通讯协议基础上,被广泛接受的工业标准。
(6) HL7的长期目标就是制定一种用于医疗机构电子数据交换的标准或协议。
HL7的特点:
完整性-对基本的医嘱,财务,检验信息都有了规范的描述,而且做得非常详细,如病人的饮食忌讳,宗教信仰等按照相应的ISO标准描述。
可实现性-选择OSI第七层做标准,保证其可实现性。
兼容和扩展性-包括对中药计量单位的支持。
安全性-由于HL7的开发和兼容性导致安全性很难保障,尽管支持数字签名,但主要还是要靠网络底层协议保证。
HL7的实现方法:
一、采用点对点通讯方法以实现不同系统的对接;二、采用HL7服务器的方法实现,HL7Server实际上是应用服务器,形成居于HL7接口的中心数据库,这样可以减少接口数量,提高系统可靠性。
[编辑本段]HL7消息的结构:
HL7标准包含256个事件、116个消息类型、139个段、55种数据类型、408个数据字典,涉及79种编码系统。HL7通讯协议中,有四个最基本的术语概念:
★触发事件(trigger events):当现实世界中发生的事件产生了系统间数据流动的需求,则称其为触发事件。
★消息(message):它是系统间传输数据的最小单位,由一组有规定次序的段组成。每个消息都是用一个消息类型来表示其用途。
★段(segment):它是数据字段的一个逻辑组合。每个段都用一个唯一的三字符代码所标志,这个代码称作段标志。
★字段(field):它是一个字符串,是段的最小组成单位。
在HL7通讯协议中,消息(Message)是数据在系统之间交换的基本单元,每条消息都有各自的消息类型(V2.4共有112种),用于定义消息目的消息类型中有触发事件。一个消息由多个段(Segment)组成,每一段都有相应的名称,用于界定其内容或功能(V2.4共有138种)。
而一个段又由多个数据字段(Data Field)组成。一个消息中的第一个段总是消息头段(Message headsegment),它指明了发送和接收的程序名、消息类型、以及一个唯一的消息ID号码等,接下去段的构成由消息的类型决定。如,PID段(PatientIdentificationData)包括姓名、地址、社会保险号等。一个数据字段又有可能由多个组件组成。有些消息可进一步由事件码(eventcode)细分。以下为一个HL7消息实例:
实际信息:转院患者,患者王海于2002年12月1日上午11点12分由301医院急诊室转往北医三院急诊外科李四。301医院转诊系统转诊确认后2分钟向北医三院发出患者转诊信息和患者基本情况:张三,身份证号110108197404012346,男性,住址:海淀区复兴路38号,电话:85591234。转成HL7消息后为:
MSH|^~\&|005^急诊室|0802^301医院|0052^急诊外科|0801^北医三院
|200212011114|SECURITY|RPA^I08|MSG00001|P|2.4|<cr>
EVN|I08|200212011112||<cr>
PID||||330108197404012346||张三|19740401|男||C|海淀区^复兴路^38号^100083|8559-1234|||<cr>
PV1||急诊外科||||0007^李四|||急诊科|<cr>
其中MSH是消息头(Message Header)
EVN是事件类型(Event Type)
PID是病人基本资料(Patient Identification)
PV1是病人住院情况(Patient Visit)
<cr>结束一个segment,该值不能被执行者改变。
[编辑本段]HL7接口引擎工作原理
HL7接口引擎的工作原理如右图:★Send/Receive module(发送/接收模块):支持TCP/IP通讯协议,HIS系统向数据中心发送电子病历信息,信息格式为符合HL7标准的字符串格式。数据中心接收并解析HL7信息,将解析后的信息存到数据中心的数据库中,完成后回复发送端一个ACK确认信息,确认信息已经发送成功。
★HL7 Adaptor module(转换模块):实现字符串格式数据与XML格式之间的相互转换,对信息格式进行检查验证,保证发送/接收病历数据的正确完整。
★HL7 API module(应用接口模块):提供符合HL7标准的应用接口,医疗应用系统可以调用接口函数,按照HL7标准格式填写参数,实现向其他医疗应用系统发送数据。该模块也可以调用符合HL7标准的Windows组件应用程序,将医疗信息数据传递给医疗应用系统,实现接收其他医疗应用系统的数据。
★HL7 Resource module(HL7资源模块):支持各种实际应用的HL7医疗信息事件,如检查医嘱、转诊等。
★Mapping module(对照模块): 提供翻译对照功能,可以按照医疗应用系统进行定制。
对于HL7接口引擎的概念,可以这样理解,它是一组支持HL7通讯的过程调用函数或控件,应用程序按照HL7接口引擎的约定提供参数,模块之间的通讯则由HL7接口引擎完成。在国外发达国家中,目前主流的医疗信息整合技术为“HL7/XML接口引擎”,它是整合多种技术合成的医疗信息整合技术,用以转译各种医院信息系统数据至符合HL7标准的XML信息格式,以实现各种医疗卫生信息系统之间的信息共享与交换。要深入了解HL7接口引擎的原理,我们还是必须要从数据通讯这个方面来研究。在数据通讯方面,有两种层次的数据交换应用。第一层次数据交换应用,是对现有信息进行处理,只是"交换"现有的系统中存在的信息数据。第二种层次的是基于不同系统之间进行整合的数据通讯,其目的达到不同系统之间的无缝连接而进行的数据通讯和数据交换应用。在这个层次的数据交换不仅要交换各种结果信息,同时还要交换各种过程信息,从而达到系统之间的交互目的。基于以上两个层次的数据交换方式,对应基于HL7的数据交换也存在两种方式。一种“HL7Engine”方式,主要目的是使得用户原有正在使用运行的且不能替换的系统具有HL7的通讯能 力。另一种是“HL7Ready”方式则是在整个系统中,在各个应用终端已经对HL7的接口协议进行了设计和处理,各个终端都应当可以接收和处理HL7消息,并进行相关的处理。在理论上可以达到系统和系统之间实时的交互运作,可以相互主动地在"需要的时候"获取对方可以提供的数据信息。