基于SOA与HL7的医院信息系统的研究与实践
Research and Practice on Hospital Information System Based on SOA&HL7
孟晓阳1、孙国强1、许燕1
Meng Xiaoyang1、Sun Guoqiang1、Xu Yan1
摘要:
本文首先介绍了当前医院信息系统所面临的问题和挑战,并给出了解决方案--SOA。之后采用SOA的方法学,结合行业标准HL7,对医疗领域进行分析。最后根据实践经验,给出了两种实现SOA技术手段。
关键词:SOA Web服务 BizTalk HL7 医院信息系统
Abstract:
This paper introduces problems and challenges of the current hospital information system, and gives a solution – SOA.It analyses issues in Healthcare domain with SOA methodology and HL7 standard. Finally, it gives two technique
1 北京协和医院 PUMC Hospital
基于SOA与HL7的医院信息系统的研究与实践
means of realizing SOA.
Keywords: SOA, Web-Service, BizTalk, HL7, HIS
正文:
北京协和医院 PUMC Hospital
1 基于SOA与HL7的医院信息系统的研究与实践
医院信息系统是迄今为止世界上企业级信息系统中最为复杂的一类,同时,医院的信息需求还是在不断扩展的。医院既有与其他行业一样的管理信息系统,还包括以病人信息为中心的临床信息系统、实验室信息系统、医学影像系统等。所以,对于医院信息系统,不仅要考虑到普通的新老系统之间衔接的问题,还要考虑到各种异构平台不同应用之间的联接的问题。
SOA(Service-Oriented Architecture,面向服务的架构)的出现无疑是黑暗中的一道曙光,它将软件构件的粒度提升到服务的层次,真正做到了业务逻辑与实现技术的分离,不但为不同编程语言、开发平台的厂商提供了统一的描述标准,还可以使客户、领域专家、项目管理者、程序员面对统一的模型讨论问题。
应当明确的是,SOA既不是一种程序设计语言,也不是一项具体的实现技术,而是一种思想。SOA将应用程序的不同功能单元称为“服务”,“服务”通过定义良好的接口和契约联系起来。接口独立于实现服务的硬件平台、操作系统和编程语言,采用中立的方式进行定义。从而这使得构建异构系统中的服务可以以一种统一和通用的方式进行交互。
近年来,在银行、电信、商业、物流这些以信息技术为支撑的IT“发达”领域,SOA已经开始为行业带来变革;同样,在医疗行业这样的IT“欠发达地区”。我们也必将探索出一条适合自己行业发展的SOA之路。
下面我们将采用SOA的方法学,结合行业标准HL7,对医疗领域进行分析;并根据实践经验,给出两种实现SOA技术手段。
~ 3 ~
基于SOA与HL7的医院信息系统的研究与实践
1 医疗领域的服务发现
服务是构成SOA的基本单元,服务发现是进行SOA分析的第一步,其任务是根据规则在一定范围内进行筛选,找出可能成为服务的服务候选者列表。服务发现的方式主要有以下三种[2]:
1) 自上而下(领域分解)方式
自上而下的分析方式从领域模型出发,逐层分解至业务活动,并对其间涉及的业务活动和业务对象的变化进行分析。不同的业务领域有不同业务领域流程模型,但由于不同的企业所处的内外部环境不同,对业务关注热点也就不同,SOA是一种特别强调业务与IT互动的技术,根据项目的不同需要,领域分解的方式完成了业务视图到服务视图的映射,将业务流程分解为子流程或业务活动。在分解得出的业务活动树上,每个节点都是服务的候选者。
2) 自下而上(已有资产分析)方式
自下而上的已有资产分析方式是根据已有资产来提取服务,已有资产包括:遗产系统、行业规范、业务模型等。通过对已有资产的分析,不但可以发现新的服务候选者,还能够发现原有系统的技术局限性,验证服务实现的可行性,为服务实现决策提供重要的依据。
3) 中间对齐(业务目标建模)方式
~ 4 ~
基于SOA与HL7的医院信息系统的研究与实践
中间对齐的业务建模方式的目的是将发现的服务与业务目标对齐,并确保关键服务在领域分解和已有资产分析过程中没有被遗漏。业务目标建模将业务目标分解为子目标,然后分析哪些服务是用来实现这些子目标的。在此过程中,我们可以度量这些服务的执行情况并找出关键业务指标。
通常我们会结合是用以上三种方式的分析,首先通过领域分解建立业务活动树,列出服务候选者清单;之后对已有资产进行分析,完善服务候选者清单,建立已有资产与服务对应关系;最后对业务目标进行建模,建立服务于业务的对应关系,并找出关键服务。
下面我们就结合行业标准HL7,对医疗领域进行分析。
1.1领域分解与已有资产分析
首先我们采用自上而下的方式,本着遵循标准、求同存异的原则,对医疗领域进行业务分解。在领域模型上我们参照了HL7 v2.4,找出一些粗粒度的服务,候选列表如下:
⑴ 控制
⑵ 患者管理
⑶ 医嘱录入
⑷ 查询
~ 5 ~
基于SOA与HL7的医院信息系统的研究与实践
⑸ 财务管理
⑹ 观察报告
⑺ 主文件
⑻ 病例记录、信息管理
⑼ 日程安排
⑽ 患者转诊
⑾ 临床实验室自动化
⑿ 应用管理
⒀ 人事管理
之后我们采用自下而上的方式,列举出医院中实际运行的系统,并将这些系统对应到候选服的的列表。
⑴ 控制—各系统之间的接口程序
~ 6 ~
基于SOA与HL7的医院信息系统的研究与实践
⑵ 患者管理—病人ADT系统、病人主索引系统、门户系统、医保系统
⑶ 医嘱录入—住院医嘱系统、门诊医嘱系统
⑷ 查询—综合查询系统、触摸屏系统、统计系统、门户系统
⑸ 财务管理—财务系统、收费系统、医保系统
⑹ 观察报告—检验系统、放射系统、病理报告系统、心电系统
⑺ 主文件—病人主索引系统
⑻ 病历记录、信息管理—电子病历系统
⑼ 日程安排—挂号系统、门诊出诊排班系统、手术排班系统
⑽ 患者转诊—病人ADT系统
⑾ 临床实验室自动化—实验室的内部管理系统、各种仪器的接口
⑿ 应用管理—各种网络设备的维护程序、信息系统维护登记系统
⒀ 人事管理—人事系统、工资奖金系统
~ 7 ~
基于SOA与HL7的医院信息系统的研究与实践
在这一对应过程中我们不难发现,由于原有系统是根据业务需要自下而上以科室为单位建立起来的,在系统建立时并未有方法学的指导,这就决定了遗产系统与服务并不是一一对应的,有些系统只是实现了服务的某些功能或是在某一特定场景的应用;甚至也不是一对多的关系,而是多对多的关系,有些系统也包含着多个服务。因此,采用SOA的方式分析和规划信息系统,并不是简单的将原有系统进行包装,我们只能逐步有选择的实现服务。
1.2 业务目标建模及决定服务是否暴露
系统的最终实现是由业务需求决定的,接下来我们将通过对业务目标的分析的方法,找出业务与服务的对应关系。在这个步骤中我们将解决这样两个问题:
一、 如何将SOA应用于医院信息系统的期望目标(业务目标)?
二、细化服务的粒度,什么样的功能模块可以作为服务暴露出来?
针对当前大型医院所面临的新老系统之间衔接和异构系统集成的问题。我们可以归纳出以下三点作为SOA应用于医院信息系统的主要业务目标:
a. 建立以病人为中心的信息系统、方便患者就诊。
b. 整合现有遗产系统,消除信息孤岛。
~ 8 ~
基于SOA与HL7的医院信息系统的研究与实践
c. 减少医疗差错,提高医疗质量,保障患者的个人隐私。
接下来我们要决定哪些功能模块需要作为服务暴露出来。这不是一个容易决策的过程,因为这不但与业务模型和技术手段有关,更与具体个案中的实际业务需求有关,不能一概而论,下面给出一些通用的原则,可以帮助我们做出决策:
a.对于在行业内已被普遍认可和实行的模块划分,一般都可以抽象为服务暴露出来;换句话说,在行业规范中规定了的业务服务一般都需要作为公共服务进行暴露。
b.和业务目标相关的功能是关注的焦点,会被重复调用,一般也需要作为服务进行暴露。
c.对于跨越业务部门边界的服务一般是需要暴露出来的。
d.考虑到物理实现的可行性,需要跨越地区部署的服务一般需要作为服务暴露出来。
SOA的基本原则就是“服务间松耦合、服务内紧耦合”,在前面我们提出的候选服务列表中,有很大部分是只应用于医院内部的,如应用管理、人事管理等,这些应用适宜采用的是紧耦合方式,并不适宜采用“服务”提取处理;鉴于当前的应用现状,根据以上提到的业务目标以及决定服务是否应该暴露的原则,笔者认为在医疗领域的以下一些方面,具有跨系统、跨科室应用、边界清晰、应用广泛的特点,可以做为“服务”抽象出来,做为SOA在医疗领域应用的切入点:
~ 9 ~
基于SOA与HL7的医院信息系统的研究与实践
a. 建立以病人为中心的信息系统、方便病人。
病人的基本信息服务---⑵患者管理
门诊医生出诊时间表服务---⑼日程安排
门户系统---⑷查询
b. 整合现有遗产系统,消除信息孤岛。
公共卫生数据上报---⑷查询
收费---⑸财务管理
检查检验结果查询服务---⑹观察报告
医疗仪器设备的接口---⑾临床实验室自动化
c. 减少医疗差错,提高医疗质量,保障患者的个人隐私。
药品禁忌配伍服务---⑶医嘱录入
电子病历的书写服务---⑻病历记录、信息管理
~ 10 ~
基于SOA与HL7的医院信息系统的研究与实践
医学知识库服务---[第三方]
1.3 服务的接口与描述
经过以上的服务发现阶段,我们得到了一个可供实现的服务的列表。对于一个IT 系统而言,仅仅有这个列表还是不够的,我们还需将这些服务的进行更准确的描述,并落实到IT层面上。我们需要定义服务的接口,就是说每个服务有什么输入和输出。如:
1)检查检验结果查询服务。
输入参数:××
输出参数:××
描述:××
2 HL7是SOA在医疗行业的语义
不同行业有不同行业的特点,不同的业务流程,SOA作为一项新的思想与技术,其行业应用必须与行业现有规范相结合。就医疗行业而言,这个标准就是HL7。
HL7(Health Level Seven)是一种在医疗信息化领域被广泛认同的数据交换的标准,也是在医疗领域抽象服务的最好参照。在美国有90%的大型医院和医疗集团采用这一标准
~ 11 ~
基于SOA与HL7的医院信息系统的研究与实践
用语数据交换。
HL7与SOA结合可以为我们解决什么问题呢?举个例子来说,医疗领域异构系统集成就好象地球人要和外星人交谈,需要商量确定一种共通的语言。这种语言包括语法和语义两部分:语法是语言表示的规则,即怎么说的问题;语义是语言的含义,即说什么的问题。对于系统集成而言,SOA解决的是技术层面的问题,是语法;HL7是内容的规范,是语义。打个比喻,就是SOA规定说,地球人外星人都说中文(统一的技术手段),但你说“就诊号”是病人的唯一身份标识、他用“病案号”指病人的唯一身份标示,还是无法交流。HL7就是将这些名词都规范为“病人ID”(标准)。
所以就行业应用而言,仅仅依靠SOA解决了信息跨平台“沟通”的问题是不够的,如果沟通的内容不统一,也是无效的沟通。HL7就是这样一个内容上的标准。
3 SOA的实现技术和产品
3.1 Web Services是SOA的最佳实现方式
Web Services是最重要的SOA的技术实现手段。一个Web Services是一个可以用URI来标志的软件系统,而且它的公共接口和绑定可以用XML格式的信息来定义和描述,它的定义可以被其它软件系统发现,并且其它软件系统可以通过使用基于XML的消息借助Internet协议、通过在Web Services的定义中描述的方式与其交互。
但Web Services并不是SOA的唯一实现方式,只要符合SOA松耦合、跨平台、服
~ 12 ~
基于SOA与HL7的医院信息系统的研究与实践
务自治的基本要求。任何技术手段都可以成为SOA的中介媒体,比如我们下面要介绍的一种商业产品。
3.2 BizTalk是微软SOA解决方案的核心产品
BizTalk是微软的主要产品之一,是微软SOA解决方案的核心。BizTalk中的Biz 为business的简称,talk是对话的意思,意在表明该产品是为各企业级商务应用程序提供消息交流之用。
BizTalk完全遵守SOA的体系结构,基于.NET框架,与VisualStudio.NET开发平台深度集成。其核心功能主要体现在“异构兼容”和“消息路由”这两方面。
BizTalk可以十分方便的将.NET应用发布为Web Services。同时,还提供了包括MSMQ、POP3、SMTP、FILE、SQL、FTP、HTTP、Windows Sharepoint Services等在内的近二十种适配器以及行业软件接口,使之可以适应一切环境下的SOA集成。
BizTalk内部使用XML文档作为信息的中介。也就是说不管消息以何种方式送达,BizTalk都会将其转换为XML,同样,如果接收者无法接收XML,BizTalk会将其转换为目标所要求的格式。
BizTalk采用发布/订阅的异步消息机制,彻底切断了服务发布者和服务请求者之间的依赖关系,任何子系统都只与BizTalk通讯,因此任何子系统的单点故障都不会影响整个体系的运行。
~ 13 ~
基于SOA与HL7的医院信息系统的研究与实践
在实践过程中,根据应用场景的不同,笔者分别在广域网环境下采用Web Services、在局域网环境下采用BizTalk,实现了前面提到的“检验检查结果查询”这个服务,具体实现过程就不在本文中展开讨论了。
~ 14 ~
基于SOA与HL7的医院信息系统的研究与实践
参考文献
[1] 2008.6
孟晓阳。基于SOA与HL7的医院信息系统的研究与实践,清华大学硕士论文,
[2] 毛新生。SOA原理方法实践,电子工业出版社,2007.7
[3] Health Level Seven(HL7 Version 2.4),http://www.hl7.org
[4] Microsoft .BizTalk Server 2006 R2帮助
~ 15 ~
因篇幅问题不能全部显示,请点此查看更多更全内容