【作 者】薛衛(wèi)京,王鵬程,孟建,王海洋
泰山醫(yī)學(xué)院,泰安市,271016
隨著數(shù)字成像及其處理技術(shù)、網(wǎng)絡(luò)通訊技術(shù)的發(fā)展,并隨著影像設(shè)備數(shù)字化及DICOM標(biāo)準(zhǔn)的頒布,醫(yī)學(xué)影像存檔與傳輸系統(tǒng)(Picture Archiving and Communication System,PACS)的應(yīng)用越來越廣泛。醫(yī)學(xué)影像資料(圖像和文字)能夠方便地進(jìn)行采集、存儲、處理及傳輸?shù)?,醫(yī)學(xué)影像資源達(dá)到充分共享[1]。
隨著3G網(wǎng)絡(luò)的使用、移動業(yè)務(wù)的發(fā)展和移動通信速率的提升、資費(fèi)的下調(diào)以及手持移動設(shè)備(如智能手機(jī)、Ipad等)計(jì)算性能與存儲能力的增強(qiáng),手持移動設(shè)備以其特有的便捷性成為了即時(shí)獲取和分享信息的新型網(wǎng)絡(luò)工具,同時(shí)傳統(tǒng)Web網(wǎng)絡(luò)應(yīng)用也實(shí)現(xiàn)了信息融合和數(shù)據(jù)共享,因此醫(yī)務(wù)人員利用手持移動智能設(shè)備與醫(yī)院的PACS進(jìn)行信息交流,跨越時(shí)間和空間的約束進(jìn)行掌上閱片,掌上書寫診斷報(bào)告成為可能[2]。
但是如何實(shí)現(xiàn)傳統(tǒng)的PACS與手持移動智能設(shè)備進(jìn)行信息交流則成為需要解決的關(guān)鍵技術(shù)。筆者經(jīng)過實(shí)踐探索了一種基于Web Service技術(shù)的PACS與手持移動終端進(jìn)行通信的解決方案,該方案簡單、易實(shí)現(xiàn)、開發(fā)周期短,有很強(qiáng)的實(shí)用性。
Web Service是基于SOA理念的數(shù)據(jù)傳輸技術(shù),是在分布式計(jì)算、XML等技術(shù)相互融合的基礎(chǔ)上,利用HTTP 和 SOAP 協(xié)議使數(shù)據(jù)在 Web 上傳輸。SOAP通過 HTTP 調(diào)用對象執(zhí)行遠(yuǎn)程功能調(diào)用,Web 用戶能夠使用 SOAP 和 HTTP通過 Web 調(diào)用的方法來調(diào)用遠(yuǎn)程對象,遠(yuǎn)程對象的差異由Web Service來屏蔽,不需要用戶考慮。
利用Web Service技術(shù)就可以將一個(gè)個(gè)的“信息孤島”有機(jī)地融合起來,達(dá)到信息共享。例如在一個(gè)醫(yī)院中,分別建立了門診掛號系統(tǒng)、PACS系統(tǒng)、住院系統(tǒng)等,這些系統(tǒng)最初都是由不同的科室建立起來的,它們可能也工作在不同的操作系統(tǒng)平臺上,實(shí)現(xiàn)的開發(fā)語言也不盡相同。怎樣將他們?nèi)诤蠟橐惑w呢?建立基于Web Service技術(shù)的HIS就可以很好地將這些“信息孤島”有機(jī)地融合起來[3]。
Web Service技術(shù)目前已得到廣泛應(yīng)用,其中與我們生活最密切相關(guān)的銀聯(lián)跨行存取款業(yè)務(wù)就是利用Web Service技術(shù)實(shí)現(xiàn)的。其他如手機(jī)微博、手機(jī)天氣預(yù)報(bào)、電腦桌面天氣預(yù)報(bào)等均是利用Web Service技術(shù)實(shí)現(xiàn)的。
Web Service技術(shù)雖然體系龐大、底層通訊復(fù)雜,但要具體應(yīng)用,并不困難。目前許多開發(fā)工具如VS2008,Eclipse等,都實(shí)現(xiàn)了Web Service技術(shù)的封裝,要應(yīng)用其技術(shù),只需按向?qū)нM(jìn)行簡單的開發(fā)即可。因此要實(shí)現(xiàn)手持移動智能設(shè)備利用Web Service技術(shù)與醫(yī)院里的PACS進(jìn)行通訊,只需要進(jìn)行“服務(wù)器端Web Service服務(wù)創(chuàng)建、服務(wù)器端Web Service服務(wù)發(fā)布、手持移動智能設(shè)備調(diào)用”三個(gè)步驟,即可實(shí)現(xiàn)。下面以實(shí)現(xiàn)移動智能設(shè)備調(diào)用筆者參與開發(fā)的某醫(yī)院PACS中的病人圖像信息來說明這三個(gè)步驟的實(shí)現(xiàn)。
該方案工作原理如圖1所示:
圖1 方案的工作原理圖Fig.1 The working principle of the solution
在服務(wù)器端,首先獲得Web應(yīng)用程序擁有者提供的類文件,及其對外發(fā)布的方法。然后對其進(jìn)行Web Service封裝,形成了對外發(fā)布的接口文件asmx,在遠(yuǎn)程客戶端,利用Web Service調(diào)用程序,通過RPC通道以SOAP對象的方式,進(jìn)行調(diào)用,然后再在客戶端解析,獲得所需信息,完成通訊。
(1)電腦一臺,安裝了PACS,做為PACS服務(wù)器;因該P(yáng)ACS是用.NET開發(fā)的,因此安裝了.NET 開發(fā)環(huán)境VS2008,因需遠(yuǎn)程訪問,因此配置了IP地址(192.168.0.1);
(2)基于android操作系統(tǒng)的智能手機(jī)一臺;
(3)電腦一臺,作為模擬手持移動智能設(shè)備客戶端,并做為客戶端程序的開發(fā)調(diào)式機(jī)器。因?yàn)閷?shí)驗(yàn)用的移動智能終端設(shè)備為android操作系統(tǒng),因此在該電腦上安裝了java運(yùn)行環(huán)境以及java、android開發(fā)工具eclipse,又因?yàn)樾枰h(yuǎn)程訪問,配置了IP地址(192.168.0.2)。
(1)獲得需要開發(fā)的相關(guān)類文件。
筆者參與開發(fā)的PACS系統(tǒng),是基于.NET平臺的開發(fā)的,它裝在服務(wù)器上。其中一個(gè)處理DICOM文件格式的類DicomProcess,在PACS應(yīng)用程序中已生成在DicomProcess.DLL 文件中,該類的說明如圖2所示:
圖2 DicomProcess類說明Fig.2 Illustration of class DicomProcess
Web Service開發(fā)者只需獲得該DLL文件,了解類的名稱、命名空間、類所含方法、參數(shù)和返回值等即可,而不必關(guān)心這個(gè)類是如何實(shí)現(xiàn)的。如上圖類的名稱為DicomProcess,即處理DICOM圖像的類,其命名空間為WebApplication1,此類有一個(gè)方法getImagebyPatientID方法,該方法有一個(gè)參數(shù)pid,pid代表病人ID號,該方法的功能是通過傳入病人的ID號,獲得該病人的所有圖像信息。該方法的返回值為一個(gè)jpg圖像類型的數(shù)組。
(2)創(chuàng)建Web Service 服務(wù)
在VS2008開發(fā)環(huán)境中,利用向?qū)ЫSP.NET Web服務(wù)應(yīng)用程序。例如我們命名為PACSWebService,則開發(fā)環(huán)境自動會為我們生成一個(gè)Web Service應(yīng)用程序框架,其關(guān)鍵代碼如下:
其中[WebMethod]是對外發(fā)布的標(biāo)記,在它下面寫的方法,就可以發(fā)布為Web Service 服務(wù)。
在PACSWebService應(yīng)用程序中,引入DicomProcess.DLL(利用VS2008向?qū)Э梢苑奖愕匾?,這樣就可以在PACSWebService中使用DICOMProcess類所含方法。
在上面的類中的[WebMethod]標(biāo)記下,建立一個(gè)獲取病人圖像的方法,假如為:getPatientImgByID,其關(guān)鍵代碼如下:
上述代碼中,首先用引入的DicomProcess類,定義了一個(gè)對象dicomprocess;其次定義了一個(gè)獲得病人圖像的方法,在該方法中只寫了一行代碼,即調(diào)用對象dicomproces中的獲得病人圖像的方法。這樣就完成了Web Servcice的創(chuàng)建。
將上面寫好的PACS Web Service應(yīng)用程序發(fā)布為IIS服務(wù)(發(fā)布方法可利用VS2008向?qū)瓿桑?。發(fā)布后,將在服務(wù)器中生成一個(gè)Service1.asmx文件。遠(yuǎn)程輸入http://192.168.0.1/PACSWebService/Service1.asmx網(wǎng)址,就可訪問Web Service服務(wù)。
在模擬手持移動智能設(shè)備客戶端電腦上,利用eclipse開發(fā)工具建立android 項(xiàng)目,例如叫做PACSClient,在此項(xiàng)目中建立一個(gè)利用Web Service獲取病人圖像信息的類GetImagebyWebService。在此類中建立一個(gè)方法getImageWebService 來獲得服務(wù)器端的病人圖像信息[4]。其關(guān)鍵代碼如下所示:
上述代碼的意思為:首先創(chuàng)建一個(gè)SOAP對象,并將PACS服務(wù)器的地址,服務(wù)器對外開放的方法、所需參數(shù)進(jìn)行了封裝及序列化。然后在客戶端訪問http://192.168.0.1/PACSWebService/Service1.asmx,獲得SOAP類型的數(shù)據(jù),并將其解析獲得病人的圖像信息,放入客戶端的一個(gè)圖像數(shù)組中。這樣就很方便地完成了客戶端與服務(wù)器的通信。
將此應(yīng)用程序編譯好后,拷入android手機(jī)中,就可以應(yīng)用。
通過上面的解決方案可以看出,利用Web Service技術(shù),具有以下優(yōu)點(diǎn):
(1)平臺無關(guān)性 在上面的例子中,服務(wù)器用的是.NET技術(shù)和Windows操作系統(tǒng),而客戶端用的是java技術(shù)和android操作系統(tǒng), 但這并不影響二者的通訊。Web Service技術(shù)屏蔽了平臺的差異,使開發(fā)者不需要考慮。同樣,對于iphone,ipad所用的IOS操作系統(tǒng),其Object-c開發(fā)環(huán)境一樣提供了調(diào)用Web Service的方法,利用該方法照樣可以簡單地調(diào)用上述服務(wù)器端發(fā)布的Web Service應(yīng)用。
(2)開發(fā)簡單 首先Web Service開發(fā)者只需和原Web應(yīng)用程序版權(quán)擁有者協(xié)商開放哪些功能,就很容易地實(shí)現(xiàn)這些功能的開發(fā)接口。例如上述例子中,只是利用VS2008向?qū)Ы⒘艘粋€(gè)ASP.NET Web服務(wù)應(yīng)用程序,然后簡單地添加了幾行代碼,就完成了Web Service對外服務(wù)接口的實(shí)現(xiàn)。
其次,對于Web Service服務(wù)使用者來說,只要得到相關(guān)的asmx文件地址就可以調(diào)用Web Service服務(wù),而不必關(guān)心發(fā)布者所用的技術(shù)。
(3)擴(kuò)展性好 如上述的例子,如需發(fā)布新的服務(wù),只需增加一個(gè)[WebMethod]標(biāo)記,并在其下面添加一個(gè)方法,調(diào)用相關(guān)類的方法即可。如想去除一個(gè)服務(wù),只需將[WebMethod]標(biāo)記刪除即可。
綜合上述,Web Service 提供了一個(gè)開放的、支持“即插即用 ”的、不依賴于任何語言和平臺的應(yīng)用,同時(shí)也簡化了開發(fā)與維護(hù),降低了開發(fā)與維護(hù)的成本,為建立醫(yī)院全局化、跨越時(shí)間和空間的約束的信息管理服務(wù)平臺提供了先進(jìn)、實(shí)用的技術(shù)支持,進(jìn)一步提高了醫(yī)院的管理和服務(wù)水平[5]。
[1]薛衛(wèi)京,王海洋,魯文,等.基于Hibernate的醫(yī)學(xué)信息異構(gòu)數(shù)據(jù)庫整合的研究[J].中國醫(yī)學(xué)裝備,2008,5(4): 11-13.
[2]王鵬程,翟曉娟,劉偉.應(yīng)用智能手機(jī)實(shí)現(xiàn)醫(yī)學(xué)影像無線發(fā)布與遠(yuǎn)程診斷的初步研究[J]. 中國醫(yī)療器械雜志,2008,32(3): 212-214.
[3]孟建,侯琳琳,薛衛(wèi)京,等.一種基于Web Service技術(shù)的醫(yī)學(xué)信息整合平臺構(gòu)建方案實(shí)現(xiàn)[J].中國醫(yī)療器械雜志,2011,35(4): 304-306.
[4]梁愛虎.精通SOA: 基于服務(wù)總線的Struts+EJB+Web Service整合應(yīng)用開發(fā)[M].北京: 電子工業(yè)出版社,2007: 119-188.
[5]薛衛(wèi)京,孟建,王海洋.基于SOA理念的醫(yī)學(xué)信息整合平臺構(gòu)建方案[J].中國醫(yī)學(xué)裝備,2010,7(5): 16-18.