[]基于JAVA的醫(yī)院門診信息管理系統(tǒng)設(shè)計與實現(xiàn)_第1頁
[]基于JAVA的醫(yī)院門診信息管理系統(tǒng)設(shè)計與實現(xiàn)_第2頁
[]基于JAVA的醫(yī)院門診信息管理系統(tǒng)設(shè)計與實現(xiàn)_第3頁
[]基于JAVA的醫(yī)院門診信息管理系統(tǒng)設(shè)計與實現(xiàn)_第4頁
[]基于JAVA的醫(yī)院門診信息管理系統(tǒng)設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、基于JAVA的醫(yī)院門診信息管理系統(tǒng)設(shè)計與實現(xiàn)摘 要醫(yī)院門診信息管理系統(tǒng)是一個基于Internet的應(yīng)用系統(tǒng),它是一個面對當(dāng)前的醫(yī)院門診管理工作基本還處于手工和半信息自動化處理狀態(tài)而應(yīng)運而生的一個基于Internet的一個信息自動化的系統(tǒng),整個系統(tǒng)從符合操作簡便、界面友好、靈活、實用、安全的要求出發(fā),完成預(yù)約、診斷、開具處方、保存病歷管理的全過程。醫(yī)療事業(yè)單位只需具備訪問Internet的條件即可在系統(tǒng)發(fā)布的站點上進行醫(yī)療門診的管理。在圖型化的人機界面中完成日常的醫(yī)療門診管理工作.一方面擺脫了時間和空間的限制,另一方面有效的解決的數(shù)據(jù)共享的問題。經(jīng)過實際使用證明,本文所設(shè)計的醫(yī)院門診信息管理系統(tǒng)

2、可以滿足醫(yī)院在門診管理方面的需要。關(guān)鍵詞:JSP;醫(yī)院門診;信息管理系統(tǒng)JSP-BASED HOSPITAL OUTPATIENT INFORMATION MANAGEMENT SYSTEM ABSTRACTHospital outpatient information management system is an Internet-based application system. It is an Internet-based automated information system that solves the outpatient medical management of the

3、 basic work is still in the manual and semi-automated processing of information. The entire system is simple, friendly interface, flexible, practical and safe, and complete the entire process of booking, diagnosis, prescribing and medical records management preservation. Medical institutions only ne

4、ed visit the Internet can use the system for the release site medical clinic management. Using the pattern of the man-machine interface complete routine outpatient medical management. While out of time and space constraints, on the other hand, it is an effective solution to the data sharing problem.

5、 Through practical show that JSP-based hospital outpatient information management system to meet the hospital in-patient management needs. Key Words: JSP; Hospital Outpatient; Information Management System1 緒論醫(yī)院門診信息管理系統(tǒng)是信息管理系統(tǒng)在醫(yī)院門診部門中的應(yīng)用。隨著Internet技術(shù)的發(fā)展,其被廣泛應(yīng)用與各行各業(yè),醫(yī)院門診部門是其一個重要的應(yīng)用領(lǐng)域。伴隨著醫(yī)院的改革,醫(yī)院信息化進程

6、的加速,建立基于Web的醫(yī)院門診信息管理系統(tǒng)顯得尤為重要。1.1 課題研究現(xiàn)狀分析隨著醫(yī)療衛(wèi)生事業(yè)的發(fā)展,醫(yī)院改革的深入,信息的有效、高效利用,已受到人們的關(guān)注。充分利用現(xiàn)代科技手段,加強各種信息的利用開發(fā),是醫(yī)院信息管理的一個重要內(nèi)容,也是當(dāng)今醫(yī)院的需要。目前的醫(yī)院僅僅把醫(yī)院的信息管理系統(tǒng)作為微機工具系統(tǒng),而沒有發(fā)揮其管理的真正功能;系統(tǒng)分散設(shè)計,各部門獨立實施,沒有考慮信息的關(guān)聯(lián)和共享,存在信息孤島現(xiàn)象;醫(yī)院管理錯綜復(fù)雜,從而形成了醫(yī)院信息管理系統(tǒng)數(shù)據(jù)的多樣化,數(shù)據(jù)量大等特點1。通過本次醫(yī)院門診信息系統(tǒng)的設(shè)計,解決醫(yī)院系統(tǒng)中各種信息管理的集成問題,使醫(yī)院系統(tǒng)的各種信息管理一體化。同時,了解

7、醫(yī)院門診的流程,把握信息管理系統(tǒng)開發(fā)概念,掌握動態(tài)網(wǎng)站技術(shù),熟悉系統(tǒng)開發(fā)的進程,做到會用相關(guān)工具設(shè)計和開發(fā)相關(guān)系統(tǒng),并實現(xiàn)。1.2 技術(shù)發(fā)展趨勢隨著Internet技術(shù)的普及和發(fā)展基本上各種不同的操作系統(tǒng)平臺上都有相應(yīng)的Web瀏覽器程序,這就使得醫(yī)院門診信息管理系統(tǒng)具有非常廣泛的平臺兼容性??蛻舳藘H需一個Web瀏覽器程序,不再需要安裝其它軟件。客戶程序主要包括HTML頁面和一些特殊的數(shù)據(jù)庫訪問程序,它們都存放在Web服務(wù)器上,客戶應(yīng)用系統(tǒng)的設(shè)計、維護和更新工作只需在Web服務(wù)器上進行,這樣就大大降低了系統(tǒng)安裝、測試、維護的工作量2。通過基于Web的醫(yī)院門診信息管理系統(tǒng)的開發(fā),可以實現(xiàn)對醫(yī)院門診

8、相關(guān)信息的整合管理以及共享,并且通過組件技術(shù)的應(yīng)用,可以使得本醫(yī)院門診信息管理系統(tǒng)具有很大的可擴展性和可移植性3。2 醫(yī)院門診信息管理系統(tǒng)需求分析2.1 業(yè)務(wù)分析 業(yè)務(wù)角色(1) 患者角色l 可聯(lián)機注冊成為用戶,設(shè)定自己的登陸名及密碼;l 可按醫(yī)生姓名自定義查詢;l 可基于查詢結(jié)果進行預(yù)約,若指定醫(yī)生當(dāng)日預(yù)約量已滿,則預(yù)約失 敗。預(yù)約結(jié)果隨機返回給患者;l 可對已經(jīng)進行的預(yù)約情況查看或撤銷。圖 2.1 患者用例圖 (2) 醫(yī)生角色l 可查看預(yù)約患者的情況;l 可查詢患者病歷;l 可創(chuàng)建患者病歷;l 可對患者的病歷進行修改。圖 2.2 醫(yī)生用例圖(3) 管理員角色l 可添加或刪除醫(yī)生賬號。圖 2

9、.3 管理員用例圖 業(yè)務(wù)詞匯(1) 醫(yī)院門診:門診是醫(yī)院接診病人的場所。病人到醫(yī)院之后首先在門診由醫(yī)護人員進行接診,經(jīng)過一整套的診斷手段,給病人得出初步診斷,并且進行進一步治療的指導(dǎo)。(2) 預(yù)約:由于醫(yī)院某些專家的就診患者多,醫(yī)生為了確保有時間問診患者并且患者為了確定來醫(yī)院就診時可以準(zhǔn)時接收醫(yī)生的診斷而采用的一種手段。(3) 電子病歷:由于傳統(tǒng)的紙質(zhì)病歷不利于保存和查詢,而且浪費資源,所以采用將病歷信息電子化,便于整個醫(yī)院信息的共享和交流。(4) 醫(yī)生基本信息:記錄醫(yī)生編號、姓名、年齡、登錄時的密碼、職稱、所屬科室和專家門診科目等醫(yī)生相關(guān)信息。(5) 患者基本信息:記錄注冊患者的編號、姓名、

10、登錄時用戶名、登錄時密碼、年齡、性別、家庭住址和聯(lián)系電話等患者相關(guān)信息。(6) 病歷基本信息:記錄病歷記錄的編號、主治醫(yī)生編號、癥狀、診斷、患者編號、處方等病歷相關(guān)的信息。(7) 預(yù)約信息:記錄預(yù)約記錄的編號、主治醫(yī)生的編號、患者編號、預(yù)約時間、預(yù)約就診時間等預(yù)約相關(guān)信息。2.2 系統(tǒng)需求定義本系統(tǒng)是基于JSP的醫(yī)療門診信息管理系統(tǒng),要求實現(xiàn)對醫(yī)院里醫(yī)生信息、病人、病歷以及醫(yī)藥信息進行有效管理及其開發(fā),主要包括后臺數(shù)據(jù)庫的建立和維護以及前端應(yīng)用程序的開發(fā)兩個方面4,重點解決的問題包括:(1) 病歷基本信息管理:病歷信息包括病歷記錄的編號、主治醫(yī)生的編號、癥狀、診斷、患者編號、處方等內(nèi)容,醫(yī)生可

11、以創(chuàng)建病歷并且可以添加病歷信息和修改病歷信息,病人可以查詢自己的病歷信息。(2) 患者基本信息管理:患者基本信息包括患者編號、姓名、登錄系統(tǒng)的用戶名、登錄密碼、年齡、性別、家庭住址和聯(lián)系電話等?;颊咦詴r向患者表中插入一條記錄。(3) 醫(yī)生基本信息管理:醫(yī)生基本信息包括醫(yī)生的編號、姓名、年齡、性別、職稱、所屬科室、學(xué)歷等內(nèi)容,管理員通過登錄可以添加和刪除醫(yī)生信息。(4) 預(yù)約信息管理:預(yù)約信息包括記錄編號、主治醫(yī)生編號、患者編號、預(yù)約就診時間等內(nèi)容,病人可以預(yù)約醫(yī)生和取消預(yù)約,醫(yī)生登錄后可以查詢自己的預(yù)約信息。本課題的應(yīng)用難點有:(1) 病歷基本信息管理:傳統(tǒng)的紙質(zhì)病歷既不便于患者、醫(yī)生查詢信

12、息,也不便于保存,本系統(tǒng)才用電子病歷5。病歷基本信息管理系統(tǒng)選擇基于三層結(jié)構(gòu)的C/S、B/S混合模式,三層結(jié)構(gòu)中,底層是電子病歷數(shù)據(jù)庫服務(wù)器,用于存儲和管理病歷等數(shù)據(jù);中間層是應(yīng)用服務(wù)器和Web服務(wù)器,其中應(yīng)用服務(wù)器用于實現(xiàn)系統(tǒng)的業(yè)務(wù)邏輯,完成各種復(fù)雜的管理操作和數(shù)據(jù)存取,Web服務(wù)器用于提供系統(tǒng)的Web服務(wù),還可以通過網(wǎng)關(guān)與外部系統(tǒng)進行數(shù)據(jù)交換和信息傳遞;最上層是客戶端,位于門診大廳,Windows用戶通過專用程序完成相關(guān)操作,IE用戶通過瀏覽器使用。(2) 預(yù)約信息管理:患者登錄系統(tǒng)預(yù)約醫(yī)生,信息插入預(yù)約表,或者取消預(yù)約,即從預(yù)約表中刪除相關(guān)預(yù)約信息;醫(yī)生通過登錄可以創(chuàng)建病歷,通過給預(yù)約的

13、患者看病在病歷表中添加病歷信息。3 醫(yī)院門診信息管理系統(tǒng)技術(shù)解決方案比較3.1 Web應(yīng)用解決方案本系統(tǒng)采用動態(tài)網(wǎng)站技術(shù)。早期的動態(tài)網(wǎng)站開發(fā)技術(shù)使用的是CGI-BIN接口。這種開發(fā)技術(shù)存在著嚴重的擴展性問題:每一個新的CGI程序要求在服務(wù)器上新增一個進程。為克服這一弊端,微軟公司提出了Active Server Pages(ASP)技術(shù),該技術(shù)利用“插件”和API簡化了Web應(yīng)用程序的開發(fā)。Hypertext Preprocessor(超文本預(yù)處理器),即PHP動態(tài)網(wǎng)站開發(fā)技術(shù)與ASP相似,也是一種嵌入HTML文檔的服務(wù)器端腳本語言。還有一些技術(shù),如Java Servlets技術(shù),利用該技術(shù)可

14、以很容易地用Java語言編寫交互式的服務(wù)器端代碼。太陽微系統(tǒng)公司(Sun Microsystems Inc.)在Web服務(wù)器、應(yīng)用服務(wù)器、交易系統(tǒng)以及開發(fā)工具供應(yīng)商間廣泛支持與合作下,整合并平衡了已經(jīng)存在的對Java編程環(huán)境(例如Java Servlets和JavaBeans)進行支持的技術(shù)和工具后產(chǎn)生了一種新的、開發(fā)基于Web應(yīng)用程序的方法JavaServer Pages技術(shù)(JSP)。這種動態(tài)網(wǎng)站開發(fā)技術(shù)能夠在任何的Web或應(yīng)用服務(wù)器上運行,而且分離了應(yīng)用程序的邏輯和頁面顯示,能夠進行快速的開發(fā)和測試,并且簡化了開發(fā)基于Web的交互式應(yīng)用程序的過程?;诖耍覀冞x擇JSP+JavaBean

15、技術(shù)來實現(xiàn)相應(yīng)模塊的開發(fā)。3.2 基于JSP + JavaBean的解決方案 什么是JSPJSP(Java Server Pages)是由Sun Microsystems公司倡導(dǎo)、許多公司參與一起建立的一種動態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn)。 JSP技術(shù)是用JAVA語言作為腳本語言的,JSP網(wǎng)頁為整個服務(wù)器端的JAVA庫單元提供了一個接口來服務(wù)于HTTP的應(yīng)用程序6。在傳統(tǒng)的網(wǎng)頁HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP標(biāo)記(tag),就構(gòu)成了JSP網(wǎng)頁(*.jsp)。Web服務(wù)器在遇到訪問JSP網(wǎng)頁的請求時,首先執(zhí)行其中的程序片段,然后將執(zhí)行結(jié)果以HTML格式

16、返回給客戶。程序片段可以操作數(shù)據(jù)庫、重新定向網(wǎng)頁以及發(fā)送 email 等等,這就是建立動態(tài)網(wǎng)站所需要的功能。所有程序操作都在服務(wù)器端執(zhí)行,網(wǎng)絡(luò)上傳送給客戶端的僅是得到的結(jié)果,對客戶瀏覽器的要求最低,可以實現(xiàn)無Plugin,無ActiveX,無Java Applet,甚至無Frame。 使用JSP的好處JSP的設(shè)計目標(biāo)主要是提供一種更為簡便、有效的動態(tài)網(wǎng)頁編寫手段,并且增強網(wǎng)頁程序的獨立性、兼容性和可重用性。它是通過以下幾個方面加以實現(xiàn)的: (1) 簡便性和有效性 JSP動態(tài)網(wǎng)頁的編寫與一般的靜態(tài)HTML的網(wǎng)頁的編寫十分相似,只是在原來的HTML網(wǎng)頁中加入一些JSP專有的標(biāo)簽,或是一些腳本程序(

17、而且此項不是必需的)。這樣,一個熟悉HTML網(wǎng)頁編寫的設(shè)計人員可以很容易進行JSP網(wǎng)頁的開發(fā)。而且開發(fā)人員完全可以不自己編寫腳本程序,而只是通過JSP獨有的標(biāo)簽利用別人已寫好的部件來實現(xiàn)動態(tài)網(wǎng)頁的編寫。這樣,一個不熟悉腳本語言的網(wǎng)頁開發(fā)者,完全可以利用JSP做出漂亮的動態(tài)網(wǎng)頁,而這在其他的動態(tài)網(wǎng)頁開發(fā)中是不可思議的。 (2) 程序的獨立性 JSP是Java API家族的一部分,它擁有一般的Java程序的跨平臺的特性,換句話說,就是擁有程序的對平臺的獨立性。即:Write once, Run anywhere! (3) 程序的兼容性 因為 JSP中的動態(tài)內(nèi)容可以各種形式進行顯示,所以它可以為各種

18、客戶提供服務(wù):從使用HTML/DHTML的瀏覽器,到使用WML的各種手提無線設(shè)備(如,移動電話和個人數(shù)字設(shè)備PDA),再到使用XML的B2B應(yīng)用,都可以使用JSP的動態(tài)頁面。 什么是JavaBeanJavaBean是一種可重復(fù)用、跨平臺的軟件組件。JavaBean可以為兩種:一種是有用戶界面(UI,User Interface)的JavaBean;還有一種是沒有用戶界面,主要負責(zé)處理事務(wù)(如數(shù)據(jù)運算,操縱數(shù)據(jù)庫)的JavaBean。JSP通常訪問的是后一種JavaBean。 使用JavaBean的好處 JavaBean最大的優(yōu)點在于可以實現(xiàn)代碼的可重用性。同時,JavaBean又具有一下特性:

19、l JavaBean是一個公共的(public)類;l JavaBean有一個不帶數(shù)的構(gòu)造方法;l JavaBean通過get方法沒置屬性,通過set方法獲取屬性;l 易于維護、使用、編寫;l 可移植性強,但僅限于Java工作平臺;l 便于傳輸,不論是本地還是網(wǎng)絡(luò);l 可以以其它部件的模式進行工作。 使用JSP + JavaBean的好處JSP與JavaBean搭配使用,有3個好處:l 使得html與Java程序分離,這樣便于維護代碼。如果把所有的程序 代碼都寫到JSP網(wǎng)中,會使得代碼繁雜,難以維護。l 可以降低開發(fā)JSP網(wǎng)頁人員對java編程能力的要求。l JSP側(cè)重于生成動態(tài)網(wǎng)頁,事務(wù)處理

20、由JavaBean來完成,這樣可以充分利用JavaBean組件的可重用性特點,提高開發(fā)網(wǎng)站的效率。3.3 JSP及JavaBean工作原理介紹 JSP內(nèi)置對象jsp有九種內(nèi)置對象:request,reponse,out,session,application,config,pagecontext,page,exception7。(1) request對象:request對象代表請求對象,它被包裝在HttpServletRequest接口。通過getParameter方法可以得到request的參數(shù),通過GET、POST、HEAD等方法可以得到request的類型,通過Cookies、Refer

21、er等可以得到請求的HTTP頭。來自客戶端的請求經(jīng)Servlet容器處理后,有Request對象進行封裝。它作為jspService()方法的一個參數(shù)有容器傳遞給JSP頁面。Request對象主要方法:l getAttribute(String name) 返回name屬性值。l getAttributeNames() 返回request對象所有屬性名字。l getCookies() 返回客戶端的cookies對象。l getHeader(String name) 獲得HTTP協(xié)議定義的文件頭信息。l getHeaders(String name) 返回指定名字的request Header的

22、所有值。l getMethod() 獲得客戶端向服務(wù)器端傳送數(shù)據(jù)的方法。l getParameter(String name) 獲得客戶端傳送給服務(wù)器端的參數(shù)值。 l getParameterNames() 獲得客戶端傳送給服務(wù)器端的所有參數(shù)的名字。l getParameterValue(String name) 獲得指定參數(shù)的所有值。l getProtocol() 獲取客戶端向服務(wù)器端傳送數(shù)據(jù)所依據(jù)的協(xié)議名稱。l getQueryString() 獲得查詢字符串。l getRequestURI() 獲取發(fā)出請求字符串的客戶端地址。l getRemoteAddr() 獲取客戶端的IP地址。 l

23、 getRemoteHost() 獲取客戶端的名字。l getServerName() 獲取服務(wù)器的名字。l getServletPath() 獲取客戶端所請求的腳本文件的文件路徑。l getServerPort() 獲取服務(wù)器的端口號。l setAttribute(String name, java.lang.Object objt) 設(shè)置名字為name的request參數(shù)的值,該值是由類型的objt指定。(2) response對象:response被包裝成HttpServletResponse接口,它封裝了JSP產(chǎn)生響應(yīng),然后被發(fā)送到客戶端以響應(yīng)客戶的請求。和Request對象一樣,它由

24、容器生成,作為jspService()方法的參數(shù)被傳入JSP。因為輸出流是緩沖的,所以可以設(shè)置HTTP狀態(tài)碼和response頭。Response對象的主要方法有:l addCookie(Cookie cook) 添加一個cookie對象,用來保存客戶端的用戶信息。l addHeader(String name , String value) 添加HTTP文件頭信息。l containsHeader(String name) 判斷指定名字的HTTP文件頭是否已經(jīng)存在。l sendError(int) 向客戶端發(fā)送錯誤的信息。l setHeader(String name , String va

25、lue) 設(shè)置指定名字的HTTP文件頭的值。(3) pageContext對象:pageContext對象被封裝成javax.servlet.jsp.pageContext接口,它為JSP頁面包裝頁面的上下文,管理對屬于JSP中特殊可見部分中以命名對象的訪問。它的創(chuàng)建和初始化都是由容器完成的。pageContext對象中常用的方法有:l getAttribute scope() 檢索一個特定的已經(jīng)命名對象的范圍。l findAttribute() 用來按照頁面請求、會話以及應(yīng)用程序范圍的順序?qū)崿F(xiàn)對某個已經(jīng)命名屬性的搜索。l setAttribute() 用來設(shè)置默認頁面的范圍或特定范圍之中的已

26、命名對象。l removeAttribute() 用來刪除默認頁面范圍或特定范圍之中已命名的對象。(4) session對象:session對象用來保存每個用戶的信息,以便跟蹤每個用戶的操作狀態(tài)。其中,session信息保存在容器里,session的ID保存在客戶機的Cookie中。session對象的主要方法:l getAttribute(String name) 獲取與指定名字name相聯(lián)系的信息。l getAttributeNames() 返回session對象中存儲的每一個屬性對象。l getCreationTime() 返回session被創(chuàng)建的時間。l getId() 返回唯一的標(biāo)

27、識,為每一個session而產(chǎn)生。l getLastAccessedTime() 返回當(dāng)前session對象最后被客戶發(fā)送的時間。l getMaxInactiveInterval() 返回總時間(秒)。l removeAttribute(String name) 刪除與指定名字name的相聯(lián)系的信息。l setAttribute(String name , java.lang.object value) 設(shè)置指定名字name的屬性值value,并存儲在session對象中。(5) application對象:application對象為多個應(yīng)用程序保存信息。application對象的主要方法

28、:l getAttribute(String name) 返回由name指定的名字application對象的屬性的值。l getAttributeNames() 返回所有application對象的屬性的名字。l getInitParameter(String name) 返回由name指定的名字的application對象的某個屬性的初始值。l getServletInfo() 返回servlet編譯器當(dāng)前版本信息。l setAttribute(String name , Object object) 設(shè)置指定名字name的application對象的屬性值object.(6) out對象

29、:out對象被封裝成javax.servlet.jsp.JspWriter接口。他主要用來向客戶端輸出數(shù)據(jù),代表輸出流的對象。out對象的主要方法:l out.print/println (boolean | char | char | double | float | int | long | object | string |) 輸出各種類型的數(shù)據(jù)。l out.newLine() 輸出一個換行字符。l out.flush() 輸出緩沖區(qū)里的數(shù)據(jù)。l out.close() 關(guān)閉輸出流。l out.clearBuffer() 清除緩沖區(qū)里的是數(shù)據(jù),并把數(shù)據(jù)輸出到客戶端。l out.clear

30、() 清除緩沖區(qū)里的是數(shù)據(jù),但不會把數(shù)據(jù)輸出到客戶端。l out.getBufferSize() 獲得緩沖區(qū)的大小。l out.getRemaining() 獲取緩沖區(qū)中沒有被占用的空間的大小。l out.isAutoFlush() 返回布爾值。(7) config對象:config對象被封裝成javax.servlet.ServletConfig接口,它表示Servlet的配置。config對象的主要方法:getServletContext() 返回執(zhí)行者的Servlet上下文。getServletName() 返回Servlet的名字。getInitParameter(String nam

31、e) 返回名字為name的初始參數(shù)的值。getInitParameterNames() 返回這個JSP的所有的初始參數(shù)的名字。(8) page對象:page對象是類java.lang.Object類的一個實例,它是JSP本身,通過這個可以對它進行訪問。(9) exception對象:exception對象是java.lang.Throwable類的一個實例。它指的是運行時的異常,也就是被調(diào)用的錯誤頁面的結(jié)果,只在錯誤頁面(在頁面指令里有isErrorPage=true的頁面)中才可以使用。3.3.2 JSP + JavaBean運行環(huán)境本系統(tǒng)建立在Windows XP平臺上,用Apache+T

32、omcat作為JSP服務(wù)端引擎,采用Eclipse作為后臺設(shè)計開發(fā)環(huán)境。Apache是一個web服務(wù)器環(huán)境程序啟用他可以作為web服務(wù)器使用。不過 只支持靜態(tài)網(wǎng)頁,不支持動態(tài)網(wǎng)頁,如(.asp,.jsp)等。如果要在Apache環(huán)境下運行jsp網(wǎng)頁,就需要一個解釋器來執(zhí)行jsp網(wǎng)頁,而這個jsp解釋器就是Tomcat。Tomcat是一個免費且開源的Serlvet容器,它是Apache基金會的Jakarta項目中的一個核心項目,由Apache、Sun和其它一些公司及個人共同開發(fā)而成。由于有了Sun的參與和支持,最新的Servlet和jsp規(guī)范總能在Tomcat中得到體現(xiàn)。與傳統(tǒng)的桌面應(yīng)用程序不同

33、,Tomcat中的應(yīng)用程序是一個WAR(WebArchive)文件。在Tomcat中,應(yīng)用程序的部署很簡單,你只需將你的WAR放到Tomcat的webapp目錄下,Tomcat會自動檢測到這個文件,并將其解壓。Eclipse是替代IBM Visual Age for Java的下一代IDE開發(fā)環(huán)境。根據(jù)Eclipse的體系結(jié)構(gòu),通過開發(fā)插件,它能擴展到任何語言的開發(fā),甚至能成為圖片繪制的工具。Eclipse是開放源代碼的項目,其本身是用Java語言編寫,但下載的壓縮包中并不包含Java運行環(huán)境,需要用戶自己另行安裝JRE,并且要在操作系統(tǒng)的環(huán)境變量中指明JRE中bin的路徑。Eclipse提供

34、的核心框架和可擴展的插件機制給廣大的程序員提供了無限的想象和創(chuàng)造空間。4 醫(yī)院門診信息管理系統(tǒng)概要設(shè)計4.1 醫(yī)院門診信息管理系統(tǒng)文檔結(jié)構(gòu)定義本系統(tǒng)包括兩個邏輯層包hospital.db包和包以及一些.jsp文件。(1) hospital.db包封裝了整個網(wǎng)站用于完成基礎(chǔ)功能的類,具體包括:l hospital.db.Util:輔助類,用于完成一些JSP中常用的功能,比如字符集的轉(zhuǎn)換。l hospital.db.InitServlet:初始化整個Servlet環(huán)境。l hospital.db.DBConnection:與整個數(shù)據(jù)庫連接,返回Connection對象。l hospital.db.

35、Debug:記錄日志,將信息寫入指定的日志文件中。(2) hospital.db.operation包封裝了所有用戶角色有關(guān)的模型,具體如下:l hospital.db.dboperation.DBOperation:建立用戶的抽象模型,供子類繼承。l hospital.db.dboperation.Admin:繼承自DBOperation,定義管理員模型。l hospital.db.dboperation.Doctor:繼承自DBOperation,定義醫(yī)生模型。l hospital.db.dboperation.Patient:繼承自DBOperation,定義患者模型。l hospita

36、l.db.dboperation.InvalidUserException:繼承自Exception,用以封裝一個表示“非法用戶名”的異常。(3) .jsp文件:以適當(dāng)?shù)姆绞酵ㄟ^邏輯層與數(shù)據(jù)層交互及一些頁面代碼。4.2 數(shù)據(jù)組織與定義4.2.1 數(shù)據(jù)庫概念設(shè)計 醫(yī)院門診信息管理系統(tǒng)的數(shù)據(jù)庫功能主要體現(xiàn)在對各種信息的提供、保存、更新和查找操作上,主要包括患者信息、醫(yī)生信息、預(yù)約信息8。因此:l 患者和醫(yī)生有不同的權(quán)限因此身份不同。l 用戶信息記錄不同的用戶資料。l 預(yù)約信息有預(yù)約時間、預(yù)約用戶等。經(jīng)過上述功能分析和需求總結(jié),考慮到將來功能上的擴展,設(shè)計如下的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu):l 管理員信息:包括

37、數(shù)據(jù)項管理員名、密碼等。l 醫(yī)生信息:包括數(shù)據(jù)項醫(yī)生名、密碼等。l 患者信息:包括數(shù)據(jù)項用戶名、密碼等。l 預(yù)約信息:包括數(shù)據(jù)項醫(yī)生名、預(yù)約時間等。由上面的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu),以及系統(tǒng)的功能分析,得到系統(tǒng)數(shù)據(jù)庫的實體-聯(lián)系圖如圖患者病歷預(yù)約信息醫(yī)生管理員可預(yù)約數(shù)量管理治療有有有有管理1111111nnnnnnn4.3 系統(tǒng)數(shù)據(jù)庫E-R圖 數(shù)據(jù)庫邏輯設(shè)計根據(jù)以上分析知,系統(tǒng)需要的基本信息表有:管理員信息表、醫(yī)生信息表、患者信息表、病歷記錄表和預(yù)約記錄表。本系統(tǒng)是一個多用戶系統(tǒng),牽涉多個管理人員和多用戶,因此需要針對不同類別的用戶進行密碼認證和權(quán)限限制,防止出現(xiàn)越權(quán)現(xiàn)象。部分具體數(shù)據(jù)庫設(shè)計如下:(1

38、) 醫(yī)生表:用于存儲醫(yī)生的個人信息。表 4-1 醫(yī)生表的結(jié)構(gòu)字段名類型備注約束條默認值DIDvarcher(5)醫(yī)生編號主鍵Namevarchar(12)姓名索引Agetinyint(3) unsigned年齡0Passwordvarchar(20)密碼初始:=DIDSextinyint(3) unsigned性別1 - 男2 - 女1Levelvarchar(12)醫(yī)生職稱Sectionvarchar(12)所屬科室索引Specialismvarchar(20)專家門診科目Phonevarchar(15)聯(lián)系電話可為空(2) 患者表:用于存儲患者的個人信息。表 4-2 患者表的結(jié)構(gòu)字段名類型

39、備注約束條默認值PIDmediumint(8) unsignedauto_increment患者編號主鍵Namevarchar姓名UserNamevarchar登錄時用戶名唯一索引Passwordvarchar密碼Agetinyint(3) unsigned年齡0Sextinyint(1) unsigned性別1 男2 女1AddressTinyText家庭住址可為空Phonevarchar聯(lián)系電話可為空(3) 病歷記錄表:病歷記錄表記錄了患者的病歷信息。表 4-3 病歷記錄表的結(jié)構(gòu)字段名類型備注約束條默認值HIDint unsigned(10)auto_increment病歷記錄編號主鍵Do

40、ctorvarchar(5)主治醫(yī)生編號索引DescriptionTinyText癥狀DiagnoseTinyText診斷Patientmediumint(8) unsigned患者編號索引0RxTinyText處方SDateDatetime開始時間0000-00-00 00:00:00FDateDatetime結(jié)束時間可為空0000-00-00 00:00:00Finishedtinyint(1) unsigned就診過程是否結(jié)束1 是2 否0(4) 預(yù)約記錄表:預(yù)約記錄表記錄了已預(yù)約但尚未創(chuàng)建病歷的患者信息。表 4-4 預(yù)約記錄表的結(jié)構(gòu)字段名類型備注約束條默認值QIDint unsigne

41、d(10)auto_increment記錄編號主鍵Doctorvarchar(5)主治醫(yī)生編號索引Patientmediumint(8) unsigned患者編號索引0DateDatetime預(yù)約時間0000-00-00 00:00:00Daytinyint(1) unsigned預(yù)約就診時間0 - 周日1 周一2 周二3 周三4 周四5 周五6 周六0APtinyint(1) unsigned預(yù)約就診時間0 上午1 下午0(5) 管理員表:管理員表存儲了與管理員有關(guān)的信息。圖 4-5 管理員表結(jié)構(gòu)字段名類型備注約束條默認值A(chǔ)IDtinyint(2) unsignedauto_incremen

42、t管理員編號主鍵Usernamevarchar(20)登錄時的用戶名唯一索引PasswordVarchar(20)登錄時密碼EmailVarchar(20)電子郵件NameVarchar(12)姓名PhoneVarchar(15)聯(lián)系電話可為空5 基于JSP與JavaBean的醫(yī)院門診信息管理系統(tǒng)詳細設(shè)計5.1 系統(tǒng)功能模塊設(shè)計根據(jù)客戶要求,操作者的權(quán)限層次要有明確的分類,進入軟件時需要進行身份驗證;出于對患者個人隱私的負責(zé),患者的病歷記錄只能在患者就醫(yī)期間有主治醫(yī)生條約,其它任何人包括管理員無權(quán)查閱。整個系統(tǒng)需要實現(xiàn)以下功能,如圖所示:醫(yī)療門診信息管理系統(tǒng)病歷基本信息管理模塊醫(yī)生基本信息管理

43、模塊患者基本信息管理模塊預(yù)約信息管理模塊圖 5.7 系統(tǒng)功能模塊圖5.2 系統(tǒng)功能模塊實現(xiàn) hospital.db包中的類圖 4.1 hospital.db包的UML圖.1 與數(shù)據(jù)庫建立連接類DBConnection本類位于hospital.db包中,由于Connection是一個非常耗費資源的對象,因此在這里使用單例模式設(shè)計DBConnection類,保證了真?zhèn)€生命周期內(nèi)只存在一個Connection對象,該對象可以被其它類重復(fù)利用,這樣可以大大節(jié)省系統(tǒng)資源。DBConnection類核心代碼如下:public abstract class DBConnectionpublic static

44、 Connection getConnection()Connection conn=null;tryif(conn = null)Class.forName(org.gjt.mm.mysql.Driver); / conn=DriverManager.getConnection(jdbc:mysql:/localhost:3306/hospital,root,nemo);Debug.log(Connecion created.);elseStatement stmt=conn.createStatement();ResultSet rs=stmt.executeQuery(SELECT CO

45、UNT(*) FROM administrator);if(rs=null|!rs.next()Class.forName(com.mysql.jdbc.Driver); conn=DriverManager.getConnection(jdbc:mysql:/localhost:3306/hospital,root,nemo);Debug.log(Connecion re-created.);catch(Exception ex)Debug.log(Debug.getExceptionMsg(ex);return conn; 記錄日志的Debug類本類位于hospital.db

46、包中,本系統(tǒng)的一個亮點是日志記錄,這里也是用單例模式實現(xiàn)的。Debug類的核心代碼如下:public final class Debug private static Debug instance=null; private static SimpleDateFormat dateFormat=null; private static FileOutputStream fos=null; private Debug() static synchronized Debug init(String path)public static synchronized void log(String ms

47、g)private String writeFile(String msg)public static String getExceptionMsg(Exception e)StackTraceElement ste=e.getStackTrace()0;String msg=ste.getClassName() + . + ste.getMethodName() + () Ln + ste.getLineNumber() + : + e.getMessage();return msg; 下面對Debug類中一些關(guān)鍵原理和值得注意的地方加以說明。l 程序中將構(gòu)造器定義為私有也是為了防止以構(gòu)造器

48、的方式生成對象。大 多數(shù)情況下以這種方式實現(xiàn)單例模式。l 為了便于調(diào)試,在Debug類中定義了一個專門用來處理異常的方法getExceptionMsg(),在返回的字符串中包括了拋出異常的類名、方法名和所在行數(shù)。 初始化Servelet的InitServlet類本類位于hospital.db包中,繼承自javax.servlet.http.HttpServlet,配合Tomcat中的設(shè)置,使服務(wù)器啟動后首先按生成一個InitServlet的實例,然后調(diào)用其init()方法,對Servlet環(huán)境進行初始化。InitServlet的核心代碼如下:public class InitSe

49、rvlet extends HttpServlet public void init()throws ServletExceptionString logPath=getServletContext().getRealPath(/log/);Debug.init(logPath);Debug.log(Server started.); public void destroy()Debug.log(Server shutted down.); 輔助類Util本類位于hospital.db包中,本類只有三個方法,其中encode()和decode()方法負責(zé)對帶有中文字符的數(shù)據(jù)驚醒

50、轉(zhuǎn)碼工作,而parseSpDays()方法則是用來處理醫(yī)生的預(yù)約人數(shù)信息。Util的核心代碼如下:public abstract class Util public static String decode(String str)throws UnsupportedEncodingExceptionreturn new String(str.getBytes(iso-8859-1),gbk); public static String encode(String str)throws UnsupportedEncodingExceptionreturn new String(str.getBy

51、tes(gbk),iso-8859-1); public static int parseSpDays(String dayPattern) throws NumberFormatExceptionint spDays=new int14;StringTokenizer token=new StringTokenizer(dayPattern.trim(), );if(token.countTokens() != 14)throw new NumberFormatException();for(int i=0;i 14;i+)spDaysi=Integer.parseInt(token.nex

52、tToken();return spDays; hospital.db.operation包 醫(yī)生模型Doctor類本類位于hospital.db.dboperation包中,Doctor類封裝了醫(yī)生角色可執(zhí)行的所有操作,核心代碼如下:public class Doctorextends DBOperation public static final String NAME=Name; public static final String DATE=Date; public Doctor(String id)throws InvalidUserException super(id

53、);/* * 用戶登錄 * * 參數(shù): * password密碼 * * 返回值:操作結(jié)果 * 1登錄成功 * 0拋出一般異常 * -1拋出數(shù)據(jù)庫異常 * -2登錄失敗 */public int login(String password , String id)int res=0;conn=DBConnection.getConnection();trystrSQL=SELECT DID,Password FROM doctor WHERE DID=+this.id + AND Password=+password;stmt=conn.createStatement();rs=stmt.executeQuery(strSQL);if(!rs.next()throw new IllegalAccessException(Password invalid.);res=1;catch(SQLException sqle)Debug.log(Debug.getExceptionMsg(sqle);res= -1;catch(IllegalAccessException iae)Debug.log(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論