PACS中异构数据库中间件的研究与实现

2011-01-29 06:25
制造业自动化 2011年12期
关键词:中间件数据源调用

李 燕

LI Yan

(桂林航天工业高等专科学校,桂林 541004)

0 引言

医院数字化是目前国家卫生信息化发展的重点之一,也是国内医院现代化建设新兴的热点。在数字化医院中,PACS是比较重要的系统之一。但是,PACS的数据来源于医疗中的各个环节和医院信息系统的各个子系统,而许多子系统是由不同时期不同厂家开发的,这样存在异构数据库的数据共享问题,为了节约成本,充分利用现有资源,不可能全部将现有系统更换。为此,需要采用中间件技术来解决PACS异构数据库的数据共享问题[1-3]。

本文在现有异构数据库领域研究成果的基础上,针对PACS中异构数据库数据共享问题,采用XM L的异构数据库中间件技术实现异构数据库之间信息交换。把来自医院不同部门的影像数据转化到中间件这个统一的框架中,进行交互、转化和加工,从而解决异构数据源的集成问题,进而更有效地利用医院各种信息资源,为PACS系统中异构数据库在更大范围内实现了数据的共享。这一方法具有可扩展性好、跨平台特性、执行效率较高的优点,具有很高的实用价值。

1 PACS数据库集成模型设计

本方案采用XML作为异构数据源的全局模式,通过XML的标记来定义PACS的数据对象,具有平台无关性,适合在不同平台下进行影像数据交换,而且XML具有数据和表现样式相分离的特点,同一份XML文档可和不同的样式文件相结合,得到不同的数据视图,可以满足不同的临床医疗需求。Web Services完全是基于XML、SOAP、HTTP、WSDL、UDDI等独立于平台、独立于软件开发商的标准。是创建可互操作的、分布式应用程序的新平台。它能跨越防火墙的通信,而不用像传统的分布式组件技术那样,要开放特定的端口,才允许访问内部资源,给相关单位带来安全上的漏洞。web Services是建立在发布服务的应用程序和使用服务的应用程序之间的松散耦合之上的,因而具有很好的灵活性、可扩展性、且其实施既便宜又快速[4-7]。方案的总体框架分为3个部分,如图1所示。

图1 PACS数据库集成模型

1.1 数据层

数据层中,每个数据源由一个web服务包装器来进行封装,实现对各局部数据源的代理。将生成的web服务注册到服务注册中心,服务请求者(中间层的服务引用)调用服务后,Web服务根据请求执行相应的服务,服务完成后把结果打包为SOAP传送给中间件层。

1.2 中间件层

该层是PACS数据集成的业务逻辑核心,主要包括结果生成、服务结果、服务分解、服务引用,服务管理和注册服务。服务引用的功能是:根据服务注册中心提供的WSDL文件生成本地代理,并与相应的Web Service绑定,通过调用服务引用公共的函数就可以获得Web服务提供的有关功能,它屏蔽了操作系统、网络协议、数据格式、开发工具、数据位置等差异,同时由于请求者和调用者之间数据传输采用的是SOAP,因此能够穿透防火墙,这体现了Web服务的一个重要优势。中间件首先要初始化,根据服务管理的界面生成虚拟数据库,即元数据。当用户提交请求后,由服务分解模块根据元数据中的映射关系将用户的请求分解为相应的请求,并转给对应的服务引用去申请Web服务。由Web Service包装器将执行完后的结果打包交回给中间件层,由服务结果模块进行相应的处理,再由结果生成模块根据用户请求传给应用界面显示给用户。

1.3 应用层

这部分负责与用户实现交互。使用者调用中间件层返回的生成结果,应用层根据需求的不同,以不同的格式包装后显示给应用层。使用者不需要了解数据所在地、数据存储格式以及在数据所在系统等细节,用户根据工作提出集成请求,经过中间件层和数据层的处理后就可以得到想要的结果。

2 中间件中关键模块的设计与实现

2.1 数据初始化

通常异构数据库的基础数据会存在着相同意义不同字段名称的情况,这样为访问数据库造成了很大的麻烦,所以需要在系统开始运行阶段为系统中的虚拟数据库创建一个能体现他们之间相同之处的表格。这个表格提取异构数据库表中所有具有相同意义的基础字段,然后由中间件管理员创建一个元数据字段,每个局部数据库管理员登录后,从元数据中选取自已数据库中具有相同意义的表,并且将自己表中与元数据字段具有相同意义的字段做映射,从而实现了系统的初始化部分,为中间件层的服务分解阶段提供了基础。

2.2 服务分解模块

本模块主要负责接收从用户客户端发送过来的标准SQL,根据元数据中全局数据与局部数据的映射关系,将全局查询语句的字段名映射为局部数据的字段名,同时获得局部数据库在UDDI中的注册信息,这样就将全局查询分解成针对不同数据库的子查询。查询分解模块首先得到SQL语句中的元数据表表名,接着查询系统初始化阶段生成的以元数据表表名命名的XML文件,从中查询到与业务处理系统处理的业务类型相同的局部数据库表,然后将SQL语句中的元数据表字段对应为相应的局部数据表字段,将元数据表的XML文件中每个局部表合并成一个SQL语句,最后把它们放入到服务引用模块,由服务引用模块根据其所提供的服务调用相应的远端数据层的Web Service包装器。

利用Visual Studio.NET 2005开发平台与C#程序语言来开发此异构中间件,同时用DOM来对XML进行解析。以下是系统实现中解析XML的部分代码。

2.3 服务引用模块

该模块接收从服务分解模块传送过来的局部数据源,依据Web Service包装器在UDDI中的注册服务信息,从UDDI服务中心查找到所对应服务的WSDL文件,生成本地代理,这样就可以调用局部数据源所提供的Web服务。在本方案中,采用在运行时生成代理的方法来添加Web引用。首先将UDDI.SDK类添加到项目中,利用Inquire的Url属性获得UDDI的服务地址,用FindTModel方法查询全部合乎条件的tModel对象,用getTModelDetail方法取得tModel对象的详细信息,即TModel类。TModel类包括了tModel的主要属性,如 Category、Identifier、Operator、OverviewDoc等等。

下面是系统服务引用模块中根据tModel参数,寻找Web服务包装器在UDDI中注册的WSDL文件地址的部分代码:

调用Find_tModel函数之后,能得到局部数据源包装器的WSDL文件的地址,通过该地址调用InvokeWebService函数动态生成本地客户端代理,然后就可以象调用本地方法一样调用远程Web服务包装器的方法。

2.4 服务结果模块

该模块的主要功能是取得各异构数据源包装器执行完后的服务结果。本模块中用Dataset对象接收数据。DataSet类是在ADO.NET中实现的,.NET中的扩展支持可以自动创建和填充DataSet对象和类型化DataSet对象。DataSet能够将自身序列转化为XML,并能在序列化过程中表现内容的架构。因此使用DataSet对象可简化应用程序的开发。DataSet对象实际上是所查询数据集的XML的内存表示。使用DataSet的WriteXml方法可将其数据集保存为XML文档。

实现本系统的中间件时,采取读取客户端IP地址和计算所查询的异构数据库个数来命名从异构数据源返回的XML文档。该部分实现的关键代码如下:

2.5 服务生成模块

该模块的主要功能是:将查询各异构数据库所返回的结果合为同一笔记录,按照数据库中间件系统与业务处理系统的接口进行封装,最后返回给应用层。本系统仍然通过DOM技术对XML文件进行解析和合并。首先加载从服务结果中生成的XML文件,用DocumentElement方法得到需要合并的多个XML文件的根元素,然后根据服务结果中的XML文档命名法,取计算为1的文档为准,用ImportNode方法将其它XML文件中的数据合并到该文档,最后根据元数据表与局部数据的映射文件,利用ModifyNodeName函数修改该文档的节点,使其符合服务请求时查询结果要求。实现该模块的部分代码如下:AppendChild (docl.ImportNode(elem, true));

2.6 UDDI注册服务中心

该模块的主要功能是记录能提供服务的各种相关信息,用来供服务引用模块根据服务注册中心的WSDL文件生成服务引用信息。在构建Web服务应用程序时,可以采用设计时和运行时两种编程模式。

设计时访问是在编制面向服务的应用程序时,通过注册中心的浏览页面找到所需要的web服务,并在应用程序中调用它。运行时访问是通过在应用程序中编写代码查找在注册中心里注册的Web服务,并且对它进行调用。无论使用哪一种方法,都需要先将Web服务的WSDL文件注册为tModel,利用tModel来寻找所需要的服务信息。本系统中利用Windows Server 2003所提供的UDDI服务功能来建立私有的UDDI注册中心。

3 实验结果

首先利用Microsoft的web用户界面进行UDDI注册,然后以数据库中间件管理员的身份登录中间件注册全局信息,接着以局部数据库管理员登录中间件,注册本地数据库信息与元数据表的映射信息。系统运行过程主要是用户启动浏览器,通过数据库中间件对异构数据库进行访问,并在浏览器端看到查询的结果。如图2所示是输入住院号和姓名后所得到的查询结果。

图2 病人病历查询结果显示图

4 结束语

由于PACS中异构数据源之间的差异,使得异构数据源集成了一个很难解决的问题,文章设计并实现了一种基于XML和WEB Services异构数据库中间件技术的集成方案。把来自不同部门的影像数据转化到中间件这个统一的框架中,进行交互、转化和加工,从而解决异构数据源的集成问题,进而更有效地利用医院各种信息资源,为PACS系统中异构数据库在更大范围内实现了数据的共享。最后本文以一个实验系统实现了该数据库中间件的主要功能。

[1]赵芳云.基于XML的异构数据源查询系统设计[J].计算机应用与软件, 2009, 26(8)∶185-187.

[2]郝少华.基于XML技术的异构关系数据库集成模型[J].计算机工程与设计, 2010, 31(24)∶ 5285-5288.

[3]李黎, 杨春.基于RDBMS的xml数据管理技术研究[J].计算机工程与设计, 2007, 28(24)∶ 6008-6010.

[4]俞国红.基于XML的异构数据库中间件的设计与实现[J].中国现代教育装备, 2010, 35(19)∶ 63-65.

[5]孙友仓, 宋彩利, 李润洲.一种基于Web Service的异构数据集成中间件[J].西安科技大学学报, 2007, 27(2)∶ 284-287.

[6]李欣, 李园.基于中间件技术的后方综合仓库管理信息系统集成研究[J].军事交通学院学报, 2009, 11(6), 53-56.

[7]Popa L, Velegrakis Y, Miller R J, et al.Translating web data[J].VLDB Journal, 2002, 11(3)∶ 233-246.

猜你喜欢
中间件数据源调用
核电项目物项调用管理的应用研究
系统虚拟化环境下客户机系统调用信息捕获与分析①
RFID中间件技术及其应用研究
Web 大数据系统数据源选择*
基于Android 平台的OSGi 架构中间件的研究与应用
基于不同网络数据源的期刊评价研究
基于真值发现的冲突数据源质量评价算法
中间件在高速公路领域的应用
分布式异构数据源标准化查询设计与实现
利用RFC技术实现SAP系统接口通信