姚安琪,王曉梅,朱華東,熊麗娟,惠樸真,王宇,陳藝飛
(1.皖南醫(yī)學(xué)院,安徽 蕪湖 241000;2.皖南醫(yī)學(xué)院第一附屬醫(yī)院,安徽 蕪湖 241000)
當(dāng)前醫(yī)療行業(yè)的信息系統(tǒng),其架構(gòu)主要有C/S(客戶機(jī)/服務(wù)器)及B/S(瀏覽器/服務(wù)器)兩類,有相當(dāng)多的醫(yī)院信息系統(tǒng)(HIS)選擇C/S 架構(gòu)[1,2]。C/S 架構(gòu)優(yōu)點(diǎn)是系統(tǒng)響應(yīng)快、用戶體驗(yàn)好、能充分利用客戶機(jī)資源(如打印機(jī)、數(shù)據(jù)緩存)等[3]。然而C/S 架構(gòu)需在客戶端部署應(yīng)用程序,因HIS 需求變化頻繁,客戶端數(shù)量大且分散,這些都給C/S 架構(gòu)的系統(tǒng)升級和修復(fù)Bug 帶來了不小的挑戰(zhàn)[4]。以前常用的應(yīng)用系統(tǒng)更新方式為醫(yī)院信息中心技術(shù)人員拿著U盤跑現(xiàn)場更新應(yīng)用程序,這種方式繁瑣且工作量巨大,已經(jīng)慢慢被淘汰,取而代之的是管理員將應(yīng)用程序文件放在共享文件夾中,通過網(wǎng)絡(luò)手動(dòng)下載更新,這種方法仍然減輕不了醫(yī)院信息中心技術(shù)人員的工作量。因此,為了提高工作效率,尋求更加快捷的C/S 架構(gòu)軟件更新的方式方法已迫在眉睫[5-7]。
軟件自動(dòng)更新的實(shí)現(xiàn)實(shí)質(zhì)上是在服務(wù)器和客戶機(jī)之間進(jìn)行通信和傳遞數(shù)據(jù)[8]。本系統(tǒng)設(shè)計(jì)成服務(wù)器端、客戶端和目標(biāo)應(yīng)用程序版本自檢嵌入三個(gè)模塊,實(shí)現(xiàn)服務(wù)器與客戶端之間的信息交流和數(shù)據(jù)傳遞。服務(wù)器端模塊主要功能是維護(hù)各應(yīng)用系統(tǒng)客戶端文件,每個(gè)應(yīng)用系統(tǒng)維護(hù)正式版和測試版兩個(gè)版本,客戶端文件分允許修改和不允許修改兩類。此外,服務(wù)器端功能還包括對應(yīng)用程序初次安裝申請的審批。應(yīng)用程序版本自檢嵌入模塊主要功能是監(jiān)測本應(yīng)用系統(tǒng)客戶端文件完整性,包括文件是否存在、文件大小、文件修改時(shí)間等。一旦發(fā)現(xiàn)客戶端應(yīng)用程序文件丟失、被非法修改或服務(wù)器端有新版本發(fā)布,將啟動(dòng)客戶端自動(dòng)更新進(jìn)程,從而確保客戶端應(yīng)用程序文件和版本始終與服務(wù)器端保持同步??蛻舳四K主要功能包括應(yīng)用程序初次安裝申請和對客戶端文件進(jìn)行新版本下載更新。
數(shù)據(jù)庫概念模型如圖1 所示。
圖1 數(shù)據(jù)庫概念模型
用戶登錄到目標(biāo)應(yīng)用系統(tǒng)時(shí),系統(tǒng)讀取該用戶是否為目標(biāo)應(yīng)用系統(tǒng)測試版用戶,如為測試版用戶,應(yīng)用程序版本自檢模塊將比較客戶端應(yīng)用程序文件與服務(wù)器端該應(yīng)用程序測試版文件,如不存在該測試版本,則比較服務(wù)器端該應(yīng)用程序正式版文件。如該用戶不是測試版用戶,應(yīng)用程序版本自檢模塊將比較客戶端應(yīng)用程序文件與服務(wù)器端該應(yīng)用程序正式版文件。比較內(nèi)容包括文件名、文件大小、文件修改時(shí)間,如發(fā)現(xiàn)客戶端某個(gè)文件不存在(被非法刪除),或不允許修改的文件大小、文件修改時(shí)間與服務(wù)器端不一致,則調(diào)用客戶端自動(dòng)更新進(jìn)程,完成目標(biāo)文件下載更新。服務(wù)器端文件上傳時(shí),選擇版本類型、更新類型、是否強(qiáng)制更新等信息,如圖2 所示。
圖2 文件上傳界面
常見的文件存儲(chǔ)方式有文件存儲(chǔ)和數(shù)據(jù)庫存儲(chǔ)兩種[9]。前者由于下載文件時(shí)客戶端通過文件url發(fā)起下載請求,無法對文件下載權(quán)限進(jìn)行攔截,導(dǎo)致文件安全性得不到保障,此外該存儲(chǔ)方式文件易被誤刪、誤改和病毒感染。后者將文件以二進(jìn)制方式存儲(chǔ)于數(shù)據(jù)庫中,可方便實(shí)現(xiàn)文件訪問權(quán)限管理,文件也不易被誤刪、誤改和病毒感染,文件下載性能比文件存儲(chǔ)方式好,其缺點(diǎn)是會(huì)增加數(shù)據(jù)庫負(fù)擔(dān),但因文件下載頻率不會(huì)很高,對數(shù)據(jù)庫整體性能影響不是很大。結(jié)合以上兩種存儲(chǔ)方式的利弊,最終采用數(shù)據(jù)庫存儲(chǔ)方案。同時(shí)結(jié)合應(yīng)用服務(wù)器緩存技術(shù),盡量減少對數(shù)據(jù)庫服務(wù)器的壓力。即當(dāng)客戶端請求下載文件時(shí),在應(yīng)用服務(wù)器中會(huì)緩存一份與數(shù)據(jù)庫版本一致的應(yīng)用程序文件,而當(dāng)其它客戶端進(jìn)行相同文件下載時(shí),直接從應(yīng)用服務(wù)器緩存讀取文件。
當(dāng)客戶端進(jìn)行文件下載時(shí),需要先獲取對應(yīng)文件的下載信息,再進(jìn)行文件下載。在獲取文件下載信息時(shí),程序會(huì)預(yù)先判斷應(yīng)用服務(wù)器中的緩存文件是否與數(shù)據(jù)庫中的文件一致,如果應(yīng)用服務(wù)器中的文件與數(shù)據(jù)庫中的文件不一致,系統(tǒng)先嘗試獲取存放應(yīng)用程序文件的文件夾的鎖權(quán)限,以避免多個(gè)進(jìn)程對同一份應(yīng)用程序文件更新的時(shí)候造成并發(fā)問題。只有在獲取到文件鎖權(quán)限之后,再進(jìn)行應(yīng)用服務(wù)器中文件的同步,最后釋放文件夾的鎖權(quán)限,并返回文件信息到客戶端。
客戶端在下載完需要更新的應(yīng)用程序文件后,對于需要更新的文件,將下載的文件覆蓋舊版本文件。對于新增的下載文件,則添加到對應(yīng)位置,同時(shí)刪除舊版多余的文件,最后由更新程序打開目標(biāo)應(yīng)用程序。更新界面如圖3 所示。
圖3 更新界面
(1)二進(jìn)制方式存儲(chǔ)。應(yīng)用程序文件上傳后以二進(jìn)制方式存儲(chǔ)于數(shù)據(jù)庫中[10],不會(huì)被誤刪、誤改和病毒感染,不僅安全性和可靠性高,而且性能比FTP 方式好。
(2)自我修復(fù)、更新功能。如發(fā)現(xiàn)客戶端自動(dòng)更新系統(tǒng)部分或全部文件丟失、被非法修改或有更新版本,將首先實(shí)現(xiàn)客戶端自動(dòng)更新系統(tǒng)自我修復(fù)和自動(dòng)更新,然后再更新目標(biāo)應(yīng)用程序。
(3)限制安裝功能。目標(biāo)應(yīng)用系統(tǒng)可設(shè)定為“限制安裝”,目標(biāo)應(yīng)用系統(tǒng)在終端初次安裝時(shí),客戶端必須正確輸入用戶名和密碼后完成登錄,選擇目標(biāo)應(yīng)用系統(tǒng),并選擇申請科室、輸入電腦位置和聯(lián)系電話,完成安裝申請,經(jīng)管理員審批通過后,才能進(jìn)行目標(biāo)應(yīng)用系統(tǒng)自動(dòng)安裝。
(4)應(yīng)用程序文件監(jiān)測功能。實(shí)現(xiàn)對目標(biāo)應(yīng)用程序文件內(nèi)容實(shí)時(shí)監(jiān)測,一旦發(fā)現(xiàn)文件丟失或被非法修改,系統(tǒng)將立即啟動(dòng)自動(dòng)更新進(jìn)程。
(5)應(yīng)用程序版本監(jiān)測功能。實(shí)現(xiàn)對目標(biāo)應(yīng)用程序版本實(shí)時(shí)監(jiān)測,一旦發(fā)現(xiàn)應(yīng)用程序有更新版本,系統(tǒng)將立即啟動(dòng)自動(dòng)更新進(jìn)程。
(6)支持同時(shí)存在測試版和正式版兩個(gè)版本。管理員可授權(quán)少數(shù)用戶為目標(biāo)應(yīng)用系統(tǒng)測試用戶,將待更新的目標(biāo)應(yīng)用系統(tǒng)先上傳測試版,只有目標(biāo)應(yīng)用系統(tǒng)的少數(shù)測試用戶可自動(dòng)下載該應(yīng)用測試版。試用后如果發(fā)現(xiàn)異常,影響范圍小。試用后如果沒有異常,管理員再將測試版本改為正式版本,提高系統(tǒng)可用性、安全性和可靠性。
(7)支持強(qiáng)制更新。當(dāng)應(yīng)用程序自動(dòng)更新系統(tǒng)發(fā)現(xiàn)目標(biāo)應(yīng)用服務(wù)器端有更新版本時(shí),將自動(dòng)啟動(dòng)更新進(jìn)程,此時(shí)管理員就可以對目標(biāo)應(yīng)用程序版本設(shè)定為強(qiáng)制更新或非強(qiáng)制更新,如設(shè)定為強(qiáng)制更新,則強(qiáng)制正在使用目標(biāo)應(yīng)用程序的用戶立即更新目標(biāo)應(yīng)用系統(tǒng),如設(shè)定為非強(qiáng)制更新,則允許正在使用目標(biāo)應(yīng)用程序的用戶延后更新目標(biāo)應(yīng)用系統(tǒng)。
C/S 架構(gòu)醫(yī)院信息系統(tǒng)自動(dòng)更新系統(tǒng)彌補(bǔ)了C/S架構(gòu)需要手動(dòng)更新應(yīng)用程序的不足,確??蛻舳藨?yīng)用程序文件始終與服務(wù)器端保持同步,防止應(yīng)用程序文件被非法修改。該系統(tǒng)投入使用后不僅很大程度上減少醫(yī)院信息中心技術(shù)人員的工作量,而且目標(biāo)應(yīng)用程序使用申請和審批功能,規(guī)范目標(biāo)應(yīng)用程序的安裝和使用。此外,系統(tǒng)提供的測試版應(yīng)用程序功能,使新版目標(biāo)應(yīng)用程序先在小范圍內(nèi)試用,無誤后再擴(kuò)大應(yīng)用范圍,提高了應(yīng)用系統(tǒng)的可靠性和可用性。