焦瑋, 楊雪寒, 孟潔, 張倩
(河北醫(yī)科大學(xué)第三醫(yī)院, 河北 石家莊 050051)
大型公立醫(yī)院門(mén)診信息系統(tǒng)大多都是以小型機(jī)作為系統(tǒng)平臺(tái),采用集中方式進(jìn)行部署。由于小規(guī)模非公有制醫(yī)院的信息化應(yīng)用水平有限,采用此類方式建設(shè)和部署門(mén)診信息系統(tǒng)將會(huì)導(dǎo)致系統(tǒng)建設(shè)費(fèi)用高、系統(tǒng)可運(yùn)維性不高以及系統(tǒng)可拓展性差等問(wèn)題,為此本研究采用具有良好可擴(kuò)展性的分布式系統(tǒng)架構(gòu)以替代集中式的系統(tǒng)架構(gòu)建設(shè)和部署門(mén)診信息系統(tǒng)[1-3]。本文以河北醫(yī)科大學(xué)附屬醫(yī)院門(mén)診信息系統(tǒng)為例,闡述了以分布式體系架構(gòu)對(duì)現(xiàn)有醫(yī)院信息系統(tǒng)進(jìn)行部署的應(yīng)用實(shí)踐。所研究的醫(yī)院信息包括十個(gè)子系統(tǒng),每個(gè)子系統(tǒng)之間都存在復(fù)雜的邏輯關(guān)聯(lián)以解決門(mén)診、取藥、住院等繁雜的業(yè)務(wù)需求。目的是使用分布式體系架構(gòu)完成對(duì)現(xiàn)有醫(yī)院信息系統(tǒng)的重構(gòu),使其具有滿足業(yè)務(wù)需求的高度可靠性和必要的運(yùn)行效率。主要研究的是系統(tǒng)中系統(tǒng)消息路由、業(yè)務(wù)狀態(tài)以及應(yīng)用程序數(shù)據(jù)之間的交互,而不是描述系統(tǒng)的詳細(xì)實(shí)現(xiàn)。通過(guò)具體的應(yīng)用實(shí)踐對(duì)該分布式體系架構(gòu)的有效性進(jìn)行必要驗(yàn)證。
河北醫(yī)科大學(xué)附屬醫(yī)院的醫(yī)院門(mén)診信息系統(tǒng)具有10多個(gè)子系統(tǒng),如圖1所示。
圖1 門(mén)診信息系統(tǒng)架構(gòu)
這些子系統(tǒng)之間存在很多數(shù)據(jù)交互。當(dāng)患者在門(mén)診掛號(hào)時(shí),門(mén)診子系統(tǒng)可以按掛號(hào)訂單處理該患者。然后將掛號(hào)訂單轉(zhuǎn)發(fā)到相關(guān)子系統(tǒng)以進(jìn)行進(jìn)一步的工作。例如,針對(duì)患者掛號(hào)訂單的放射檢查指令將通過(guò)門(mén)診信息系統(tǒng)的放射子系統(tǒng)轉(zhuǎn)發(fā)至放射科信息系統(tǒng)(RIS)。當(dāng)患者在放射科完成X射線檢查后,RIS中將生成一個(gè)第三方系統(tǒng)的記錄返回給門(mén)診信息系統(tǒng)的放射子系統(tǒng)。許多患者掛號(hào)訂單需要在子系統(tǒng)和外部第三方系統(tǒng)之間進(jìn)行狀態(tài)變更和數(shù)據(jù)交互,因此門(mén)診信息系統(tǒng)需要靈活的體系結(jié)構(gòu)來(lái)解決內(nèi)部的不同子系統(tǒng)和第三方系統(tǒng)之間頻繁的數(shù)據(jù)交互需求。
一般從三個(gè)維度對(duì)醫(yī)院門(mén)診信息系統(tǒng)的性能進(jìn)行評(píng)價(jià):高可用性、高可拓展性和高性能。本研究使用冗余服務(wù)器、負(fù)載均衡器和應(yīng)用程序集群來(lái)實(shí)現(xiàn)這三個(gè)性能指標(biāo)。在傳統(tǒng)的集中式系統(tǒng)架構(gòu)中,門(mén)診信息系統(tǒng)由幾個(gè)異構(gòu)操作系統(tǒng)和數(shù)據(jù)庫(kù)組成,如OS/390、HP-UX和Windows 2000服務(wù)器等操作系統(tǒng),以及DB2、Sybase和Microsoft SQLServer等數(shù)據(jù)庫(kù)[4-5]。在如此復(fù)雜的運(yùn)行環(huán)境中顯然無(wú)法保證系統(tǒng)高度可靠性、數(shù)據(jù)一致性和良好的系統(tǒng)可擴(kuò)展性。為此本研究將基于統(tǒng)一的Windows 2003和Oracle RAC對(duì)門(mén)診信息系統(tǒng)進(jìn)行重構(gòu),以確保新的門(mén)診信息系統(tǒng)的高度可用性以及不同數(shù)據(jù)庫(kù)中數(shù)據(jù)的一致性。
本研究選擇SOA作為門(mén)診信息系統(tǒng)運(yùn)行的系統(tǒng)環(huán)境。使用基于Web的用戶界面構(gòu)建系統(tǒng)面向終端用戶的系統(tǒng)操作交互頁(yè)面。Web用戶界面服務(wù)器(WebUI)是為用戶瀏覽器生成系統(tǒng)交網(wǎng)頁(yè)的服務(wù)器。本研究使用Microsoft StateServer[6]來(lái)存儲(chǔ)來(lái)自WebUI的網(wǎng)頁(yè)會(huì)話。身份驗(yàn)證Web服務(wù)器(Auth-WS)通過(guò)標(biāo)準(zhǔn)SOAP協(xié)議[7]為終端用戶提供身份驗(yàn)證和授權(quán),并且啟用單點(diǎn)登錄(SSO)[8]為門(mén)診信息系統(tǒng)提高足夠的安全保障。
HL7消息[9]服務(wù)器(HL7 Server)也是基于SOAP協(xié)議的Web服務(wù)。HL7 Server是通過(guò)SOAP協(xié)議上的HL7消息構(gòu)建的。門(mén)診信息系統(tǒng)的后端HIS數(shù)據(jù)庫(kù)(HIS DB)通過(guò)運(yùn)行Oracle RAC環(huán)境以實(shí)現(xiàn)高可用性。為了實(shí)現(xiàn)數(shù)據(jù)一致性,門(mén)診信息系統(tǒng)設(shè)置了數(shù)據(jù)交換(DataExchang)服務(wù)器。該服務(wù)器僅接收從HL7 Server發(fā)送的消息。當(dāng)DataExchang服務(wù)器接收消息時(shí),它將執(zhí)行數(shù)據(jù)同步作業(yè),例如將患者實(shí)驗(yàn)室訂單發(fā)送到HIS數(shù)據(jù)庫(kù)或?qū)⑿碌膾焯?hào)注冊(cè)患者數(shù)據(jù)發(fā)送到存儲(chǔ)服務(wù)器(DB Server)上。此數(shù)據(jù)交換處理可以確保其他系統(tǒng)中的所有數(shù)據(jù)都是最新的。門(mén)診信息系統(tǒng)的基本運(yùn)行邏輯,如圖2所示。
圖2 門(mén)診信息系統(tǒng)的序列圖
由圖2可知,門(mén)診信息系統(tǒng)所涉及的服務(wù)器包括WebUI、Auth-WS、StateServer、HL7Server、DataExchange和HIS DB。這些服務(wù)器為虛擬服務(wù)器,且構(gòu)成了ServerFarms集群網(wǎng)絡(luò)[10-11]。除HIS DB之外,所有虛擬服務(wù)器均具有映射的四層交換機(jī)定義的虛擬IP。該集群網(wǎng)絡(luò)中部署了四臺(tái)物理服務(wù)器,并被配置為以負(fù)載平衡模式或故障轉(zhuǎn)移模式運(yùn)行,以確保系統(tǒng)可用性。為了擴(kuò)展系統(tǒng)并提高性能,為目標(biāo)IP地址(如SOAP接口調(diào)用、HL7消息接口和DataExchang協(xié)議)提供了一個(gè)虛擬IP,該虛擬IP也在第4層交換機(jī)中定義。每個(gè)服務(wù)器組在醫(yī)院內(nèi)網(wǎng)和ServerFarms集群網(wǎng)絡(luò)中都有對(duì)應(yīng)的虛擬IP。由于Web服務(wù)器或HIS核心服務(wù)器以負(fù)載平衡模式運(yùn)行,因此HIS可以將任何已配置的服務(wù)器動(dòng)態(tài)添加到ServerFarms集群網(wǎng)絡(luò)中以處理用戶請(qǐng)求[12-13]。如果Web服務(wù)器的負(fù)擔(dān)不大,還可以直接從四層交換機(jī)配置中刪除一些Web服務(wù)器。因此,門(mén)診信息系統(tǒng)的維護(hù)變得更加容易和有效。硬件架構(gòu),如圖3所示。
圖3 門(mén)診信息系統(tǒng)硬件架構(gòu)
河北醫(yī)科大學(xué)附屬醫(yī)院在開(kāi)展本系統(tǒng)的應(yīng)用實(shí)踐。該醫(yī)院的門(mén)診總數(shù)約為180個(gè),但同時(shí)開(kāi)設(shè)的門(mén)診科室總數(shù)約為150個(gè)。大約有40個(gè)掛號(hào)和收費(fèi)柜臺(tái)。同時(shí),病歷部門(mén)運(yùn)行著約60個(gè)工作站,藥房運(yùn)行著20個(gè)工作站,實(shí)驗(yàn)室注冊(cè)站點(diǎn)運(yùn)行著10個(gè)工作站。其他科室和部門(mén)中也同時(shí)存在運(yùn)行著少量工作站。因此,該醫(yī)院全天總共約有500個(gè)工作站同時(shí)訪問(wèn)門(mén)診信息系統(tǒng)。
經(jīng)統(tǒng)計(jì),醫(yī)院一天大約需要為9 000名門(mén)診病人提供服務(wù)。這意味著本研究所架構(gòu)的門(mén)診信息系統(tǒng)應(yīng)持續(xù)、可靠地為500個(gè)工作站連接提供服務(wù)并處理其訪問(wèn)請(qǐng)求。為此本研究從以下幾個(gè)方面來(lái)評(píng)估系統(tǒng)的性能。
本研究使用多路網(wǎng)絡(luò)通信量繪圖儀來(lái)監(jiān)視四層交換機(jī)的運(yùn)行狀態(tài)。對(duì)四層交換機(jī)進(jìn)行一個(gè)星期的性能監(jiān)視,所得出的各個(gè)虛擬服務(wù)器的最大會(huì)話數(shù),如表1所示。
表1 最大會(huì)話數(shù)和平均會(huì)話數(shù)
表1中 “30分鐘最大會(huì)話數(shù)”表示單個(gè)虛擬服務(wù)器在采樣時(shí)間中所處理的TCP會(huì)話總數(shù)?!?0分鐘平均會(huì)話數(shù)”表示連續(xù)五分鐘的六次會(huì)話的平均值。
可以得出在一周中四層交換機(jī)總會(huì)話次數(shù)的峰值為1 253。
WebUI直接處理用戶瀏覽器請(qǐng)求,然后根據(jù)需要處理身份驗(yàn)證調(diào)用,HL7 Server 提供SOAP調(diào)用和數(shù)據(jù)交換調(diào)用的功能。對(duì)于WebUI頁(yè)面的每個(gè)處理時(shí)間代表門(mén)診信息系統(tǒng)的響應(yīng)時(shí)間。
本研究通過(guò)分析Internet信息服務(wù)(IIS)的日志文件以獲得Web服務(wù)器每天的總請(qǐng)求數(shù)和一天中每小時(shí)的平均響應(yīng)時(shí)間的統(tǒng)計(jì)結(jié)果。門(mén)診信息系統(tǒng)由10個(gè)子系統(tǒng)組成,所有子系統(tǒng)都部署在20臺(tái)WebUI服務(wù)器中。每個(gè)WebUI服務(wù)器為10個(gè)子系統(tǒng)提供用戶界面和交互服務(wù)。這10個(gè)子系統(tǒng)是門(mén)診管理子系統(tǒng)、門(mén)診子系統(tǒng)、檢測(cè)子系統(tǒng)、病理子系統(tǒng)、傳染病報(bào)告子系統(tǒng)、病歷管理子系統(tǒng)、門(mén)診調(diào)度管理子系統(tǒng)、放射科子系統(tǒng)、門(mén)診計(jì)費(fèi)子系統(tǒng)和藥房管理子系統(tǒng)。每個(gè)子系統(tǒng)都有不同的用戶請(qǐng)求和數(shù)據(jù)交換操作。下面就門(mén)診管理子系統(tǒng)、診所子系統(tǒng)、門(mén)診計(jì)費(fèi)子系統(tǒng)和總體統(tǒng)計(jì)結(jié)果進(jìn)行具體闡述。
1)當(dāng)日總請(qǐng)求數(shù)和平均響應(yīng)時(shí)間的統(tǒng)計(jì)。以門(mén)診管理子系統(tǒng)為例,該子系統(tǒng)處理患者掛號(hào)、掛號(hào)查詢、掛號(hào)更新、查詢患者數(shù)據(jù)、患者數(shù)據(jù)更新和其他一些用于掛號(hào)和維護(hù)患者數(shù)據(jù)的輔助功能。對(duì)門(mén)診管理子系統(tǒng)的Web請(qǐng)求的統(tǒng)計(jì)數(shù)據(jù),如表2所示。
表2 門(mén)診管理子系統(tǒng)的請(qǐng)求IP總數(shù)
由表2可知,全天一共有172個(gè)客戶端訪問(wèn)門(mén)診管理子系統(tǒng),該子系統(tǒng)全天約有2.4萬(wàn)個(gè)網(wǎng)頁(yè)請(qǐng)求。
門(mén)診子系統(tǒng)一天內(nèi)有將近28萬(wàn)個(gè)頁(yè)面請(qǐng)求。 在門(mén)診HIS中,它占所有請(qǐng)求的69%。門(mén)診子系統(tǒng)也是使用最多的子系統(tǒng)。每天大約有600個(gè)用戶客戶端訪問(wèn)診所子系統(tǒng)。這意味著一天中將近70%的HIS用戶使用門(mén)診子系統(tǒng)。
對(duì)于一天中的平均響應(yīng)時(shí)間,如表3所示。
表3 WebUI的響應(yīng)時(shí)間
由表3可知,診所子系統(tǒng)的平均響應(yīng)時(shí)間為0.562 s,標(biāo)準(zhǔn)偏差為1.145 s,最大響應(yīng)時(shí)間為154 s(154 s的響應(yīng)時(shí)間也是所有子系統(tǒng)中最大的時(shí)間成本)。在長(zhǎng)頁(yè)面執(zhí)行中應(yīng)該存在一些編程或數(shù)據(jù)訪問(wèn)問(wèn)題。頁(yè)面響應(yīng)時(shí)間長(zhǎng),可以幫助發(fā)現(xiàn)門(mén)診信息系統(tǒng)中潛在的編程問(wèn)題。所有子系統(tǒng)請(qǐng)求的平均響應(yīng)時(shí)間為0.566 s,標(biāo)準(zhǔn)偏差為1.250 s。
2)全天中每小時(shí)的統(tǒng)計(jì)信息。為了評(píng)估請(qǐng)求和響應(yīng)時(shí)間,本研究統(tǒng)計(jì)了當(dāng)天的每小時(shí)總請(qǐng)求數(shù)和平均響應(yīng)時(shí)間,如圖4所示。
圖4 門(mén)診子系統(tǒng)的平均響應(yīng)時(shí)間
在診所子系統(tǒng)中,從07:00到20:00的平均響應(yīng)時(shí)間不到1 s,如圖5所示。
圖5 診所子系統(tǒng)的總訪問(wèn)請(qǐng)求數(shù)
早晨的高峰請(qǐng)求是10:00到11:00,大約有40 000個(gè)請(qǐng)求。從14:00到15:00是下午的高峰請(qǐng)求,大約有37 000個(gè)請(qǐng)求,如圖6、圖7所示。
圖6 門(mén)診管理子系統(tǒng)的平均響應(yīng)時(shí)間
圖7 門(mén)診管理子系統(tǒng)的總訪問(wèn)請(qǐng)求數(shù)
顯示了門(mén)診管理子系統(tǒng)的總請(qǐng)求數(shù)和平均響應(yīng)時(shí)間。門(mén)診計(jì)費(fèi)子系統(tǒng)的總請(qǐng)求數(shù)和平均響應(yīng)時(shí)間,如圖8、圖9所示。
圖8 門(mén)診計(jì)費(fèi)子系統(tǒng)的平均響應(yīng)時(shí)間
圖9 門(mén)診計(jì)費(fèi)子系統(tǒng)的總訪問(wèn)請(qǐng)求數(shù)
這兩個(gè)子系統(tǒng)在07:00至20:00的平均響應(yīng)時(shí)間約為1 s,而在07:00之前和20:00之后的平均響應(yīng)時(shí)間有所不同。
本研究所重構(gòu)的門(mén)診信息系統(tǒng)中運(yùn)行著20臺(tái)WebUI服務(wù)器和20臺(tái)HL7消息服務(wù)器。在應(yīng)用實(shí)踐中對(duì)四層交換機(jī)和WebUI的響應(yīng)時(shí)間和會(huì)話數(shù)量進(jìn)行統(tǒng)計(jì)和匯總,以驗(yàn)證系統(tǒng)的性能。其中WebUI響應(yīng)時(shí)間包括服務(wù)器場(chǎng)中的后端操作,例如身份驗(yàn)證、基于SOAP協(xié)議的HL7消息接口調(diào)用和數(shù)據(jù)交換操作。
每小時(shí)響應(yīng)時(shí)間和會(huì)話數(shù)統(tǒng)計(jì)結(jié)果表明,門(mén)診信息系統(tǒng)的響應(yīng)時(shí)間在07:00和20:00之間比較穩(wěn)定,在負(fù)載較重的門(mén)診子系統(tǒng)和計(jì)費(fèi)子系統(tǒng)中也是如此。在上午10:00和下午15:00的高峰時(shí)段,整個(gè)門(mén)診信息系統(tǒng)能夠保持穩(wěn)定運(yùn)行,響應(yīng)時(shí)間約為1 s。這意味著所架構(gòu)的門(mén)診信息系統(tǒng)具有較好負(fù)載響應(yīng)性能。
響應(yīng)時(shí)間在上午07:00之前和下午20:00之后出現(xiàn)變化的原因是,當(dāng)子系統(tǒng)當(dāng)前沒(méi)有加載至內(nèi)存中時(shí), WebUI應(yīng)用程序需要時(shí)間來(lái)緩存數(shù)據(jù)庫(kù)中的一些常用數(shù)據(jù)。從上午00:00到上午07:00的門(mén)診管理響應(yīng)時(shí)間在0.6~1.23 s之間有很大差異,這是因?yàn)橐恍┗颊咴谖缫箯尼t(yī)院急診信息系統(tǒng)中進(jìn)行門(mén)診掛號(hào)操作,這導(dǎo)致響應(yīng)時(shí)間較長(zhǎng)。此外,門(mén)診信息系統(tǒng)會(huì)在連續(xù)20分鐘內(nèi)沒(méi)有訪問(wèn)請(qǐng)求的時(shí)候基于IIS對(duì)子系統(tǒng)進(jìn)行內(nèi)存回收,子系統(tǒng)的回收和啟動(dòng)會(huì)產(chǎn)生響應(yīng)時(shí)間變長(zhǎng)。
本文通過(guò)分布式體系架構(gòu)對(duì)基于小型機(jī)集中部署的門(mén)診信息系統(tǒng)進(jìn)行了重構(gòu)。在分布式體系架構(gòu)中,門(mén)診信息系統(tǒng)可以實(shí)現(xiàn)數(shù)據(jù)高效交換和保持多個(gè)系統(tǒng)之間的數(shù)據(jù)一致性。該體系架構(gòu)使用四層交換機(jī)作為服務(wù)器集群的負(fù)載平衡器,為門(mén)診信息系統(tǒng)提供了高可用性和可拓展性。在該體系架構(gòu)中,可以將已配置的服務(wù)器動(dòng)態(tài)添加到ServerFarms中,為門(mén)診信息系統(tǒng)提供良好的可拓展性能。本文通過(guò)應(yīng)用實(shí)踐獲得了包含四層交換機(jī)和WebUI的會(huì)話數(shù)和響應(yīng)實(shí)踐的統(tǒng)計(jì)數(shù)據(jù)。 統(tǒng)計(jì)結(jié)果表明,基于SOA和分布式體系架構(gòu)的門(mén)診信息系統(tǒng)能夠在負(fù)載較重的實(shí)際環(huán)境提供較好系統(tǒng)響應(yīng)性能。