国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

PACS中異構(gòu)數(shù)據(jù)庫中間件的研究與實現(xiàn)

2011-01-29 06:25:30
制造業(yè)自動化 2011年12期
關(guān)鍵詞:中間件數(shù)據(jù)源調(diào)用

李 燕

LI Yan

(桂林航天工業(yè)高等??茖W(xué)校,桂林 541004)

0 引言

醫(yī)院數(shù)字化是目前國家衛(wèi)生信息化發(fā)展的重點之一,也是國內(nèi)醫(yī)院現(xiàn)代化建設(shè)新興的熱點。在數(shù)字化醫(yī)院中,PACS是比較重要的系統(tǒng)之一。但是,PACS的數(shù)據(jù)來源于醫(yī)療中的各個環(huán)節(jié)和醫(yī)院信息系統(tǒng)的各個子系統(tǒng),而許多子系統(tǒng)是由不同時期不同廠家開發(fā)的,這樣存在異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)共享問題,為了節(jié)約成本,充分利用現(xiàn)有資源,不可能全部將現(xiàn)有系統(tǒng)更換。為此,需要采用中間件技術(shù)來解決PACS異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)共享問題[1-3]。

本文在現(xiàn)有異構(gòu)數(shù)據(jù)庫領(lǐng)域研究成果的基礎(chǔ)上,針對PACS中異構(gòu)數(shù)據(jù)庫數(shù)據(jù)共享問題,采用XM L的異構(gòu)數(shù)據(jù)庫中間件技術(shù)實現(xiàn)異構(gòu)數(shù)據(jù)庫之間信息交換。把來自醫(yī)院不同部門的影像數(shù)據(jù)轉(zhuǎn)化到中間件這個統(tǒng)一的框架中,進行交互、轉(zhuǎn)化和加工,從而解決異構(gòu)數(shù)據(jù)源的集成問題,進而更有效地利用醫(yī)院各種信息資源,為PACS系統(tǒng)中異構(gòu)數(shù)據(jù)庫在更大范圍內(nèi)實現(xiàn)了數(shù)據(jù)的共享。這一方法具有可擴展性好、跨平臺特性、執(zhí)行效率較高的優(yōu)點,具有很高的實用價值。

1 PACS數(shù)據(jù)庫集成模型設(shè)計

本方案采用XML作為異構(gòu)數(shù)據(jù)源的全局模式,通過XML的標記來定義PACS的數(shù)據(jù)對象,具有平臺無關(guān)性,適合在不同平臺下進行影像數(shù)據(jù)交換,而且XML具有數(shù)據(jù)和表現(xiàn)樣式相分離的特點,同一份XML文檔可和不同的樣式文件相結(jié)合,得到不同的數(shù)據(jù)視圖,可以滿足不同的臨床醫(yī)療需求。Web Services完全是基于XML、SOAP、HTTP、WSDL、UDDI等獨立于平臺、獨立于軟件開發(fā)商的標準。是創(chuàng)建可互操作的、分布式應(yīng)用程序的新平臺。它能跨越防火墻的通信,而不用像傳統(tǒng)的分布式組件技術(shù)那樣,要開放特定的端口,才允許訪問內(nèi)部資源,給相關(guān)單位帶來安全上的漏洞。web Services是建立在發(fā)布服務(wù)的應(yīng)用程序和使用服務(wù)的應(yīng)用程序之間的松散耦合之上的,因而具有很好的靈活性、可擴展性、且其實施既便宜又快速[4-7]。方案的總體框架分為3個部分,如圖1所示。

圖1 PACS數(shù)據(jù)庫集成模型

1.1 數(shù)據(jù)層

數(shù)據(jù)層中,每個數(shù)據(jù)源由一個web服務(wù)包裝器來進行封裝,實現(xiàn)對各局部數(shù)據(jù)源的代理。將生成的web服務(wù)注冊到服務(wù)注冊中心,服務(wù)請求者(中間層的服務(wù)引用)調(diào)用服務(wù)后,Web服務(wù)根據(jù)請求執(zhí)行相應(yīng)的服務(wù),服務(wù)完成后把結(jié)果打包為SOAP傳送給中間件層。

1.2 中間件層

該層是PACS數(shù)據(jù)集成的業(yè)務(wù)邏輯核心,主要包括結(jié)果生成、服務(wù)結(jié)果、服務(wù)分解、服務(wù)引用,服務(wù)管理和注冊服務(wù)。服務(wù)引用的功能是:根據(jù)服務(wù)注冊中心提供的WSDL文件生成本地代理,并與相應(yīng)的Web Service綁定,通過調(diào)用服務(wù)引用公共的函數(shù)就可以獲得Web服務(wù)提供的有關(guān)功能,它屏蔽了操作系統(tǒng)、網(wǎng)絡(luò)協(xié)議、數(shù)據(jù)格式、開發(fā)工具、數(shù)據(jù)位置等差異,同時由于請求者和調(diào)用者之間數(shù)據(jù)傳輸采用的是SOAP,因此能夠穿透防火墻,這體現(xiàn)了Web服務(wù)的一個重要優(yōu)勢。中間件首先要初始化,根據(jù)服務(wù)管理的界面生成虛擬數(shù)據(jù)庫,即元數(shù)據(jù)。當用戶提交請求后,由服務(wù)分解模塊根據(jù)元數(shù)據(jù)中的映射關(guān)系將用戶的請求分解為相應(yīng)的請求,并轉(zhuǎn)給對應(yīng)的服務(wù)引用去申請Web服務(wù)。由Web Service包裝器將執(zhí)行完后的結(jié)果打包交回給中間件層,由服務(wù)結(jié)果模塊進行相應(yīng)的處理,再由結(jié)果生成模塊根據(jù)用戶請求傳給應(yīng)用界面顯示給用戶。

1.3 應(yīng)用層

這部分負責(zé)與用戶實現(xiàn)交互。使用者調(diào)用中間件層返回的生成結(jié)果,應(yīng)用層根據(jù)需求的不同,以不同的格式包裝后顯示給應(yīng)用層。使用者不需要了解數(shù)據(jù)所在地、數(shù)據(jù)存儲格式以及在數(shù)據(jù)所在系統(tǒng)等細節(jié),用戶根據(jù)工作提出集成請求,經(jīng)過中間件層和數(shù)據(jù)層的處理后就可以得到想要的結(jié)果。

2 中間件中關(guān)鍵模塊的設(shè)計與實現(xiàn)

2.1 數(shù)據(jù)初始化

通常異構(gòu)數(shù)據(jù)庫的基礎(chǔ)數(shù)據(jù)會存在著相同意義不同字段名稱的情況,這樣為訪問數(shù)據(jù)庫造成了很大的麻煩,所以需要在系統(tǒng)開始運行階段為系統(tǒng)中的虛擬數(shù)據(jù)庫創(chuàng)建一個能體現(xiàn)他們之間相同之處的表格。這個表格提取異構(gòu)數(shù)據(jù)庫表中所有具有相同意義的基礎(chǔ)字段,然后由中間件管理員創(chuàng)建一個元數(shù)據(jù)字段,每個局部數(shù)據(jù)庫管理員登錄后,從元數(shù)據(jù)中選取自已數(shù)據(jù)庫中具有相同意義的表,并且將自己表中與元數(shù)據(jù)字段具有相同意義的字段做映射,從而實現(xiàn)了系統(tǒng)的初始化部分,為中間件層的服務(wù)分解階段提供了基礎(chǔ)。

2.2 服務(wù)分解模塊

本模塊主要負責(zé)接收從用戶客戶端發(fā)送過來的標準SQL,根據(jù)元數(shù)據(jù)中全局數(shù)據(jù)與局部數(shù)據(jù)的映射關(guān)系,將全局查詢語句的字段名映射為局部數(shù)據(jù)的字段名,同時獲得局部數(shù)據(jù)庫在UDDI中的注冊信息,這樣就將全局查詢分解成針對不同數(shù)據(jù)庫的子查詢。查詢分解模塊首先得到SQL語句中的元數(shù)據(jù)表表名,接著查詢系統(tǒng)初始化階段生成的以元數(shù)據(jù)表表名命名的XML文件,從中查詢到與業(yè)務(wù)處理系統(tǒng)處理的業(yè)務(wù)類型相同的局部數(shù)據(jù)庫表,然后將SQL語句中的元數(shù)據(jù)表字段對應(yīng)為相應(yīng)的局部數(shù)據(jù)表字段,將元數(shù)據(jù)表的XML文件中每個局部表合并成一個SQL語句,最后把它們放入到服務(wù)引用模塊,由服務(wù)引用模塊根據(jù)其所提供的服務(wù)調(diào)用相應(yīng)的遠端數(shù)據(jù)層的Web Service包裝器。

利用Visual Studio.NET 2005開發(fā)平臺與C#程序語言來開發(fā)此異構(gòu)中間件,同時用DOM來對XML進行解析。以下是系統(tǒng)實現(xiàn)中解析XML的部分代碼。

2.3 服務(wù)引用模塊

該模塊接收從服務(wù)分解模塊傳送過來的局部數(shù)據(jù)源,依據(jù)Web Service包裝器在UDDI中的注冊服務(wù)信息,從UDDI服務(wù)中心查找到所對應(yīng)服務(wù)的WSDL文件,生成本地代理,這樣就可以調(diào)用局部數(shù)據(jù)源所提供的Web服務(wù)。在本方案中,采用在運行時生成代理的方法來添加Web引用。首先將UDDI.SDK類添加到項目中,利用Inquire的Url屬性獲得UDDI的服務(wù)地址,用FindTModel方法查詢?nèi)亢虾鯒l件的tModel對象,用getTModelDetail方法取得tModel對象的詳細信息,即TModel類。TModel類包括了tModel的主要屬性,如 Category、Identifier、Operator、OverviewDoc等等。

下面是系統(tǒng)服務(wù)引用模塊中根據(jù)tModel參數(shù),尋找Web服務(wù)包裝器在UDDI中注冊的WSDL文件地址的部分代碼:

調(diào)用Find_tModel函數(shù)之后,能得到局部數(shù)據(jù)源包裝器的WSDL文件的地址,通過該地址調(diào)用InvokeWebService函數(shù)動態(tài)生成本地客戶端代理,然后就可以象調(diào)用本地方法一樣調(diào)用遠程Web服務(wù)包裝器的方法。

2.4 服務(wù)結(jié)果模塊

該模塊的主要功能是取得各異構(gòu)數(shù)據(jù)源包裝器執(zhí)行完后的服務(wù)結(jié)果。本模塊中用Dataset對象接收數(shù)據(jù)。DataSet類是在ADO.NET中實現(xiàn)的,.NET中的擴展支持可以自動創(chuàng)建和填充DataSet對象和類型化DataSet對象。DataSet能夠?qū)⒆陨硇蛄修D(zhuǎn)化為XML,并能在序列化過程中表現(xiàn)內(nèi)容的架構(gòu)。因此使用DataSet對象可簡化應(yīng)用程序的開發(fā)。DataSet對象實際上是所查詢數(shù)據(jù)集的XML的內(nèi)存表示。使用DataSet的WriteXml方法可將其數(shù)據(jù)集保存為XML文檔。

實現(xiàn)本系統(tǒng)的中間件時,采取讀取客戶端IP地址和計算所查詢的異構(gòu)數(shù)據(jù)庫個數(shù)來命名從異構(gòu)數(shù)據(jù)源返回的XML文檔。該部分實現(xiàn)的關(guān)鍵代碼如下:

2.5 服務(wù)生成模塊

該模塊的主要功能是:將查詢各異構(gòu)數(shù)據(jù)庫所返回的結(jié)果合為同一筆記錄,按照數(shù)據(jù)庫中間件系統(tǒng)與業(yè)務(wù)處理系統(tǒng)的接口進行封裝,最后返回給應(yīng)用層。本系統(tǒng)仍然通過DOM技術(shù)對XML文件進行解析和合并。首先加載從服務(wù)結(jié)果中生成的XML文件,用DocumentElement方法得到需要合并的多個XML文件的根元素,然后根據(jù)服務(wù)結(jié)果中的XML文檔命名法,取計算為1的文檔為準,用ImportNode方法將其它XML文件中的數(shù)據(jù)合并到該文檔,最后根據(jù)元數(shù)據(jù)表與局部數(shù)據(jù)的映射文件,利用ModifyNodeName函數(shù)修改該文檔的節(jié)點,使其符合服務(wù)請求時查詢結(jié)果要求。實現(xiàn)該模塊的部分代碼如下:AppendChild (docl.ImportNode(elem, true));

2.6 UDDI注冊服務(wù)中心

該模塊的主要功能是記錄能提供服務(wù)的各種相關(guān)信息,用來供服務(wù)引用模塊根據(jù)服務(wù)注冊中心的WSDL文件生成服務(wù)引用信息。在構(gòu)建Web服務(wù)應(yīng)用程序時,可以采用設(shè)計時和運行時兩種編程模式。

設(shè)計時訪問是在編制面向服務(wù)的應(yīng)用程序時,通過注冊中心的瀏覽頁面找到所需要的web服務(wù),并在應(yīng)用程序中調(diào)用它。運行時訪問是通過在應(yīng)用程序中編寫代碼查找在注冊中心里注冊的Web服務(wù),并且對它進行調(diào)用。無論使用哪一種方法,都需要先將Web服務(wù)的WSDL文件注冊為tModel,利用tModel來尋找所需要的服務(wù)信息。本系統(tǒng)中利用Windows Server 2003所提供的UDDI服務(wù)功能來建立私有的UDDI注冊中心。

3 實驗結(jié)果

首先利用Microsoft的web用戶界面進行UDDI注冊,然后以數(shù)據(jù)庫中間件管理員的身份登錄中間件注冊全局信息,接著以局部數(shù)據(jù)庫管理員登錄中間件,注冊本地數(shù)據(jù)庫信息與元數(shù)據(jù)表的映射信息。系統(tǒng)運行過程主要是用戶啟動瀏覽器,通過數(shù)據(jù)庫中間件對異構(gòu)數(shù)據(jù)庫進行訪問,并在瀏覽器端看到查詢的結(jié)果。如圖2所示是輸入住院號和姓名后所得到的查詢結(jié)果。

圖2 病人病歷查詢結(jié)果顯示圖

4 結(jié)束語

由于PACS中異構(gòu)數(shù)據(jù)源之間的差異,使得異構(gòu)數(shù)據(jù)源集成了一個很難解決的問題,文章設(shè)計并實現(xiàn)了一種基于XML和WEB Services異構(gòu)數(shù)據(jù)庫中間件技術(shù)的集成方案。把來自不同部門的影像數(shù)據(jù)轉(zhuǎn)化到中間件這個統(tǒng)一的框架中,進行交互、轉(zhuǎn)化和加工,從而解決異構(gòu)數(shù)據(jù)源的集成問題,進而更有效地利用醫(yī)院各種信息資源,為PACS系統(tǒng)中異構(gòu)數(shù)據(jù)庫在更大范圍內(nèi)實現(xiàn)了數(shù)據(jù)的共享。最后本文以一個實驗系統(tǒng)實現(xiàn)了該數(shù)據(jù)庫中間件的主要功能。

[1]趙芳云.基于XML的異構(gòu)數(shù)據(jù)源查詢系統(tǒng)設(shè)計[J].計算機應(yīng)用與軟件, 2009, 26(8)∶185-187.

[2]郝少華.基于XML技術(shù)的異構(gòu)關(guān)系數(shù)據(jù)庫集成模型[J].計算機工程與設(shè)計, 2010, 31(24)∶ 5285-5288.

[3]李黎, 楊春.基于RDBMS的xml數(shù)據(jù)管理技術(shù)研究[J].計算機工程與設(shè)計, 2007, 28(24)∶ 6008-6010.

[4]俞國紅.基于XML的異構(gòu)數(shù)據(jù)庫中間件的設(shè)計與實現(xiàn)[J].中國現(xiàn)代教育裝備, 2010, 35(19)∶ 63-65.

[5]孫友倉, 宋彩利, 李潤洲.一種基于Web Service的異構(gòu)數(shù)據(jù)集成中間件[J].西安科技大學(xué)學(xué)報, 2007, 27(2)∶ 284-287.

[6]李欣, 李園.基于中間件技術(shù)的后方綜合倉庫管理信息系統(tǒng)集成研究[J].軍事交通學(xué)院學(xué)報, 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.

猜你喜歡
中間件數(shù)據(jù)源調(diào)用
核電項目物項調(diào)用管理的應(yīng)用研究
LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
RFID中間件技術(shù)及其應(yīng)用研究
電子制作(2018年14期)2018-08-21 01:38:10
基于VanConnect中間件的設(shè)計與開發(fā)
電子測試(2018年10期)2018-06-26 05:54:02
Web 大數(shù)據(jù)系統(tǒng)數(shù)據(jù)源選擇*
基于不同網(wǎng)絡(luò)數(shù)據(jù)源的期刊評價研究
基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
基于真值發(fā)現(xiàn)的沖突數(shù)據(jù)源質(zhì)量評價算法
中間件在高速公路領(lǐng)域的應(yīng)用
分布式異構(gòu)數(shù)據(jù)源標準化查詢設(shè)計與實現(xiàn)
新绛县| 新密市| 娄底市| 辉县市| 宁国市| 泾川县| 新建县| 白河县| 交口县| 咸丰县| 五大连池市| 兰坪| 扬州市| 桑日县| 彭阳县| 临泽县| 大同县| 高平市| 辽宁省| 河北省| 左云县| 沁水县| 黄浦区| 临西县| 黄冈市| 日照市| 永和县| 新龙县| 巴彦淖尔市| 定西市| 扶沟县| 东丰县| 广汉市| 双辽市| 浮梁县| 大渡口区| 通道| 马尔康县| 两当县| 重庆市| 苍山县|