姚安琪,王曉梅,朱華東,熊麗娟,惠樸真,王宇,陳藝飛
(1.皖南醫學院,安徽 蕪湖 241000;2.皖南醫學院第一附屬醫院,安徽 蕪湖 241000)
當前醫療行業的信息系統,其架構主要有C/S(客戶機/服務器)及B/S(瀏覽器/服務器)兩類,有相當多的醫院信息系統(HIS)選擇C/S 架構[1,2]。C/S 架構優點是系統響應快、用戶體驗好、能充分利用客戶機資源(如打印機、數據緩存)等[3]。然而C/S 架構需在客戶端部署應用程序,因HIS 需求變化頻繁,客戶端數量大且分散,這些都給C/S 架構的系統升級和修復Bug 帶來了不小的挑戰[4]。以前常用的應用系統更新方式為醫院信息中心技術人員拿著U盤跑現場更新應用程序,這種方式繁瑣且工作量巨大,已經慢慢被淘汰,取而代之的是管理員將應用程序文件放在共享文件夾中,通過網絡手動下載更新,這種方法仍然減輕不了醫院信息中心技術人員的工作量。因此,為了提高工作效率,尋求更加快捷的C/S 架構軟件更新的方式方法已迫在眉睫[5-7]。
軟件自動更新的實現實質上是在服務器和客戶機之間進行通信和傳遞數據[8]。本系統設計成服務器端、客戶端和目標應用程序版本自檢嵌入三個模塊,實現服務器與客戶端之間的信息交流和數據傳遞。服務器端模塊主要功能是維護各應用系統客戶端文件,每個應用系統維護正式版和測試版兩個版本,客戶端文件分允許修改和不允許修改兩類。此外,服務器端功能還包括對應用程序初次安裝申請的審批。應用程序版本自檢嵌入模塊主要功能是監測本應用系統客戶端文件完整性,包括文件是否存在、文件大小、文件修改時間等。一旦發現客戶端應用程序文件丟失、被非法修改或服務器端有新版本發布,將啟動客戶端自動更新進程,從而確保客戶端應用程序文件和版本始終與服務器端保持同步。客戶端模塊主要功能包括應用程序初次安裝申請和對客戶端文件進行新版本下載更新。
數據庫概念模型如圖1 所示。

圖1 數據庫概念模型
用戶登錄到目標應用系統時,系統讀取該用戶是否為目標應用系統測試版用戶,如為測試版用戶,應用程序版本自檢模塊將比較客戶端應用程序文件與服務器端該應用程序測試版文件,如不存在該測試版本,則比較服務器端該應用程序正式版文件。如該用戶不是測試版用戶,應用程序版本自檢模塊將比較客戶端應用程序文件與服務器端該應用程序正式版文件。比較內容包括文件名、文件大小、文件修改時間,如發現客戶端某個文件不存在(被非法刪除),或不允許修改的文件大小、文件修改時間與服務器端不一致,則調用客戶端自動更新進程,完成目標文件下載更新。服務器端文件上傳時,選擇版本類型、更新類型、是否強制更新等信息,如圖2 所示。

圖2 文件上傳界面
常見的文件存儲方式有文件存儲和數據庫存儲兩種[9]。前者由于下載文件時客戶端通過文件url發起下載請求,無法對文件下載權限進行攔截,導致文件安全性得不到保障,此外該存儲方式文件易被誤刪、誤改和病毒感染。后者將文件以二進制方式存儲于數據庫中,可方便實現文件訪問權限管理,文件也不易被誤刪、誤改和病毒感染,文件下載性能比文件存儲方式好,其缺點是會增加數據庫負擔,但因文件下載頻率不會很高,對數據庫整體性能影響不是很大。結合以上兩種存儲方式的利弊,最終采用數據庫存儲方案。同時結合應用服務器緩存技術,盡量減少對數據庫服務器的壓力。即當客戶端請求下載文件時,在應用服務器中會緩存一份與數據庫版本一致的應用程序文件,而當其它客戶端進行相同文件下載時,直接從應用服務器緩存讀取文件。
當客戶端進行文件下載時,需要先獲取對應文件的下載信息,再進行文件下載。在獲取文件下載信息時,程序會預先判斷應用服務器中的緩存文件是否與數據庫中的文件一致,如果應用服務器中的文件與數據庫中的文件不一致,系統先嘗試獲取存放應用程序文件的文件夾的鎖權限,以避免多個進程對同一份應用程序文件更新的時候造成并發問題。只有在獲取到文件鎖權限之后,再進行應用服務器中文件的同步,最后釋放文件夾的鎖權限,并返回文件信息到客戶端。
客戶端在下載完需要更新的應用程序文件后,對于需要更新的文件,將下載的文件覆蓋舊版本文件。對于新增的下載文件,則添加到對應位置,同時刪除舊版多余的文件,最后由更新程序打開目標應用程序。更新界面如圖3 所示。

圖3 更新界面
(1)二進制方式存儲。應用程序文件上傳后以二進制方式存儲于數據庫中[10],不會被誤刪、誤改和病毒感染,不僅安全性和可靠性高,而且性能比FTP 方式好。
(2)自我修復、更新功能。如發現客戶端自動更新系統部分或全部文件丟失、被非法修改或有更新版本,將首先實現客戶端自動更新系統自我修復和自動更新,然后再更新目標應用程序。
(3)限制安裝功能。目標應用系統可設定為“限制安裝”,目標應用系統在終端初次安裝時,客戶端必須正確輸入用戶名和密碼后完成登錄,選擇目標應用系統,并選擇申請科室、輸入電腦位置和聯系電話,完成安裝申請,經管理員審批通過后,才能進行目標應用系統自動安裝。
(4)應用程序文件監測功能。實現對目標應用程序文件內容實時監測,一旦發現文件丟失或被非法修改,系統將立即啟動自動更新進程。
(5)應用程序版本監測功能。實現對目標應用程序版本實時監測,一旦發現應用程序有更新版本,系統將立即啟動自動更新進程。
(6)支持同時存在測試版和正式版兩個版本。管理員可授權少數用戶為目標應用系統測試用戶,將待更新的目標應用系統先上傳測試版,只有目標應用系統的少數測試用戶可自動下載該應用測試版。試用后如果發現異常,影響范圍小。試用后如果沒有異常,管理員再將測試版本改為正式版本,提高系統可用性、安全性和可靠性。
(7)支持強制更新。當應用程序自動更新系統發現目標應用服務器端有更新版本時,將自動啟動更新進程,此時管理員就可以對目標應用程序版本設定為強制更新或非強制更新,如設定為強制更新,則強制正在使用目標應用程序的用戶立即更新目標應用系統,如設定為非強制更新,則允許正在使用目標應用程序的用戶延后更新目標應用系統。
C/S 架構醫院信息系統自動更新系統彌補了C/S架構需要手動更新應用程序的不足,確保客戶端應用程序文件始終與服務器端保持同步,防止應用程序文件被非法修改。該系統投入使用后不僅很大程度上減少醫院信息中心技術人員的工作量,而且目標應用程序使用申請和審批功能,規范目標應用程序的安裝和使用。此外,系統提供的測試版應用程序功能,使新版目標應用程序先在小范圍內試用,無誤后再擴大應用范圍,提高了應用系統的可靠性和可用性。