基于面向服务架构整合医院信息系统的研究
2010-01-26陈巍刘旻
【作 者】陈巍,刘旻
首都医科大学附属北京朝阳医院信息中心,北京市,100020
随着医疗行业信息化进程的不断深入,各种信息系统渗透到医院运营的多个环节。由于软件专业化及医疗领域的特殊性,所有系统很难由同一软件商供应,而医院的集中化管理却需要跨越不同系统的业务流程,实现数据交互与共享。如何将来自不同厂商、各具特色的专业系统进行企业级应用整合,成为医院信息部门的重要任务。
1 企业应用集成和SOA架构
企业应用集成(EAI)是将不同平台、不同方案建立的异构系统整合、集成的一种方法和技术。EAI通过建立底层结构,来联系横贯整个企业的异构系统、应用和数据源等,实现系统间的无缝共享和交换数据,使企业管理者能将视线放在核心业务的运营和发展上。
EAI以分层机制运作,包括消息通信层、数据映射层和工作流管理层等。根据应用整合的深度,EAI可在不同层面实现,包括界面集成、业务过程集成、应用集成、数据集成等[1]。基于SOA架构的应用集成方案是目前的发展方向。
SOA即面向服务架构,是一种分布式的软件组件模型。系统的业务功能被封装为可供他人使用的“服务”,并通过定义良好的接口和契约联系起来,在某系统使用其它系统中的功能时,无需考虑其具体实现与物理位置。SOA架构集成各系统间具有相对独立性和松耦合关系,为解决多种异构系统集成提供有力支持[2]。
SOA架构的核心组件包括服务提供者、服务使用者和一个中立的服务总线机构,集成系统的所有业务功能都以服务形式在总线中注册,以便使用者能正确调用,也便于管理人员能对其统一控制与协调,避免在系统集成中产生点对点式的复杂网络交互。
2 我院信息系统的现状
为满足多种不同的业务和管理需求,医院运行着下述一些信息系统。
(1)管理门诊和住院业务的医嘱传输系统(Order Communication System) 这是从“以财务计费为中心”的医院信息系统(HIS)向“以病人为中心”的临床信息系统(CIS)过渡的一种系统,是我院的核心业务系统。服务器为IBM的AIX,数据库为Oracle 9i。
(2)实验室信息系统(LIS) LIS与OCS为不同软件商提供,基于Visual C++开发,服务器是Win2003 Server + SQL Server。OCS与LIS的数据交换通过数据库中间表。
(3)医学影像归档与传输系统(PACS) 它是GE公司采用Jave开发的多层应用结构,中间层运行JBoss作为Web Server和应用服务器,客户端基于Swing框架和Java虚拟机(JVM)运行[3]。与LIS一样,PACS也借助数据库中间表与OCS交互。
(4)医院门户网站 其中专家介绍、出诊时间、网上预约等模块与OCS系统有直接或间接的数据交互。网站采用Visual Studio 2005和C#开发,基于ASP.Net架构。
此外,还包括医保上传接口、财务管理系统、物资管理系统、供应室管理系统,以及挂号处和住院处还有用于应急的本地系统等。
上述众多业务系统的运行环境和软件架构都各不相同,但各系统间都存在数据交互或共享的需求。早期是在各系统间建立中间表或增加点对点的通信模块,来实现数据沟通,但随着系统的不断增多,点对点的方式演化成极为复杂的交叉通讯网络,不但难于升级与维护,而且系统的运行效率、稳定性和安全性都成为问题。
为了保证各系统的相对独立性,又要实现系统间的通畅便捷的数据交换,还要保证整个系统群集的结构稳定和可维护性,我们引进了SOA架构技术,以服务总线的方式重新设计应用集成方案。
3 应用SOA实现我院的系统集成
第一阶段对三个主业务系统(OCS、LIS、PACS)进行了集成与整合,其中OCS全面管理我院的门急诊和住院业务。OCS以医嘱信息为核心,在传统HIS基础上结合业务流思想,将医疗全过程信息进行数字化[4],它是我院最核心的业务系统。
首先对OCS系统进行业务分析,明析系统边界,将各种业务操作归类。我们将它分为基础类和边界类操作,前者一般是在OCS系统内部运行的功能,后者是与其它业务系统有数据交互的过程。然后,把边界类操作剥离出来,抽象或封装成服务的形式。
在OCS操作归类的基础上,建立企业服务总线(ESB)。总线式的体系结构可以将原先各个系统间的点对点连接转化为多个系统对中心的连接方式,由ESB提供各种消息路由和数据转换等机制,以消息中间件或Web Service作为物理消息传递背板,保证在分布式环境下可靠高效的传输[5]。
在具体实现上,因为OCS是早期用VB6.0开发的二层的C/S应用,因此对OCS中边界类业务过程采用Asp.net架构开发Web Service实现再封装,开发工具为Visual Studio 2005和VB.Net。这样可最大限度利用原有资源,加快项目建设速度。
实验室系统(LIS)原为Visual C++开发,我们将其分离为底层操作和业务操作两部分。底层操作主要负责与检验设备通信的工作,要求厂家提供DLL和API;业务操作部分主要是化验申请、登记、计费、结果核对与传送、回显与打印报告等处理过程,我们用VB.Net或C#重写,基于Asp.net架构封装,与OCS的Web Service一起生成WSDL(Web服务描述),注册在基于IIS的应用服务器中。
医学影像系统(PACS)的专业性较强(如对CT、MRI等影像采集和图像变换算法等),是JAVA开发的基于Web的多层应用,本身就能对外提供Web Service接口,只是与OCS基于.Net平台的Web Service交互时,需要作某些格式转换。这可以通过增加服务适配器来实现[6]。
OCS、LIS和PACS三个系统集成完成后,其它辅助系统或医院的运营管理系统(如物流、财务、薪资、绩效、医保、OA、门户网站等),都可以按上述2种模式中的一种,逐步并入服务总线中,实现医院级的系统大集成,体系结构如图1所示。
4 在应用集成的实施中,我们总结出如下经验
① 要实现高效、有序、无障碍的应用集成,必须制定数据的标准格式。比如在提供Web Services时,尽量使用XML Schema中支持的类型,否则在信息交换时会出现序列化和反序列化异常。
② 系统集成的底层结构、软件、硬件以及异构网络的特殊需求都必须得到集成,可采用平台集成工具(如VM虚拟机技术),以保证各系统能快速安全的转换[7]。
③ 应用集成不宜求快求全,应该一步步实现,稳扎稳打。作为集成平台的服务总线与标准的建立也不是一日之功,总线或平台本身也可以分层实现,并尽量采用松耦合的连接机制,便于日后的扩展与调整。
5 结语
我国医院的信息化建设经多年发展,大多形成许多相互协作的业务系统,在实现统一的临床信息系统以前,整合现有的分散系统是一个重大课题,特别是在我国卫生信息标准化程度还较低的情况下。借助SOA架构实现企业级的应用集成,能帮助医院升级和管理其分散的基础业务,以形成集中管理的平台,其中强调复用和松耦合,以及注重接口和标准化,都为医院应用系统带来更佳的扩展性和灵活性,从而快速满足医院的业务需求变化,使医院掌握信息化建设与发展的主动权。
[1] 吴晓, 等. 基于SOA的企业应用集成研究[J]. 信息技术, 2007, 31(4):97-99.
[2] 桂友武, 等. 用SOA与Web Services企业集成框架设计[J]. 信息技术, 2007, 31(10): 56-58.
[3] 吕校春, 等. 基于Swing的JavaGUI组件开发[J]. 机械工程师, 2008,(5): 129-131.
[4] 刘旻, 等. 医嘱传输系统中业务自锁的研究与解决[J]. 微型电脑应用, 2009, 25(10): 57-59.
[5] 蔡晋龙, 等. 基于集成平台的医院信息系统集成方案[J]. 中国医疗器械, 2007, 31(6): 419-421.
[6] 谢锋, 等. 信息系统基础上架构无线临床信息系统[J]. 中国医疗器械, 2008, 32(2): 114-116.
[7] 刘旻, 等. 虚拟技术在医院信息化中的研究[J]. 中国病案, 2010,11(1): 54-56.