基于JSP的網(wǎng)上處方跟蹤系統(tǒng)_第1頁
基于JSP的網(wǎng)上處方跟蹤系統(tǒng)_第2頁
基于JSP的網(wǎng)上處方跟蹤系統(tǒng)_第3頁
基于JSP的網(wǎng)上處方跟蹤系統(tǒng)_第4頁
基于JSP的網(wǎng)上處方跟蹤系統(tǒng)_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、長沙理工大學(xué)軟件工程綜合課程設(shè)計報告基于JSP的網(wǎng)上處方跟蹤系統(tǒng)專業(yè):軟件工程班級:姓名:報告日期:2016年6月30日目錄1 背景與意義1。1 背景與現(xiàn)狀1。2 趨勢與前景1。3 工作基礎(chǔ)、條件與優(yōu)勢2 需求分析2。1 功能與性能需求2。2 其它需求3 內(nèi)容和目標(biāo)3.1 主要內(nèi)容3。2 預(yù)期目標(biāo)4 技術(shù)路線4.1 總體功能4.2 運(yùn)行平臺具4.2。1 網(wǎng)絡(luò)環(huán)境4.2。2 設(shè)備情況4。2.3 支撐軟件4。3 程序語言與開發(fā)工具4。4 關(guān)鍵技術(shù)5 進(jìn)度計劃6 條件、假定和限制7 系統(tǒng)設(shè)計與原型UI(或系統(tǒng)設(shè)計與實(shí)現(xiàn))7。1 數(shù)據(jù)庫表設(shè)計7。2 關(guān)鍵算法與實(shí)現(xiàn)技術(shù)7。3 主要原型UI(或主要功能實(shí)

2、現(xiàn))7。4 測試方案與測試用例7。5 安裝與運(yùn)行情況7.5。1 安裝與配置7.5。2 運(yùn)行情況圖8 總結(jié)參考文獻(xiàn)附件:主要功能的源代碼1 背景與意義1。1 背景與現(xiàn)狀隨著互聯(lián)網(wǎng)不斷的發(fā)展,計算機(jī)已經(jīng)深入到了各行各業(yè),計算機(jī)不再局限于對科學(xué)技術(shù)的研究,當(dāng)今時代,計算機(jī)可以決解大部分的具體問題,而且有利于人們的控制,這大大方便了人們的需求.當(dāng)今的中小型醫(yī)院中一般還沒有全面采用信息技術(shù)來進(jìn)行管理,所以建議一套計算機(jī)輔助經(jīng)營管理系統(tǒng)是必不可少的。本系統(tǒng)是專門為處方專門設(shè)計的,我們知道,傳統(tǒng)的記錄使用手工的方式來記錄數(shù)據(jù),但是如果用手工的方式記錄數(shù)據(jù),如果數(shù)據(jù)量很大,那么結(jié)果往往就很容易出錯;而且,隨著

3、時間的積累,數(shù)據(jù)變得越來越多,且容易丟失,傳統(tǒng)的手工管理極大的浪費(fèi)了人力和財力,不能滿足醫(yī)師和醫(yī)院之間的需求??偟膩碚f,使用一個高效率的系統(tǒng)來處理這些繁雜的流程是必須的,所以我們有必要建立一個處方跟蹤系統(tǒng)來處理這一系列的問題,讓醫(yī)師可以通過系統(tǒng)方便的記錄病史癥狀,開處方,查閱歷史處方,保存。通過這樣,這些數(shù)據(jù)能被即使、準(zhǔn)確、有效的處理。這不僅可以提高工作效率還可以確保信息的安全和準(zhǔn)確.1.2 趨勢與前景目前,國內(nèi)的大多數(shù)醫(yī)院均不同程度的將計算機(jī)技術(shù)應(yīng)用于醫(yī)院管理.該系統(tǒng)對軟件沒有太高的要求,市場上已存在各式各樣的軟件足以滿足各方面的要求。但是不同軟件之間由于需求的不一致或者是根據(jù)不同的政策標(biāo)準(zhǔn)

4、難以實(shí)現(xiàn)軟件統(tǒng)一化,現(xiàn)在醫(yī)療行業(yè)飛速發(fā)展,國家政策不斷的推陳出新也使軟件的開發(fā)出現(xiàn)多樣化,模塊的多樣化造成了維護(hù)原有系統(tǒng)上的困難,傳統(tǒng)的軟件業(yè)務(wù)有的已經(jīng)也不符合當(dāng)今的要求,所以開發(fā)一款符合當(dāng)今社會需求的軟件是有必要的.1.3 工作基礎(chǔ)、條件和優(yōu)勢(1)技術(shù)可行性該系統(tǒng)對軟件沒有太高的要求,但是開發(fā)人員必須具有該軟件開發(fā)的專業(yè)知識,已經(jīng)開發(fā)過相關(guān)的醫(yī)學(xué)管理系統(tǒng),在熟悉業(yè)務(wù)的情況下進(jìn)行開發(fā),完善更多的功能業(yè)務(wù)。(2)經(jīng)濟(jì)可行性該軟件的開發(fā)成本較低,在有前人開發(fā)的經(jīng)驗中開發(fā)風(fēng)險小,系統(tǒng)投入運(yùn)行后會給醫(yī)院帶來可觀的經(jīng)濟(jì)效益:一方面提高了工作效率,增加了市場競爭力.另一方面,所需要的人員減少也提高了經(jīng)濟(jì)

5、效益。(3)人才設(shè)備可行性對于針對醫(yī)療行業(yè)軟件開發(fā)的人員是相當(dāng)多的,在設(shè)備方面同樣比較容易進(jìn)行,所以在人才設(shè)備上是可行的.2 需求分析2。1 功能和性能需求功能需求:處方管理系統(tǒng)的構(gòu)建是以醫(yī)師處方為中心,實(shí)時錄入病人信息,開處方,生成處方,進(jìn)行數(shù)據(jù)的統(tǒng)計,簡化了傳統(tǒng)處方信息處理的過程.本系統(tǒng)的重點(diǎn)是跟蹤處方的信息數(shù)據(jù)并處理數(shù)據(jù),處理數(shù)據(jù)時相關(guān)的數(shù)據(jù)對象有如下有以下:(1)系統(tǒng)跟蹤每位顧客的以下信息:顧客姓名、電話號碼、出生日期、承保公司、保險號、處方歷史記錄(2)每位顧客的服藥史將記錄下列每次處方信息:由藥房給出的唯一的處方ID 號、處方開出的藥物、開處方的醫(yī)生姓名和電話號碼、處方日期、處方終

6、止日期、有效購藥次數(shù)、配藥“單位”數(shù)量(此處的“單位”可能是片、匙和毫升等-見后面關(guān)于藥品的討論)、如果有其它替代品,是否可以向顧客提供替代品.(3)對于藥房存貨的每種藥品,系統(tǒng)應(yīng)跟蹤的如下:藥品名稱,藥品“單位”(片、匙和毫升等),哪些其它藥品可以作為另一種這種藥品的替代品,服用藥品可能引起的副作用。(4)系統(tǒng)所支持的查詢功能:服藥史,即給定顧客的所有處方歷史記錄-根據(jù)顧客的要求提供的報告,某種給定藥品的副作用報告,隨處方一起提供某種給定藥品的可替換藥品列表一份給定處方是否還有購藥許可:即,是否還可以憑處方購藥,以及處方是否已經(jīng)過期。性能需求:(1)時間特性要求服務(wù)器啟動時間不超過1分鐘;系

7、統(tǒng)響應(yīng)時間:用戶在使用軟件的過程中對各個功能模塊中的鼠標(biāo)點(diǎn)擊、鍵盤輸入等操作響應(yīng)的時間不操作1秒.(2)數(shù)據(jù)精度要按照嚴(yán)格的數(shù)據(jù)格式輸入,對符合數(shù)據(jù)格式要求的輸入進(jìn)行提示。(3)服務(wù)器并發(fā)和可伸縮性軟件應(yīng)采用界面層、應(yīng)用程、數(shù)據(jù)層三層架構(gòu),若以后用戶數(shù)量增多,只需要增加應(yīng)用層的服務(wù)器數(shù)量,實(shí)現(xiàn)可裁減、可擴(kuò)充和可移植等不同方面的要求。采用模塊化的應(yīng)用軟件結(jié)構(gòu),確保系統(tǒng)可以靈活的擴(kuò)充其業(yè)務(wù)功能,并可與其他業(yè)務(wù)系統(tǒng)進(jìn)行無縫連接。(4)系統(tǒng)安全性數(shù)據(jù)庫設(shè)計闡明使用何種方式保證系統(tǒng)的安全。2.2 其它需求可靠性和可用性需求:出錯處理需求:接口需求:Mysql、Soap、約束需求:暫無逆向需求:暫無將來可

8、能的需求:3 內(nèi)容和目標(biāo)3。1 主要內(nèi)容(1)用戶信息維護(hù),實(shí)現(xiàn)用戶信息的錄入、查詢、修改以及刪除等功能。(2)處方信息處理,針對不同的用戶記錄用戶的處方信息,其中處方信息中記錄處方開出的藥物、開處方的醫(yī)生姓名和電話號碼、處方日期、處方終止日期、有效購藥次數(shù)、配藥“單位”數(shù)量(此處的“單位"可能是片、匙和毫升等-見后面關(guān)于藥品的討論)、如果有其它替代品,是否可以向顧客提供替代品等信息,并可對該處方進(jìn)行修改以及刪除等操作。(3)處方歷史查詢,查詢所有的處方信息,或者根據(jù)用戶的信息模糊查詢到該用戶的處方信息.(4)處方藥物信息處理,藥方根據(jù)處方信息處理藥物并確認(rèn)處理。3。2 預(yù)期目標(biāo)系統(tǒng)

9、必須根據(jù)需求實(shí)現(xiàn)核心業(yè)務(wù)上的需求內(nèi)容,系統(tǒng)必須嚴(yán)格按照說明書上來開發(fā),最終的系統(tǒng)必須達(dá)到需求說明書上的要求,實(shí)現(xiàn)一個可靠的、易用的處方跟蹤系統(tǒng),該系統(tǒng)實(shí)現(xiàn)了對用戶信息、處方信息的一體化處理.4 技術(shù)路線4。1 總體功能圖4。11總體功能結(jié)構(gòu)圖圖4.13系統(tǒng)數(shù)據(jù)流圖4。2 運(yùn)行平臺4。2.1網(wǎng)絡(luò)環(huán)境局域網(wǎng)網(wǎng)絡(luò)環(huán)境以及私有的IP地址該局域網(wǎng)的網(wǎng)拓?fù)浣Y(jié)構(gòu)如圖4211所示:圖42-1-1網(wǎng)絡(luò)拓?fù)鋱D4.2。2 設(shè)備情況服務(wù)器端:處理器主頻1000MHz內(nèi)存容量64GB主機(jī)型號與數(shù)量PA8800 / 2外存容量16GB設(shè)備型號與數(shù)量惠普9000 rp7420 / 2輸入及輸出設(shè)備型號與數(shù)量L455有線多媒

10、體鍵盤/1、S22B360HW顯示器/1、N215鼠標(biāo)/1數(shù)據(jù)通信設(shè)備型號與數(shù)量交換機(jī)華為S1724G / 1其他專用硬件設(shè)備與數(shù)量無客戶端:處理器主頻不限定設(shè)備的型號與數(shù)量不限定主機(jī)型號與數(shù)量不限定外存容量不限定設(shè)備型號與數(shù)量無輸入及輸出設(shè)備型號與數(shù)量交換機(jī)華為S1724G / 1數(shù)據(jù)通信設(shè)備型號與數(shù)量無其他專用硬件設(shè)備與數(shù)量無4。2。3 支撐軟件支撐軟件軟件版本操作系統(tǒng)Linuxlinux red hat5。6以上,內(nèi)核版本kernel2。6.18238。el5數(shù)據(jù)庫管理系統(tǒng)Mysql5。1Web服務(wù)器Tomcat7。0瀏覽器Chrome46。0。2490。86其他軟件JVM1。74。3

11、程序語言與開發(fā)工具程序語言:HTML/CSS、JavaScript、Jquery、Java、Jsp、Jstl、Spring、Spring MVC、Hibernate、Spring Data Jpa、Mysql開發(fā)工具:Spring Tool Suit3。7、Maven3。3、Mysql5.1、Tomcat7。0、Java Runtime Enviroment1.7、Git項目管理工具4。4 關(guān)鍵技術(shù)(1)HTML5 WebSocket API客戶端與服務(wù)器端進(jìn)行全雙工通訊,WebSocket的出現(xiàn)是基于Web應(yīng)用的實(shí)時性需要而產(chǎn)生的,它允許客戶端和服務(wù)器在任意時刻互相推送消息.Web Sock

12、et是下一代客戶端-服務(wù)器異步通訊的方法,它本事上任然是一個基于TCP的協(xié)議,它使用ws或wss協(xié)議,可用于任意的客戶端和服務(wù)器.為了建立一個 WebSocket 連接,客戶端瀏覽器首先要向服務(wù)器發(fā)起一個 HTTP 請求,這個請求和通常的 HTTP 請求不同,包含了一些附加頭信息,其中附加頭信息”Upgrade: WebSocket"(”Upgrade:WebSocket"表示這是一個特殊的 HTTP 請求,請求的目的就是要將客戶端和服務(wù)器端的通訊協(xié)議從 HTTP 協(xié)議升級到 WebSocket 協(xié)議.)表明這是一個申請協(xié)議升級的 HTTP 請求,服務(wù)器端解析這些附加的頭信

13、息然后產(chǎn)生應(yīng)答信息返回給客戶端,客戶端和服務(wù)器端的 WebSocket 連接就建立起來了,雙方就可以通過這個連接通道自由的傳遞信息,并且這個連接會持續(xù)存在直到客戶端或者服務(wù)器端的某一方主動的關(guān)閉連接.它的通訊方式如下:圖44-1客戶端和服務(wù)器websocket通訊。圖44-1客戶端和服務(wù)器websocket通訊(2)HighChats一套由純Javascript寫的表現(xiàn)層框架,它提供曲線、面積、柱形圖、條形圖、餅圖、散點(diǎn)圖、區(qū)域范圍圖、氣泡、漏斗等等一系列的圖形表現(xiàn)形式.HighChars不需要像Flash和Java那樣需要插件才可以運(yùn)行,而且運(yùn)行速度快,它是輕量級的JavaScript腳本,

14、它使用的是json數(shù)據(jù)格式,數(shù)據(jù)傳輸更加方便,而且它的數(shù)據(jù)是在客戶端解析的,減輕了服務(wù)器的壓力,所以它比JFreeChart更方便(JFreeChart是JAVA平臺上的一個開放的圖表繪制類庫。它完全使用JAVA語言編寫在我看來JFreeChart有點(diǎn)笨重了,而且它生成的圖形也比HighChart少,并且好像是收費(fèi)的)。另外HighCharts還有很好的兼容性,能夠完美支持當(dāng)前大多數(shù)瀏覽器。(3)Spring Data JPA提供了一整套數(shù)據(jù)訪問層(DAO)的解決方案,致力于減少數(shù)據(jù)訪問層的開發(fā)量,并支持云服務(wù)的開源框架.Spring Data 作為SpringSource的其中一個父項目,

15、旨在統(tǒng)一和簡化對各類型持久化存儲, 而不拘泥于是關(guān)系型數(shù)據(jù)庫還是NoSQL 數(shù)據(jù)存儲。無論是哪種持久化存儲, 數(shù)據(jù)訪問對象(或稱作為DAO,即Data Access Objects)通常都會提供對單一域?qū)ο蟮腃RUD (創(chuàng)建、讀取、更新、刪除)操作、查詢方法、排序和分頁方法等。Spring Data則提供了基于這些層面的統(tǒng)一接口(Repository、CrudRepository、PagingAndSortingRepository、JpaRepository)以及對持久化存儲的實(shí)現(xiàn)。JPA(Java Persistence API,Java持久化API)是sun提出的一個對象持久化規(guī)范,各J

16、avaEE應(yīng)用服務(wù)器自主選擇實(shí)現(xiàn),JPA的底層實(shí)現(xiàn)是一些流行的開源ORM(對象關(guān)系映射)框架(如Hibernate、OpenJPA、TopLink、Ibatis等等),因此JPA其實(shí)也就是java實(shí)體對象和關(guān)系型數(shù)據(jù)庫建立起映射關(guān)系,通過面向?qū)ο缶幊痰乃枷氩僮麝P(guān)系型數(shù)據(jù)庫的規(guī)范。JPA,定義了對象關(guān)系映射以及實(shí)體對象持久化的標(biāo)準(zhǔn)接口.如下圖:圖442JPA在 應(yīng)用程序中的位置:圖44-2JPA在 應(yīng)用程序中的位置Spring Data Jpa是Spring Data對JPA提供的一套解決方案。Spring Data Jpa實(shí)現(xiàn)了大部分的持久層的邏輯代碼,你需要做的只是聲明持久層的接口,其他的都

17、交給Spring Data Jpa完成。Spring Data Jpa中Repository是一個空接口,CrudRepository: 繼承Repository,實(shí)現(xiàn)了一組CRUD相關(guān)的方法 ,PagingAndSortingRepository: 繼承CrudRepository,實(shí)現(xiàn)了一組分頁排序相關(guān)的方法 ,JpaRepository:繼承PagingAndSortingRepository,實(shí)現(xiàn)一組JPA規(guī)范相關(guān)的方法.相關(guān)技術(shù)方案參考Spring Data實(shí)戰(zhàn)的書籍2.Spring Data Jpa提供的接口如下圖443Spring Data Jpa提供的接口圖:圖443Sprin

18、g Data Jpa提供的接口圖(4)Spring MVC,Spring Web MVC是一種基于Java的實(shí)現(xiàn)了Web MVC設(shè)計模式的請求驅(qū)動類型的輕量級Web框架,即使用了MVC架構(gòu)模式的思想,將web層進(jìn)行職責(zé)解耦,基于請求驅(qū)動指的就是使用請求-響應(yīng)模型,框架的目的就是幫助我們簡化開發(fā),Spring Web MVC也是要簡化我們?nèi)粘eb開發(fā)的。它的請求處理流程圖如下:圖442springMVC請求處理流程圖前端控制器首先接收到用戶的請求,前端控制器根據(jù)接收的請求信息把請求委托給頁面控制器來處理。處理器接收請求后調(diào)用相應(yīng)的業(yè)務(wù)對象處理請求,如果有數(shù)據(jù)庫操作會向數(shù)據(jù)庫請求數(shù)據(jù),并返回一個

19、模型視圖(一般是ModelAndView),返回的模型經(jīng)過視圖解析器把,模型數(shù)據(jù)解析到頁面中并返回給客戶端。Spring MVC充分對模型、視圖、控制器進(jìn)行充分的解耦,并利用Spring IOC的功能更加方便管理.相關(guān)技術(shù)方案參考Spring MVC 學(xué)習(xí)指南的書籍1。(5)REST風(fēng)格URL,REST架構(gòu)風(fēng)格是全新的針對Web應(yīng)用的開發(fā)風(fēng)格,是當(dāng)今世界最成功的互聯(lián)網(wǎng)超媒體分布式系統(tǒng)架構(gòu),它使得人們真正理解了Http協(xié)議本來面貌。隨著REST架構(gòu)成為主流技術(shù),一種全新的互聯(lián)網(wǎng)網(wǎng)絡(luò)應(yīng)用開發(fā)的思維方式開始流行。REST是基于Http協(xié)議的,任何對資源的操作行為都是通過Http協(xié)議來實(shí)現(xiàn).以往的We

20、b開發(fā)大多數(shù)用的都是Http協(xié)議中的GET和POST方法,對其他方法很少使用,這實(shí)際上是因為對Http協(xié)議認(rèn)識片面的理解造成的。Http不僅僅是一個簡單的運(yùn)載數(shù)據(jù)的協(xié)議,而是一個具有豐富內(nèi)涵的網(wǎng)絡(luò)軟件的協(xié)議.他不僅僅能對互聯(lián)網(wǎng)資源進(jìn)行唯一定位,而且還能告訴我們?nèi)绾螌υ撡Y源進(jìn)行操作。Http把對一個資源的操作限制在4個方法以內(nèi):GET,POST,PUT和DELETE,這正是對資源CRUD操作的實(shí)現(xiàn)。由于資源和URI是一一對應(yīng)的,執(zhí)行這些操作的時候URI是沒有變化的,這和以往的Web開發(fā)有很大的區(qū)別.正由于這一點(diǎn),極大的簡化了Web開發(fā),也使得URI可以被設(shè)計成更為直觀的反映資源的結(jié)構(gòu),這種URI

21、的設(shè)計被稱作RESTful的URI.基于REST URL風(fēng)格的請求方式如下:圖44-2基于REST URL風(fēng)格的請求5 進(jìn)度計劃說明本項目的進(jìn)度要求,參照軟件工程的三個時期中的八個階段時間安排問題定義3日可行性分析2日需求分析5日總體設(shè)計5日詳細(xì)設(shè)計10日編碼和單元測試15日綜合測試5日軟件維護(hù)5日操作培訓(xùn)3日驗收測試2日項目驗收2日總計為57天6 條件、假定和限制(1)建議開發(fā)軟件開發(fā)投入的時間:兩個月(2)經(jīng)費(fèi)來源及限制:由需求方提供(3)軟件的預(yù)期壽命:兩年(4)網(wǎng)絡(luò)環(huán)境:局域網(wǎng)(5)運(yùn)行環(huán)境:mysql5.1, Java Runtime Enviroment1。7及以上版本(6)客戶端

22、環(huán)境:Internet Explorer8。0及以上的版本(7)硬件設(shè)備:處理器Inter Pentinm3或者更高,內(nèi)存至少256M以上,硬盤至少2G(8)平臺:linux red hat5。6以上,內(nèi)核版本kernel2。6。18238.el5 (9)法律和政策:遵守相關(guān)的法律法規(guī),以保護(hù)用戶的隱私為前提開發(fā)軟件7 系統(tǒng)設(shè)計與原型UI(或系統(tǒng)設(shè)計與實(shí)現(xiàn))7。1 數(shù)據(jù)庫表設(shè)計1) 數(shù)據(jù)庫名:Prescription數(shù)據(jù)庫管理者賬號:root 密碼:root賬號操作權(quán)限:CREATE、DROP、DELETE、INSERT、UPDATE、SELECT、ALTER2) User表:記錄用戶的基本信

23、息.表User(用戶表)用于保存用戶的基本信息字段名數(shù)據(jù)類型長度主鍵描述IdInt11是用戶編號NameVarchar64否用戶姓名TelephoneVarchar20否電話號碼BirthdayData10否出生日期insurance_companyVarchar32否承保公司Policy_numberVarchar64否保單號表7-1-1 User表Department表:部門表,醫(yī)師所屬部門。表Department(部門表)用于保存醫(yī)師的部門字段名數(shù)據(jù)類型長度主鍵描述IdInt11是部門編號NameVarchar64否部門名稱表712 Department表Position表:醫(yī)師所屬職位

24、。表Position(職位表)用于保存醫(yī)師的職位信息字段名數(shù)據(jù)類型長度主鍵描述IdInt11是職位編號NameVarchar64否職位名稱表713 Department表 Doctor表:醫(yī)師基本信息,包括兩個外鍵,表示醫(yī)師所屬的部門和職位。表Doctor(醫(yī)師表)用于保存醫(yī)師的基本信息字段名數(shù)據(jù)類型長度主鍵描述IdInt11是醫(yī)師編號NameVarchar64否醫(yī)師姓名TelephoneVarchar20否電話號碼DidInt11否醫(yī)師所屬部門PidInt11 否醫(yī)師所屬職位表714 Doctor表 Prescription表:處方信息表,記錄處方基本信息以及兩個外鍵,一個是該處方所屬的用戶

25、,另一個是處方所屬醫(yī)師.表Prescription(處方信息表)用于保存處方的基本信息字段名數(shù)據(jù)類型長度主鍵描述IdInt11是處方編號UidInt11否該處方所屬用戶DidInt11否該處方所屬醫(yī)師BeginDateDate16否處方日期EndDateDate16 否處方終止日期CrawlAgainstInt4否再次抓藥的次數(shù)表7-15 Prescription表 PrescriptionDetail表:處方詳細(xì)信息表,記錄一個處方中多個處方詳細(xì)信息記錄,兩個外鍵,一個表示該處方詳細(xì)所屬的處方,另一個表示該處方詳細(xì)中具體的藥物信息.表PrescriptionDetail(處方詳細(xì)信息表)用于

26、保存處方的具體的信息字段名數(shù)據(jù)類型長度主鍵描述IdInt11是處方詳細(xì)編號CountInt4否數(shù)量CanuseString16否是否可用替代藥品Take_methodString255否服用的方式UnitString16否單位MidInt11否藥物的編號PidInt11否處方的編號表7-1-6 PrescriptionDetail表Medicine表:記錄藥物的基本信息。表Medicine(藥物信息表)用于保存藥物的信息字段名數(shù)據(jù)類型長度主鍵描述IdInt11是藥物的編號NameString64否藥物的名稱SideeffectString255否副作用表71-7 Medicine表Subtit

27、ute表:藥物可替代的藥品表,每個藥物如果有可替代的藥物,那么該藥物將會維持一份藥物替代表,其中兩個字段都是外間,一個是指向具體的某個藥物,另外一個是指向可替代藥物的id編號。表Subtitute(藥物替代表)用于保存藥物的可替代藥物的信息字段名數(shù)據(jù)類型長度主鍵描述M_idInt11是藥物的編號S_idInt 11是藥物的標(biāo)號表71-8 Subtitute表數(shù)據(jù)庫總體UML如下圖71-9 數(shù)據(jù)庫UML圖7-19 數(shù)據(jù)庫UML數(shù)據(jù)庫設(shè)計相關(guān)技術(shù)方案參考據(jù)庫設(shè)計與關(guān)系理論4與數(shù)據(jù)庫設(shè)計與應(yīng)用開發(fā)實(shí)踐5。3) 無,由于使用了spring data jpa操作數(shù)據(jù)庫,spring data jpa簡化

28、了數(shù)據(jù)庫訪問的操作。7。2 關(guān)鍵算法與實(shí)現(xiàn)技術(shù)1.系統(tǒng)難點(diǎn):添加一個處方信息可一次性提交多個處方詳細(xì)信息(相當(dāng)于每次開藥方包含多種藥物,每種藥物的數(shù)量也不一致),每個處方詳細(xì)信息中又包含了基本信息以及藥品對象.為了解決該問題,每次選擇和填好一種藥物后都實(shí)用ajax保存到服務(wù)器上的session中,當(dāng)然,在服務(wù)器上建立了兩個類來暫時存放這些數(shù)據(jù),分別是PrescriptionDetailOperator和PrescriptionOperator兩個類。class PrescriptionDetailOperator private int count;/每個藥品的數(shù)量private String

29、 unit;/每個藥品的單位private Medicine medicine;/該藥品的對象private String takeMethod;/服用方法private String canuse;/是否可以實(shí)用替代藥品/省略getter和setter方法class PrescriptionOperator/聲明一個map來保存多個PrescriptionDetailOperator對象,實(shí)用藥品的id作為主鍵private MapInteger, PrescriptionDetailOperator map = new LinkedHashMapInteger, PrescriptionD

30、etailOperator();public Collection<PrescriptionDetailOperator getPreDetail()return map.values();/每次添加的時候都檢查是否存在藥物,存在則在原來的數(shù)量上增加public void addPrescriptionDetail(PrescriptionDetailOperator preDetail) Integer id = preDetail。getMedicine()。getId();if(map。containsKey(id)PrescriptionDetailOperator _preDe

31、tail = map。get(id);_preDetail。setCount(_preDetail。getCount() + preDetail.getCount();elsemap.put(id, preDetail); /可以移除處方詳細(xì)信息 public void removePreDetail(Integer pid) if (map。containsKey(pid)map。remove(pid); 前臺使用ajax發(fā)送數(shù)據(jù)保存到服務(wù)器端:var pdid;/保存處方詳細(xì)的idvar $tmp;/用于保存當(dāng)前刪除的對象的引用/保存更新處方詳細(xì)信息function saveDetail(

32、item)var pdid = (item).attr(”lang”).trim();/處方詳細(xì)唯一編號var count;/數(shù)量var canuse;/是否可用替代藥品var unit;/實(shí)用藥品單位var take_method;/服用方法/遍歷找到一個處方詳細(xì)的信息(item)。parent()。parent()。find(”。modalbody”)。each(function(index)count = (this).find(”count");canuse = (this)。find("#canuse”)。find("option:selected”)。

33、val().trim();unit = (this)。find(”unit")。val()。trim();take_method = (this)。find("take_method”)。val()。trim(););if (!/+?1909/.test(count。val().trim()))。tooltip( 請輸入正確的數(shù)字,該數(shù)字不能小于1!', 2000, false);count.val(”1”)。focus();return;/發(fā)送ajax保存處方詳細(xì)信息。ajax(type:”POST”,data:”id”:pdid,”count”:count.va

34、l().trim(),”canuse":canuse,"unit”:unit,”takemethod”:take_method,url:window。location.pathname。substring(0,25)+”saveUpdateDetail",success:function(data) if (data) 。tooltip(保存成功成功!, 2000, true); else.tooltip(刪除失敗,請檢查服務(wù)器或網(wǎng)絡(luò)狀態(tài)!', 2000, false);,error:function()。tooltip('刪除失敗,請檢查服務(wù)器或

35、網(wǎng)絡(luò)狀態(tài)!', 2000, false););2。關(guān)鍵SQL:(1)查詢存在處方數(shù)據(jù)的用戶以及處方的數(shù)量:S,u。policy_number,u。telephone,u。insurance_company,u。uid,count() from prescription p inner join user u where u。id = p。uid group by p.uid;(2)。全表掃描user表查詢用戶對象from User u where concat(,u.birthday,u。telephone,u。insuranceCompany,u。p

36、olicyNumber) like CONCAT(,:search,);(HQL語法)(3)。根據(jù)不同的年齡段統(tǒng)計用戶的數(shù)量select count(),left(birthday,4) from user group by left(birthday,4);(4).查詢所有用戶的出生年份,月份,日期分布select left(birthday,4),substring(birthday,6,2),substring(birthday,9,2) from user;3.核心算法:(1)WebSocket存儲和分發(fā)消息代碼,基于WebSocket服務(wù)器與客戶端通訊的問題,醫(yī)師每添加一條處方記錄或

37、者對處方記錄執(zhí)行刪除修改等操作時會及時通知客戶端服務(wù)器數(shù)據(jù)狀態(tài)的改變并及時更新獲取最新的數(shù)據(jù)。針對以上的問題,我首先針對需要及時處理消息的頁面與服務(wù)器建立WebSocket連接,服務(wù)器端使用一個Map保存客戶端的連接,如下:private static MapString, Session sessions = new HashMapString, Session>();,每次請求時就根據(jù)session的id進(jìn)行存儲,對每個醫(yī)師處方信息操作的頁面每個在頁面初始化時都與服務(wù)器(與上面處理的請求是同一個)也建立一個WebScoket連接(多個WebSocket連接到同一個請求),醫(yī)師每次操作

38、成功時立即就發(fā)送WebScoket消息到服務(wù)器,服務(wù)器根據(jù)接受到的消息遍歷Map中客戶端中的多個連接循環(huán)發(fā)送消息到客戶端,客戶端根據(jù)接受到的消息以根據(jù)消息的內(nèi)容重新請求服務(wù)器上的數(shù)據(jù)。7.3 主要原型UI(或主要功能實(shí)現(xiàn))(1)系統(tǒng)登錄和主界面圖7-31系統(tǒng)登錄界面功能作用:實(shí)現(xiàn)醫(yī)師的登錄功能圖73-2系統(tǒng)主界面功能作用:介紹系統(tǒng)以及顯示不同年齡或者部門人數(shù)占有的比率(2)用戶信息管理圖7-3-3所有用戶的基本信息功能作用:實(shí)用highcharts像是所有的用戶信息,可進(jìn)行搜索圖73-4分頁顯示用戶信息以及操作功能作用:對用戶信息進(jìn)行分頁處理以及顯示操作圖735彈出層顯示可編輯的用戶修改(3)

39、處方信息管理功能作用:實(shí)現(xiàn)對用戶信息的修改圖736添加處方信息功能作用:實(shí)現(xiàn)添加處方信息圖737彈出層選擇藥品功能作用:實(shí)現(xiàn)添加處方信息中具體的一個藥品圖738可搜索藥品功能作用:實(shí)現(xiàn)藥品的搜索圖7-3-8添加多個藥品功能作用:實(shí)用ajax保存數(shù)據(jù),一次性可添加多個藥品的信息,即一個處方中可添加多個藥品信息,每個藥品信息中有不同的單位,數(shù)量,服用方式和是否可用替代的藥品。(3)處方記錄管理圖739處方歷史記錄的顯示功能作用:實(shí)用時間軸顯示每個用戶開過的處方記錄,該記錄上記錄正醫(yī)師的姓名和電話,以及每個處方中多個處方詳細(xì)信息,如果該藥品是可實(shí)用替代藥品,則列出可替代藥品的藥品名稱。圖739處方信

40、息的修改界面功能作用:每個處方信息中都有多個處方詳細(xì),即每個處方中有多個藥品信息,在該頁面中可對每個藥品進(jìn)行修改和刪除。圖7310彈出確認(rèn)刪除的模態(tài)框(4)用戶處方查詢圖7311查詢所有處方記錄圖7-312實(shí)用關(guān)鍵字姓名搜索圖7-3-13實(shí)用關(guān)鍵字出生年份搜索圖7314實(shí)用關(guān)鍵字電話號碼搜索(5)取藥信息查詢管理圖7315實(shí)用承保單號唯一搜索圖7-3-16 藥物管理主頁功能作用:使用WebSocket實(shí)時處理處方數(shù)據(jù),顯示登記的處方信息。圖7316 藥物處理(6)系統(tǒng)出錯管理圖73-16處理404錯誤頁面圖7317處理500錯誤頁面7。4 測試方案與測試用例制定測試計劃:(1)確定測試需求(2

41、)制定測試策略(3)建立測試通過準(zhǔn)則(4)確定資源和進(jìn)度(5)評審測試計劃(6)更新測試計劃設(shè)計測試:(1) 設(shè)計測試用例針對每一個測試需求,確定其需要的測試用例對每個測試用例,確定其輸入的預(yù)期結(jié)果確定測試用例文檔的測試環(huán)境配置對測試用例進(jìn)行評審(2) 開發(fā)測試過程根據(jù)界面原型為每一個測試用例定義詳細(xì)的測試步驟為每一個格式步驟定義詳細(xì)的測試結(jié)果驗證方法為測試用例準(zhǔn)備輸入數(shù)據(jù)在實(shí)施測試時對測試過程進(jìn)行更改1.單元測試首先在項目開發(fā)中使用單元測試,如:Junit、SpringJUnit4ClassRunner進(jìn)行單元測試,按照測試過程手工執(zhí)行單元測試或運(yùn)行測試腳本自動執(zhí)行單元測試,如下:RunWi

42、th(SpringJUnit4ClassRunner。class)ContextConfiguration(locations =”applicationContext.xml”)TransactionalTransactionConfiguration(transactionManager = ”transactionManager")public class TestModule Test public void test () 2。集成測試:使用回歸測試方法,對軟件的新版本測試時,驗證是否解決了軟件缺陷,而且保證以前所有運(yùn)行正常的功能依舊保持正常,而不會影響本次的修改。按照測試

43、過程手工執(zhí)行集成測試或運(yùn)行測試腳本自動執(zhí)行集成測試將集成測試結(jié)果作詳細(xì)記錄,并評審測試結(jié)果對修改后的工作版本執(zhí)行回歸測試,或者對增量集成后的版本執(zhí)行回歸測試2.驗收測試:以用戶為主,前提是已經(jīng)通過系統(tǒng)測試的軟件系統(tǒng),根據(jù)需求規(guī)格說明書或者概要設(shè)計文檔驗證需求的合理性和正確性,包括文檔資料是否完整、正確,人機(jī)界面和其他方面(如,可移植性、兼容性、錯誤回復(fù)能力和可維護(hù)性等)是否令用戶滿意.7。5 安裝與運(yùn)行情況(1)JDK1。7首先系統(tǒng)必須有JRE的支持,為了能夠完成在該環(huán)境下的編譯,最好能夠安裝下完整的JDK環(huán)境,JDK選用1。7或者更高的版本.(2)Maven3。3或更高的版本,本系統(tǒng)添加對M

44、aven的支持,方便在不同類型的機(jī)器上完成編譯工作.(3)MYSQL5。1或更高的版本,與系統(tǒng)集成.(4)WEB服務(wù)器,Tomcat17。0或更高的版本,為了支持WebSocket,Tomcat只有在7。0或者更高的版本中才添加了對WebScoket的支持.7。5。1 安裝與配置描述服務(wù)器端運(yùn)行環(huán)境的配置情況,包括:安裝與初始化數(shù)據(jù)庫、安裝與配置服務(wù)器安裝、安裝支撐軟件、配置系統(tǒng)運(yùn)行參數(shù),等等。1。JDK環(huán)境配置:(1)如果系統(tǒng)中存在JDK1。7或更高的版本則這一步可以省略,可以實(shí)用java version查看當(dāng)前系統(tǒng)JDK的版本,如下圖所示。首先到Oracle官網(wǎng)下載下載JDK,官網(wǎng)地址如下

45、:/technetwork/java/javase/downloads/javaarchivedownloads-javase7-521261。html,假設(shè)當(dāng)前的文件名稱為jdk7u67linux-x64。tar。gz,進(jìn)入到該文件的目錄下.(2)使用命令tar -zxvf jdk-7u67-linuxx64。tar.gz C path解壓到path路徑下,path為你想要放置JDK的本地位置,假設(shè)我放在/home/silence/software/jdk1.7.0_67就要執(zhí)行命令tar zxvf jdk7u67-linuxx64。tar.gz /home/si

46、lence/software/(3)配置環(huán)境變量,在/etc/profile,這個是系統(tǒng)核心文件,對所有的用戶都起作用,你需要以root用戶才能修改,實(shí)用命令sudo -i,提示輸入密碼,輸入密碼,當(dāng)前用戶變?yōu)閞oot用戶,實(shí)用命令gedit /etc/profile打開profile文件,在該文件的末尾寫入JAVA_HOME=/home/silence/software/jdk1.7.0_67export CLASSPATH=.:JAVA_HOME/lib:JRE_HOME/libexport JRE_HOME=$JAVA_HOME/jre export PATH=JAVA_HOME/bin

47、:PATH命令source /etc/profile使其立即生效,cat /etc/profile可以看到如下:(4) 運(yùn)行javac或者java命令可以看到即可2。Maven安裝(1)軟件下載,到apache官網(wǎng)地址/maven/maven-3/3.3。3/binaries/apachemaven-3。3。3-bintargz到本地目錄下.(2)軟件解壓,進(jìn)入到該文件的目錄,使用tar zxvf apachemaven-3.3。3bin。tar.gz C path解壓到path目錄下,假設(shè)我的地址為:/home/silence/software/m

48、aven3。3則使用tar -zxvf apache-maven-3。3.3bin。tar。gz -C home/silence/software/maven3.3(3)環(huán)境變量配置,到gedit /etc/profile打開全局配置文件,在上面的JDK后添加上export MAVEN_HOME=/home/silence/software/maven3.3,最后變?yōu)椋?)執(zhí)行命令mvn v可以看見maven版本和jre版本(4) 修改本地倉庫地址,進(jìn)入到maven目錄下的conf目錄,打開settings。xml,在settings xmlns="http:/maven.apach

49、/SETTINGS/1.0.0"xmlns:xsi="/2001/XMLSchemainstance”xsi:schemaLocation=”/SETTINGS/1。0。0 /xsd/settings-1。0。0。xsd"下添加localRepository/home/silence/data/repository/localRepository其中/home/silence/data/repository是本地文件夾路徑,用來存放第三

50、方j(luò)ar包.3。Mysql安裝(1)mysql可以在線安裝,mysql服務(wù)器的安裝aptget install mysqlserver,安裝過程提示輸入root密碼(2)mysql客戶端安裝aptget install mysql-client(3)apt-get install libmysqlclient-dev,實(shí)用mysql u root p,輸入密碼,如下4.Tomcat安裝(1)到apache官網(wǎng)地址下載Tomcat7,地址為:http://apache/tomcat/tomcat7/v7。0.70/bin/apachetomcat7。0。70dep

51、loye。tar。gz(2)實(shí)用命令tar zxvf apachetomcat7。0。70deploye.tar。gz C path,path同上(3)同樣的,你也可以把tomcat下的bin目錄添加到profile全局域中,進(jìn)入到bin目錄下執(zhí)行。/startup。sh并在瀏覽器中查看,如下:5。項目編譯與項目放置及服務(wù)器啟動(1)文件信息修改,數(shù)據(jù)庫ip,用戶名以及密碼的修改,項目文件接下的src/main/resources下,找到perties ,其中jdbc.user=root/用戶名jdbc.password=root/密碼jdbc。jdbcUrl=jdbc:mysql

52、:/url地址,修改為當(dāng)前服務(wù)器的ip地址進(jìn)入項目的主目錄,本系統(tǒng)的PrescriptionTrackSystem下,執(zhí)行mvn clean命令清除舊版本的編譯文件.(2)實(shí)用mvn complier進(jìn)行編譯下,如果你是首次進(jìn)行編譯,那么系統(tǒng)將會下載pom.xml中需要的jar文件進(jìn)行一起編譯,這將需要一定的時間。 編譯完成(3)運(yùn)行命令mvn package進(jìn)行項目的打包工作,打包過的項目可以直接移植到tomcat中直接運(yùn)行.(4)在當(dāng)前文件夾下的target文件夾下可以找到PrescriptionTrackSystem。war(5) 把上圖中的PrescriptionTrackSystem

53、。war放置在Tomcat目錄下的webapps目錄下,進(jìn)入Tomcat文件夾下的bin文件夾,執(zhí)行./startup。sh文件啟動服務(wù)器.(6)訪問ip+/PrescriptionTrackSystem/login。html可以訪問到如下內(nèi)容:7。5。2 運(yùn)行情況圖圖75-2-1所有用戶的基本信息功能作用:查詢在庫的所有用戶的信息記錄。圖7-522分頁顯示用戶信息以及操作功能作用:對用戶信息進(jìn)行分頁處理以及顯示操作,并可對用戶進(jìn)行一定的操作.圖7-5-2-3彈出層顯示可編輯的用戶修改功能作用:實(shí)現(xiàn)對用戶信息的修改。圖7524添加處方信息功能作用:實(shí)現(xiàn)添加處方信息。圖7525彈出層選擇藥品功能作用:實(shí)現(xiàn)添加處方信息中具體的一個藥品及一些額外信息.圖7526可搜索藥品功能作用:實(shí)現(xiàn)藥品的搜索。圖752-7添加多個藥品功能作用:實(shí)用ajax保存數(shù)據(jù),一次性可添加多個藥品的信息,即一個處方中可添加多個藥品信息,每個藥品信息中有不同的單位,數(shù)量,服用方式和是否

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論