◆陳航白鐵呂冰馬民
門診醫(yī)生工作站系統(tǒng)以門診電子病歷為中心,支持醫(yī)院建立門診電子病歷庫。它為醫(yī)生提供了高效的電子病歷和電子處方管理平臺(tái),方便統(tǒng)計(jì)分析和數(shù)據(jù)挖掘,能夠提高醫(yī)院管理水平和醫(yī)生診療水平。同時(shí)其支持在院內(nèi)使用一卡通或醫(yī)??ǎ瑸榛颊呓⑦B續(xù)的就診資料,提高診療與服務(wù)水平以及患者的忠誠度。
在實(shí)施門診醫(yī)生工作站系統(tǒng)后,醫(yī)生可以方便地獲取患者的診斷史、病史、用藥史、過敏史、檢查檢驗(yàn)情況等,并通過計(jì)算機(jī)開具電子處方和電子檢查檢驗(yàn)單,記錄病人病情變化情況,建立醫(yī)療診斷知識(shí)庫。如在診斷時(shí)遇到疑難雜癥,可利用計(jì)算機(jī)進(jìn)行輔助分析。同時(shí)可方便獲取相關(guān)醫(yī)療知識(shí),查閱各種疾病的診療常規(guī)、藥物信息、檢驗(yàn)信息等醫(yī)學(xué)數(shù)據(jù)。
但是,醫(yī)院信息化發(fā)展是一個(gè)循序漸進(jìn)的過程,可能門診醫(yī)生工作站、掛號(hào)系統(tǒng)、門診收費(fèi)系統(tǒng)、處方發(fā)藥系統(tǒng)、LIS系統(tǒng)、PACS系統(tǒng)、合理用藥系統(tǒng)、門診藥房系統(tǒng)、檢查/檢驗(yàn)系統(tǒng)等并不是同一廠商開發(fā)的,它們的運(yùn)行環(huán)境、所使用的數(shù)據(jù)庫、開發(fā)語言等并不相同,這就產(chǎn)生了“信息孤島”。主要表現(xiàn)在系統(tǒng)間信息交流不順暢,存在大量冗余信息,系統(tǒng)間無法實(shí)現(xiàn)信息共享和協(xié)同工作。為了解決這些問題,本文基于 SOA(Service-Oriented Architecture)架構(gòu),采用 Web服務(wù)技術(shù)構(gòu)建門診醫(yī)生協(xié)同工作系統(tǒng),以使門診醫(yī)生工作站系統(tǒng)可以與掛號(hào)系統(tǒng)、門診收費(fèi)系統(tǒng)、處方發(fā)藥系統(tǒng)、LIS系統(tǒng)、PACS系統(tǒng)、合理用藥系統(tǒng)、門診藥房系統(tǒng)、檢查/檢驗(yàn)系統(tǒng)等協(xié)同工作。
(1)動(dòng)態(tài)生成候診、就診信息;(2)提供輔助診斷分析;(3)下達(dá)檢查單;(4)下達(dá)處方、注射單;(5)生成病歷;(6)醫(yī)生個(gè)人使用的常用處方模板;(7)醫(yī)生公用處方模板;(8)常用病歷管理;(9)檢查檢驗(yàn)預(yù)約,并把檢查檢驗(yàn)結(jié)果傳送給門診醫(yī)生工作站系統(tǒng);(10)病人檔案信息查詢,包括完整的處方、費(fèi)用、病歷、檢驗(yàn)結(jié)果、檢查報(bào)告、圖像報(bào)告等;(11)病歷統(tǒng)計(jì)分析表,根據(jù)需求自定義統(tǒng)計(jì)表;(12)系統(tǒng)屬性設(shè)置,包括工作站類型、應(yīng)診科室、掛號(hào)類別、領(lǐng)藥區(qū)、病歷處方打印方式、默認(rèn)打印機(jī)等。
SOA是一個(gè)面向服務(wù)架構(gòu)的組件模型[1]。在這個(gè)模型中,松耦合的應(yīng)用被描述、發(fā)布和調(diào)用。在SOA模型中,主要有3種角色:服務(wù)消費(fèi)者(Services Consumer)、服務(wù)提供者(Services Provider)和服務(wù)代理(Services Registry)。工作原理為:服務(wù)提供者發(fā)布所提供服務(wù)的信息及訪問接口到服務(wù)代理;服務(wù)消費(fèi)者在服務(wù)代理中查找所需服務(wù)的信息,找到后通過綁定和調(diào)用與服務(wù)提供者建立關(guān)系并使用其提供的服務(wù)。
Web服務(wù)(Web Services)是一種面向服務(wù)架構(gòu)的技術(shù),通過標(biāo)準(zhǔn)的Web協(xié)議提供服務(wù)。Web服務(wù)可被理解為一個(gè)軟件系統(tǒng),它能夠被描述并通過網(wǎng)絡(luò)發(fā)現(xiàn)、發(fā)布和調(diào)用。Web服務(wù)的核心規(guī)格由XML、SOAP、WSDL和 UDDI4部 分 組成[2]。 XML(eXtensible Markup Language,可擴(kuò)展標(biāo)記語言)是Web服務(wù)實(shí)現(xiàn)的技術(shù)基礎(chǔ),它消除了不同平臺(tái)和不同語言編寫系統(tǒng)之間的數(shù)據(jù)結(jié)構(gòu)和消息交換模式差異,使得數(shù)據(jù)交換方式在XML技術(shù)的支持下統(tǒng)一起來[3]。SOAP(Simple Object Access Protocol,簡單對象訪問協(xié)議)是一種基于XML的不依賴傳輸協(xié)議的表示層協(xié)議,用來在應(yīng)用程序之間以對象的形式交換數(shù)據(jù)。WSDL(Web Services Description Language,Web服務(wù)描述語言)定義了一套基于XML的語法,將Web服務(wù)描述為能夠進(jìn)行消息交換的服務(wù)訪問點(diǎn)集合。UDDI(UniversalDescription,Discoveryand Integration,統(tǒng)一描述、發(fā)現(xiàn)和集成)是一套面向Web服務(wù)的信息注冊中心實(shí)現(xiàn)標(biāo)準(zhǔn)和規(guī)范,創(chuàng)建UDDI注冊中心的目的就是實(shí)現(xiàn)Web服務(wù)的發(fā)布和發(fā)現(xiàn)[4]。
門診醫(yī)生工作站系統(tǒng)、掛號(hào)系統(tǒng)、門診收費(fèi)系統(tǒng)、處方發(fā)藥系統(tǒng)、LIS系統(tǒng)、PACS系統(tǒng)、合理用藥系統(tǒng)等既可以作為服務(wù)的提供者,也可以作為服務(wù)的消費(fèi)者。首先,基于SOA架構(gòu)的門診醫(yī)生協(xié)同工作系統(tǒng)將它們提供的服務(wù)描述成XML,封裝成 SOAP包,加載在 HTTP上,并在不同的應(yīng)用系統(tǒng)之間傳遞。其次,生成 WSDL文件,在 UDDI服務(wù)注冊中心發(fā)布,其它系統(tǒng)可以作為服務(wù)的消費(fèi)者,查詢UDDI服務(wù)注冊中心,發(fā)現(xiàn)服務(wù),調(diào)用服務(wù)。系統(tǒng)、門診收費(fèi)系統(tǒng)、門診藥房系統(tǒng)、檢查/檢驗(yàn)系統(tǒng)等是基于局域網(wǎng)的C/S模式,門診醫(yī)生協(xié)同工作系統(tǒng)是基于多層架構(gòu)的B/S模式。系統(tǒng)保持現(xiàn)有的模式,將它們提供Web服務(wù)的數(shù)據(jù)打包成SOAP包,在門診醫(yī)生工作站與門診掛號(hào)系統(tǒng)、門診收費(fèi)系統(tǒng)、門診藥房系統(tǒng)、檢查/檢驗(yàn)系統(tǒng)之間傳遞信息,達(dá)到數(shù)據(jù)層的集成[5]。
系統(tǒng)分為數(shù)據(jù)訪問層、數(shù)據(jù)實(shí)體層、業(yè)務(wù)規(guī)則層、Web服務(wù)層、客戶端,使用戶能夠在瀏覽器界面上使用門診醫(yī)生工作站、門診掛號(hào)系統(tǒng)、門診收費(fèi)系統(tǒng)、門診藥房系統(tǒng)、檢查/檢驗(yàn)系統(tǒng)提供的 Web服務(wù)。系統(tǒng)技術(shù)架構(gòu)如圖1所示。
基于Web服務(wù)的門診醫(yī)生協(xié)同工作站系統(tǒng)是采用多層架構(gòu)的B/S和C/S混合技術(shù)架構(gòu)。各醫(yī)療機(jī)構(gòu)的門診醫(yī)生工作站、門診掛號(hào)
數(shù)據(jù)層集成是門診醫(yī)生協(xié)同工作系統(tǒng)的基礎(chǔ)。具體設(shè)計(jì)過程:使用IBM DB2數(shù)據(jù)庫,作為統(tǒng)一的數(shù)據(jù)集成中心。DB2可以直接存儲(chǔ)XML數(shù)據(jù),可以將搜索結(jié)果以XML格式輸出,實(shí)現(xiàn)了異構(gòu)系統(tǒng)的互操作性,奠定了基于Web服務(wù)的門診醫(yī)生協(xié)同工作系統(tǒng)的基石。
圖1 門診醫(yī)生協(xié)同工作系統(tǒng)技術(shù)架構(gòu)
根據(jù)異構(gòu)數(shù)據(jù)庫的表結(jié)構(gòu)進(jìn)行數(shù)據(jù)對照,從門診掛號(hào)系統(tǒng)、檢查/檢驗(yàn)系統(tǒng)中提取數(shù)據(jù)給門診醫(yī)生工作站。門診掛號(hào)系統(tǒng)提供的數(shù)據(jù)包括:候診病人信息、已掛號(hào)病人分類排隊(duì)信息等;檢查/檢驗(yàn)系統(tǒng)提供的數(shù)據(jù)包括:檢查/檢驗(yàn)的預(yù)約安排、報(bào)告信息等。從門診醫(yī)生工作站系統(tǒng)提取數(shù)據(jù)提供給門診收費(fèi)系統(tǒng)、門診藥房系統(tǒng)、檢查/檢驗(yàn)系統(tǒng)等。門診醫(yī)生工作站開出的電子處方自動(dòng)發(fā)往門診收費(fèi)和門診藥房。處方收費(fèi)確定后可將擺藥標(biāo)志自動(dòng)發(fā)往門診藥房。后臺(tái)門診藥師可根據(jù)處方信息進(jìn)行藥品調(diào)配。此外,門診醫(yī)生站可以向檢查/檢驗(yàn)科室發(fā)出申請[6]。
本系統(tǒng)設(shè)計(jì)通過Xm lSerializer類實(shí)現(xiàn) XML序列化,把實(shí)體類序列化成 XML文件;向 XML序列化的輸出內(nèi)容添加 SOAP封套、題頭和主體,打包成 SOAP包,加載在HTTP協(xié)議頭,通過互聯(lián)網(wǎng)在不同系統(tǒng)之間傳遞。門診醫(yī)生工作站、門診掛號(hào)系統(tǒng)、門診收費(fèi)系統(tǒng)、門診藥房系統(tǒng)、檢查/檢驗(yàn)系統(tǒng)接收到SOAP包后進(jìn)行拆包,把XML對象反序列化為實(shí)體類的對象,并傳送給相應(yīng)模塊[7-8]。
數(shù)據(jù)訪問層主要用來連接數(shù)據(jù)庫,向數(shù)據(jù)庫表中添加記錄,從數(shù)據(jù)表中查詢、修改記錄等,也可以把記錄的查詢結(jié)果逐字段的賦予與數(shù)據(jù)實(shí)體層相對應(yīng)的屬性。
數(shù)據(jù)實(shí)體層用于數(shù)據(jù)訪問層和業(yè)務(wù)規(guī)則層調(diào)用,主要表示數(shù)據(jù)庫的表結(jié)構(gòu),便于進(jìn)行XML序列化,可以把實(shí)體類對象序列化成XML Schema。本系統(tǒng)用C#設(shè)計(jì)實(shí)體類,用類的相關(guān)屬性表示數(shù)據(jù)表中的字段屬性。每一個(gè)實(shí)體類都包括相應(yīng)的屬性、構(gòu)造方法、獲得相應(yīng)屬性(Get)和設(shè)置相應(yīng)屬性(Set)的方法。
業(yè)務(wù)規(guī)則層包含一些類,這些類可實(shí)現(xiàn)應(yīng)用程序的業(yè)務(wù)邏輯,被客戶端調(diào)用。如本系統(tǒng)的門診醫(yī)生工作站開出的電子化驗(yàn)申請單、PACS申請單、電子用藥處方等。業(yè)務(wù)規(guī)則層調(diào)用數(shù)據(jù)訪問層的對象可實(shí)現(xiàn)上述業(yè)務(wù)邏輯。
Web服務(wù)層具體實(shí)現(xiàn)門診醫(yī)生工作站、門診掛號(hào)系統(tǒng)、門診收費(fèi)系統(tǒng)、門診藥房系統(tǒng)、檢查/檢驗(yàn)等系統(tǒng)的Web服務(wù)。如患者到檢查科室及影像、B超等輔助診斷科室前,醫(yī)生已經(jīng)在影像工作站、B超工作站上查看到門診醫(yī)生申請時(shí)對患者的病情描述,對患者進(jìn)行檢查后,可形成帶有圖像的檢查報(bào)告。這時(shí)門診醫(yī)生工作站提供給檢查/檢驗(yàn)系統(tǒng)的檢查/檢驗(yàn)申請單,以及檢查/檢驗(yàn)系統(tǒng)提供給門診醫(yī)生工作站系統(tǒng)的檢查/檢驗(yàn)報(bào)告等功能,就需要在.NET XML Web Services的Web Method方法中實(shí)現(xiàn)。Web服務(wù)層的設(shè)計(jì)過程如圖2所示。
系統(tǒng)通過Web語言描述門診醫(yī)生工作站、門診掛號(hào)系統(tǒng)、門診收費(fèi)系統(tǒng)、門診藥房系統(tǒng)、檢查/檢驗(yàn)系統(tǒng)的服務(wù)功能,生成描述該系統(tǒng)功能和調(diào)用的Web服務(wù)描述語言文件,然后生成簡單對象訪問協(xié)議的基于SOAP的服務(wù)框架,在此基礎(chǔ)上開發(fā)Web服務(wù)的業(yè)務(wù)邏輯。最后,使用 SOAP服務(wù)器將 WSDL發(fā)布在微軟的UDDI注冊服務(wù)器中[9]。系統(tǒng)構(gòu)建 Web服務(wù)客戶端來調(diào)用 Web Services。Web服務(wù)客戶端可以是多種形式,如可以設(shè)計(jì)W indows Form窗體訪問Web服務(wù),也可以設(shè)計(jì)HTML頁面調(diào)用Web服務(wù)。
通過對門診醫(yī)生工作站系統(tǒng)的功能說明,結(jié)合對SOA架構(gòu)和Web服務(wù)技術(shù)的解釋,提出了基于Web服務(wù)的門診醫(yī)生協(xié)同工作系統(tǒng),并詳細(xì)說明了系統(tǒng)的技術(shù)架構(gòu)和功能,可實(shí)現(xiàn)門診醫(yī)生工作站、門診掛號(hào)系統(tǒng)、門診收費(fèi)系統(tǒng)、處方發(fā)藥系統(tǒng)、LIS系統(tǒng)、PACS系統(tǒng)、合理用藥系統(tǒng)、門診藥房系統(tǒng)、檢查/檢驗(yàn)系統(tǒng)的應(yīng)用集成。通過這種應(yīng)用集成實(shí)現(xiàn)了信息整合,有效地消除了“信息孤島”,提高了門診醫(yī)生的工作效率,優(yōu)化了門診就醫(yī)流程。今后可在數(shù)據(jù)集成的基礎(chǔ)上,實(shí)現(xiàn)業(yè)務(wù)過程的集成,不僅使門診醫(yī)生工作站、門診掛號(hào)系統(tǒng)、處方發(fā)藥系統(tǒng)、LIS系統(tǒng)、PACS系統(tǒng)、合理用藥系統(tǒng)、門診收費(fèi)系統(tǒng)、門診藥房系統(tǒng)、檢查/檢驗(yàn)系統(tǒng)相互傳遞,更重要的是使這些系統(tǒng)可以在業(yè)務(wù)層面進(jìn)行交互和協(xié)同工作。
圖2 Web服務(wù)層的設(shè)計(jì)過程
[1] 張海川,王盼卿,陳家文.基于SOA的裝備保障領(lǐng)域信息系統(tǒng)集成研究[J].微計(jì)算機(jī)信息,2006,22(6):57 -59.
[2] 徐宏發(fā),王衛(wèi)平,鄭建煌,等.基于HL7和Web Services的區(qū)域醫(yī)療機(jī)構(gòu)間信息交換平臺(tái)研究[J].計(jì)算機(jī)應(yīng)用與軟件,2007,24(3):88 -89.
[3] IBM公司.Web服務(wù) -Web的下一次革命[EB/OL].http:∥www -900.ibm.com/developerWorks/xml/indx.shtml,2005 -08-20.
[4] 郭少友.Web服務(wù)與企業(yè)信息系統(tǒng)集成[J].情 報(bào) 科 學(xué),2003(3):306-309.
[5] 袁占亭,張秋余.基于 Web Services的企業(yè)應(yīng)用集成解決方案研究[J].計(jì)算機(jī)集成制造系統(tǒng)-CIMS,2004,10(4):394-398.
[6] 楊汝超.門診醫(yī)生工作站在醫(yī)院的應(yīng)用分析與設(shè)計(jì)[D].云南大學(xué),2010.18-26.
[7] 郭荷清,王增勛.XML數(shù)據(jù)綁定及對象序列化的應(yīng)用研究[J].計(jì)算機(jī)應(yīng)用與軟件,2006(5):65-67.
[8] 黃 芳,孫建伶.基于模式的XML文檔元素的序列化標(biāo)識(shí)[J].計(jì)算機(jī)工程與應(yīng)用,2004(17):181-183.
[9] Narayanan,Srini,Mellraith,et al.A-nalysis and simulation ofWebservices[J].Computer Networks Volume,2003,42(5):675 -693.