您好,欢迎来到华佗养生网。
搜索
您的当前位置:首页HL7医学信息解析及格式转换技术研究

HL7医学信息解析及格式转换技术研究

来源:华佗养生网


内蒙古科技大学

本科生毕业设计说明书(毕业论文)

题 目:HL7医学信息解析及格式转

换技术研究

学生姓名:沈东 学 号:0867118241 专 业:电子信息工程 班 级:信息2008-2班 指导教师:张宝华 副教授

内蒙古科技大学毕业设计说明书(毕业论文)

HL7医学信息解析及格式转换技术研究

摘 要

随着人们生活水平的不断提高,人们对医疗与健康的认识进一步增强,特别是在某些突发性传染病的严重冲击下,如H1N1、非典、艾滋病等的严重打击下,有关区域卫生信息交换的需求越来越强。区域卫生信息化建设涉及各医疗卫生单位之间的数据交换和整合,由于很多单位都是自行开发或是软件提供商开的标准,它们并不统一,从而导致了医疗信息交换的难度加大,所以需要一系列数据交换整合标准。

HL7消息解析是将HL7消息字符串解析成为一种抽象数据结构,它是众多医疗信息系统的核心功能之一。在熟悉并理解HL7标准下,掌握HL7两种消息编码格式和规范;实现了HL7医学信息解析及两种编码格式之间的互相转换,即ER7/XML转换。

本设计采用Java语言编程,使用Eclipse集成开发环境,HAPI开源工具包辅助开发,实现解析HL7消息的功能并将HL7两种信息格式编码互相转换,并对它们进行研究具有非常重要的现实意义。

关键词:HL7;信息解析;格式转换;技术研究;

I

内蒙古科技大学毕业设计说明书(毕业论文)

The Research of HL7 Medical Information Analytical and Format

Conversion Technology

Abstract

With the continuous improvement of people's living standards, medical and health awareness is further enhanced, especially under the severe impact of some sudden infectious disease, such as a severe blow to H1N1, SARS, AIDS, the Regional Health the growing demand for information exchange. Construction of regional health information involving data exchange and integration between the various health units, many units are self-developed software provider, open standards, they are not uniform, resulting in the exchange of medical information difficult so a series of data exchange integration standard are required.

HL7 message parsing the HL7 message string parsing as an abstract data structure, it is one of the core function of the number of medical information systems. The research is required to be familiar with and understand the HL7 standard, master HL7 two message encoding format and standard; to achieve the mutual conversion between HL7 medical information analytical and two kinds of encoding formats, ER7 format and XML format.

This design uses the Java programming language, using the Eclipse integrated development environment, the HAPI open source toolkit supporting development, and function to parse the HL7 message and HL7 two types of information encoded interchangeable, and research has very important practical significance.

Key words: HL7 (Health Level Seven); Information Analysis; Format Conversion; Technology Research;

II

内蒙古科技大学毕业设计说明书(毕业论文)

目 录

摘 要 ......................................................................................................................................... I Abstract ..................................................................................................................................... II 第一章 引 言 ............................................................................................................................ 1

1.1 研究背景 ..................................................................................................................... 1

1.1.1 HL7的发展历史 ............................................................................................... 2 1.1.2 其它一些医疗信息交换标准的介绍 .............................................................. 2 1.2 HL7标准在国内外的应用 .......................................................................................... 3

1.2.1 HL7在我国的推广 ........................................................................................... 3 1.2.2 国外的HL7工具包和相关产品 ..................................................................... 4 1.3 论文结构 ..................................................................................................................... 6 第二章 HL7 V2标准 ................................................................................................................ 8

2.1 HL7 ............................................................................................................................... 8

2.1.1 基本概念 .......................................................................................................... 8 2.1.2 数据类型(Data Types) ................................................................................... 11 2.1.3 HL7工作原理 ................................................................................................. 11 2.1.4 HL7标准的应用 ............................................................................................. 14 2.2 HL7消息处理 ............................................................................................................ 14

2.2.1 应用程序处理规则 ........................................................................................ 14 2.2.2 确认消息 ........................................................................................................ 15 2.2.3 显示消息 ........................................................................................................ 15 2.3 查询 ........................................................................................................................... 15

2.3.1 查询触发事件和消息定义 ............................................................................ 16 2.3.2 原始模式查询 ................................................................................................ 17 2.3.3 原始模式延迟访问 ........................................................................................ 17 2.3.4 增强模式查询消息 ........................................................................................ 17 2.3.5 增强查询模式应答消息 ................................................................................ 17 2.3.6 查询消息执行要点 ........................................................................................ 17 2.3.7 查询错误应答 ................................................................................................ 17

III

内蒙古科技大学毕业设计说明书(毕业论文)

2.4 HL7 V2.X编码方式 .................................................................................................. 18

2.4.1 ER7编码方式 ................................................................................................. 18 2.4.2 XML格式消息 ............................................................................................... 18 2.5 本章小结 ................................................................................................................... 20 第三章 HL7消息解析 ............................................................................................................ 21

3.1 HL7分析协议 ............................................................................................................ 21

3.1.1 V2.x HL7消息结构 ........................................................................................ 21 3.1.2 V2.x HL7消息解析 ........................................................................................ 21 3.2 编码、解析的类函数 ............................................................................................... 23 3.3 本章小结 ................................................................................................................... 24 第四章 HL7消息格式转换 .................................................................................................... 25

4.1 HL7消息格式转换 .................................................................................................... 25

4.1.1 HL7消息格式转换目的和意义 ..................................................................... 25 4.1.2 ER7格式的消息转换为对应的XML格式的消息 ...................................... 25 4.1.3 XML格式的消息转换为对应的ER7格式的消息 ...................................... 26 4.2 HL7消息两种格式转换的函数 ................................................................................ 27 4.3 本章小结 ................................................................................................................... 29 第五章 HL7的影响 ................................................................................................................ 30 第六章 总结与展望未来 ........................................................................................................ 31

6.1 总结 ........................................................................................................................... 31 6.2 展望未来 ................................................................................................................... 31 参考文献 .................................................................................................................................. 33 致 谢 ...................................................................................................................................... 35

IV

内蒙古科技大学毕业设计说明书(毕业论文)

第一章 引 言

1.1 研究背景

当今,随着计算机技术和互联网的飞速发展,把信息化社会进程推进了一个崭新的阶段,信息的传送与交流已成为整个社会生活正常运作的重要基础。

对于医疗信息产生、管理、传递及格式转换等也出现了许多问题,这迫切需要人们来处理解决这些问题,也就形成了标准。对于标准的起源,可以这样理解:标准化是随着多方应用而产生的,应用是标准产生的前提条件。每一个行业能存在的基础就是能应用于生活,在应用中,要达到最好的效果,标准化是必由之路。只有标准化了,市场才能细分,行业才能实现利润。医疗疗行业也是同样如此,只有在医疗市场细分后,医疗信息化相关的IT厂商才能在这个行业的某一个方面做专做精,这样才能有利可图。

从医院角度本身来讲,如果医疗行业都有了一个规范的行业通信标准,那么就能与其它医院进行医疗信息资源的共享,医院本身就实现优化了。工作效率的提高,以便于降低医疗的成本,这样在进行医疗信息系统HIS(Hospital Information System)建设时,常常只能对一家医疗信息系统HIS制造商进行选择,只有这样医院的各个业务模块才能实现资源共享[1]。这样选取就不存在局限性了,不仅能选到在某一模块上领先的其它系统制造商,所以要形成一个统一的标准。

现如今,医院信息系统HIS已经广泛使用,如果由于缺少统一的医疗信息交换标准,使得各医院内部的的信息系统之间、不同的医院的HIS之间以及医院与保险公司之间的信息交流成为瓶颈,结果反而让每个医院都成了信息的孤岛,这样不论是对于医疗信息化事业的发展,还是对人们生活保障水平的提高,都是十分不利的。为了解决由于信息交换的标准不同而出现的种种问题,这样在医疗信息行业中HL7标准技术就产生了。

HL7是由Health Level Seven, Inc.(美国)制定和维护、用于不同的医疗系统之间进行医疗数据传递的标准,美国作为当今世界的科技大国,它所广泛应用和发展的医疗信息交换标准HL7,逐渐走上了世界医疗卫生信息技术舞台。目前,HL7组织的国际会员有20多个国家,我国在数据中心平台建设、标准软件接口开发、跨医疗体系系信息交换整合等工作中引进HL7的数据交换传递标准,使我国医疗卫生信息网建设从一开始就与国际接轨,为以后的国际医疗信息互联网交流和我国各医疗单位医疗信息互联互通打下基础,同时为我国各医疗单位软件的开发提供了一个规范,避免信息化建设过程中

1

内蒙古科技大学毕业设计说明书(毕业论文)

的资源信息的无谓浪费。现在的大多数医院基本上安装了计算机系统,拥有一整套入院、出院、转院、放射、开票、临床试验及记账等功能[2]。由于这些应用功能一般都是由不同厂商或组织分别提供,所以每个产品都有待定的信息格式,这就需要进行格式转换,从而被不同的人们所看懂。 1.1.1 HL7的发展历史

自从1987年成立并且在1990年公布2.1版本以来,HL7标准已经走过了十多年的历程。在这期间,通过HL7组织各成员的不断努力,HL7组织结构不断发展和扩大,HL7标准内容不断的完善的更新。

组织发展:虽然HL7标准是源自美国国内的医疗信息交换标准,随着国际成员的不断加入,其发展方向、决策制定已经成为一个多国参与的活动,HL7标准之所以如此迅速的由美国走向世界,还要归功于美国医疗IT厂商,在最近三年来,HL7组织会员增加了三倍,目前已经拥有2200多个会员,除了个人会员外,已有五个赞助单位及370个团体会员,其中包括1个厂商、17个顾问单位、177个医疗机构及12个一般性的营利机构。

版本发展:在最初的HL7 1.0版本的出现覆盖所有接口结构、抽象数据集、医嘱输入、面向显示的查询。任何新兴的事物的出现都不可能是一帆风顺的,不可能是尽善尽美的,HL7 1.0从内容和形式上都有明显的不足。HL7 2.0版本应运而生,在随后的Tyson’s Corner全体会议,对HL7 2.0版本进行了准备、讨论后被确认下来。1990年正式发布HL7 2.1版本,之后又陆续推出2.2版本、2.3版本、2.3.1版本、2.4版本、2.5版本,一直到目前最新的3.0版本。

HL7标准内容的确定是一个十分严谨和规范的过程,每一个内容都是在正式的细则和投票过程下产生的。这些过程是在其它相关的医疗工业计算机机信息标准组织投票过程中被作为模型的,这些作业流程的设计符合美国国家标准学会的要求。

针对当前应的HL7版本,所涵盖的内容已经基本符合需求了。 1.1.2 其它一些医疗信息交换标准的介绍

HL7医疗信息交换标准除外,还存在一些其它的医疗信息交换标准,例如: 1. ACR/NEMA联合委员会推出的医学数字图像存储与通信标准,即DICOM标准。DICOM标准和HL7标准的主要区别在于前者侧重于图像的存储与传输,而后者侧重于文本传输。这两种标准的融合,可以实现更加全面的医疗信息交换,IHE(Integrating the Healthcare Enterprise)委员会正致力于此项工作[3]。

2

内蒙古科技大学毕业设计说明书(毕业论文)

2. ASTM标准(American Society of Testing and Materials Medical standards)。ASTM的委员会E-31是美国致力于实验室信息系统建设的组织,它下设有E-31.11、E-31.13等12个组委会负责相关医疗信息标准的制定,如ASTM1238.94和ASTME-31.11是临床实验室数据报告标准。ASTM是相对ISO/OSI计算机网络开放互联模型应用层的协议,底层协议可以是任何可靠的协议,如TCP/IP,RS232等,传送的消息由ASCH字符组成。为提高标准的通用性,HL7组织和ASTM组织在标准的制定上进行了一系列协商[4]。

3. ASC (The Accredited standards Committee) X12电子文档交换标准。ASC X12是美国一个应用于各个行业的电子数据交换的协议族,其中X12N主要侧重于医疗领域的信息交换。HL7的编码规则借鉴了X12的模型,但也有所不同。为了使标准更加通用,HL7和X12两个组织也进行了一定的合作[5]。

4. IEEE P1157组织提出的医疗信息交换标准“MEDIX一Medical Data Interchange”。它的主要目标也是建立异构信息系统间的数据交换协议,严格参照了ISO/OSI计算机网络开放互联模型的各层协议,包括远程系统服务项(ROSE-Remote operation service Element)。HL7同它的主要区别在于既没有依赖ROSE,也没有采用ASN.1BER的语法。虽然二者有所不同,HL7和MEDIX委员会一直保持联络以促进相互改进[6]。

5. 日本在医疗信息交换上有MML(Medical Markup Language)标准,MML和HL7的XML表达很类似[7]。

上述标准都可以称之为电子数据交换标准EDI(Electronic Data Interchange)。HL7标准通过与众多标准之间的相互借鉴和相互促进,已经成为当前应用最广泛的医疗信息交换标准。

1.2 HL7标准在国内外的应用

1.2.1 HL7在我国的推广

对HL7标准在我国的现状以及未来发展趋势的认识,目前的基础工作是在我国国内推广此标准。首先必须对我国医疗信息化建设的现状有清晰的认识,目前国内的的基本情况是:1997年,我国开始实施“金卫工程”,大力推广医疗信息化建设,目前国内大型医院已初步实现了信息化。

2001年7月,我国以HL7中国研究中心(HL7 CHINA)的名义正式成为HL7的国际会员,力求制定HL7 FOR CHINA的标准。这个组织的目的十分明确,即在国内医疗行业机构、学术界及厂商大力协助下,推广符合我国国情的HL7标准。目前我国对HL7

3

内蒙古科技大学毕业设计说明书(毕业论文)

标准的研究主要集中在HL7 V2.X,我国的HL7协会2005年完成了HL7 2.4版的翻译工作,我国引入HL7已经成为必然。目前也有一些医院采用支持HL7标准的设备,如福建省立医院,上海市第一人民医院,北京301西院,北医三院,天津泰达医院等,但在总体上说HL7标准在我国国内应用得并不十分广泛。

2000年6月,中国省成为HL7的国际会员,中国省卫生厅宣布HL7为医疗信息交换的官方标准,HL7 Taiwan正式成立。中国省是较早加入HL7组织的国际成员之一。“中国省健康信息交换第七层协议协会”是目前中国省的HL7组织形式,这个协会已经形成了成熟的运作模式,其组成具体包括会员大会、理事会、监事会以及各专门委员会等。 1.2.2 国外的HL7工具包和相关产品

国外的HL7组织、医疗信息系统开发商、少数用户和个人在将HL7标准应用于医疗信息交换上做了很多有意义的工作。但由于商业原因,大部分工作成果都没有公开。下面介绍国外一些主要的HL7工具包和相关产品。

1. HAPI/NHapi

HAPI/NHapi,是由加拿大Health Network大学所编写的,是用于解析HL7 V2.X消息的面向对象的java开源工具[8]。HL7 V2.X的构造器和解析器是HAPI,它的主要任务是使java程序员很容易地使用HL7。HAPI 0.6版本是在2009年7月推出,这个版本主要支持HL7 V2.5.1和V2.6。HAPI 1.0是在2010年4月推出的,这个版本提高了编译和解析HL7的速度,增加了一个新的返回工具PipeParser,和一些新的功能。在2011年6月,HAPI又推出了1.2版本,此版本带来了一些错误的修复和一些改进方法,主要焦点是固定在解析和编码问题上,尤其是一些具体问题的OBX-5(可变)值解析并得到纠正。因此HAPI是开源工具包,并很好的支持HL7 V2.X标准,所以本论文采用HAPI工具包开发。

NHapi,是HAPI的.NET版本,主要基于.NET架构,它便于程序员采用.NET编程使用HL7。NHapi工具包主要采用C#编程,它同样对HL7 V2.X有很好的支持[9]。NHapi比HAPI版本要新要慢,最新版本NHapi-2.0.2.0(.NET 2.0架构的第二版),它很好的支持HL7V2.5。

2. ProtoGen/HL7

protoGen/HL7是Gunther Schadow在德国柏林布明杰弗兰克林大学医院 (the Benjamin Franklin University Hospital,Berlin,Germany)攻读博士学位期间开发的。

4

内蒙古科技大学毕业设计说明书(毕业论文)

ProtoGen/HL7软件的主要功能是在HL7标准文本文档中自动生成符合HL7标准定义的类,其中包括类的实现和类的接口 [10]。Gunther Schadow的主要工作分为:①通过一些可用的工具(如:用AWK语言编写,它是一个程序设计语言,可以很容易地处理结构化数据和产生格式化的报告。)从HL7标准的文本文档中半自动化的能表达消息语法的简单格式或提取有用信息到表中。②在文档中用PROLOG进一步处理,并提取的信息,同时生成C++代码。③C++代码通过编译、打包成C++类库,在头文件中保存类的声明,在HL7应用程序中提供开发接口。

目前许多应用HL7的信息系统开发商集成使用ProtoGen/HL7,它能运行的操作平台是UNIX(FreeBSD),Gunther Schadow没有开发运行在windows操作平台上的版本。

3. HL7数据库的开发

在德国,Frank Oemig开发了HL7的Microsoft Access数据库,集成了HL7V2.1、V2.2、V2.3和V2.3.1等四个版本[11],并提供友好的用户界面接口,通过数据库可以很快的访问触发事件、数据类型、消息结构、表中的可选值和数据元素(包括它们的成分和子成分)。目前面向市场用的是这个数据库,同时这个数据库被打包成不同的模块,这样开发者可以根据自己的需要进行相应的定制。早在1995年10月德国的Frank Oemig在HL7用户研讨会上,介绍了用Microsoft Access数据库的实现方法和HL7数据库的结构[12],提出了怎样集成以下HL7实体的数据模型:事件、功能域、数据类型、数据元素、成分、段、表和值、消息类型等,以及怎样在数据库结构中映射组合数据类型的方法。

4. SymPhonia3

symphonia3提新西兰orion公司开发的HL7软件开发工具包。它的主要特点在于能够解析包括HL7、XML、HIPAA、X.12、EDIFACT、HCFA、ASTM、NCPDP及用户自定义格式等多种协议,直接产生符合协议定义的ActiveX对象作为编程接口,快速将工业标准转换添加到新的或己有的系统中,实现多个异构系统的集成。Symphonia3的智能映射工具可以把其中的任何一种消息格式转换为其他另一种格式,实现广泛领域中的数据通讯。它可以运行于多种操作平台上,在数据交换时具有加密功能,并且可以产生消息的RTF(Rich Text Format)或HTML文档。Symphonia3宣称能够每小时解析300万条消息。它是目前中国地区广泛应用的医疗信息交换工具[13]。

5. Neo Tools

Neo Tools是美国Neo Tool Development,LLC公司的HL7系列产品。该公司成立

5

内蒙古科技大学毕业设计说明书(毕业论文)

于1997年,专门从事医疗健康领域软件产品的开发、咨询和培训,最新与微软公司合作开发的HL7加速器能够使微软公司的Biz Talk server2000支持HL7VersionZ.x的所有版本,Neo Tools包括一系列软件开发组件:①NeoEnableForHL7:HL7编码/解码的Active X组件;②Neo Connect TCP:利用TCP/IP协议进行消息交换的Active X组件;③Neo Queue:异步消息排队组件;④NeosendForHL7:发送消息组件;⑤NeoReeeiveForHL7:接收和确认消息组件[14]。

6. Chameleon

Chameleon是加拿大iNTERFACEWARE公司的产品。该公司主要致力于开发集成到医疗信息领域的软件产品。在Chameleon的演示程序中, Chameleon在消息解析时,人机交互的界面比较多,有很多功能的实现需要手工操作,例如Segments的识别需要手工导入消息中相应Segments的定义等[15]。

7. Medi7Parser

提供HL7消息解析的编程接口的Medi7Parser解析器是由美国Eversolve公司开发的。

1.3 论文结构

HL7(Health Level Seven)标准已经成为医疗信息行业中应用最为广泛的医疗信息交换标准之一。由于HL7标准的广泛应用,国内外大多数厂商均采用HL7标准研发医疗信息行业相关产品,其中HL7消息解析是众多医疗信息系统的核心功能之一。HL7消息格式转换则实现了HL7两种编码格式之间的互相转换。本课题采用Java语言编程,使用Eclipse集成开发环境,HAPI开源工具包辅助开发,实现解析HL7消息的功能并将HL7两种信息格式编码互相转换。

综合以上,论文初步实现了医疗信息交换中消息的解析及格式转换的基本过程。论文全文分为五章,各章节的主要内容安排如下:

第一章:介绍课题的研究背景,HL7的发展历史及其它医疗信息交换标准,在我国的推广,HL7工具包和相关产品。

第二章:对HL7标准内容进行了详细说明,基本概念、分隔符、数据类型、工作原理,标准的应用;充分解释了HL7消息处理,应用程序处理规则,确认、显示、查询、延迟、执行要点及错误应答都做了充分的介绍;之后又介绍了HL7 V2.X编码方式中的ER7和XML格式消息。

6

内蒙古科技大学毕业设计说明书(毕业论文)

第三章:对HL7 V2.X消息解析做了的介绍。详细介绍了HL7 协议分析,V2.X标准的消息结构,消息解析;对HAPI开源包在解析中用到的类做了简单的说明。

第四章:介绍了HL7格式转换的研究与实现,HL7 V2.X消息格式转换的目的和意义,对HAPI开源包在格式转换中用到的包和类做了简单的说明,介绍了ER7格式消息转换为对应的XML格式消息,XML格式消息转换为对应的ER7格式消息。

第五章:HL7的影响与展望未来。介绍了HL7标准对各方面的影响,并对今后的工作进行展望。

7

内蒙古科技大学毕业设计说明书(毕业论文)

第二章 HL7 V2标准

HL7标准是建立在ISO标准组织之制定的OSI模型的最高层的应用标准,如下图2.1所示:

Application Presentation Session Transport Network Data Link Physical TCP IP LLC; MAC 物理链接

Health Level Seven FTP HTTP SMTP POP3 UDP 图2.1 OSI模型

2.1 HL7

标准资料是一种技术规范,详细的、即时的患者相关数据和临床技术知识对医疗服务有着非常重要的意义。 2.1.1 基本概念

1. 触发事件(Trigger events):开一个交换消息的现实事件,增补A包含了代表了所有定义过的触发事件的代码。这些代码代表了如一个就诊者入院或发生了一个医嘱事件的标准。

2. 消息(Message):一个消息是系统间传送数据的最小单位,它包含了一组段,这些段在一个定义好的顺序内,每个消息有一个规定了本身用途的消息类型。例如:ADT消息类型用于把一个就诊者部分的ADT数据从一个系统传送给另一个系统。

3. 段(Segments):一个段是数据字段的一个逻辑组。一个消息的段可能是必须的或可选的,它们可能在一个消息内发生一次或被重复多次,每个段有一个给定的名称。每一个段由一个惟一的三字符代码定义。

4. 字段(Fields)一个字段就是一个字符串,它是段的最小组成单位。如果没有设

8

内蒙古科技大学毕业设计说明书(毕业论文)

定值(也就是值被省略),旧值仍然保持不变。如果设置了空值,旧值就会被刷新成空。

(1)位置:段内数据字段的顺序位置,这个数字在段定义表的文本注释数据字段落中。 (2)最大长度:数据字段中出现可能占的最大字符数,最大长度在抽象消息或HL7编码规则中不是重要概念。字段长度只要合乎规范就可以,但是,一般习惯,它常在一个地点特定的基础上定义。它被用于计算组件和后面定义的子组件分隔符的长度。因为最大长度是一个单独出现的,所以重复的分隔符不包括在计算最大长度内。在段的属性表中,这个信息在标有LEN的列内。

(3)数据类型:对数据字段内容的,在这里由HL7定义了一些数据类型。 (4)可选性:到底这个字段内是必需的、可选的还是有条件的,区别这些的指令如下所示:

R-required必需的 O-optional可选的

C-conditional对触发事件或别的一些字段,是有条件的 X-not used with this trigger event没有和这个触发事件一起用 B-background compatibility向下兼容HL7以前的版本 5. 重复性:此字段是否可以重复,区别的指令如下所示: N-不能重复

Y-这个字段可以重复一个不确定的次数或地点指定的次数 整数-这个字段可以重复整数中指定的次数 6. 表(Table)

HL7为这个字段定义了一个值的表。在表的数字列中的一条记录代表表名和元素名是相同的。

用户定义表:用户定义表是于区域或是地点定义的值的集合。考虑到某些字段,如PVI-3-指定病患地点,字段的值会因机构的不同而改变。即使这些表并没有被定义于标准之内,仍然提供用户定义表以利于实作。HL7有时会发布表建议值,由于地点可能被用为起始集(例:表0001-性别)。IS数据形态也经常用于将表中的编码值。注意有些表也可能会参照到一般主档(例:表0302照顾点)。

另外,例如事件类型,因为这些类型影响了包含它们的消息的解释,所以它们是HL7标准的一部分,它们受HL7标准确定的准则的。ID数据类型经常用于做HL7的表的编码准则。只要HL7表存在,最好用它们。这些表在以标准框格式显示的文本

9

内蒙古科技大学毕业设计说明书(毕业论文)

中出现。附加的部分可能包括在一个特定场所的基础成分内。

别的表包含由相关别的标准文档编码成的准则。例如,由ASTM1238-88定义的实验室规程代码。CE数据类型用于为这些表编制准则。

最后,还有一些自定义的表,由于没有合适的官方标准存在,这些表包含可能通过机构进行标准化的准则。这些建议值会以一个标准的无框格式的文本显示。希望这些准则应用于一个机构以及按需要扩展为一个基本服务的地方。

各种各样的HL7数据类型(如CE、CF、CK、CM、CN、CP、CQ、CX、ED、ID、IS、RP、XAD、XCN、XON、XPN、XTN等)用于传达制成表的标准,或包含了有表格式标准的一个组件。

7. ID号码:为一小整数,通过标准定义的惟一标志数据子段的小整数。ID号码在HL7消息编码规则中不重要,但是对那些采用HL7标准的其它消息编码规则来说很方便。

8. 名称:对字段做描述的全局范围的惟一名称。 9. 消息分隔符(Message Delimiters) 消息分隔符的推荐值及用法见如下表2.1:

表2.1 消息分隔符

分隔符 段终止符 字段分隔符 建议值 (hex 0D) ︱ 编码字符位置 - - 使用 终止一个段 分割段中相邻的两个字段,并把消息段ID与第一个字段分隔开 元件分隔符 子元件分隔符 ^ & 1 4 分割数据字段中相邻的组件 在字段中分隔相邻的子组件,如果没有子组件,这个字符可以省略 反复分隔符 扩展符 ~ \\ 2 3 分隔多个重复出现的字段段 用于构造ST、TX或FT等数据类型字段中的转义序列,或者用于ED类型的数据。如果消息中没有转义字符,该字符将被省略 10

内蒙古科技大学毕业设计说明书(毕业论文)

在构造一个段时用到的特殊字符。它们是段的终止符、字段的分隔符、元件的分隔符、子元件的分隔符、反复的分隔符以及扩展符。段的终止符经常是一个回车(在ASCII中是一个十六进制的数字“0D”)。别的定义符在MSH段中定义,字段定义符在第四个字符的位置,字段中的别的定义符称作编码字符,它们是段ID后的第一个字段。MSH段用的定义符的标准就是整个段用的定义符标准。在任意给定的地点,合适的定义符的子集要由应用程序相协商而定。因为他们出现在消息的头段(MSH),以分解消息,这就意味着接受应用程序要用定好的定义符[16,27]。 2.1.2 数据类型(Data Types)

HL7 V2.X中定义了超过80个数据类型。这些数据类型分为以下几类:⑴文字及数字类Alphanumeric包括:ST、TX、FT、SRT数据类型;⑵数字类Numerical包括:CQ、MO、NM、SI、SN数据类型;⑶标示类Identifiers包括:ID、IS、HD、EI、RP、PL、PT、VID数据类型;⑷时间日期类Date/Time包括:DT、TM、TS数据类型;⑸编码值类Coded values包括:CE、CF、CK、CX、XCN、CNE、CWE数据类型;⑹类属类Generic包括:CM数据类型;⑺人口统计信息类Demographic包括:AD、PN、TN、XAD、XPN、XON、XTN、SAD、FN数据类型;⑻波形类Waves包括:CD、MA、NA、ED数据类型;⑼价格数据类Prices包括:CP数据类型;⑽病人财务信息类Finances包括:FC数据类型;⑾扩展查询类Expended Queries包括:QSC、QIP、RCD数据类型;⑿主文件类Master File Tables包括:DLN、JCC、VH数据类型;⒀医疗记录信息管理类Medical Records包括:PPN数据类型;⒁时间系列类Time Series包括:DR、RI、SCV、TQ数据类型。

2.1.3 HL7工作原理

HL7标准是目前医疗信息交换过程中使用最普遍的标准,通用查询在内的全部接口这是它的内容[17],包括:①患者管理(入出转院和注册);②医嘱的处理;③患者的记帐系统;④临床的观察;⑤同步主档的一般接口;⑥医疗信息(文档)管理;⑦预约和资源;⑧患者转诊;⑨并支持面向问题,同时记录患者照料通讯,在计算机信息系统中提供有关功能方便实施临床路径。

对于HL7标准的工作原理,首先要明确的是标准本身的定位,总体上我们可以将它定位于如下几个方面:①尽量专注于Layer7的实现;②不同技术环境的不同系统间的资料交换;③提供及时的传输方式;④供客制化的标准规格;⑤建构在已被广泛接受的标准协议上;⑥并不设定成为“即插即用”的界面标准。

11

内蒙古科技大学毕业设计说明书(毕业论文)

HL7标准的设计理念:①Segment:将医院中需要存放的资料分类到无法分割的项目;②Chapter:将医院中的流程分割成好几大块;③Message:将每个流程定位出好几个触发事件;④运用所有找出的三个英文字头来凑成这些消息。

组成方式(Implementation method):①了解欲标准化的医疗流程;②利用类别图(Class Diagram)定义流程的结构与静态关系;③利用对象关系图(Object Interaction Diagram, OID)定义流程的顺序与动态关系;④为可能出现的医疗流程特殊性加以比较、修改;⑤组织专家会议订定决议;⑥实际建置电子化流程借以作为医疗院所之参考;⑦以效率及组织成员满意程度为主评估电子化流程效益。

通俗的来讲,信息的交换就是各个不同系统之间各种消息的传送、接受以及查询,在医疗信息交换中也是如此。

消息定义的规约:①描述消息的格式,包括它们的目的、内容和相互关系,这种格式被称作抽象消息定义,因为它是网络互联模型中第7层(应用层)的定义;②HL7编码规则,用于将一个抽象消息转化为包含真实消息的一个字符串;③编程过程,该过程要求用HL7的规范来交换消息;④预想的与低层协议的关系;⑤构成所有消息的特定消息段;⑥单一消息,确认消息,这些消息在许多应用程序中不需要改变。

应从以下几个基本概念入手,介绍一下HL7的工作原理:

1. 触发事件(Trigger events):标准是根据现实世界医护系统之间数据的流动假定事件而编写的。现实事件称作触发事件。HL7的实现机制就是触发事件,如HL7实现机制图解所示,医生为住院患者开了X线片检查,医生在HIS系统中录入医嘱时,产生触发,消息是在HIS端HL7接口引擎产生的,同时传递给RIS端HL7接口引擎,并由它解析之后,通知RIS系统,这样为该患者进行X光片预约[18]。HL7还允许在数据间和相互关系不同的级别上使用触发事件。例如,大多数ADT触发事件与单一对象有关。其它ADT触发事件与多个对象间的联系有关。一些ADT触发事件从属于一个没有重要相互关系的对象集合。

2. 确认原始模式(Acknowledgements Original mode):当非请求更新由一个系统发送给另一个系统时,这种确认模式说明它是在应用层被确认的,这个推论不能充分的说明底层通讯系统能够保证消息的传送,还需要知道接收应用程序在逻辑应用层成功地处理了数据。确认可能包含与开始交换系统有关的数据。例如一个就诊者医疗保健系统处理了触发事件“为一个就诊者安排一次实验室化验”,可能要把一个非请求更新发送给一个能识别就诊信息、化验顺序信息和关于顺序的其它不同信息的实验室应用程序。当

12

内蒙古科技大学毕业设计说明书(毕业论文)

应用程序成功地对事件做了处理后,辅助项将会确认顺序。考虑到一些成对的就诊者和附属部门系统的原因,确认也可以包括被分配的辅助识别号码。HL7标准没有对数据所有权做假设,对数据接收的后续方式没有特定的要求,也没有对接收应用程序的设计和体系结构做假设。HL7的范围受限于应用系统间的消息规范和触发他们的事件。虽然HL7没有清楚地表明支持,但能与支持存储、转送和数据广播设备的系统一起使用。HL7标准未对系统收到确认前,把消息内的数据提交到系统数据库中的需要来做功能上的解释。接收系统确认数据的可靠性,提供能应用于来自任意数据源的相同性与完整性测试,这些都是必需的,为了继续使用以前的例子,辅助系统希望以后将顺序输入到数据库中时,再把该顺序放到一个输入队列后,辅助系统就会对这个顺序做出应答。惟一的假设是输入队列保持与数据库相同的完整水平上。

3. 确认增强模式(Acknowledgements Enhanced mode):HL7的确认样式已经扩展为可以区别接受和应用程序确认,及每一种确认样式需要的条件。有了肯定的接受确认,接收系统以一种能把发送系统从需求释放为重新发送消息的方式把消息交给安全的存储器。在接收系统处理过消息后,应用程序的确认可被用于把结果状态返回给发送系统。 4. 查询(Queries):当一个系统向另一个系统发送查询时,会发生不同的数据交换。例如,在一个心脏病导导管插入术应用程序中,会有一个触发事件:给一个没有在心脏病导管插入术应用程序数据库中登记的就诊者预定一个过程。应用程序可以发送一个请求消息,该消息中包含ADT系统中的就诊者ID号,并且收到一个应答,应答中包含要顺序处理的必须数据,此请求事件是一个查询,但要与上面讨论的非请求更新区别开。系统间流动的信息包含在应答中,应答本身不被需要由另一个消息确认。在任何情况下,HL7标准都是由一对应用程序间消息的简单交换组成,即:非请求更新及它的应答,或查询及它的应答。下层操作模型是一个客户端和一个服务器。应用程序用一个能识别操作的事件代码和另一个应用程序相接。其它应用程序用一个包括数据或错误指示的消息进行应答。开始应用程序可能会收到来自其它应用程序或底层软件的拒绝状态,标志它的消息没有被正确接收到。用以下方法之一可以使HL7查询公式化:HL7查询过滤器,由QRD和QRF段定义,支持HL7以前的版本,在原始模式查询中提到;内嵌的查询语言选择语句,用选择的查询语言使查询系统把请求格式化为一个自由格式的查询语句;虚表查询,功能上与内嵌的查询语言消息相似,但定义符上有更严格的格式;存储过程请求,它调用了为符合一个指定查询而构建的应答系统的程序代码单元。由于HL7支持的预定查询受到数量和精确定义的,每一个查询都有一个对应的存储过程名以

13

内蒙古科技大学毕业设计说明书(毕业论文)

及与它关联的参数表。

HL7还包括SQL选择语句,将SQL选择语句作为编码查询选择条件的一种交互手段,它是为了提供给实现者的一种方便,服务器系统不一定必须支持一般的SQL或基于关系数据库技术。 2.1.4 HL7标准的应用

具体来说,HL7标准可以用在以下几个方面:⑴不同信息系统、操作系统之间的信息交换,避免重复录入数据;⑵不同医疗单位之间的信息交换,实现资源共享;⑶不同地域之间的信息交换,实现资源共享;⑷不同国家之间的信息交换,实现资源共享。

2.2 HL7消息处理

2.2.1 应用程序处理规则

⒈ 原始和增强处理规则

这里所描述的处理规则适用于所有的消息交换,无论是使用HL7编码规则还是使用底层协议的消息,它们代表主消息处理模式。确定的变体在消息定义中归档,包括:⑴为特殊处理模式设计的应用程序处理规则是延迟处理;⑵可选的序号协议;⑶延续较长消息的可选协议。

协议用来描述消息交换,根据两个实体进行描述,分别为开始系统和应答系统。每一个系统既是消息发送方,也是消息接收方。开始系统对消息的处理为先发送,后接收;而应答系统为先接收,后发送。

交换过程的如下两个步骤:⑴开始系统从应用程序数据中构筑一个HL7消息,将消息发送到应答系统;⑵应答方接收消息。

⒉ 应用程序处理规则,延迟处理两个阶段应答

应答系统将确认发送到开始系统,也就是说以某种安全方式放置消息,接收系统在允许的时间内对以下情况进行处理:⑴消息中包含所需信息;⑵在应答系统处理请求前,由于行为被取消后,没有事件引起消息请求。

开始系统接收到的第一个延迟确认表示应答系统负责延续消息的处理,也表明开始系统不需要保存以当前形式发送的特殊消息。

第二个延迟确认消息的接收,是为了提供开始应用程序如下信息之一:应用程序成功进行开始消息的处理;错误阻止了应用程序的处理。如果接收应用程序需要返回状态信息的详细改变时,应使用指定应用程序的消息,通用延迟接收协议应用在指定位置

14

内蒙古科技大学毕业设计说明书(毕业论文)

和指定应用程序中。作为一个特殊实例,给出了以下类型的选项:⑴不允许延迟确认;⑵所有消息都有一个延迟确认;⑶仅特殊情况可以接收延迟确认。 2.2.2 确认消息

确认消息在应用程序的基础上进行,但是在应用程序未对特殊消息进进定义和其它情况下,可使用简单通用确认消息。

1. 通用确认:简单通用确认在应用程序未定义特殊应用级确认消息或为了预防应用程序处理出错时使用,它也可用来接收级别确认。

2. 延时确认:这个部分仅提供向下兼容的能力,它作为创建异步应用级确认的一般形式使用,MCF消息。 2.2.3 显示消息

⒈ 显示面向记录的消息,HL7消息包括:⑴适合于显示的数据;⑵明确表示字段内容的数据。

⒉ 非请求显示更新消息(事件Q05),非请求更新的触发事件通常是特殊行为的完成。

⒊ 非请求显示更新消息的延续:同其它HL7消息类型一样,通过使用DSC段和MSH-14-Continuation pointer,UDM消息能够被延续,既然为非请求消息,当特殊消息部分被延续使用时,插入消息可以被发送到接收应用程序。MSH-14-Continuation pointer可使接收系统保持对插入消息的无关跟踪。

2.3 查询

⒈ 显示面向记录的查询:事件重复请求,这部分主要为显示或面向记录的格式化查询应答定义框架。

⒉ 消息定义,这个部分定义下列消息:⑴概括查询;⑵嵌入式查询语言的查询,它支持基于查询语言的任何SELECT语句;⑶虚表请求查询,支持基于指定选择属性的服务器数据库表的查询;⑷存储过程请求,允许应用程序在一个系统向另一个系统上进行存储,并把它编译为指定数据;⑸概括显示应答消息,通过该消息应答系统为直接输出到显示设备上的数据进行格式化;⑹事件重复请求消息,用来请求具有一定格式的数据,并作为事件的重复应答;⑺表格式的应答消息,通过该消息应答系以相关的格式对该数据进行格式化,作为表格中的行和列;⑻事件重复请求,接收系统根据Application-specific-segment-oriented(面向记录)消息对数据进行格式化;⑼关于单个

15

内蒙古科技大学毕业设计说明书(毕业论文)

就诊者的数据,如为就诊者发送所有的实验室结果;⑽关于多个就诊者的数据;⑾不与就诊者相关的数据。

⒊ 立即和延迟应答

查询应答可立即完成也可延迟完成,查询中把应答描述为应答期望时间,在立即模式中,接收处理会做出一个立即应答或被接收过程等待应答所占用的短时间应答。

⒋ 应答消息的交互式延续或取消:原始模式和增强模式

查询的用法之一是从一个应用程序为其它用户取回数据,这种访问方式可为就诊者护理系统的用户从实验室或其它辅助科室取回数据,它也允许药房系统用户从实验室系统取回就诊者的实验室结果或从就诊者护理系统取回非药房医嘱的数据。特殊情况是查询用户在一个系统的终端制订在线查询,和当系统向其它系统发送查询等待的情况。当结果查询发生在内部应用程序接口时,请求数据的方法非常困难当减少应答系统的负担,延续查询为用户提供了制订查询的好方法,原始查询指出了通用查询参数和返回数据的数量值。查看完数据后,用户可以做出很多请求,开始系统再次以与先前相同的格式发送查询,包括在DSC-1-Continuation pointer的值和请求数据的量发生改变的情况除外。开始系统通过发送取消查询消息可明确地终止查询。

⒌ 逻辑显示断点

通常情况下,显示文本中的行会被分隔成为与屏幕或打印纸的物理大小不相同的逻辑组。显示数据中逻辑中断点的获得对数据显示或打印系统是非常有用的,由于此原因使用了DSP-4-Logical break point。发送应用程序将逻辑中断点置于适当的位置。 2.3.1 查询触发事件和消息定义

与查询相关的触发事件类型:⑴由另一应用程序提供的立即数据访问所需指令,它是数据或延续的初始化请求;⑵由另一应用程序提供的延迟数据访问所需指令。

查询消息使用以下的应答消息:⑴包含显示数据时,Display Response (DSR) message响应该查询;⑵包含表格数据时,Tabular data Response(TBR)响应该查询;⑶包含事件重复查询时,触发事件由Event Replay Query(ERQ)和Event Replay response(ERP) message提供。

原始QRY查询消息用来请求面向记录的数据,应答消息指定到一个功能区;面向显示,表格应答消息和事件重复应答消息在此描绘。每一个触发事件都列出了消息交互的应用形式。

16

内蒙古科技大学毕业设计说明书(毕业论文)

2.3.2 原始模式查询

在原始模式显示查询-立即应答(事件Q01)中,QRY消息中的QRF和QRD段在应答中响应。如果DSC-1-Continuation pointer不为空时,DSC段包含该延续指针。如果在原始模式显示查询变量中显示查询不止一种应答类型,MSH段中消息类型字段的第二个组件用来指出应答事件类型。 2.3.3 原始模式延迟访问

在延迟查询中,复杂的查询和应答允许包含在单一消息中。给定查询的应答被分成许多的DSR消息。单个的DSR消息中可包含对许多个QRY的应答。在查询的延迟应答中,要注意所有面向记录的原始模式查询和遵循立即、延迟确认模式的增强查询在上文中已定义。 2.3.4 增强模式查询消息

增强模式查询消息分为以下四个方面:⑴EQL-嵌入式查询语言查询;⑵VTQ-虚表查询;⑶SPR-存储过程请求;⑷ERQ-事件重复查询。 2.3.5 增强查询模式应答消息

增强查询模式应答消息可分为以下三个方面:⑴EDR-增强显示应答;⑵TBR-表格式数据应答消息;⑶ERP-事件重复应答。 2.3.6 查询消息执行要点

⒈ 原始模式执行要点:⑴通过应用程序的协同工作,可定义QRD和QRF段中需这滤的特殊值;⑵查询段的格式选择非常通用,它通过实现者阅读,为使用标准的实现者指出较大的查询能力,但这并不是主要目的,格式通过接口的指定使用。

⒉ 增强模式执行要点:表定义和虚表定义

通过应用程序的协同工作,可定义QRD和QRF段中过滤的特殊值;查询段的格式选择非常通用,它通过实现者阅读,为使用标准的实现者指出较大的查询能力,但这并不是主要目的,格式通过接口的指定使用;表示为TBR应答消息的表中的内容在功能章节中进行定义。 2.3.7 查询错误应答

如果应用程序在处理查询时发现了错误,它通过在查询应答消息的MSA段中返回应用程序错误或应用程序拒绝进行应答。接收应用程序用合适的错误代码和消息给MSA-6-Error condition segment赋值。

17

内蒙古科技大学毕业设计说明书(毕业论文)

2.4 HL7 V2.X编码方式

HL7 V2.X有两种编码方式:ER7与HL7 V2.XML 2.4.1 ER7编码方式

ER7(Encoding Rules for 7),竖线编码,是HL7传统的编码格式。采用HL7 V2.X标准所制定的编码原则进行编码, HL7 V2.X的主要编码方式是ER7格式,可是消息可读性比较差,这就需要开发专用的消息解析模块进行解析了,从而无形中增加了开发的难度等。鉴于此,HL7标准组织在HL7 V2.3.1标准开始时,就引入了HL7 V2.XML格式作为辅助编码规则[19]。

ER7格式编码消息例子:

MSH|^~\\&|LABGL1||DMCRES||19951002180700||ORU^R01|LABGL1199510021807427|P|2.2

PID|||T12345||STONE^ALAN^A||19601002|M||||||||||123456 PV1|||NER|||||||GSU||||||||E||||||||||||||||||||||||||19951002174900|19951006 OBR|1||09527539021001920|1001920^BLOOD 0218070000||350|F||^^^^^RT

OBX||NM|1001910^PATIENT

TEMPERATURE,

ARTERIAL^^^TEMP

CORR|0001|37.0||||||F|||19951002180700||42

OBX||TX|1001912^FIO2, ARTERIAL^^^FIO2 art|0001|*|%||A|||F|||19951002180700||42 OBX||NM|1001960^PO2,

art|0001|65|mmHg|75-100|L|||F|||19951002180700||42

„„

2.4.2 XML格式消息

采用XML作为HL7 V2.X的编码格式,不用专门开发ER7格式的解析模块,减小了开发和维护的系统开销,可以更方便与采XML作为编码的系统相整合。XML设计用来传送及携带数据信息,所以XML用途的焦点是它说明数据是什么,以及携带数据信息。

XML定义结构、存储信息、传送信息。以下为小王发送给小明的便条,存储为XML,例如: <小纸条>

<收件人>小明

18

GASES,

ARTERIAL^^^ABG|||19951002180200|||||||19951002180300||||1793559||0952753902||199510

ARTERIAL^^^PO2

内蒙古科技大学毕业设计说明书(毕业论文)

<发件人>小王 <主题>问候

<具体内容>嗨,过几天去找你玩。

这个XML文档仅是纯粹的信息标签,这些标签意义的展开依赖于应用它的程序。 结构:每个XML文档都由XML序言开始,在前面的代码中的第一行便是XML序言,。这一行代码会告诉解析器和浏览器,这个文件应该按照前面讨论过的XML规则进行解析。第二行代码,,则是文档元素(document element),它是文件中最外面的标签(我们认为元素(element)是起始标签和结束标签之间的内容)。所有其他的标签必须包含在这个标签之内来组成一个有效的XML文件。XML文件的第二行并不一定要包含文档元素;如果有注释或者其他内容,文档元素可以迟些出现。第三行代码是注释,我们会发现它与HTML中使用的注释风格是一样的。这是XML从SGML中继承的语法元素之一。

再往下的一些地方,可以发现标签里有一些特殊的语法。代码用于表示无需进行解析的文本,允许大于号和小于号之类的特殊字符包含在文本中,而无需担心破坏XML的语法。文本必须出现在之间才能合适地避免被解析。这样的文本称为Character Data Section,简称CData Section。

XML的结构的缺陷:第一,就是不支持分帧(framing),当多条XML消息在TCP上传输的时候,无法基于XML协议来确定一条XML消息是否已经结束。第二,是HL7 V2.XML消息所占篇幅较大。

XML格式编码消息例子:

| ^~\\& LABGL1 DMCRES

19951002180700

19

内蒙古科技大学毕业设计说明书(毕业论文)

ORU R01

LABGL1199510021807427 „„

2.5 本章小结

本章主要介绍了HL7 V2标准的一些基本概念,从几个基本概入手介绍了HL7的工作原理,标准用在哪些方面等;消息处理规则;ER7与XML 是HL7 V2.X有两种编码方式。

20

内蒙古科技大学毕业设计说明书(毕业论文)

第三章 HL7消息解析

HL7消息解析是将HL7消息字符串解析成为一种抽象数据结构,在其中包含了应用程序所需要的数据。

3.1 HL7分析协议

3.1.1 V2.x HL7消息结构

在HL7 协议中,通信系统间互相传递数据的最小单位是消息。依据HL7 协议,在结构上观察,HL7 消息的形状是一个树形结构。

由一组顺序排列的段组成一条HL7 消息。在HL7 协议中,总共定义了84 种消息结构,它们都是标准的,如图3.1 所示,罗列出其中消息的标准结构ADT^A02。在图3.1 中可以知道,ADT^A02 是由MSH、PV2、EVN、PID、PD1、OBX、PV1、DB1段构成。其中,MSH、、PID、EVN、PV1 为必选的段,剩下的几个为可选的段,用[]表示;OBX 与DB1 段是可循环的段,用{}表示。在实际工作中,为方便处理,习惯上会把几个位置相邻、功能相关的段绑定成为一个组(Group)处理,组就和段一样具有“可选”和“可循环”的属性[20]。

图3.1 HL7消息结构样例(ADT^A02)

3.1.2 V2.x HL7消息解析

分割消息块、剔除无用信息、判别消息合法性、解析消息头、提取消息数据和数据装箱这是HL7 消息的解析需要完成的工作。

21

内蒙古科技大学毕业设计说明书(毕业论文)

1. 确定有效的消息数据区主要是为了分割消息的块,同时把消息数据又细分为若干的段(segment)和字段(field),以便于提取出有用的消息数据并进行装箱和处理。在HL7 消息的传送给对方的过程中,很多条消息是可在一次的通信会话中进行串行的传递。因此,解析HL7 消息第一就是要对众多的消息和数据进行有效的消息数据区的划分。HL7 协议没有对消息的结束符做出明确的规定。在这里,我们可以参考业界的经验,并规定 (ASCII 0x0A)是标识消息的结束终止符,同时约定该结束符不可以在消息中的任何其它位置出现[21]。

2. 解析消息头:利用提出MSH 段中有关信息来完成的。依据HL7 协议,段的结束符为(ASCII 0x0D),因此,我们根据该段的结束标识符可对包括MSH 段在内的所有的消息段进行区域分割处理。其中,解析消息头的主要从以下几个方面进行处理:①对字段 (field)[MSH.1]、子元素(sub-component)、元素(component)、可循环字段(Repeatable)、转译符(Escape Character)[MSH.2] 分割符标志做记录;②对消息的类型[MSH. 9]做出识别;③对消息控制码[MSH. 10]做记录;④对消息所遵循的HL7 协议版本信息[MSH.12]做出判别等[22]。

3. 对消息合法性的判别主要从以下几个方面做处理:①用消息级语法做检查。利用该检查,我们可以明确的知道消息是不是为标准的HL7 消息、消息的段的结构是不是合法的、消息的来源是不是合法的、消息的协议版本是不是正确的等;②用段(segment)级语法做检查。利用该检查,我们可以明确的知道该段中的字段是不是所有的必选字段均有有效数据和字段结构是不是合理的等;③用字段(field) 级语法做检查。利用该检查,我们可以明确的知道该字段的数据类型是不是合法的、有效的[23]。

4. 把有效的消息字段进行装箱的处理叫做提取消息数据。其中,我们依据HL7 协议中的标准消息结构设计了用于存放消息字段的数据箱,它具有着上下级关联索引、自身属性描述和数据存储等功能[24]。

5. 对数据装箱和语法检查过程中发现的不可识别的字段、段等信息忽略跳过或不予提取叫做剔除无用信息[25]。

将HL7消息字符串解析成为一种抽象数据结构的过程叫做HL7消息的解析,在这里包含了应用程序所需要的数据。在HAPI中,这样的抽象数据结构被定义为“Message”,“Message”它是一个接口,能够表达一个完整的HL7消息,它包含所有的结构、字段和段。HL7消息结构模型是由HAPI定义的,如图3.2所示,这里,箭头是接口间的继承关系,菱形是接口间的聚合关系[26]。

22

内蒙古科技大学毕业设计说明书(毕业论文)

图3.2 HL7消息结构模型

四种构造解析器,FastParser、PipeParser、DefaultXMLParser和GenericParser是由HAPI开源工具定义的。这里,PipeParser和FastParser的作用是构造/解析ER7格式消息、DefaultXMLParser的作用是构造/解析XML格式消息,GenericParser的作用是构造/解析XML或ER7格式的消息字符串。为了能够更好的解析两种格式的HL7消息字符串(XML和ER7格式的消息字符患),用的是GenericParser,把HL7消息字符串解析成为“Message”,同时利用HL7消息固有的层次结构,将它显示为树形结构[25,26],如图3.3所示。

图3.3 HL7消息解析,并以树结构显示

3.2 编码、解析的类函数

1. 消息编码

23

内蒙古科技大学毕业设计说明书(毕业论文)

public void encodeMessage()

throws ca.uhn.hl7v2.HL7Exception

例如:

String hl7msgstring = this.parser.encode(this.msgTreePanel.getMessage()); hl7msgstring = hl7msgstring.replace('\\r', '\\n'); this.encodeTextArea.setText(hl7msgstring); 函数功能:对HL7消息进行编码。 抛出:ca.uhn.hl7v2.HL7Exception 2. 消息解析

public void parseMessage()

throws ca.uhn.hl7v2.HL7Exception,

ca.uhn.hl7v2.parser.EncodingNotSupportedException

例如:

String messageString = textHl7encode.getText().replace('\\n', '\\r'); try{Message hl7msg = parser.parse(messageString); msgTreePanel.setMessage(hl7msg);} catch{}

函数功能:解析消息并以树结构显示。 抛出:

ca.uhn.hl7v2.HL7Exception

ca.uhn.hl7v2.parser.EncodingNotSupportedException

3.3 本章小结

本章主要介绍了HL7 V2的解析,HL7 消息的形状是一个树形结构,我们用到的是HAPI工具包中的四种构造解析器,消息解析的建模方法。

24

内蒙古科技大学毕业设计说明书(毕业论文)

第四章 HL7消息格式转换

4.1 HL7消息格式转换

4.1.1 HL7消息格式转换目的和意义

HL7消息格式转换的目的是将HL7传统编码(ER7)与XML两种格式进行互相转换。研究HL7标准格式与XML格式的互相转换有很深远的意义:

1. 伴随着XML技术的发展、成熟和普及,在网络上数据交换选择上XML数据必将成为的首选。商业软件的标准配置将会变为XML数据接口,所以研究HL7 V2.X标准格式与XML格式的相互转换是一种必然,从而使得以HL7技术开发的系统获得XML的优势,这样使HL7技术开发的系统增强了灵活性和竞争力。

2. 研究HL7 V2.X标准格式与XML格式相互转换,不仅可以提供与其他系统更加方便的集成方式,还可以为HL7标准提供了一种可供选择的编码方案,同时还可以利用更多成熟的工具对HL7消息进行操作。

4.1.2 ER7格式的消息转换为对应的XML格式的消息

HAPI开源工具包对HL7 V2.X消息格式提供了比较好的支持。四种构造解析器:FastParser、PipeParser、DefaultXMLParser、GenericParser是由HAPI定义的,如下图4.1所示,将ER7格式的消息字符串转换成XML格式的消息字符串的过程:第一,对ER7格式的HL7消息字符串进行解析,并获得“Message”接口的类型。第二对“Message”类型用DefaultXMLParser构造解析器进行构造,最后得到XML消息字符串。

图4.1 构造解析器类之间的关系

25

内蒙古科技大学毕业设计说明书(毕业论文)

ER7XMLMutualConversion类用于支持ER7格式消息字符串和XML格式消息字符串的相互转换。ER7XMLMutualConversion类的主要结构声明,如:

public class ER7XMLMutualConversion{

public String convertER7ToXML(String er7msg); public String convertXMLToER7(String hl7xmlmsg); }

在这里,类的成员函数:convertER7ToXML(String er7msg)用于将ER7格式的HL7消息字符串转换成对应的XML格式的HL7消息字符串。

系统提供了ER7格式的HL7消息字符串转换为对应的XML格式的HL7消息字符串功能,如图4.2所示。

图4.2 ER7格式的HL7消息字符串转换为XML格式的HL7消息字符串

4.1.3 XML格式的消息转换为对应的ER7格式的消息

将XML格式的HL7消息字符串转换为ER7格式的HL7消息字符串,是采用XML格式编码的HL7消息转换为对应的ER7格式的HL7消息字符串。具体的过程与ER7格式的HL7消息字符串转换为对应的XML格式的HL7消息字符串过程相似,第一对XML格式的HL7消息字符串进行解析,得到“Message”接口类型,第二对“Message”类型用PipeParser构造解析器进行构造,最后得到ER7格式的消息字符串。

与ER7格式的HL7消息字符串转换为对应的XML格式的HL7消息字符串方法相似,类ER7XMLMutualConversion中的成员函数:convertXMLToER7(String hl7xmlmsg)实现的是将XML格式的HL7消息字符串转换为对应的ER7格式的HL7消息字符串。

系统提供的XML格式的消息字符串转换为ER7格式的消息字符串功能,如图4.3

26

内蒙古科技大学毕业设计说明书(毕业论文)

所示。

图4.3 XML格式的消息字符串转换为ER7格式的消息字符串

4.2 HL7消息两种格式转换的函数

Java包:edu.imust.hl7.mutalconversion Java类:ER7XMLMutualConversion

类功能:在HL7中ER7格式消息和XML格式的消息相互转换 类中函数的说明:

1. ER7格式消息转换为XML格式消息的类函数

① public java.lang.String convertER7ToXML(java.lang.String er7msg) 函数功能:HL7字符串格式转换,将ER7格式转换为XML格式。 参数:er7msg–String:ER7格式的HL7字符串 返回:String:XML格式的HL7字符串

② public java.lang.String[]convertER7ToXML(java.lang.String[]er7msgarray) 函数功能:HL7字符串数组格式转换,将ER7格式字符串数组转换为XML格式字符串数组。

参数:er7msgarray-String[]:ER7格式的HL7字符串数组 返回:String[]:XML格式的HL7字符串数组 例如:

ER7XMLMutualConversion exmc = new ER7XMLMutualConversion(); String er7string = textEr7.getText();

27

内蒙古科技大学毕业设计说明书(毕业论文)

er7string = er7string.replace('\\n', '\\r');

String xmlstring = exmc.convertER7ToXML(er7string); if (xmlstring != null) { xmlstring.replace('\\r', '\\n'); textEr7ToXml.setText(xmlstring);} else {}

2. XML格式消息转换为ER7格式消息的类函数

① public java.lang.String convertXMLToER7(java.lang.String hl7encodeedxmlmsg) 函数功能:HL7字符串格式转换,将XML格式转换为ER7格式。 参数:hl7encodedxmlmsg–String:XML格式的HL7字符串 返回:String:HL7格式的字符串

② public java.lang.String[]convertXMLToER7( java.lang.String[]hl7encodedxmlmsgarray)

函数功能:HL7字符串数组格式转换,将ER7格式字符串数组转换为X组。 参数:hl7encodedxmlmsgarray-String[]:XML格式的HL7字符串数 返回:String[]ER7:格式的HL7字符串数组 例如:

ER7XMLMutualConversion exmc = new ER7XMLMutualConversion(); String xmlstring = textXml.getText(); xmlstring = xmlstring.replace('\\n', '\\r');

String er7string = exmc.convertXMLToER7(xmlstring); if (er7string != null) {

er7string = er7string.replace('\\r', '\\n'); textXmlToEr7.setText(er7string);} else {} 3. 主函数main

public static void main(java.lang.String[]args)

函数功能:输入消息类型及消息内容,输出经格式转换后的内容。 参数:args-String[]:控制台参数:待转换文件名,输出文件名

28

内蒙古科技大学毕业设计说明书(毕业论文)

4.3 本章小结

本章主要介绍了HL7 V2消息解析格式转换,并介绍了HAPI工具包中的四种构造解析器和用到的类函数。

29

内蒙古科技大学毕业设计说明书(毕业论文)

第五章 HL7的影响

由于HL7是医疗信息交换的一种规范的协议标准,或者简单地称之为接口标准,对经营管理者、临床医疗者、医疗顾问、验证单位、学术研究单位、教授与学生等层面的人员均具备重要影响:

1. 对经营管理者来说:无论对在单位、医疗机构、生物科技业者、生物信息业者或者临床试验业者等方面的经营管理人员而言,HL7均是拓展现有格局与思考全球性潜在商机的重要切入点,在HL7对全球医疗信息化市场的重新洗牌过程中,谁能率先掌握HL7发展趋势与技术,即能具备领先全球化竞争者机会与条件,并能顺利地切入各个区域化的医疗卫生市场。

2. 对临床医疗者来说:开发专科临床医疗系统是现阶段整合医疗资源、提升医护品质的重要趋势,因此各医师、护理人员等临床工作者应熟悉必要的HL7协议标准部分以整合专业性的临床医疗信息,协助软件开发者建置适用性高的专科医疗软件为当前临床专业人士的重要发展目标。

3. 对医疗顾问来说:对于各种专业不同的医疗产业顾问形态,也即将会透过HL7标准的植入,而容易具备完整性与多元性的发展空间,并且也是其它产业顾问跨入医疗产业非常重要的敲门砖。

4. 对验证单位来说:随着医疗产业标准的快速发展,愈来愈多的验证单位录找机会进入医疗市场,而且不再局限于品质验证一隅,而更多注重于能对信息管理、接口标准、信息安全等领域来建立多元化验证制度与专业服务的能力。

5. 对信息人员来说:对HL7协议标准做全盘且彻底的了解,将有助于信息人员对整体系统结构的重新思考与完整规划,并加速系统建置脚步,以提升系统运作效能与功能多元化的添加,并积极进行对外系统应用整合的改进。

6. 对学术教学来说:由于HL7迅速成为医疗业界重要的发展趋势,因此在教学孕育与学术发展方面,将朝多元化方向迈进,并且由于充分掌握与了解协议标准发展趋势与市场消费性需求,更能成为培育业界所需生力军的有效力量。

正因为HL7的影响面如此广泛和深远,对于我们来说,HL7的研究、开发和应用已经迫在眉睫,用一句话说,则是“如箭在弦,不得不发”。

30

内蒙古科技大学毕业设计说明书(毕业论文)

第六章 总结与展望未来

6.1 总结

HL7标准是基于区域卫生信息化建设涉及各个医疗卫生单位之间的数据交换和整合要求。由于很多单位都是自行开发或是软件提供商的开发标准不统一,导致了医疗信息数据交换的难度加大,所提出来的世界性医疗信息传输标准。HL7是由Health Level Seven, Inc.(美国)制定和维护、用于不同的医疗系统之间进行医疗数据传递的标准,美国作为当今世界的科技大国,它所广泛应用和发展的医疗信息交换标准HL7,逐渐走上了世界医疗卫生信息技术舞台。

它正引起一场深刻的医学信息管理模式的变革,使得整个医疗服务在更高水平和更大程度上实现医疗信息的自动化,整个医疗环境将发展成一个全球化的虚拟医院。因此,HL7标准作为目前一个国际性公认的公共信息系统间相互支持和应用的标准,符合整个医疗信息行业发展的需要,已经被国内外众多厂商广泛支持与应用。

论文详细介绍了HL7 V2标准。在HL7的消息解析及格式转换中,主要是涉及到HL7 V2.X医学信息解析,标准格式与XML格式的相互转换。本次设计主要是基于Java编程语言,在应用集成开发环境(IDE)使用Eclipse,它是开放源代码,基于 Java 的可扩展开发平台。Eclipse附带了一个标准的插集SWT,从而进行界面的设置,同时采用HAPI-0.5.1开源工具包辅助开发,实现对HL7消息自身结构特点进行解析,标准格式与XML格式的相互转换。

6.2 展望未来

通过十几年的发展历程,HL7标准得到了长足的发展。它正在医学信息管理模式中发挥巨大的作用,并将引起一场深刻的医疗信息改革,它在很大的程度上实现了医疗信息和服务的自动化,使得整个医疗环境变为一个全球化的虚拟医院。医疗服务的特点将朝着更加全球化、信息化和专业化的方向发展。

医疗信息交换领域的研究具有重要的实际应用价值,论文主要完成了HL7消息的解析和格式转换的工作,从系统的开发和医疗信息交换网络的建设来看,在论文已有工作的基础之上,仍有若干方面有待于更深入的研究和进一步的完善,主要包括:

1. 系统采用HL7 V2标准开发,实现了HL7 V2消息的解析、格式转换的功能。

31

内蒙古科技大学毕业设计说明书(毕业论文)

2. 设计并建设医疗信息交换网络。 3. 加快HL7标准的本地化工作。

32

内蒙古科技大学毕业设计说明书(毕业论文)

参考文献

[1] 何. 基于XML的电子病历系统的研究与实现[D]. 长沙:国防科学技术大学,

2006.

[2] 陶达刚. 基于中间件技术的医院信息化平台研究与设计[D]. 成都:四川大学,2006. [3] 医学术语国外标准及标准组织[DB/OL].http://blog.sciencenet.cn/.

[4] 金霞, 欧宗瑛. 基于HL7标准医疗信息交换消息的构建/解析[J]. 焦作大学学报,

2004,18(1):1273-1275.

[5] 肖蒲鲜, 钱师宇, 孔令人. HIS的目标和医疗信息交换协议[A]. HL7第八届全国医

药信息学大会[C]. 1999.

[6] 姚立民, 赵辉. 基于HL7标准的医疗设备数据接口的研究与实现[J]. 电子学报,

2005, 26(12):35-38.

[7] 张翠英, 张尚军, 徐上凯. 医疗信息交换标准-HL7[J]. 生物医学工程学杂志, 2001,

18(1):467-469.

[8] HAPI.[DB/OL].http://hl7api.sourceforge.net/.

[9] NHAPI.[DB/OL].http://nhapi.sourceforge.net/home.php.

[10] 金霞. 医疗信息交换中HL7消息的构建/解析和传输关键技术研究[D]. 大连:大连

理工大学, 2003.

[11] 医疗环境电子数据交换标准-HL 7 v3.0的新进展[DB/OL].http://blog.sciencenet.cn/. [12] 医学词汇及代码标准的选择[DB/OL].http://blog.sciencenet.cn/.

[13] 孙勇. HL7标准在医疗信息交换中的应用[A]. 第七届中国标准化论坛[C],2010. [14] 贾玮. 基于HL7标准的医疗信息交换关键研究[D]. 广州:南方医科大学,2009. [15] 李远敏. 基于健康标准电子病历数据抽取模式挖掘研究[D], 武汉华中科技大学,

2004.

[16] 胡永辉. 基于HL7的医疗信息系统研究[D]. 西安:西安电子科技大学, 2006. [17] 陈志亚. 基于HL7的临床信息系统(CIS)开发初探[J]. 中国卫生信息管理杂志,

2007,16(25):76-79.

[18] 张波云. 社区智能远程监护系统的数据传输与分析技术的研究[D]. 广州:华南理工

大学,2009.

[19] 胡延平, 后国超, 刘建伟. HL7 Version 3消息若干关键技术探讨[J]. 计算机工程与

33

内蒙古科技大学毕业设计说明书(毕业论文)

设计,2004,25(9):76-78.

[20] 郭冰洁, 韩旭, 赵媛元. 基于HL7 V2.x协议的消息解析模型设计与应用分析[J].

辽宁中医药大学学报, 2010,17(3):478-479.

[21] 范潇. 基于HL7V2.x协议的消息构建与存储模型[D]. 昆明:昆明理工大学, 2011. [22] 范友志. 基于HL7标准的生理参数传输平台设计[D]. 上海:上海大学通信与信息

工程学院,2010.

[23] 韩旭. 基于.NET Framework WCF的面向服务SOA中间件设计[D].南京:南京理工

大学自动化学院, 2010.

[24] Tung Tran, Hwa-Sun Kim, Hune Cho. A development of HL7 middleware for medical

device communication[A]. 2007.

[25] Yung T H, Cheng P H, Yang C H A. scalable multi-tier architecture for the national

Taiwan university hospital information system based on HL7 standard[C]. 2006. [26] 谷宇. HL7消息解析及传输技术的研究与实现[D]. 包头:内蒙古科技大学,2010. [27] 江捍平. 美国卫生信息工作标准HL7—跨医疗卫生体系信息交换理论入门[M]. 北

京:科学出版社,2005:46-50, 99.

34

内蒙古科技大学毕业设计说明书(毕业论文)

致 谢

首先感谢我的导师张宝华教授。从论文的选题直到最后的修改,完稿,都是在张老师的耐心指导及谆谆教诲下完成的。张老师深厚的理论基础,渊博的专业知识,丰富的实践经验令我受益非浅。张老师严谨的治学态度,敏锐的学术洞察力令我终身难忘。在此向张老师表示我诚挚的谢意。

同时,我还要感谢内蒙古科技大学的各位老师们,所有给我们上过课的老师,以及给过我帮助的老师们,你们严谨敬业的作风,无私奉献的精神深深地感染和鼓舞着我,让我在今后的人生道路上,也要象你们一样,无私的帮助他人,奉献自我。

感谢我的辅助指导老师,谷宇老师,感谢他的悉心指导和无私帮助。

感谢吕晓琪、赵建峰、张宝华、任晓颖、谷宇和张明老师,在百忙之中抽出时间,对我的论文进行审阅,并提出很多宝贵意见,在此表示深深的感谢!

感谢2008级电子与通信工程专业的同学。感谢你们这段时间来的帮助与关心,感谢你们这四年的陪伴,让我如此充实的度过了四年的学习生活。

感谢我的家人,生活上给予我温暖,学业上给予我支持,在我最困难的时候给我力量,没有你们的关心和付出,我是不可能顺利的完成这四年的学业的。

感谢所有关心和帮助过我的朋友和同学们,让我在点点滴滴中感受到温暖,谢谢你们。

感谢母校的培养,我为自己能成为内蒙古科技大学的一名学生而感到骄傲和自豪,并衷心祝愿母校桃李满天下。

35

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo7.cn 版权所有 湘ICP备2022005869号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务