孫永亮,鄧文偉
1. 上海市靜安區(qū)中醫(yī)醫(yī)院 信息科,上海 200040;2. 上海市靜安區(qū)閘北中心醫(yī)院 信息科,上海 200040
傳染病的監(jiān)控與預(yù)警是控制、降低疫情突發(fā)事件危害的關(guān)鍵工作,是提高公民醫(yī)療衛(wèi)生質(zhì)量的基本保障。隨著信息技術(shù)的發(fā)展與我國(guó)醫(yī)療衛(wèi)生事業(yè)改革的進(jìn)一步推進(jìn),醫(yī)療信息化、網(wǎng)絡(luò)化已成為當(dāng)前醫(yī)院發(fā)展的主要方向[1]。推動(dòng)醫(yī)療信息化進(jìn)程可以為醫(yī)務(wù)人員提供更高效的工作方式,使之擁有更多精力為患者提供高質(zhì)量服務(wù)[2]。我國(guó)醫(yī)療信息化起步較晚,醫(yī)院信息化與區(qū)域衛(wèi)生信息化發(fā)展不足,許多醫(yī)療衛(wèi)生機(jī)構(gòu)仍使用傳統(tǒng)的方式識(shí)別、收集疫情信息,經(jīng)人工整理后再錄入文件系統(tǒng)[3]。這種方式具有效率低下、易出錯(cuò)、查詢困難、效果不明顯等缺點(diǎn),為疫情監(jiān)控工作帶來(lái)了極大不便[4]。因此如何實(shí)現(xiàn)患者疾病信息的實(shí)時(shí)監(jiān)控,以及疫情報(bào)告的自動(dòng)化管理成為了各級(jí)醫(yī)療管理者需要解決的難題。
本研究設(shè)計(jì)并實(shí)現(xiàn)了一種醫(yī)院疫情監(jiān)控系統(tǒng),通過(guò)監(jiān)測(cè)與記錄患者就診的全流程,對(duì)傳染病疫情實(shí)時(shí)跟蹤與監(jiān)控,并實(shí)現(xiàn)了疫情的自動(dòng)化上報(bào)與報(bào)警。該系統(tǒng)可簡(jiǎn)化醫(yī)院傳染病監(jiān)測(cè)的工作流程,為防疫工作提供具有時(shí)效性的數(shù)據(jù)支持,并為醫(yī)療信息化進(jìn)程的推進(jìn)提供參考。
本研究設(shè)計(jì)的醫(yī)院疫情監(jiān)控系統(tǒng)采用富互聯(lián)應(yīng)用(Rich Internet Application,RIA)框架,整體上呈現(xiàn)分層風(fēng)格體系結(jié)構(gòu),目的是為了具備較好的復(fù)用性與內(nèi)部可修改性[5]。該系統(tǒng)主要由瀏覽器和后端框架組成,通過(guò)TCP連接,Web界面又包含BootStrap前端開(kāi)發(fā)庫(kù)、JQuery通信模塊交互工作,后端框架包含ASP.Net MVC容器、應(yīng)用程序服務(wù)器和數(shù)據(jù)庫(kù),整體結(jié)構(gòu)設(shè)計(jì)如下圖1所示。
圖1 醫(yī)院疫情監(jiān)控系統(tǒng)整體架構(gòu)設(shè)計(jì)
其中,使用Twitter公司開(kāi)發(fā)的BootStrap工具來(lái)設(shè)計(jì)用于業(yè)務(wù)展現(xiàn)的前端頁(yè)面,然后通過(guò)建立前后端的TCP連接來(lái)完成對(duì)ASP.Net MVC容器中包含的網(wǎng)站頁(yè)面的訪問(wèn),最后將API響應(yīng)結(jié)果返回至瀏覽器[6]。瀏覽器端通過(guò)XML PRC請(qǐng)求獲得數(shù)據(jù),再將數(shù)據(jù)傳入JQuery通信模塊,從而實(shí)現(xiàn)業(yè)務(wù)的動(dòng)態(tài)展現(xiàn)。在數(shù)據(jù)請(qǐng)求到達(dá)ASP.Net的應(yīng)用程序服務(wù)器之后,首先在一個(gè)會(huì)話中進(jìn)行權(quán)限判斷,這一請(qǐng)求也可以使用RESTful中XML RPC Call的授權(quán)令牌來(lái)實(shí)現(xiàn)[7]。此外,為了提高系統(tǒng)的可靠性與可用性,在服務(wù)器端部署了守護(hù)進(jìn)程、備份系統(tǒng)和維護(hù)系統(tǒng)三種工具,作用如表1所示。
表1 服務(wù)器配置的可靠性工具
數(shù)據(jù)管理層的整體框架為三層結(jié)構(gòu),自下而上分別是數(shù)據(jù)庫(kù)訪問(wèn)層、業(yè)務(wù)處理層以及對(duì)外接口。選擇基于ASP.Net的Entity Framework框架來(lái)實(shí)現(xiàn)數(shù)據(jù)持久化并生成相應(yīng)的實(shí)體類,從而將數(shù)據(jù)管理與具體的業(yè)務(wù)邏輯分離開(kāi),以便于系統(tǒng)的開(kāi)發(fā)與維護(hù)[8]。使用Entity Framework的數(shù)據(jù)管理層結(jié)構(gòu)如圖2所示。
圖2 數(shù)據(jù)管理層框架設(shè)計(jì)
由圖2可知,在與業(yè)務(wù)對(duì)象模塊進(jìn)行交互時(shí),訪問(wèn)的是框架中的業(yè)務(wù)實(shí)體;在與數(shù)據(jù)庫(kù)對(duì)象進(jìn)行交互時(shí),訪問(wèn)的是數(shù)據(jù)存儲(chǔ)實(shí)體。為了實(shí)現(xiàn)這一過(guò)程,需要對(duì)數(shù)據(jù)實(shí)體到數(shù)據(jù)庫(kù)源以及業(yè)務(wù)實(shí)體到業(yè)務(wù)邏輯的交互協(xié)議進(jìn)行設(shè)計(jì),這兩方面的協(xié)議(映射關(guān)系)如圖3所示。
系統(tǒng)的業(yè)務(wù)功能層主要包含四個(gè)功能模塊,分別為:傳染病統(tǒng)計(jì)跟蹤模塊,就診數(shù)據(jù)分析模塊,疫情自動(dòng)上報(bào)模塊,系統(tǒng)參數(shù)管理模塊。系統(tǒng)的主要功能模塊劃分如圖4所示。
圖3 數(shù)據(jù)管理層映射關(guān)系
圖4 醫(yī)院疫情監(jiān)控系統(tǒng)功能能模塊劃分
各個(gè)功能模塊的組合方式采用XML配置文件來(lái)完成,然后以RESTful API的方式將不同的后端業(yè)務(wù)發(fā)布至不同的URI中,使得系統(tǒng)各個(gè)模塊之間以調(diào)用網(wǎng)絡(luò)接口的形式來(lái)交互,從而隱藏了模塊具體的實(shí)現(xiàn)細(xì)節(jié)[9]。每個(gè)功能模塊對(duì)應(yīng)一個(gè)業(yè)務(wù)需求,具備一定的業(yè)務(wù)價(jià)值[10]。這一對(duì)應(yīng)關(guān)系如表2所示。
表2 系統(tǒng)業(yè)務(wù)功能層功能模塊
為了實(shí)現(xiàn)表2所述的各項(xiàng)業(yè)務(wù)功能,將對(duì)各個(gè)功能模塊進(jìn)行詳細(xì)闡述。
傳染病統(tǒng)計(jì)跟蹤模塊:該模塊包括傳染病信息的回顧性分析與預(yù)測(cè)性分析兩個(gè)部分。其中回顧性數(shù)據(jù)分析主要通過(guò)一系列的統(tǒng)計(jì)學(xué)方法將不同地區(qū)、不同患者群體、不同感染源的傳染病進(jìn)行匯總并以圖表的形式向用戶提供數(shù)據(jù)展現(xiàn)服務(wù);另一方面,預(yù)測(cè)性傳染病跟蹤統(tǒng)計(jì)主要是通過(guò)已收集到的歷史感染信息來(lái)對(duì)未來(lái)傳染病疫情的潛在風(fēng)險(xiǎn)、傳播路徑以及流行趨勢(shì)進(jìn)行分析預(yù)測(cè),并按照設(shè)定的報(bào)警策略自動(dòng)向上級(jí)網(wǎng)絡(luò)節(jié)點(diǎn)傳遞疫情信息。
就診數(shù)據(jù)分析模塊:該功能模塊向用戶提供就診數(shù)據(jù)的錄入與查詢服務(wù),用戶可通過(guò)此模塊查詢醫(yī)院接受患者中的疾病情況,并設(shè)定具體的風(fēng)險(xiǎn)判定規(guī)則。該模塊通過(guò)flask工具將所實(shí)現(xiàn)的數(shù)據(jù)分析服務(wù)打包為Web接口,從而實(shí)現(xiàn)系統(tǒng)邏輯與實(shí)現(xiàn)的分離,降低模塊之間的耦合性[11]。
疫情自動(dòng)上報(bào)模塊:該模塊為用戶提供疫情信息的自動(dòng)上報(bào)功能,用戶只需要針對(duì)某些數(shù)據(jù)預(yù)先設(shè)置報(bào)警規(guī)則,通過(guò)調(diào)用就診數(shù)據(jù)分析模塊所提供的接口獲取相關(guān)疾控信息,用于在達(dá)到所設(shè)定閾值時(shí)自動(dòng)生成統(tǒng)計(jì)報(bào)告,并將其上報(bào)至上級(jí)網(wǎng)絡(luò)節(jié)點(diǎn)。
系統(tǒng)參數(shù)管理模塊:該模塊為管理員用戶提供系統(tǒng)整體的參數(shù)管理服務(wù),從而通過(guò)動(dòng)態(tài)配置的方式提高系統(tǒng)的靈活性。管理員用戶可通過(guò)該模塊實(shí)現(xiàn)對(duì)普通用戶賬號(hào)以及權(quán)限信息的管理,管理用于數(shù)據(jù)挖掘的備用模型與訓(xùn)練數(shù)據(jù)集。
本系統(tǒng)前后端之間采用JSON作為通信交互方式,并按照前文提到的表現(xiàn)層狀態(tài)轉(zhuǎn)化來(lái)實(shí)現(xiàn)消息的請(qǐng)求與響應(yīng)。JSON是一種基于ECMAScript的數(shù)據(jù)交換標(biāo)準(zhǔn),適合于實(shí)現(xiàn)網(wǎng)絡(luò)中的少量數(shù)據(jù)通信[12]。JSON采用了完全獨(dú)立于語(yǔ)言的文本方式,具有結(jié)構(gòu)簡(jiǎn)單、編碼難度低、基于文本、可擴(kuò)展性強(qiáng)等優(yōu)點(diǎn),因此被大量應(yīng)用于Web應(yīng)用程序中[13]。
醫(yī)院疫情監(jiān)控系統(tǒng)的通信交互層主要通過(guò)JSON文本作為信息傳輸載體,使用.Net Framework 中的JSON serialization工具模塊來(lái)生成JSON數(shù)據(jù)。實(shí)際中按照?qǐng)鼍暗牟煌蛇x用3種不同的數(shù)據(jù)組織形式,見(jiàn)表3。
表3 通信交互層的JSON數(shù)據(jù)格式
基于對(duì)醫(yī)院疫情監(jiān)控系統(tǒng)的設(shè)計(jì),本系統(tǒng)在實(shí)現(xiàn)時(shí)選擇了Windows Server2008作為開(kāi)發(fā)平臺(tái),原因在于其具有良好的IT架構(gòu),且提供了服務(wù)器功能,從而具備了信息的基礎(chǔ)架構(gòu)[14]。在服務(wù)器上搭建好ASP.Net的運(yùn)行環(huán)境后,使用C#編程語(yǔ)言完成各個(gè)功能模塊的構(gòu)建??紤]到本系統(tǒng)將與整體的醫(yī)院信息平臺(tái)相銜接,因此在整個(gè)開(kāi)發(fā)過(guò)程中采用了原型模型的方法。系統(tǒng)實(shí)現(xiàn)過(guò)程中總共構(gòu)建了3次拋棄式原型,按照OCP原則、差異化設(shè)計(jì)原則不斷進(jìn)行演化,并保持與醫(yī)院現(xiàn)行系統(tǒng)的一致性[15]。最終得到一個(gè)能與醫(yī)院信息平臺(tái)有效銜接的疫情監(jiān)控系統(tǒng)。
本系統(tǒng)主要部署于地區(qū)中心醫(yī)院的數(shù)據(jù)中心,通過(guò)醫(yī)院內(nèi)網(wǎng)將各個(gè)分支節(jié)點(diǎn)接入到該中心醫(yī)院,實(shí)現(xiàn)區(qū)域網(wǎng)絡(luò)化覆蓋的疫情監(jiān)控。其網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖5所示。
在具體實(shí)施時(shí)需要使用醫(yī)院專線鏈路來(lái)連接中心醫(yī)院以及各分支醫(yī)院的網(wǎng)絡(luò)節(jié)點(diǎn),并通過(guò)物理阻斷的方法隔絕外網(wǎng)。為了使疫情監(jiān)控系統(tǒng)更為安全可靠,在分支醫(yī)院節(jié)點(diǎn)處使用基于互聯(lián)網(wǎng)安全協(xié)議的L2TP VPN加密通道來(lái)防止信息泄露[16]。此外,如圖5所示,中心醫(yī)院承擔(dān)了整個(gè)系統(tǒng)的所有流量,是系統(tǒng)性能的瓶頸,因此需要把中心節(jié)點(diǎn)的機(jī)房及其客戶端部署于數(shù)據(jù)鏈路交匯處,并提高其數(shù)據(jù)交換速率和負(fù)載能力。
圖5 系統(tǒng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)圖
在完成系統(tǒng)的設(shè)計(jì)、實(shí)現(xiàn)以及部署等工作之后,需要對(duì)系統(tǒng)相關(guān)業(yè)務(wù)功能最后的實(shí)現(xiàn)情況進(jìn)行考察,并通過(guò)對(duì)比分析的方式驗(yàn)證系統(tǒng)的有效性。系統(tǒng)的使用流程主要有三個(gè)步驟,分別為信息錄入階段、電子上報(bào)階段、疫情控制階段。其中信息錄入階段是系統(tǒng)整個(gè)流程的初始階段,由醫(yī)生在接診病人時(shí)將患者的相關(guān)信息以及疾病診斷結(jié)果通過(guò)疾病診斷卡界面錄入到系統(tǒng)中,如圖6所示。
圖6 疾病診斷卡界面
電子上報(bào)階段是相關(guān)醫(yī)療人員在完成信息錄入工作后,系統(tǒng)根據(jù)在數(shù)據(jù)管理層的傳染病案例字典自動(dòng)地向醫(yī)生用戶發(fā)出傳染病疫情上報(bào)提示,用戶通過(guò)電子上報(bào)卡界面來(lái)填入初級(jí)疫情報(bào)告,完成此項(xiàng)工作后,系統(tǒng)將自動(dòng)地分析傳染病信息,判斷該傳染病是正??煽氐某R?guī)傳染病還是有潛在疫情風(fēng)險(xiǎn)的異常傳染病,這一階段如圖7所示。
圖7 電子上報(bào)卡界面
在醫(yī)療人員完成電子上報(bào)工作后則進(jìn)入疫情控制階段,若系統(tǒng)根據(jù)其控制邏輯與相關(guān)策略發(fā)出疫情警報(bào),則首先自動(dòng)地生產(chǎn)疫情報(bào)告信息并向上級(jí)節(jié)點(diǎn)的醫(yī)療衛(wèi)生機(jī)構(gòu)進(jìn)行匯報(bào),然后向醫(yī)院管理者用戶提供疫情來(lái)源、傳染病種類、歷史防控方案等信息。在完成這一階段的工作后,系統(tǒng)將對(duì)門(mén)診數(shù)量、傳染病種類、疫情上報(bào)記錄等相關(guān)數(shù)據(jù)在后臺(tái)進(jìn)行可視化展現(xiàn),并提供報(bào)表打印功能,如圖8所示。
圖8 后臺(tái)信息展示界面
該醫(yī)院2018年12月3日開(kāi)始使用本系統(tǒng),相較于之前的傳統(tǒng)手寫(xiě)檔案、手動(dòng)錄入文件系統(tǒng)等方式,防疫工作中產(chǎn)生的文件規(guī)??偞笮?、單個(gè)工作人員的每月工作量等方面都有了較大的改進(jìn)。為了驗(yàn)證系統(tǒng)的有效性,以每月防疫工作產(chǎn)生的文件資源總大小為指標(biāo),分別選取了2018年與2019年上半年6個(gè)月的相關(guān)數(shù)據(jù),繪制了如圖9所示的折線圖。
由圖9可見(jiàn),系統(tǒng)投入到實(shí)際應(yīng)用中后,醫(yī)院疫情監(jiān)控工作效率有了極大的提高,醫(yī)院每月所能處理的數(shù)據(jù)規(guī)模提高非常顯著。
圖9 系統(tǒng)應(yīng)用效果分析
本研究設(shè)計(jì)并實(shí)現(xiàn)了一種分層結(jié)構(gòu)的醫(yī)院疫情監(jiān)控系統(tǒng),其整體架構(gòu)上采用了RIA應(yīng)用結(jié)構(gòu),使系統(tǒng)具有表現(xiàn)力強(qiáng)、更新及時(shí)等特點(diǎn)。在ASP.Net服務(wù)器運(yùn)行環(huán)境下,選擇Entity Framework框架來(lái)完成數(shù)據(jù)管理層的實(shí)現(xiàn),使用BootStrap完成系統(tǒng)前端界面的設(shè)計(jì),前后端通信方式為RESTful API請(qǐng)求與響應(yīng)模式,傳遞JSON文本以完成輕量級(jí)數(shù)據(jù)交互。系統(tǒng)的業(yè)務(wù)功能層主要包含用于監(jiān)控傳染病數(shù)據(jù)的疫情跟蹤模塊;用于采集、整理、加工疾病信息的就診數(shù)據(jù)分析模塊;用于實(shí)現(xiàn)傳染病快速上報(bào)的疫情自動(dòng)上報(bào)模塊;用于管理員維護(hù)、調(diào)整系統(tǒng)工作策略的參數(shù)管理模塊。
實(shí)驗(yàn)結(jié)果表明,在地區(qū)中心醫(yī)院中使用本系統(tǒng)可以有效提高疫情監(jiān)控工作的效率,充分利用了智能化、自動(dòng)化的方法實(shí)現(xiàn)疫情監(jiān)控工作的數(shù)據(jù)自動(dòng)提取、智能上報(bào),為醫(yī)療信息化進(jìn)程提供了具備一定參考價(jià)值的解決方案。