劉麗華,石彥芳
(河北軟件職業(yè)技術(shù)學(xué)院,河北 保定 071000)
隨著計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)的快速發(fā)展,醫(yī)院實(shí)施管理信息系統(tǒng)已成為必然。傳統(tǒng)的醫(yī)院管理都是依靠手工操作,耗費(fèi)大量的人力資源來記錄和查詢信息,而且大量紙質(zhì)資料需要大型資料庫來保存,信息的查詢耗時又耗力,很不方便。醫(yī)院管理信息系統(tǒng)的建立是醫(yī)療現(xiàn)代化的重要標(biāo)志,現(xiàn)代化的醫(yī)院管理系統(tǒng)采用高效的信息技術(shù)和管理理念,把人員從繁重瑣事中解脫出來,把醫(yī)院的各種資料分門別類的存儲起來,以便在需要的時候能夠及時有效地查詢所需信息,讓病人得到及時的治療,也促進(jìn)了信息共享和管理水平的提高。
J2EE(Java 2 platform enterprise edition)是由Sun公司提出的多層、分布式、基于組件的企業(yè)級應(yīng)用模型標(biāo)準(zhǔn)。J2EE是為支持Java語言服務(wù)器端部署而提供的一種與平臺無關(guān)的、可移植的、多用戶的、安全和標(biāo)準(zhǔn)的企業(yè)級平臺。隨著技術(shù)的不斷成熟,現(xiàn)己逐漸成為企業(yè)應(yīng)用開發(fā)的主流設(shè)計(jì)之一。
(1)Servlet
Servlet是可部署在Web服務(wù)器上的Java程序,它提供了用來擴(kuò)展和增強(qiáng)Web服務(wù)器功能的技術(shù),以及一種與協(xié)議和平臺無關(guān)的、可移植的并為Web客戶端和服務(wù)器傳遞動態(tài)內(nèi)容的方法。它從客戶端瀏覽器接收請求,動態(tài)產(chǎn)生應(yīng)答,然后發(fā)送到客戶端瀏覽器。
(2)JSP
Servlet通常嵌入表現(xiàn)為HTML頁面的表示邏輯和為完成某項(xiàng)任務(wù)而操作數(shù)據(jù)的業(yè)務(wù)邏輯中,任何部分代碼的變動將導(dǎo)致程序的重新部署。Java Server Page(JSP)和 Servlet功能非常相似,服務(wù)器端的JSP腳本第一次接收到客戶端的請求是先編譯形成一個相應(yīng)的Servlet類,然后加載到服務(wù)器,處理客戶端請求。兩者間最大的不同是,JSP不是純Java代碼,而是一種腳本語言,JSP更注重表示邏輯,JSP頁面可以包含HTML、Java代碼及JavaBean組件。JSP頁面可通過使用自定義標(biāo)簽、表達(dá)式語言、Struts標(biāo)簽及Tiles模板等來消除Java代碼,實(shí)現(xiàn)頁面布局管理,提高了頁面的可重用性、可擴(kuò)展性的可維護(hù)性。
MVC 是“Model-View-Controller”的縮寫,即模型-視圖-控制器。它的模式是Xerox PARC在20世紀(jì)80年代為編程語言Smalltalk—80設(shè)計(jì)的一種軟件設(shè)計(jì)模式。MVC把應(yīng)用程序分為3個部分:模型、視圖和控制器,它們分別擔(dān)負(fù)不同的任務(wù),圖1顯示了這幾個模塊各自的功能以及它們的相互關(guān)系。
圖1 MVC模型
如圖1所示,視圖是客戶與服務(wù)器端交互的界面。通過視圖可以向用戶顯示用戶所請求的數(shù)據(jù),并接受用戶的輸入,但是它并不進(jìn)行任何實(shí)際的業(yè)務(wù)處理。模型是應(yīng)用程序的主題,是用來處理客戶端請求數(shù)據(jù)的業(yè)務(wù)邏輯模塊,一個模型可以為多個視圖提供數(shù)據(jù),也可以被多個視圖重用??刂破鹘邮沼脩舻妮斎氩⒄{(diào)用相應(yīng)的模型和視圖去完成用戶的請求。當(dāng)用戶提交Web頁面發(fā)送HTML請求時,控制器接收用戶請求并決定調(diào)用哪個相應(yīng)的模型組件去處理用戶請求,根據(jù)處理結(jié)果調(diào)用相應(yīng)的視圖組件來顯示模型返回的數(shù)據(jù)。
Struts是目前JavaWeb開發(fā)中比較成熟的一種框架,它通過把 Servlet、JSP、JavaBean、自定義標(biāo)簽和信息資源整合到一個統(tǒng)一的框架中,為Web開發(fā)提供了具有高可配置性的MVC開發(fā)模式。本文在MVC模式的指導(dǎo)下設(shè)計(jì)并實(shí)現(xiàn)了一個基于Struts框架的醫(yī)院管理系統(tǒng)。實(shí)踐表明,采用這種方法開發(fā)應(yīng)用軟件能擴(kuò)大軟件代碼的復(fù)用率,提高軟件代碼的復(fù)用質(zhì)量和開發(fā)效率。
醫(yī)院管理信息系統(tǒng)的有效運(yùn)行,將提高醫(yī)院各項(xiàng)工作的效率和質(zhì)量,減少各類事務(wù)性工作,使他們騰出更多的精力和時間來服務(wù)于病人,改善經(jīng)營管理,保證病人和醫(yī)院的經(jīng)濟(jì)利益,并為醫(yī)院創(chuàng)造經(jīng)濟(jì)效益。
本系統(tǒng)采用當(dāng)前比較流行的基于J2EE的MVC設(shè)計(jì)模式,圖2給出了本系統(tǒng)采用的B/S三層架構(gòu)。
圖2 醫(yī)院管理信息系統(tǒng)三層架構(gòu)圖
從圖2中可看出,系統(tǒng)架構(gòu)以Web瀏覽器作為客戶端,由Web服務(wù)器容器的控制器Action-Servlet接收客戶端請求,根據(jù)請求調(diào)用相應(yīng)的模型類處理請求并選擇合適的Jsp視圖作出響應(yīng),數(shù)據(jù)庫則采用傳統(tǒng)的大型企業(yè)級數(shù)據(jù)庫Oracle作為數(shù)據(jù)庫服務(wù)器。處理過程如下:客戶端(即Web瀏覽器)向Web服務(wù)器提出服務(wù)請求,Web服務(wù)器接收到客戶請求后把客戶請求傳遞給Web容器中的核心控制器ActionServlet,ActionServelt查詢Struts配置文件,根據(jù)配置文件選擇適當(dāng)?shù)腁ction類處理客戶端請求,驗(yàn)證用戶提交信息,并選擇相應(yīng)的視圖文件向客戶做出應(yīng)答或選擇適當(dāng)?shù)哪P皖愄幚頂?shù)據(jù),根據(jù)模型類數(shù)據(jù)處理結(jié)果選擇所對應(yīng)的視圖文件顯示在客戶端。
通過系統(tǒng)分析,本系統(tǒng)的用戶有前臺操作人員、醫(yī)生、病人、管理員、高級管理人員等。我們將醫(yī)院管理信息系統(tǒng)分解成若干個子系統(tǒng),分別是住院管理、門診管理、藥品管理、主數(shù)據(jù)維護(hù)、高級管理人員查詢等子系統(tǒng),設(shè)計(jì)過程中充分考慮了醫(yī)院特殊的業(yè)務(wù)管理方式,如急診業(yè)務(wù)、醫(yī)保病人業(yè)務(wù)、內(nèi)部職工業(yè)務(wù)等。各模塊的功能具體如下:
(1)住院管理子系統(tǒng):實(shí)現(xiàn)病人的入院和出院管理、病人住院期間電子病案、醫(yī)生診療、病房和床位管理、查詢、報(bào)表等功能。
(2)門診管理子系統(tǒng):實(shí)現(xiàn)門診病人的掛號、醫(yī)生診療處方管理、生成賬單、退藥管理、查詢、報(bào)表等功能。
(3)藥品管理子系統(tǒng):實(shí)現(xiàn)藥品庫房管理、藥品維護(hù)、查詢、報(bào)表、銷量統(tǒng)計(jì)等。
(4)主數(shù)據(jù)維護(hù)子系統(tǒng)包括:提供醫(yī)務(wù)人員數(shù)據(jù)、病人列表、化驗(yàn)室服務(wù)列表、病房列表管理等功能。
(5)高級管理層查詢子系統(tǒng):給高級管理人員提供各部門信息報(bào)告。
數(shù)據(jù)庫在一個醫(yī)院管理系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)的好壞將直接對應(yīng)用系統(tǒng)的效率以及實(shí)現(xiàn)產(chǎn)生影響。合理的數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)可以提高數(shù)據(jù)存儲的效率,保證數(shù)據(jù)的完整和一致。醫(yī)院管理信息系統(tǒng)所需要收集的數(shù)據(jù)范圍廣、種類多、數(shù)量大,系統(tǒng)數(shù)據(jù)庫的海量存儲量和安全問題是極其重要的。因此,本系統(tǒng)采用Ora-cle數(shù)據(jù)庫系統(tǒng)解決方案實(shí)現(xiàn)面向主題的、集成的、穩(wěn)定的、隨時間變化的數(shù)據(jù)倉庫,使用數(shù)據(jù)挖掘技術(shù)支持決策分析,同時完善數(shù)據(jù)庫的雙機(jī)備份及恢復(fù)機(jī)制,全天候安全保障,運(yùn)行可靠[4]。
數(shù)據(jù)庫表設(shè)計(jì)遵循E-R圖和3NF(范式)要求,對數(shù)據(jù)庫中關(guān)鍵字以及數(shù)據(jù)表之間的關(guān)系仔細(xì)斟酌,保證數(shù)據(jù)庫結(jié)構(gòu)化、規(guī)范化和標(biāo)準(zhǔn)化,盡量實(shí)現(xiàn)數(shù)據(jù)的獨(dú)立性和可維護(hù)性,充分考慮共享數(shù)據(jù)資源的正確性和一致性,建立用戶權(quán)限設(shè)計(jì)和雙機(jī)熱備份機(jī)制以保證數(shù)據(jù)的安全性。
根據(jù)以上原則,本系統(tǒng)設(shè)計(jì)了系統(tǒng)用戶信息表、醫(yī)護(hù)人員信息表、病人信息表、病人結(jié)賬表、醫(yī)院檢驗(yàn)表、檢驗(yàn)結(jié)果表、門診病人拿藥信息表、藥品信息表、病床信息表、病房信息表等10個表用來存儲系統(tǒng)數(shù)據(jù)。
本系統(tǒng)視圖組件的實(shí)現(xiàn)采用JSP頁面。在JSP頁面里,可以加入JavaScript代碼用于頁面驗(yàn)證,從而節(jié)省服務(wù)器資源并提高響應(yīng)時間。另外,在JSP頁面里大量使用自定義標(biāo)記符、JSTL和表達(dá)式語言,盡量不使用腳本語言,簡化了JSP頁面,增加了頁面的可讀性。在控制器Action類處理用戶提交的request請求之前,使用ActionForm類進(jìn)行數(shù)據(jù)檢索、轉(zhuǎn)換及數(shù)據(jù)驗(yàn)證,增強(qiáng)了軟件的靈活性。例如住院管理的病人注冊管理頁面add_Patie nt.jsp,提交請求/admin/add_Patient.do,ActionServlet接受請求,首先將用戶提交的病人數(shù)據(jù)給AddPatientForm進(jìn)行驗(yàn)證,如果有錯,返回頁面,如果驗(yàn)證沒錯,提交給AddPatientAction處理數(shù)據(jù)。
模型組件是系統(tǒng)中最重要的一部分,它包含了業(yè)務(wù)實(shí)體和業(yè)務(wù)規(guī)則,負(fù)責(zé)訪問和更新持久化數(shù)據(jù),本系統(tǒng)的模型組件使用JavaBean類和服務(wù)組件實(shí)現(xiàn),實(shí)現(xiàn)了 User、MedicalStaff、Patient、Medicine、LabService、LabResult、Wards、Beds、Report、Bill等幾個JavaBean域?qū)ο箢惡拖鄳?yīng)的數(shù)據(jù)表相對應(yīng),還有各個Bean類相對應(yīng)的DAO類用來封裝JDBC API技術(shù)實(shí)現(xiàn)數(shù)據(jù)庫的訪問,使用XXXService組件類實(shí)現(xiàn)業(yè)務(wù)邏輯,使業(yè)務(wù)邏輯和數(shù)據(jù)訪問邏輯分離,有利于應(yīng)用程序的維護(hù)。
控制器由Struts框架的核心控制器Action-Servlet類和自定義的Action類實(shí)現(xiàn),ActionServlet接收所有的HTTP請求,根據(jù)配置文件struts-config.xml的配置信息,檢查是否有相關(guān)聯(lián)的表單,如果有,則在指定作用域內(nèi)創(chuàng)建或定位相應(yīng)的表單,使用請求參數(shù)的數(shù)據(jù)填充表單Bean,調(diào)用驗(yàn)證方法驗(yàn)證請求信息,驗(yàn)證沒有錯誤,把請求分發(fā)給相應(yīng)的Action,調(diào)用Action對象的execute方法處理用戶請求。
(1)RFID技術(shù)與醫(yī)院綜合管理系統(tǒng)的集成應(yīng)用。通過RFID技術(shù)可以進(jìn)行患者的身份識別、醫(yī)院工作人員的身份識別、藥品識別以及醫(yī)療設(shè)備識別等,系統(tǒng)應(yīng)用RFID技術(shù),能夠高效地進(jìn)行藥品、資產(chǎn)、患者和醫(yī)院工作人員的管理。
(2)觸摸屏查詢軟件的應(yīng)用。配置觸摸屏等信息查詢設(shè)備,讓客戶及時方便地了解醫(yī)院科室分布情況,普通病人和醫(yī)保病人等就診流程,專家介紹、專家就診時間,價格查詢,醫(yī)院相關(guān)規(guī)定等,提高了系統(tǒng)的查詢效率,有利于醫(yī)務(wù)公開。
(3)提供與銀行連接的財(cái)務(wù)收費(fèi)系統(tǒng)連接以支持病人的信用卡劃卡消費(fèi)。
系統(tǒng)采用基于J2EE平臺的MVC設(shè)計(jì)思想,按照現(xiàn)代醫(yī)院管理模式進(jìn)行設(shè)計(jì),覆蓋了醫(yī)院醫(yī)療診治各環(huán)節(jié)和醫(yī)院管理各主要方面,使系統(tǒng)具有很好的開放性和可擴(kuò)展性,能夠高效率地適應(yīng)各類醫(yī)院管理不斷變化的需求。醫(yī)院對醫(yī)療信息管理以病人為中心,實(shí)現(xiàn)了醫(yī)院管理的人性化、數(shù)字化、智能化、管理規(guī)范化的目標(biāo),醫(yī)保管理信息接口可以使醫(yī)保病人的費(fèi)用數(shù)據(jù)和診療信息直接傳遞到當(dāng)?shù)氐膭趧颖U喜块T。而且,基于Web界面的客戶端操作方便,查詢、統(tǒng)計(jì)信息快捷,極大地提高了工作效率。
[1]NIIT公司.使用Servlet和JSP技術(shù)開發(fā)Web組件(NIIT公司培訓(xùn)教材)[Z].上海:NIIT公司,2009.
[2]閆術(shù)卓,楊強(qiáng).struts 2技術(shù)詳解[M].北京:電子工業(yè)出版社,2008.
[3]何菊.基于UML的醫(yī)院信息系統(tǒng)建模[J].醫(yī)學(xué)信息,2005,18(9):1047-1049.
[4]蘇強(qiáng),姚曉耘,厲譞.醫(yī)院客戶關(guān)系管理模型及系統(tǒng)設(shè)計(jì)[J].上海交通大學(xué)學(xué)報(bào),2006,40(8):1422-1427.
[5]彭晏飛,楊德權(quán).基于MVC+Struts的H I S設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與現(xiàn)代化,2008(2):113-115.
[5]劉麗華,李丹.基于J2EE平臺的客戶關(guān)系管理系統(tǒng)設(shè)計(jì)[J].中國商貿(mào),2010(23).