王曉煜 張奇松 黃浩
摘要:公共衛(wèi)生是關(guān)系到一國或一個(gè)地區(qū)人民大眾健康的公共事業(yè),其公共衛(wèi)生管理系統(tǒng)成為制約公共衛(wèi)生事業(yè)發(fā)展重要環(huán)節(jié)之一,根據(jù)此需求設(shè)計(jì)出一套關(guān)于全民醫(yī)療/醫(yī)保的信息化系統(tǒng),其功能符合現(xiàn)階段中國特色國情。該系統(tǒng)采用SDO/SCA/BPEL的SOA體系結(jié)構(gòu),各種功能以服務(wù)為中心,通過服務(wù)進(jìn)行無縫連接,最后通過Web 服務(wù)向外界進(jìn)行發(fā)布。同時(shí),系統(tǒng)業(yè)務(wù)采用BPEL語言,通過服務(wù)器完成業(yè)務(wù)的組合、流程的編排并提供路由服務(wù),能將需求動(dòng)態(tài)地綁定到所需服務(wù)。系統(tǒng)核心平臺的持久化層采用SDO技術(shù),能對底層異構(gòu)數(shù)據(jù)庫進(jìn)行封裝,組件/服務(wù)能統(tǒng)一地調(diào)用SDO通用方法,從而達(dá)到了底層數(shù)據(jù)與技術(shù)實(shí)現(xiàn)相分離結(jié)果,因此項(xiàng)目實(shí)施人員不需要了解底層數(shù)據(jù)的類型、存儲(chǔ)容器及調(diào)用方法等,簡化了系統(tǒng)的開發(fā)過程。
關(guān)鍵詞:公共衛(wèi)生;SOA;Web服務(wù)
中圖分類號:TP391.9 文獻(xiàn)標(biāo)志碼:A 文章編號:1005-6378(2014)01-0120-04
公共衛(wèi)生管理系統(tǒng)是面向基層用戶使用,構(gòu)建專業(yè)的實(shí)時(shí)化工作站。公共衛(wèi)生管理系統(tǒng)是以社區(qū)衛(wèi)生服務(wù)站、村衛(wèi)生所、市行政機(jī)構(gòu)、預(yù)防保健機(jī)構(gòu)二三級醫(yī)療機(jī)構(gòu)為實(shí)現(xiàn)目標(biāo)對象,進(jìn)而完成在服務(wù)運(yùn)行中動(dòng)態(tài)更新檔案、信息共享以及流動(dòng)處理等過程。該系統(tǒng)能夠有效進(jìn)行流行性疾病的預(yù)防、基本健康知識的普及、急性疾病的醫(yī)治以及基礎(chǔ)衛(wèi)生監(jiān)督等功能,實(shí)現(xiàn)一體化的醫(yī)療服務(wù)體系,進(jìn)而改進(jìn)并完善基層地區(qū)的醫(yī)療衛(wèi)生服務(wù)專用網(wǎng),建立功能明確、信息通暢、協(xié)調(diào)一致的公共衛(wèi)生服務(wù)系統(tǒng)。該系統(tǒng)能夠提高基層的醫(yī)療服務(wù)質(zhì)量以及突發(fā)醫(yī)療衛(wèi)生事件的緊急應(yīng)對能力,使每位居民能夠擁有平等的公共醫(yī)療機(jī)會(huì)。
一、系統(tǒng)總體結(jié)構(gòu)
本文以SOA為架構(gòu)模型基礎(chǔ),并實(shí)際醫(yī)療功能業(yè)務(wù)相結(jié)合,研究并設(shè)計(jì)了一套公共衛(wèi)生管理系統(tǒng)的結(jié)構(gòu)模型。該公共衛(wèi)生管理系統(tǒng)結(jié)構(gòu)如圖1所示。
該系統(tǒng)結(jié)構(gòu)可分為5個(gè)層次,具體功能如下。
表示層:該層主要被界面庫的調(diào)用,用戶可以直接操作此層,輸入用戶數(shù)據(jù),表示層的下一層次——控制層可以將輸入的數(shù)據(jù)傳遞給相應(yīng)的服務(wù)組件。同時(shí)表示層還可以將底層處理好的數(shù)據(jù)傳遞給用戶,供用戶使用。
控制層:該層是整個(gè)系統(tǒng)的業(yè)務(wù)的入口,能對表示層收集的數(shù)據(jù)進(jìn)行簡單的處理。
服務(wù)組合層:部分復(fù)雜的業(yè)務(wù)流程由服務(wù)組合層負(fù)責(zé)處理。同時(shí)控制層的傳入該層的消息數(shù)據(jù)在該層次中進(jìn)行加密,同時(shí)將該加密數(shù)據(jù)傳遞給相應(yīng)的功能組件。同時(shí),系統(tǒng)中流程設(shè)計(jì)器的可以對業(yè)務(wù)功能進(jìn)行建模重組,模型的建模由流程引擎負(fù)責(zé),并通過監(jiān)控機(jī)制對建模的過程進(jìn)行監(jiān)控和管理。
圖1系統(tǒng)結(jié)構(gòu)該層次可以利用單個(gè)服務(wù)組件處理簡單業(yè)務(wù),也可以將多種服務(wù)組件組合起來處理較為負(fù)責(zé)的業(yè)務(wù)。
持久化層:該層為系統(tǒng)數(shù)據(jù)庫的相應(yīng)訪問組件和實(shí)現(xiàn)Web服務(wù)的具體方式,同時(shí)對訪問數(shù)據(jù)庫進(jìn)行策略定義以及對系統(tǒng)日志文件進(jìn)行處理。
系統(tǒng)結(jié)構(gòu)中同時(shí)應(yīng)用了數(shù)據(jù)加密技術(shù)來確保數(shù)據(jù)能在網(wǎng)絡(luò)中的安全的傳輸,同時(shí)對數(shù)據(jù)結(jié)構(gòu)進(jìn)行序列化和反序列化處理。各種服務(wù)的交互、重組以及管理由服務(wù)總線完成, UDDI幫助Web服務(wù)提供者在網(wǎng)絡(luò)上發(fā)布服務(wù)信息,使Web服務(wù)使用者能夠發(fā)現(xiàn)Web服務(wù)。
二、系統(tǒng)功能模塊劃分
結(jié)合實(shí)際需求,本文將系統(tǒng)分為5個(gè)組成部分,分別為:基本信息管理、兒童保健管理、婦女保健管理、預(yù)防接種管理、死亡登記管理。系統(tǒng)功能模塊如圖2所示。
圖2系統(tǒng)功能模塊圖
5大組成部分,基本囊括了社會(huì)各層次人群的需求。每個(gè)部分包括的功能模塊如下。
(1)基本信息管。負(fù)責(zé)存儲(chǔ)和管理相關(guān)衛(wèi)生服務(wù)機(jī)構(gòu)服務(wù)人員信息。
(2)兒童保健管理。負(fù)責(zé)存儲(chǔ)和管理18歲以下兒童信息,包括出生證的管理、兒童保健信息管理、傷殘兒童的信息管理等功能模塊。
(3)婦女保健管理。負(fù)責(zé)存儲(chǔ)和管理適齡婦女信息,包括孕婦信息、高危孕婦信息、產(chǎn)前保健信息、高危產(chǎn)婦的產(chǎn)前篩查與診斷以及新生兒出生缺陷監(jiān)測等功能模塊。
(4)預(yù)防接種管理。主要負(fù)責(zé)存儲(chǔ)和管理新生適齡兒童疫苗的接種信息。
(5)死亡登記管。負(fù)責(zé)存儲(chǔ)和管理自然死亡人群的信息。
三、系統(tǒng)設(shè)計(jì)
(一) 數(shù)據(jù)庫持久化層詳細(xì)設(shè)計(jì)
傳統(tǒng)信息系統(tǒng)架構(gòu)中,每當(dāng)信息系統(tǒng)連接數(shù)據(jù)庫時(shí),數(shù)據(jù)庫的表示層就會(huì)產(chǎn)生一個(gè)連接請求,建立相應(yīng)的數(shù)據(jù)庫連接。但如果在短時(shí)間之內(nèi),數(shù)據(jù)庫表示層產(chǎn)生的連接請求較多,這時(shí)系統(tǒng)就會(huì)產(chǎn)生連接負(fù)擔(dān),系統(tǒng)需用大量的資源來存儲(chǔ)相應(yīng)的數(shù)據(jù)庫連接,同時(shí)也無法保證數(shù)據(jù)庫中的每個(gè)連接能被監(jiān)控,從而無法確保數(shù)據(jù)庫連接能夠正常的工作,進(jìn)而影響數(shù)據(jù)庫的訪問速度和安全性。針對此問題,本文提出了使用SDO技術(shù)對數(shù)據(jù)庫進(jìn)行連接,通過該技術(shù)可以使多個(gè)數(shù)據(jù)庫實(shí)例使用一個(gè)數(shù)據(jù)庫連接,從而減少系統(tǒng)開銷,保證系統(tǒng)能夠運(yùn)行流暢。同時(shí)SDO技術(shù)支持訪問離線數(shù)據(jù)模式,通過對數(shù)據(jù)進(jìn)行批量處理,從而避免頻繁操作一個(gè)數(shù)據(jù)庫實(shí)例連接,導(dǎo)致的網(wǎng)絡(luò)不穩(wěn)定性。
河北大學(xué)學(xué)報(bào)(哲學(xué)社會(huì)科學(xué)版)2014年第1期 SDO技術(shù)能夠屏蔽底層數(shù)據(jù)庫的異構(gòu)性,研發(fā)工作者不必對底層的數(shù)據(jù)有較深的了解,只需調(diào)用SDO通用方法即可,實(shí)現(xiàn)了底層數(shù)據(jù)與頂層應(yīng)用技術(shù)分離。
圖3SDO實(shí)現(xiàn)數(shù)據(jù)保存流程圖
Web服務(wù)能夠提供相應(yīng)的調(diào)用標(biāo)準(zhǔn),封裝其功能,為使用者提供統(tǒng)一服務(wù)接口,從而可以忽略Web服務(wù)的實(shí)現(xiàn)機(jī)理,提高服務(wù)調(diào)用效率。同時(shí)Web服務(wù)可以屏蔽各種系統(tǒng)的差異性,為數(shù)據(jù)的分布處理奠定基礎(chǔ)。Web服務(wù)的實(shí)現(xiàn)與相應(yīng)的服務(wù)接口之間具有良好的隔離性,即不管Web服務(wù)是如何實(shí)現(xiàn)的,只要其接口不變就不會(huì)影響正常的服務(wù)調(diào)用過程,提高系統(tǒng)的靈活性
由于該系統(tǒng)業(yè)務(wù)繁雜,各功能模塊相互影響,因此本文只以婦女保健管理功能為例,對訪問底層數(shù)據(jù)庫的web服務(wù)進(jìn)行說明。本文對數(shù)據(jù)訪問服務(wù)進(jìn)行定義,將其命為Data Services。該服務(wù)包括get和save兩個(gè)方法對婦女保健管理業(yè)務(wù)的主要數(shù)據(jù)庫進(jìn)行保存操作。get方法為獲取業(yè)務(wù)信息的方法,相對簡單,因此本文主要介紹keep方法。其方法形式為, keep(String view,Stringdatum),keep方法中定義的形式參數(shù)包括需要保存的數(shù)據(jù)以及保存數(shù)據(jù)的相應(yīng)表名。save方法的功能用于將輸入的數(shù)據(jù)保存到系統(tǒng)相應(yīng)的數(shù)據(jù)庫的表中。采用SDO實(shí)現(xiàn)的將婦女保健管理信息保存到系統(tǒng)數(shù)據(jù)庫中,其流程圖如圖3所示。
(二) 服務(wù)層詳細(xì)設(shè)計(jì)
該層是系統(tǒng)的核心部分,業(yè)務(wù)邏輯的實(shí)現(xiàn)即由本層實(shí)現(xiàn)。本文仍以婦女保健管理業(yè)務(wù)功能為例,對服務(wù)層的組件進(jìn)行設(shè)計(jì)。婦女保健管理業(yè)務(wù)需要對存儲(chǔ)在各醫(yī)院分系統(tǒng)中的的患者信息進(jìn)行調(diào)用,并在醫(yī)院數(shù)據(jù)庫端的接口的上進(jìn)行服務(wù)封裝,同時(shí)對相應(yīng)服務(wù)進(jìn)行設(shè)計(jì),并由各基層醫(yī)院的服務(wù)器對其進(jìn)行承載。
根據(jù)實(shí)際情況,各基層醫(yī)院的數(shù)據(jù)庫將會(huì)被調(diào)用,因此需要將各數(shù)據(jù)庫對外接口封裝成統(tǒng)一的Web服務(wù), 即nosocomium。nosocomium服務(wù)包含兩個(gè)方法: get (String view,String sqls),該方法有兩個(gè)形式參數(shù), table Names為各個(gè)醫(yī)院服務(wù)器上數(shù)據(jù)庫中存儲(chǔ)患者信息的存儲(chǔ)表, sqls 參數(shù)為查詢語句,其返回值類型為布爾類型;另一方法為boolean save Person Inforations (String tables,Stringdatum),其中形式參數(shù)tables為數(shù)據(jù)庫表名,datum為系統(tǒng)所需數(shù)據(jù)。利用該方法,患者信息數(shù)據(jù)可以被保存到基層醫(yī)院分系統(tǒng)的數(shù)據(jù)庫的相應(yīng)的表中。
(三)服務(wù)組合層詳細(xì)設(shè)計(jì)
該層次能夠?qū)Ψ?wù)進(jìn)行統(tǒng)一的組織和協(xié)調(diào),進(jìn)而形成的復(fù)雜的業(yè)務(wù)流程,最后該層次將業(yè)務(wù)流程以Web的方式對外界進(jìn)行發(fā)布。該層次只需定義相應(yīng)業(yè)務(wù)的邏輯關(guān)系,業(yè)務(wù)的實(shí)現(xiàn)由調(diào)用的服務(wù)來具體實(shí)現(xiàn),能夠?qū)I(yè)務(wù)功能的邏輯部分和實(shí)現(xiàn)部分進(jìn)行分離。由于業(yè)務(wù)流程在系統(tǒng)中被設(shè)計(jì)成單獨(dú)的一個(gè)層次,因此基層醫(yī)院可以對相應(yīng)流程進(jìn)行快速地、動(dòng)態(tài)地、靈活地配置和發(fā)布,使系統(tǒng)能夠適應(yīng)動(dòng)態(tài)變化的業(yè)務(wù)需求。同樣以婦女保健掛歷業(yè)務(wù)為例介紹基于BPEL的服務(wù)組合技術(shù)實(shí)現(xiàn)業(yè)務(wù)流程的自動(dòng)化過程。
當(dāng)進(jìn)行婦女保健登記業(yè)務(wù)時(shí),首先需要將相應(yīng)婦女保健信息存儲(chǔ)在醫(yī)院數(shù)據(jù)庫,然后將保健信息發(fā)送到系統(tǒng)數(shù)據(jù)庫中。系統(tǒng)業(yè)務(wù)流程如下。
醫(yī)生上網(wǎng)登錄系統(tǒng),將相應(yīng)的婦女保健信息錄入系統(tǒng)數(shù)據(jù)庫中。
提交信息后,系統(tǒng)自動(dòng)判斷是否將患者信息保存到醫(yī)院數(shù)據(jù)庫服務(wù)器端。
如信息被保存到醫(yī)院數(shù)據(jù)庫中,信息將會(huì)被直接發(fā)送到系統(tǒng)的核心部分。
如信息不需要被保存到醫(yī)院服務(wù)器數(shù)據(jù)庫中時(shí),需要在醫(yī)院數(shù)據(jù)庫服務(wù)器上數(shù)據(jù)庫中的個(gè)人健康檔案表為相應(yīng)患者建立健康檔案,再將婦女保健信息推送到核心系統(tǒng)數(shù)據(jù)庫中。
系統(tǒng)的業(yè)務(wù)流程自動(dòng)化是基于BPEL技術(shù)實(shí)現(xiàn)的,該技術(shù)能夠整合了主系統(tǒng)和分系統(tǒng)的Web服務(wù),不同系統(tǒng)之間的業(yè)務(wù)將會(huì)被整合,從而實(shí)現(xiàn)登記業(yè)務(wù)的完全自動(dòng)化。婦女保健登記業(yè)務(wù)的業(yè)務(wù)流程圖如圖4所示:
BPEL是一種針對業(yè)務(wù)流程的執(zhí)行語言,業(yè)務(wù)流程和系統(tǒng)參與者的交互是BPEL語言的基礎(chǔ),是一種描述了業(yè)務(wù)流程的語法,常用于業(yè)務(wù)流程建?;顒?dòng)。BPEL可以直接調(diào)用符合web規(guī)范的服務(wù),業(yè)務(wù)流程的邏輯是通過結(jié)構(gòu)化活動(dòng)控制的。通過 BPEL流程實(shí)現(xiàn)對婦女保健登記業(yè)務(wù)建模需要用到了BPEL的元素主要包括以下部分:基本活動(dòng)、結(jié)構(gòu)化活動(dòng)、錯(cuò)誤處理器和補(bǔ)償處理器。(圖4)
圖4婦女保健登記業(yè)務(wù)流程
1.基本活動(dòng)
BPEL流程中的基本活動(dòng)定義了相關(guān)業(yè)務(wù)流程的一些基本操作,比如消息事件的接受,服務(wù)的調(diào)用等。圖4業(yè)務(wù)流程圖中錄入保健信息和對數(shù)據(jù)庫的操作,分別對應(yīng)BPEL流程的消息接收活動(dòng)receive和服務(wù)調(diào)用活動(dòng)invoke。系統(tǒng)會(huì)通過receive活動(dòng)接受外部消息從而激活BPEL流程,receive活動(dòng)的variable屬性指定了接受到的消息存儲(chǔ)到什么變量,createInstance屬性表示當(dāng)接受到消息后,是否啟動(dòng)一個(gè)新的流程實(shí)例。
圖4中的對數(shù)據(jù)庫的操作都是通過invoke服務(wù)實(shí)現(xiàn)的,BPEL流程利用invoke來調(diào)用流程所需的web服務(wù)中的操作。Call中的import指定了調(diào)用服務(wù)時(shí)的需要輸入系統(tǒng)的參數(shù),而export方法定義了調(diào)用后的返回值,對于單向的調(diào)用只需輸入?yún)?shù),Call活動(dòng)同時(shí)也定義了異常捕獲機(jī)制。
在BPEL流程中,通過賦值活動(dòng)assign將receive活動(dòng)中的變量復(fù)制給Call中的import,或者將Call的export賦值給其他的變量。BPEL支持4種情況的變量賦值:1)BPEL變量類型;2)assign活動(dòng)對鏈接的端點(diǎn)應(yīng)用進(jìn)行復(fù)制;3)對變量屬性進(jìn)行復(fù)制;4)提供表達(dá)式來引用需要復(fù)制的源和目的。
2.結(jié)構(gòu)化活動(dòng)
圖4中, BPEL的判斷流程通過結(jié)構(gòu)化活動(dòng)if實(shí)現(xiàn),BPEL通過結(jié)構(gòu)化活動(dòng)對流程中的基本活動(dòng)的執(zhí)行順序進(jìn)行控制和執(zhí)行規(guī)則進(jìn)行定義。串行結(jié)構(gòu)sequece中的活動(dòng)是以其在相應(yīng)活動(dòng)中排列的順序而逐一執(zhí)行的,圖4所展示的業(yè)務(wù)流程就是一個(gè)串行的結(jié)構(gòu)。
3.錯(cuò)誤處理器和補(bǔ)償處理器
根據(jù)圖4所示的業(yè)務(wù)流程圖進(jìn)行BPEL建模,當(dāng)BPEL流程在調(diào)用服務(wù)中出現(xiàn)異常時(shí),如將婦女保健信息推送到公共衛(wèi)生管理系統(tǒng)數(shù)據(jù)庫服務(wù)的時(shí)候出現(xiàn)了異常,這時(shí)BPEL通過錯(cuò)誤處理器Fault Handler捕獲錯(cuò)誤,并由Compensation補(bǔ)償器進(jìn)行補(bǔ)償。
四、總結(jié)
本文介紹公共衛(wèi)生系統(tǒng)的需求背景,結(jié)合具體的業(yè)務(wù)需求和SOA架構(gòu)的特點(diǎn),提出了相應(yīng)新的系統(tǒng)架構(gòu)模型。同時(shí)在分析系統(tǒng)業(yè)務(wù)的基礎(chǔ)上,詳細(xì)劃分了系統(tǒng)的功能模塊,介紹了每個(gè)功能模塊包含的子模塊和功能。最后介紹了該系統(tǒng)數(shù)據(jù)庫詳細(xì)設(shè)計(jì)。
[參考文獻(xiàn)]
[1]謝亮.基于J2EE的安全物流信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].物流技術(shù),2012,31(9):396-399.
[2]吳步丹,金芝.面向服務(wù)的建模:一種全過程復(fù)用的方法[J].計(jì)算機(jī)學(xué)報(bào),2008,31(8):1293-1308.
[3] 鄒永貴,王劍.基于SOA的面向服務(wù)LBS[J].重慶郵電大學(xué)學(xué)報(bào):自然科學(xué)版,2008,20(5):610-613.
[4]阮彤,金志超.面向跨企業(yè)多方協(xié)同應(yīng)用的Web服務(wù)安全模型[J] .計(jì)算機(jī)工程,2013,39(2):55-66.
[5]徐棟,顧春華.SaaS數(shù)據(jù)層的多租戶設(shè)計(jì)模式研究[J].計(jì)算機(jī)應(yīng)用與軟件,2013,30(5):216-219.
[6] 李保棟,孔蘭菊.SaaS交付平臺多租戶數(shù)據(jù)管理模型研究[J].小型微型計(jì)算機(jī)系統(tǒng),2012,33(12).
[7]孔蘭菊,李慶忠.一種SaaS交付平臺的多租戶數(shù)據(jù)遷移策略[J] .計(jì)算機(jī)應(yīng)用與軟件,2011,28(11):52-56.
收稿日期:2013-12-05
作者簡介:王曉煜(1969—),女,遼寧遼陽人,大連東軟信息學(xué)院,主要研究方向:協(xié)同商務(wù)、創(chuàng)新服務(wù)。服務(wù)層:該層次依據(jù)SOA相應(yīng)規(guī)范,定義各種的業(yè)務(wù)功能服務(wù)組件,從而處理各種不同的功能業(yè)務(wù)。
【責(zé)任編輯郭玲】