徐州醫科大學醫學信息與工程學院 左海維 彭天淳 王 淋 馬金鳳
中國礦業大學物聯網(感知礦山)研究中心 俞 嘯
隨著互聯網及大數據時代的到來,醫院每天面臨著海量的數據管理工作,而僅依靠人工對醫院住院檔案進行管理效率低下且不能充分挖掘檔案價值。針對該問題,本文設計并實現了一個基于WEB的遠程住院檔案信息查詢系統。系統整合了SSM框架(Spring+SpringMVC+MyBatis),前端開發框架采用AdminLTE,安全框架采用Spring Security,數據庫采用MySQL,WEB容器采用Tomcat。同時,在項目開發中應用Maven進行項目管理。采用B/S(Browser/Service,瀏覽器/服務器)架構開發系統,使得用戶只需用電腦端瀏覽器便可訪問系統,易于部署,便于后期維護。
醫療檔案管理是醫院的主要日常工作之一。在醫院的日常運作中,為了保證患者醫療檔案能夠安全有序的存儲,以備需要時查閱,每天都有大量的整理與查找工作,其中包括門(急)診病歷的保存與查找、入院記錄的保存與查找等。通過信息化存儲與查詢系統提供的存儲與查詢功能,能夠為醫院內部的醫療檔案提供第二種存儲解決方案,提供高效的檢索體驗,從而提升醫院整體服務水平。
檔案存儲與查詢信息化與醫療檔案本身的優化改進緊密結合,可以促進醫院的醫療檔案存儲與查詢規范化,把醫院的醫療檔案管理人員尤其是負責查找患者醫療檔案的人員從繁雜的、低價值重復的勞動中解放出來,使他們有更多的時間和精力投入更有價值的地方上去。
本文實現的基于WEB的遠程住院檔案信息查詢系統是基于B/S架構的,采用數據庫與WEB服務器相分離的做法,用戶通過常見電腦端的瀏覽器進行訪問與操作;系統的開發整體使用三層(WEB表現層、SERVICE業務層、DAO持久層)架構,其中WEB表現層使用MVC(Model模型-View視圖-Controller控制器)模型;在開發過程中充分考慮了分布、開放、平臺無關的特點,系統健壯、安全、組件化方面也做了精心設計,對今后準備開發此類系統的開發人員有一定的理論參考價值和實際幫助。
基于WEB的遠程住院檔案信息查詢系統需要實現醫院日常工作中的門(急)診病歷記錄與查詢、入院記錄的記錄與查詢、住院流量的記錄與圖表分析、醫院床位狀況的實時記錄與實時概覽功能,為醫院各類工作人員提供信息化的便利,使日常工作更加簡單、高效,在提升工作效率與效果的同時減輕醫院有關工作人員勞動強度,有效提升醫院整體服務水平。醫療檔案記錄與查詢信息化與醫療檔案本身的改進,進一步促進醫院檔案管理規范化,提升醫院整體運作效率與競爭力,使醫院決策人員更加了解醫院運作情況從而做出更佳決策。
Spring是以IoC(Inverse of Control,控制反轉)和AOP(Aspect Oriented Programming,面向切面編程)為內核的輕量級開源框架。提供用戶可選擇使用的WEB表現層框架技術SpringMVC和DAO持久層框架技術SpringJDBC,提供SERVICE業務層事務管理等許多企業級應用技術。該框架擁有整合世界上眾多著名三方開源框架和類庫的能力,所以Spring目前越來越被Java系統開發人士所認可與接受。
Spring能夠簡化我們的軟件開發工作,將很多相對固定,不會變動,又非常消耗時間的底層操作進行了封裝,使我們只需用簡單的聲明和配置就能實現相應功能。比如聲明式事務管理,如前文所述,我們只需在SERVICE實現類上加“@Transactional”標記就可以實現,非常的簡單和方便,這樣,我們可以更加專注于系統業務邏輯的實現而不必在系統底層細節浪費過多的時間與精力。
Spring提供新興的面向切面編程技術,該技術引入“切面”的概念。如沿系統的Controller面橫向切開,寫入系統日志記錄的程序代碼,因為任何訪問系統的用戶在我們使用MVC模型編寫的系統中一定是訪問了Controller的,那么我們對所有Controller進行攔截與記錄日志,一定可以捕獲所有來訪系統用戶的訪問蹤跡。當然,也可以沿SERVICE層進行“切面”等。顯然,隨著系統的功能增長,Controller類一定是越來越多,而只要指定了是Controller的切面,就無需擔心Controller的數量,大幅降低編程實現難度與工作量,用更少的時間就能實現更好的系統。
如前所說,Spring可以成熟地集成世界上其他優秀開源框架,比如MyBatis、Struts、Hibernate等,這些框架可以是WEB表現層框架或DAO持久層框架,例如本篇畢設所集成的DAO持久層框架就是MyBatis,WEB表現層框架使用的是Spring提供的基于Spring框架的Spring-MVC框架,總體即構成所謂的SSM(Spring+SpringMVC+MyBatis)框架,該框架目前使用的相當普遍。
“控制反轉”是Spring技術的核心之一。我們知道系統代碼設計時需要“高內聚、低耦合”,盡量減少不同對象之間的耦合關聯。但系統中不同對象間一定需要有信息流通,有一些耦合是必要的耦合,也是不可能消除的耦合,否則系統不可能正確運行。那么這些必須耦合的代碼,存在于編寫的class文件中,使我們對代碼的維護額外增加了相當的成本。Spring提供的解決方案是,將這些必須耦合的部分交由Spring來實現,Spring提供了“IoC容器”,專門存儲和管理這些耦合內容。我們實際編程時只需寫一個聲明“@Autowired”,并寫上需要耦合進來的對象即可,大幅減少后期代碼維護難度。
整個系統設計共6大功能模塊:門(急)診病歷模塊、入院記錄模塊、醫院住院流量模塊、醫院床位狀況模塊、賬戶管理模塊以及系統日志模塊等,各功能模塊又包含其子功能模塊。系統功能模塊圖如圖1所示。

圖1 系統功能模塊圖
(1)門(急)診病歷模塊
包含門(急)診病歷查詢、錄入與管理等子功能模塊,主要支持查閱病歷本首頁、查閱病歷本內容頁、門(急)診病歷錄入修改追加刪除等功能。
(2)入院記錄模塊
包含入院記錄查詢子功能模塊與入院記錄錄入與管理子功能模塊,主要支持查閱入院記錄、查閱24h內入院死亡記錄、各種入院記錄錄入修改刪除等功能。
(3)醫院住院流量模塊
包含醫院住院流量查詢與繪圖分析子功能模塊與醫院住院流量錄入與管理子功能模塊,主要支持按“住院流量查詢與繪圖分析起止日期”篩選數據庫內已有住院流量數據并繪制相應統計圖、住院流量數據錄入修改刪除等功能。
(4)醫院床位狀況模塊
包含醫院床位狀況概覽子功能模塊與醫院床位狀況更新子功能模塊,主要支持展示全科室總計和各科室信息、醫院床位狀況更新、錄入表單數據前臺校驗等功能。
(5)賬戶管理模塊
包含密碼修改子功能模塊與賬戶管理子功能模塊,主要支持系統所有用戶賬戶角色自主修改自身密碼、對查詢到的用戶賬戶更改賬戶信息等功能。
(6)系統日志模塊
包含系統日志審計子功能模塊,主要支持條件聯合檢索對訪問系統的用戶操作記錄進行篩選、審計的信息項展示等功能。
本JavaWeb系統采用數據庫與WEB服務器相分離的開發模式,WEB服務器Tomcat內含JavaWeb系統的WEB表現層,WEB服務器與JavaWeb系統的SERVICE業務層對接,SERVICE業務層與DAO持久層對接,DAO持久層使用MyBatis框架與數據庫服務器MySQL對接,用戶通過PC端主流瀏覽器通過網絡訪問WEB服務器Tomcat。系統的結構如圖2所示。

圖2 系統結構示意圖
系統頂層數據流圖如圖3所示。圖中,系統角色分為“系統總管理員”、“門(急)診病歷錄入員”、“入院記錄錄入員”、“住院流量數據錄入員”、“床位狀況數據更新員”、“普通查詢用戶”六種。“系統總管理員”可向系統中輸入門(急)診病歷、入院記錄、醫院住院流量、醫院床位狀況、賬戶等數據,可從系統中得到賬戶、日志等數據;“門(急)診病歷錄入員”可向系統中輸入門(急)診病歷等數據;“入院記錄錄入員”可向系統中輸入入院記錄等數據;“住院流量數據錄入員”可向系統中輸入醫院住院流量等數據;“床位狀況數據更新員”可向系統中輸入醫院床位狀況等數據;所有角色均可從系統中獲得門(急)診病歷、入院記錄、醫院住院流量、醫院床位狀況等數據,均可向系統輸入更改的新密碼數據。

圖3 系統頂層數據流圖
數據庫使用MySQL Server 5.6,JSP容器使用Apache公司的Tomcat 7.0,系統運行環境為Windows 10家庭單語言版21H1 64位,開發工具使用IntelliJ IDEA 2018.3.5、Navicat for MySQL 11.1.13等,Maven項目管理工具使用IntelliJ IDEA 2018.3.5內置的Maven3.3.9。
本系統頁面設計基于AdminLTE前端頁面開發框架。AdminLTE基于bootstrap和jquery框架開發,其擁有多套常用頁面模板。使用AdminLTE不僅美觀、而且免去大量的CSS與JS代碼的工作量。
數據庫技術是檢索與管理大量信息的有力武器。對給定的系統應用環境,構造出合適的數據庫模式、建立數據庫表、實現有效的數據存儲、滿足用戶對系統的各種信息方面的需求以及數據庫結構的更優設計是我們設計數據庫時的基本任務。本系統涉及的具體模塊數據庫設計及相應功能較多,下面以門(急)診病歷查詢功能模塊為例,給出具體介紹。
由于現實中門(急)診病歷本擁有1頁首頁和多頁內容頁,是1對多的關系,所以將“門(急)診病歷首頁表”的表項homepageUuid作為“門(急)診病歷內容頁表”的外鍵,門(急)診病歷表的外鍵關系圖如圖4所示。

圖4 門(急)診病歷表外鍵關系圖
門(急)診病歷查詢頁面支持“患者名”、“性別”、“出生日期日期區間”、“民族”、“工作單位或住址”五項條件聯合檢索數據庫內已錄入的門(急)診病歷,可展示信息項有“患者姓名”、“性別”、“出生日期”、“民族”、“職業”、“婚姻狀況”、“工作單位或住址”、“藥物過敏史”等8項內容。門(急)診病歷查詢頁面如圖5所示。

圖5 門(急)診病歷查詢頁面
在系統認證與授權功能的設計方面,本系統設計賬戶認證過程時采用了Spring Security安全框架。由于本系統使用SSM框架開發,而Spring Security安全框架包含在Spring框架內,且Spring Security功能強大、安全性高,故本系統在安全框架的選用中選擇Spring Security。同為流行的安全框架還有Shiro。用戶在嘗試登錄時,Spring Security可以使用用戶鍵入的username來得到一個UserDetails對象。UserDetails對象包含該用戶名對應的密碼信息,接下來應當將用戶輸入的password與UserDetails對象中密碼信息進行比對,比對通過即完成了“認證”過程。系統登陸頁面的表單部分如圖6所示。

圖6 系統登陸頁面的表單部分
本文以提高醫院住院檔案管理效率為目標,設計了一個基于WEB的遠程住院檔案信息查詢系統。綜合運用Maven、SSM框架、Spring Security安全框架、AdminLTE前端開發框架等對系統進行了實現,能夠在有效提升系統開發質量的同時大幅減少編碼工作量。系統操作簡單,運行穩定,在住院檔案查詢管理工作中具有一定應用價值。