关键字:异构数据库 中间件 XML技术 WEB Services
针对PACS(Picture Archiving and Communication System,医学影像存档与通信系统)中不同部门信息系统数据库异构、信息难以共享的问题,设计了一种基于XML和WEBServices异构数据库中间件技术的集成模型。该模型分由应用层,中间件层,数据层三部分组成,阐述了该模型各个部分的功能,详细说明了中间件层的实现。最后通过实验,证明了该中间件的可行性。
引言
医院数字化是目前国家卫生信息化发展的重点之一,也是国内医院现代化建设新兴的热点。在数字化医院中,PACS是比较重要的系统之一。但是,PACS的数据来源于医疗中的各个环节和医院信息系统的各个子系统,而许多子系统是由不同时期不同厂家开发的,这样存在异构数据库的数据共享问题,为了节约成本,充分利用现有资源,不可能全部将现有系统更换。为此,需要采用中间件技术来解决PACS异构数据库的数据共享问题。
本文在现有异构数据库领域研究成果的基础上,针对PACS中异构数据库数据共享问题,采用XML的异构数据库中间件技术实现异构数据库之间信息交换。把来自医院不同部门的影像数据转化到中间件这个统一的框架中,进行交互、转化和加工,从而解决异构数据源的集成问题,进而更有效地利用医院各种信息资源,为PACS系统中异构数据库在更大范围内实现了数据的共享。这一方法具有可扩展性好、跨平台特性、执行效率较高的优点,具有很高的实用价值。
1 PACS数据库集成模型设计
本方案采用XML作为异构数据源的全局模式,通过XML的标记来定义PACS的数据对象,具有平台无关性,适合在不同平台下进行影像数据交换,而且XML具有数据和表现样式相分离的特点,同一份XML文档可和不同的样式文件相结合,得到不同的数据视图,可以满足不同的临床医疗需求。Web Senrices完全是基于XML、SOAP、HTTP、WSDL、UDDI等独立于平台、独立于软件开发商的标准。是创建可互操作的、分布式应用程序的新平台。它能跨越防火墙的通信,而不用像传统的分布式组件技术那样,要开放特定的端口,才允许访问内部资源,给相关单位带来安全上的漏洞。web Services是建立在发布服务的应用程序和使用服务的应用程序之间的松散耦合之上的,因而具有很好的灵活性、可扩展性、且其实施既便宜又快速。方案的总体框架分为3个部分,如图1所示。
图1 PACS数据库集成模型
1.1数据层
数据层中,每个数据源由一个web服务包装器来进行封装,实现对各局部数据源的代理。将生成的web服务注册到服务注册中心,服务请求者(中间层的服务引用)调用服务后,wreb服务根据请求执行相应的服务,服务完成后把结果打包为SOAP传送给中间件层。
1.2中间件层
该层是PACS数据集成的业务逻辑核心,主要包括结果生成、服务结果、服务分解、服务引用,服务管理和注册服务。服务引用的功能是:根据服务注册中心提供的WSDL文件生成本地代理,并与相应的Web Service绑定,通过调用服务引用公共的函数就可以获得W曲服务提供的有关功能,它屏蔽了操作系统、网络协议、数据格式、开发工具、数据位置等差异,同时由于请求者和调用者之间数据传输采用的是SOAP,因此能够穿透防火墙,这体现了Web服务的一个重要优势。中间件首先要初始化,根据服务管理的界面生成虚拟数据库,即元数据。当用户提交请求后,由服务分解模块根据元数据中的映射关系将用户的请求分解为相应的请求,并转给对应的服务引用去申请Web服务。由Webservice包装器将执行完后的结果打包交回给中间件层,由服务结果模块进行相应的处理,再由结果生成模块根据用户请求传给应用界面显示给用户。
1.3应用层
这部分负责与用户实现交互。使用者调用中间件层返回的生成结果,应用层根据需求的不同,以不同的格式包装后显示给应用层。使用者不需要了解数据所在地、数据存储格式以及在数据所在系统等细节,用户根据工作提出集成请求,经过中间件层和数据层的处理后就可以得到想要的结果。
2中间件中关键模块的设计与实现
2.1数据初始化
通常异构数据库的基础数据会存在着相同意义不同字段名称的情况,这样为访问数据库造成了很大的麻烦,所以需要在系统开始运行阶段为系统中的虚拟数据库创建一个能体现他们之间相同之处的表格。这个表格提取异构数据库表中所有具有相同意义的基础字段,然后由中间件管理员创建一个元数据字段,每个局部数据库管理员登录后,从元数据中选取自已数据库中具有相同意义的表,并且将自己表中与元数据字段具有相同意义的字段做映射,从而实现了系统的初始化部分,为中间件层的服务分解阶段提供了基础。
2.2服务分解模块
本模块主要负责接收从用户客户端发送过来的标准SQL,根据元数据中全局数据与局部数据的映射关系,将全局查询语句的字段名映射为局部数据的字段名,同时获得局部数据库在UDDI中的注册信息,这样就将全局查询分解成针对不同数据库的子查询。查询分解模块首先得到SQL语句中的元数据表表名,接着查询系统初始化阶段生成的以元数据表表名命名的飙文件,从中查询到与业务处理系统处理的业务类型相同的局部数据库表,然后将SQL语句中的元数据表字段对应为相应的局部数据表字段,将元数据表的XML文件中每个局部表合并成一个SQL语句,最后把它们放入到服务引用模块,由服务引用模块根据其所提供的服务调用相应的远端数据层的WebService包装器。