javascript
Springboot电子病历管理APP毕业设计源码010350
摘?要
本文針對(duì)電子病歷管理等問(wèn)題,對(duì)其進(jìn)行研究分析,然后開(kāi)發(fā)設(shè)計(jì)出電子病歷管理APP以解決問(wèn)題。電子病歷管理APP主要功能模塊包括:病歷管理、在線(xiàn)醫(yī)生列表、病人掛號(hào)、醫(yī)藥處方費(fèi)管理等,采取本系統(tǒng)此次設(shè)計(jì)前端視圖界面選擇小程序開(kāi)發(fā)者工具來(lái)完成,系統(tǒng)功能設(shè)計(jì)采取MySQL作為后臺(tái)數(shù)據(jù)的主要存儲(chǔ)單元,采用Springboot框架進(jìn)行系統(tǒng)的開(kāi)發(fā),實(shí)現(xiàn)了本系統(tǒng)的全部功能。本次報(bào)告,首先分析了研究的背景、作用、意義,為研究工作的合理性打下了基礎(chǔ)。針對(duì)電子病歷管理APP的各項(xiàng)需求以及技術(shù)問(wèn)題進(jìn)行分析,證明了系統(tǒng)的必要性和技術(shù)可行性,然后對(duì)設(shè)計(jì)系統(tǒng)需要使用的技術(shù)軟件以及設(shè)計(jì)思想做了基本的介紹,最后來(lái)實(shí)現(xiàn)電子病歷管理APP和部署運(yùn)行使用它。
關(guān)鍵詞:病歷管理;Springboot;MySQL數(shù)據(jù)庫(kù)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Springboot electronic case management app
Abstract
This paper studies and analyzes the problems of electronic medical record management, and then develops and designs the electronic medical record management app to solve the problems. The main functional modules of the electronic medical record management app include: medical record management, online doctor list, patient registration, medical prescription fee management, etc. the front-end view interface of the system is completed by selecting the applet developer tool. The system function design adopts MySQL as the main storage unit of background data, and the springboot framework is used for system development to realize all the functions of the system. This report first analyzes the background, function and significance of the research, which lays a foundation for the rationality of the research work. This paper analyzes the various requirements and technical problems of the electronic medical record management app, proves the necessity and technical feasibility of the system, then makes a basic introduction to the technical software and design ideas needed to design the system, and finally realizes the operation and use of the electronic medical record management app and departments.
?Key words:Case management; Springboot; Mysql database
目 ?錄
第1章 緒論
1.1?研究背景與意義
1.2?研究現(xiàn)狀
第2章 相關(guān)技術(shù)介紹 6
2.1?J2EE技術(shù)
2.2 MVVM模式
2.3 B/S結(jié)構(gòu)
2.4 Springboot框架
2.5?Mysql數(shù)據(jù)庫(kù)
2.6小程序框架以及目錄結(jié)構(gòu)介紹
2.6 B/S體系工作原理
第3章 系統(tǒng)分析
3.1?可行性分析
3.2?功能需求分析
3.2.1?前臺(tái)用戶(hù)功能
3.2.2?后臺(tái)管理員功能
3.3?非功能需求分析
3.4?安全性需求分析
3.4.1?系統(tǒng)的安全性
3.4.2?數(shù)據(jù)的安全性
3.5?數(shù)據(jù)流程分析
第4章 系統(tǒng)設(shè)計(jì)
4.1?系統(tǒng)架構(gòu)設(shè)計(jì)
4.2?系統(tǒng)總體設(shè)計(jì)
4.3?系統(tǒng)功能設(shè)計(jì)
4.4?數(shù)據(jù)庫(kù)設(shè)計(jì)
4.4.1?數(shù)據(jù)需求分析
4.4.2?數(shù)據(jù)庫(kù)概念設(shè)計(jì)
4.4.3?數(shù)據(jù)庫(kù)表設(shè)計(jì)
第5章 系統(tǒng)實(shí)現(xiàn)
5.1?數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)層的實(shí)現(xiàn)
5.2?注冊(cè)模塊的實(shí)現(xiàn)
5.3?登錄模塊的實(shí)現(xiàn)
5.4?用戶(hù)資料修改模塊的實(shí)現(xiàn)
5.5藥品信息模塊的實(shí)現(xiàn)
5.6病人掛號(hào)模塊的實(shí)現(xiàn)
5.7?病歷管理模塊的實(shí)現(xiàn)
第6章 系統(tǒng)測(cè)試
6.1?測(cè)試目的
6.2?功能測(cè)試
6.3?性能測(cè)試
第7章 總結(jié)與展望
參考文獻(xiàn)
致謝
近幾年,隨著醫(yī)院的規(guī)模不斷擴(kuò)大,用原來(lái)的只靠人管理病歷的方法已不合時(shí)宜。目前我國(guó)醫(yī)院的信息處理基本上還停留在手工方式,勞動(dòng)強(qiáng)度大且工作效率低,醫(yī)務(wù)人員和管理人員的大量時(shí)間都消耗在事務(wù)性工作上,病案、臨床檢驗(yàn)、病理檢查等許多寶貴的數(shù)據(jù)資料的檢索十分費(fèi)事甚至難以實(shí)現(xiàn),對(duì)這些資料深入的統(tǒng)計(jì)分析手工方式無(wú)法進(jìn)行,不能充分為醫(yī)學(xué)科研利用。
隨著計(jì)算機(jī)應(yīng)用日益廣泛,各行各業(yè)對(duì)生產(chǎn)管理的自動(dòng)化、信息化、系統(tǒng)化的要求也不斷提高;因而,降低勞動(dòng)強(qiáng)度、提高勞動(dòng)效率也就必然促使了醫(yī)院中電子病歷管理APP的使用。
電子病歷管理APP將提高醫(yī)院各項(xiàng)工作的效率和質(zhì)量,減輕各類(lèi)事務(wù)性工作的勞動(dòng)強(qiáng)度,使他們騰出更多的精力和時(shí)間來(lái)服務(wù)于病人。APP最顯著的優(yōu)點(diǎn)就是對(duì)信息數(shù)據(jù)的共享和反復(fù)利用。病人看病不需要攜帶病歷,只需提供自己的姓名、病歷號(hào)或其他信息,醫(yī)生通過(guò)計(jì)算機(jī)即可得到該病人所有信息。
電子病歷是一個(gè)很復(fù)雜的項(xiàng)目,國(guó)際上有很多國(guó)家都要建健康檔案,就是想把病歷電子化。美國(guó)在新奧爾良由于颶風(fēng)影響導(dǎo)致了大致有50、60萬(wàn)人的醫(yī)學(xué)檔案,這些病歷都是由紙質(zhì)的,在社區(qū)的診所或者區(qū)域的醫(yī)院保存,這些人的醫(yī)學(xué)檔案丟失,包括當(dāng)?shù)氐闹菡J(rèn)為這是一個(gè)巨大的事故。從這件事反過(guò)來(lái)認(rèn)識(shí)到建立病歷電子化的緊迫性和重要性,因?yàn)殡娮硬v的存放、利用會(huì)更加安全。聯(lián)邦政府也成立了建立電子病歷的委員會(huì),提出了三個(gè)基本的原則。第一,要分級(jí)保密,可能有些是及其保密的,有些可以為公眾共享,這是關(guān)于安全私密性的原則。第二,更新的保真性,建立電子病歷的靜態(tài)環(huán)境以后會(huì)有些變化,包括臨床診斷和治療在這個(gè)電子病歷應(yīng)該有記錄,至少應(yīng)該知道是誰(shuí)診斷的,是什么醫(yī)生在什么場(chǎng)合下做的修改。第三,必須具有相當(dāng)方便容易讓人訪(fǎng)問(wèn),不能有一些政策的堡壘,只要是經(jīng)過(guò)授權(quán)的,無(wú)論是職業(yè)的醫(yī)師、有關(guān)方面需要訪(fǎng)問(wèn)的話(huà)應(yīng)該能夠得到這個(gè)病歷。
人可以掌握多門(mén)外語(yǔ),而一個(gè)計(jì)算機(jī)科學(xué)家精通的大多是編程語(yǔ)言,它不是人類(lèi)的自然語(yǔ)言,比如C語(yǔ)言、Java、Perl等等。由于不同的公司開(kāi)發(fā)出的“中間件”不夠規(guī)范,所以Sun公司推出J2EE,用這個(gè)標(biāo)準(zhǔn)來(lái)解決弊病。它提供了良好的機(jī)制,讓每個(gè)層次允許與之相對(duì)的服務(wù)器、組件運(yùn)行,使得系統(tǒng)的搭建穩(wěn)定可用、開(kāi)發(fā)高效、維護(hù)方便。
MVVM模式是常用的開(kāi)發(fā)模式,主要是在代碼實(shí)現(xiàn)上將其分為M層、V層和C層。
視圖(View)代表用戶(hù)交互界面,一個(gè) Web 應(yīng)用就可能有很多的界面,在 MVVM?模式中,視圖僅僅處理的只有數(shù)據(jù)采集、處理,還有用戶(hù)的請(qǐng)求, 并不包括業(yè)務(wù)流程的處理,業(yè)務(wù)流程由模型(Model)來(lái)處理。
模型(Model)就是業(yè)務(wù)流程/狀態(tài)的處理及業(yè)務(wù)規(guī)則的制定。模型處理業(yè)務(wù)流程的過(guò)程其它層是無(wú)法看見(jiàn)了的,它就像黑箱子,在接受視圖請(qǐng)求的數(shù)據(jù)之后,然后返回最終的處理結(jié)果。MVVM?最主要的核心就是業(yè)務(wù)模型的設(shè)計(jì),一個(gè)典型的應(yīng)用例子就是目前流行的 EJB 模型,它從應(yīng)用技術(shù)實(shí)現(xiàn)的角度對(duì)模型做了進(jìn)一步的劃分,以便充分利用現(xiàn)有的組件,但是它不能作為應(yīng)用設(shè)計(jì)模型的框架。
控制器(Controller)可以理解為接收用戶(hù)的請(qǐng)求,然后視圖和模型匹配在一起,一起再完成用戶(hù)請(qǐng)求。它有非常明顯的作用在劃分控制層上,可以很清晰地告訴你,它就是一個(gè)分發(fā)器,選擇什么樣的模型、視圖,可以完成用戶(hù)的什么樣的請(qǐng)求??刂茖硬蛔鏊械臄?shù)據(jù)處理,比如說(shuō):用戶(hù)點(diǎn)擊一個(gè)連接,控制層接受到請(qǐng)求之后,并不處理業(yè)務(wù)信息,它只是向模型傳遞用戶(hù)的信息,同時(shí)告訴模型做什么,然后選擇符合需求的視圖返回給用戶(hù)。
B/S(Browser/Server)比前身架構(gòu)更為省事的架構(gòu)。它借助Web server完成數(shù)據(jù)的傳遞交流。只需要下載瀏覽器作為客戶(hù)端,那么工作就達(dá)到“瘦身”效果, 不需要考慮不停裝軟件的問(wèn)題。
Spring框架是Java平臺(tái)上的一種開(kāi)源應(yīng)用框架,提供具有控制反轉(zhuǎn)特性的容器。盡管Spring框架自身對(duì)編程模型沒(méi)有限制,但其在Java應(yīng)用中的頻繁使用讓它備受青睞,以至于后來(lái)讓它作為EJB(EnterpriseJavaBeans)模型的補(bǔ)充,甚至是替補(bǔ)。Spring框架為開(kāi)發(fā)提供了一系列的解決方案,比如利用控制反轉(zhuǎn)的核心特性,并通過(guò)依賴(lài)注入實(shí)現(xiàn)控制反轉(zhuǎn)來(lái)實(shí)現(xiàn)管理對(duì)象生命周期容器化,利用面向切面編程進(jìn)行聲明式的事務(wù)管理,整合多種持久化技術(shù)管理數(shù)據(jù)訪(fǎng)問(wèn),提供大量?jī)?yōu)秀的Web框架方便開(kāi)發(fā)等等。Spring框架具有控制反轉(zhuǎn)(IOC)特性,IOC旨在方便項(xiàng)目維護(hù)和測(cè)試,它提供了一種通過(guò)Java的反射機(jī)制對(duì)Java對(duì)象進(jìn)行統(tǒng)一的配置和管理的方法。Spring框架利用容器管理對(duì)象的生命周期,容器可以通過(guò)掃描XML文件或類(lèi)上特定Java注解來(lái)配置對(duì)象,開(kāi)發(fā)者可以通過(guò)依賴(lài)查找或依賴(lài)注入來(lái)獲得對(duì)象。Spring框架具有面向切面編程(AOP)框架,SpringAOP框架基于代理模式,同時(shí)運(yùn)行時(shí)可配置;AOP框架主要針對(duì)模塊之間的交叉關(guān)注點(diǎn)進(jìn)行模塊化。Spring框架的AOP框架僅提供基本的AOP特性,雖無(wú)法與AspectJ框架相比,但通過(guò)與AspectJ的集成,也可以滿(mǎn)足基本需求。Spring框架下的事務(wù)管理、遠(yuǎn)程訪(fǎng)問(wèn)等功能均可以通過(guò)使用SpringAOP技術(shù)實(shí)現(xiàn)。Spring的事務(wù)管理框架為Java平臺(tái)帶來(lái)了一種抽象機(jī)制,使本地和全局事務(wù)以及嵌套事務(wù)能夠與保存點(diǎn)一起工作,并且?guī)缀蹩梢栽贘ava平臺(tái)的任何環(huán)境中工作。Spring集成多種事務(wù)模板,系統(tǒng)可以通過(guò)事務(wù)模板、XML或Java注解進(jìn)行事務(wù)配置,并且事務(wù)框架集成了消息傳遞和緩存等功能。Spring的數(shù)據(jù)訪(fǎng)問(wèn)框架解決了開(kāi)發(fā)人員在應(yīng)用程序中使用數(shù)據(jù)庫(kù)時(shí)遇到的常見(jiàn)困難。它不僅對(duì)Java:JDBC、iBATS/MyBATIs、Hibernate、Java數(shù)據(jù)對(duì)象(JDO)、ApacheOJB和ApacheCayne等所有流行的數(shù)據(jù)訪(fǎng)問(wèn)框架中提供支持,同時(shí)還可以與Spring的事務(wù)管理一起使用,為數(shù)據(jù)訪(fǎng)問(wèn)提供了靈活的抽象。Spring框架最初是沒(méi)有打算構(gòu)建一個(gè)自己的WebMVC框架,其開(kāi)發(fā)人員在開(kāi)發(fā)過(guò)程中認(rèn)為現(xiàn)有的StrutsWeb框架的呈現(xiàn)層和請(qǐng)求處理層之間以及請(qǐng)求處理層和模型之間的分離不夠,于是創(chuàng)建了SpringMVC。
Mysql 經(jīng)過(guò)多次的更新,功能層面已經(jīng)非常的豐富和完善了,從Mysql4版本到5版本進(jìn)行了比較大的更新,在商業(yè)的實(shí)際使用中取得了很好的實(shí)際應(yīng)用效果。最新版本的Mysql支持對(duì)信息的壓縮,同時(shí)還能進(jìn)行加密能更好的滿(mǎn)足對(duì)信息安全性的需求。同時(shí)經(jīng)過(guò)系統(tǒng)的多次更新,數(shù)據(jù)庫(kù)自身的鏡像功能也得到了很大的增強(qiáng),運(yùn)行的流暢度和易用性方面有了不小的進(jìn)步,驅(qū)動(dòng)的使用和創(chuàng)建也更加的高效快捷。最大的變動(dòng)還是進(jìn)行了空間信息的顯示優(yōu)化,能更加方便的在應(yīng)用地圖上進(jìn)行坐標(biāo)的標(biāo)注和運(yùn)算。強(qiáng)大的備份功能也保證了用戶(hù)使用的過(guò)程會(huì)更加安心,同時(shí)支持的Office特性還支持用戶(hù)的自行安裝和使用。在信息的顯示形式上也進(jìn)行了不小的更新,增加了兩個(gè)非常使用的顯示區(qū),一個(gè)是信息區(qū),對(duì)表格和文字進(jìn)行了分類(lèi)處理,界面的顯示更加清爽和具體。第二是儀表的信息控件,能在儀表信息區(qū)進(jìn)行信息的顯示,同時(shí)還能進(jìn)行多個(gè)信息的比對(duì),為用戶(hù)的實(shí)際使用帶來(lái)了很大的便捷。
針對(duì)本文中設(shè)計(jì)的電子病歷管理APP在實(shí)際的實(shí)現(xiàn)過(guò)程中,最終選擇Mysql數(shù)據(jù)庫(kù)的主要原因在于在企業(yè)的應(yīng)用系統(tǒng)應(yīng)用及開(kāi)發(fā)的過(guò)程中會(huì)存在大量的數(shù)據(jù)庫(kù)比較頻繁的操作,而且數(shù)據(jù)的安全性要求也是非常的高。綜合這些因素,最終選擇安全性系數(shù)比較高的Mysql來(lái)對(duì)電子病歷管理APP后臺(tái)數(shù)據(jù)進(jìn)行存儲(chǔ)操作。
整個(gè)小程序框架系統(tǒng)分為兩部分:邏輯層和視圖層。小程序開(kāi)發(fā)框架的目標(biāo)是通過(guò)盡可能簡(jiǎn)單、高效的方式讓開(kāi)發(fā)者可以在微信中開(kāi)發(fā)具有原生 小程序 體驗(yàn)的服務(wù)。小程序在視圖層與邏輯層間提供了數(shù)據(jù)傳輸和事件系統(tǒng),提供了自己的視圖層以及邏輯層框架,讓開(kāi)發(fā)者能夠?qū)W⒂跀?shù)據(jù)與邏輯??蚣艿暮诵氖且粋€(gè)響應(yīng)的數(shù)據(jù)綁定系統(tǒng),可以讓數(shù)據(jù)與視圖非常簡(jiǎn)單地保持同步。在邏輯層做數(shù)據(jù)修改,在視圖層就會(huì)做相應(yīng)的更新。框架提供了一套基礎(chǔ)的組件,這些組件自帶微信風(fēng)格的樣式以及特殊的邏輯,開(kāi)發(fā)者可以通過(guò)組合基礎(chǔ)組件,創(chuàng)建出強(qiáng)大的微信小程序 。
B/S架構(gòu)采取瀏覽器請(qǐng)求,服務(wù)器響應(yīng)的工作模式。
用戶(hù)可以通過(guò)瀏覽器去訪(fǎng)問(wèn)Internet上由Web服務(wù)器產(chǎn)生的文本、數(shù)據(jù)、圖片、動(dòng)畫(huà)、視頻點(diǎn)播和聲音等信息;
而每一個(gè)Web服務(wù)器又可以通過(guò)各種方式與數(shù)據(jù)庫(kù)服務(wù)器連接,大量的數(shù)據(jù)實(shí)際存放在數(shù)據(jù)庫(kù)服務(wù)器中;
從Web服務(wù)器上下載程序到本地來(lái)執(zhí)行,在下載過(guò)程中若遇到與數(shù)據(jù)庫(kù)有關(guān)的指令,由Web服務(wù)器交給數(shù)據(jù)庫(kù)服務(wù)器來(lái)解釋執(zhí)行,并返回給Web服務(wù)器,Web服務(wù)器又返回給用戶(hù)。在這種結(jié)構(gòu)中,將許許多多的網(wǎng)連接到一塊,形成一個(gè)巨大的網(wǎng),即全球網(wǎng)。而各個(gè)企業(yè)可以在此結(jié)構(gòu)的基礎(chǔ)上建立自己的Internet。
在 B/S 模式中,用戶(hù)是通過(guò)瀏覽器針對(duì)許多分布于網(wǎng)絡(luò)上的服務(wù)器進(jìn)行請(qǐng)求訪(fǎng)問(wèn)的,瀏覽器的請(qǐng)求通過(guò)服務(wù)器進(jìn)行處理,并將處理結(jié)果以及相應(yīng)的信息返回給瀏覽器,其他的數(shù)據(jù)加工、請(qǐng)求全部都是由Web Server完成的。通過(guò)該框架結(jié)構(gòu)以及植入于操作系統(tǒng)內(nèi)部的瀏覽器,該結(jié)構(gòu)已經(jīng)成為了當(dāng)今軟件應(yīng)用的主流結(jié)構(gòu)模式。
技術(shù)性方面,采用當(dāng)前主流的Springboot框架進(jìn)行系統(tǒng)主體的搭建,前端部分基于MVVM模式進(jìn)行開(kāi)發(fā),采用B/S模式,實(shí)現(xiàn)前臺(tái)頁(yè)面的設(shè)計(jì)與美觀調(diào)整,以上技術(shù),均由本人經(jīng)過(guò)系統(tǒng)學(xué)習(xí),并且都是在課程設(shè)計(jì)中實(shí)踐過(guò)的,可以使得開(kāi)發(fā)更加便捷和系統(tǒng)。從技術(shù)角度看,這個(gè)系統(tǒng)是完全可以實(shí)現(xiàn)的。
實(shí)用性方面,本次設(shè)計(jì)的主要任務(wù)是在電子病歷管理APP內(nèi)實(shí)現(xiàn):醫(yī)生信息、在線(xiàn)醫(yī)生列表、病人掛號(hào)、醫(yī)藥廚房費(fèi)列表、病歷管理模塊等,符合當(dāng)前潮流的發(fā)展。從用戶(hù)角度出發(fā),同時(shí)也考慮系統(tǒng)運(yùn)營(yíng)成本和人力資源,采用網(wǎng)絡(luò)上的便捷方式,實(shí)現(xiàn)線(xiàn)上業(yè)務(wù),使得業(yè)務(wù)流程更系統(tǒng),也更方便用戶(hù)的體驗(yàn),比較實(shí)用。
經(jīng)濟(jì)性方面,由于本課題中設(shè)計(jì)的電子病歷管理APP的主要目的是為了能夠更加方便及快捷的進(jìn)行病歷信息的查詢(xún)及檢索服務(wù),也就是能夠可以直接投入使用的信息化軟件。系統(tǒng)的主要成本主要是集中在對(duì)使用數(shù)據(jù)后期繼續(xù)維護(hù)及其管理更新這個(gè)操作上。但是一旦系統(tǒng)投入到實(shí)際的運(yùn)行及使用之后就能夠很好的提高信息查詢(xún)檢索的效率,同時(shí)也需要有效的保證查詢(xún)者的信息方面的安全性,同時(shí)這個(gè)電子病歷管理APP所帶來(lái)的實(shí)際應(yīng)用方面的價(jià)值是遠(yuǎn)遠(yuǎn)的超過(guò)了實(shí)際系統(tǒng)進(jìn)行開(kāi)發(fā)與維護(hù)方面的成本,因此,從經(jīng)濟(jì)上來(lái)說(shuō)開(kāi)發(fā)這個(gè)軟件是可行的。
電子病歷管理APP的功能主要分為前臺(tái)用戶(hù)根據(jù)自己的需求進(jìn)行注冊(cè)登錄,瀏覽醫(yī)生信信,后臺(tái)系統(tǒng)管理員因職責(zé)的不同,分為醫(yī)生和管理員,醫(yī)生主要對(duì)藥品信息以及病人病歷進(jìn)行管理,而管理員主要對(duì)注冊(cè)用戶(hù),醫(yī)生信息,藥品出庫(kù)、入庫(kù)藥品、在線(xiàn)醫(yī)生、藥品信息、醫(yī)藥處方費(fèi)進(jìn)行管理。
用戶(hù)用例圖如下所示。
圖3-1 用戶(hù)用例圖
管理員用例圖如下所示。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖3-2 管理員用例圖
醫(yī)生用例圖如下所示。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖3-3 醫(yī)生用例圖
前臺(tái)用戶(hù)的功能如下:
注冊(cè)賬號(hào):用戶(hù)填寫(xiě)個(gè)人信息,并驗(yàn)證手機(jī)號(hào)碼。
登錄:根據(jù)賬號(hào)密碼進(jìn)行登錄操作。
瀏覽在線(xiàn)醫(yī)生:用戶(hù)可以就在線(xiàn)醫(yī)生列表中瀏覽醫(yī)生的信息,并選中某個(gè)醫(yī)生查看詳情。
維護(hù)個(gè)人信息:用戶(hù)因個(gè)人信息的變更可以隨時(shí)修改自己注冊(cè)信息。
病人掛號(hào):用戶(hù)根據(jù)自己的病癥選中某個(gè)科室、醫(yī)生放出得號(hào)源進(jìn)行掛號(hào)預(yù)約以及支付操作。
醫(yī)藥處方費(fèi):用戶(hù)可以在線(xiàn)進(jìn)行醫(yī)藥處方繳費(fèi)操作等。
后臺(tái)可分為醫(yī)生和管理員。
醫(yī)生功能如下。
修改密碼:管理員可以隨時(shí)修改自己進(jìn)入系統(tǒng)的登錄密碼,以保證系統(tǒng)的安全性。
醫(yī)生信息:具體醫(yī)生姓名、工號(hào)、所屬科室詳情。
病人掛號(hào):查看病人的掛號(hào)信息等。
藥品列表:查詢(xún)醫(yī)院藥品列表信息。
管理員功能如下:
修改密碼:管理員可以隨時(shí)修改自己進(jìn)入系統(tǒng)的登錄密碼,以保證系統(tǒng)的安全性。
在線(xiàn)醫(yī)生管理:對(duì)醫(yī)生信息進(jìn)行發(fā)布以及維護(hù)管理。。
藥品信息管理:對(duì)藥品信息進(jìn)行維護(hù),添加、刪除、修改信息。
藥品進(jìn)出庫(kù)管理:對(duì)藥品的進(jìn)出庫(kù)信息進(jìn)行維護(hù),添加、刪除、修改信息。
病人掛號(hào)管理:對(duì)用戶(hù)的掛號(hào)信息進(jìn)行維護(hù)管理。
病人病歷管理:對(duì)病歷信息進(jìn)行管理。
醫(yī)藥處方費(fèi)管理。
首先主要考慮的是系統(tǒng)功能軟件,在具體設(shè)計(jì)的環(huán)節(jié)上,是不是能夠較好的滿(mǎn)足各類(lèi)用戶(hù)的基本功能需求,如果不能較好的滿(mǎn)足用戶(hù)需求,那么這個(gè)系統(tǒng)的存在是沒(méi)有價(jià)值的。軟件系統(tǒng)的非功能性求分析,從7個(gè)方面展開(kāi),一個(gè)是性能分析,針對(duì)系統(tǒng);一個(gè)是安全分析,針對(duì)系統(tǒng),一個(gè)是完整度分析,針對(duì)系統(tǒng),一個(gè)是可維護(hù)分析,針對(duì)系統(tǒng),一個(gè)是可擴(kuò)展性分析,針對(duì)系統(tǒng),一個(gè)是適應(yīng)業(yè)務(wù)的性能分析。面對(duì)電子病歷管理APP存在的性能、安全、擴(kuò)展、完整度等7個(gè)方面性能綜合比對(duì)分析后發(fā)現(xiàn),需要相應(yīng)的非功能性需求分析。
安全性對(duì)每一個(gè)系統(tǒng)來(lái)說(shuō)都是非常重要的。安全性很好的系統(tǒng)可以保護(hù)企業(yè)的信息和用戶(hù)的信息不被竊取。提高系統(tǒng)的安全性不僅是對(duì)用戶(hù)的負(fù)責(zé),更是對(duì)醫(yī)院的負(fù)責(zé)。尤其針對(duì)于電子病歷管理APP來(lái)說(shuō),必須要有很好的安全性來(lái)保障整個(gè)系統(tǒng)。
系統(tǒng)具有對(duì)使用者有權(quán)限控制,針對(duì)角色的不通限制使用者的權(quán)限,以此來(lái)確保系統(tǒng)的安全性。
數(shù)據(jù)庫(kù)中的數(shù)據(jù)是從外界輸入的,當(dāng)數(shù)據(jù)的輸入時(shí),由于種種原因,輸入的數(shù)據(jù)會(huì)無(wú)效,或者是臟數(shù)據(jù)。因此,怎樣保證輸入的數(shù)據(jù)符合規(guī)定,成為了數(shù)據(jù)庫(kù)系統(tǒng),尤其是多用戶(hù)的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)首要關(guān)注的問(wèn)題。
因此,在寫(xiě)入數(shù)據(jù)庫(kù)時(shí),要保證數(shù)據(jù)完整性、正確性和一致性。
對(duì)系統(tǒng)的數(shù)據(jù)流進(jìn)行分析,系統(tǒng)的使用者分為二類(lèi),一般用戶(hù)(患者用戶(hù)、醫(yī)生),管理員。系統(tǒng)主要對(duì)界面信息傳送,登錄信息的驗(yàn)證,注冊(cè)信息的接收,用戶(hù)各種操作的響應(yīng)做處理。
系統(tǒng)頂層數(shù)據(jù)流圖如下圖所示。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖3-2 頂層數(shù)據(jù)流圖
要判斷用戶(hù)是是什么身份,是根據(jù)登錄的數(shù)據(jù)來(lái)判斷后,跳轉(zhuǎn)到對(duì)應(yīng)的功能界面。在系統(tǒng)的內(nèi)部用戶(hù)就可以對(duì)數(shù)據(jù)進(jìn)行操作,數(shù)據(jù)庫(kù)中心就可以接收到系統(tǒng)傳輸?shù)挠行?shù)據(jù)流來(lái)對(duì)數(shù)據(jù)sql語(yǔ)句進(jìn)行對(duì)應(yīng)操作。
系統(tǒng)底層數(shù)據(jù)流圖如下圖所示。
?圖3-3 底層數(shù)據(jù)流圖
?
系統(tǒng)可以分為前臺(tái)和后臺(tái)兩部分,每一種操作后系統(tǒng)都返回操作結(jié)果。前臺(tái)和后臺(tái)的數(shù)據(jù)連接主要通過(guò)數(shù)據(jù)庫(kù),既分別對(duì)數(shù)據(jù)庫(kù)做不同的操作。
本電子病歷管理APP的架構(gòu)設(shè)計(jì)主要分為可以3層,主要有Web層,業(yè)務(wù)層,Model層。其中web層還包括View層和Controller層,Model層包括元數(shù)據(jù)擴(kuò)展層和數(shù)據(jù)訪(fǎng)問(wèn)層。
系統(tǒng)架構(gòu)如下圖所示。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖4-1 系統(tǒng)架構(gòu)
電子病歷管理APP總體分為前臺(tái)用戶(hù)模塊和后臺(tái)管理員模塊。
兩個(gè)模塊表現(xiàn)上是分別獨(dú)立存在,但是訪(fǎng)問(wèn)的數(shù)據(jù)庫(kù)是一樣的。每一個(gè)模塊的功能都是根據(jù)先前完成的需求分析,并查閱相關(guān)資料后整理制作的。
綜上所述,系統(tǒng)功能結(jié)構(gòu)圖如下圖所示。
???????????????????????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖4-2 系統(tǒng)功能結(jié)構(gòu)圖
在線(xiàn)醫(yī)生信息管理模塊:在線(xiàn)醫(yī)生管理分為在線(xiàn)醫(yī)生添加、修改。在線(xiàn)醫(yī)生信息由管理員進(jìn)行修改、添加、刪除操作;在線(xiàn)醫(yī)生信息瀏覽由普通用戶(hù)來(lái)執(zhí)行。
藥品管理模塊:藥品管理分為藥品添加、修改和刪除。藥品信息由管理員進(jìn)行修改、添加、刪除操作。
病人病歷管理模塊:病人病歷管理分為:病歷信息的添加、修改、刪除。醫(yī)生能查詢(xún)到病人病歷信息,后臺(tái)管理員對(duì)病歷信息進(jìn)行管理。
從前面可以分析到數(shù)據(jù)庫(kù)中最重要的是醫(yī)生信息,科室類(lèi)別,病人掛號(hào),病人病歷、醫(yī)藥處方費(fèi)。分析可以得到如下數(shù)據(jù)描述:
平臺(tái)用戶(hù):用于記錄用戶(hù)的各種信息,包括用戶(hù)名、密碼、姓名、性別、地址、郵箱、聯(lián)系方式等數(shù)據(jù)項(xiàng)。
管理員:記錄管理員的登錄信息。包括用戶(hù)名,密碼,權(quán)限等數(shù)據(jù)項(xiàng)。
科室類(lèi)別:科室名稱(chēng),包括科室編號(hào)、科室類(lèi)別、科室圖片等數(shù)據(jù)項(xiàng)。
在線(xiàn)醫(yī)生:存儲(chǔ)各種醫(yī)生信息。包括醫(yī)生工號(hào)、醫(yī)生姓名、性別、科室分類(lèi)、在線(xiàn)時(shí)間、職稱(chēng)、主要醫(yī)治等數(shù)據(jù)項(xiàng)。
病人掛號(hào):存儲(chǔ)病人的掛號(hào)信息。包括醫(yī)生編號(hào)、科室分類(lèi)、醫(yī)生名稱(chēng)、職稱(chēng)、醫(yī)生賬號(hào)、掛號(hào)費(fèi)、預(yù)約時(shí)間、預(yù)約說(shuō)明等數(shù)據(jù)項(xiàng)。
醫(yī)藥處方費(fèi):病人的醫(yī)藥處方費(fèi)用信息。
藥品出入入庫(kù)信息。
根據(jù)前面的數(shù)據(jù)流程圖,結(jié)合系統(tǒng)的功能模塊設(shè)計(jì),設(shè)計(jì)出符合系統(tǒng)的各信息實(shí)體。
(1)前臺(tái)用戶(hù)實(shí)體屬性圖,如圖4-3所示。
?
圖4-3?前臺(tái)用戶(hù)實(shí)體屬性圖
(2)醫(yī)生實(shí)體屬性圖,如圖4-4所示。
?
?????????????????????????圖4-4醫(yī)生實(shí)體屬性圖
?
?????????????????????????圖4-5管理員實(shí)體屬性圖
?
?????????????????????????圖4-6實(shí)體聯(lián)系圖
電子病歷管理APP所擁有的數(shù)據(jù)表有以下:在線(xiàn)醫(yī)生表,病人掛號(hào)表,藥品信息表,科室類(lèi)別表,病人病歷表,醫(yī)藥處方表。
由于數(shù)據(jù)表較多,只展示系統(tǒng)主要數(shù)據(jù)表,如下表所示。
| 名稱(chēng) | 類(lèi)型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| patient_user_id | int | 11 | 是 | 是 | 病人用戶(hù)ID |
| gender | varchar | 64 | 否 | 否 | 性別 |
| age | varchar | 64 | 否 | 否 | 年齡 |
| id | varchar | 64 | 否 | 否 | 身份證 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態(tài) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| user_id | int | 11 | 是 | 否 | 用戶(hù)ID |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
| 名稱(chēng) | 類(lèi)型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| patient_registration_id | int | 11 | 是 | 是 | 病人掛號(hào)ID |
| doctor_number | varchar | 64 | 否 | 否 | 醫(yī)生編號(hào) |
| department_classification | varchar | 64 | 否 | 否 | 科室分類(lèi) |
| name_of_doctor | varchar | 64 | 否 | 否 | 醫(yī)生姓名 |
| title | varchar | 64 | 否 | 否 | 職稱(chēng) |
| doctor_account | int | 11 | 否 | 否 | 醫(yī)生賬號(hào) |
| registration_fee | varchar | 64 | 否 | 否 | 掛號(hào)費(fèi) |
| time_of_appointment | varchar | 64 | 否 | 否 | 預(yù)約時(shí)間 |
| appointment_description | varchar | 64 | 否 | 否 | 預(yù)約說(shuō)明 |
| patient_account_number | int | 11 | 否 | 否 | 患者賬號(hào) |
| medical_record | text | 0 | 否 | 否 | 病歷 |
| symptom | text | 0 | 否 | 否 | 癥狀 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態(tài) |
| pay_state | varchar | 16 | 是 | 否 | 支付狀態(tài) |
| pay_type | varchar | 16 | 否 | 否 | 支付類(lèi)型 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
| 名稱(chēng) | 類(lèi)型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| online_doctor_id | int | 11 | 是 | 是 | 在線(xiàn)醫(yī)生ID |
| doctor_number | varchar | 64 | 否 | 否 | 醫(yī)生編號(hào) |
| department_classification | varchar | 64 | 否 | 否 | 科室分類(lèi) |
| name_of_doctor | varchar | 64 | 否 | 否 | 醫(yī)生姓名 |
| title | varchar | 64 | 否 | 否 | 職稱(chēng) |
| online_time | varchar | 64 | 否 | 否 | 在線(xiàn)時(shí)間 |
| registration_fee | int | 11 | 否 | 否 | 掛號(hào)費(fèi) |
| photo | varchar | 255 | 否 | 否 | 照片 |
| doctor_account | int | 11 | 否 | 否 | 醫(yī)生賬號(hào) |
| main_treatment | text | 0 | 否 | 否 | 主要醫(yī)治 |
| hits | int | 11 | 是 | 否 | 點(diǎn)擊數(shù) |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態(tài) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
| 名稱(chēng) | 類(lèi)型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| medical_record_management_id | int | 11 | 是 | 是 | 病歷管理ID |
| doctor_number | varchar | 64 | 否 | 否 | 醫(yī)生編號(hào) |
| department_classification | varchar | 64 | 否 | 否 | 科室分類(lèi) |
| name_of_doctor | varchar | 64 | 否 | 否 | 醫(yī)生姓名 |
| patient_account_number | int | 11 | 否 | 否 | 患者賬號(hào) |
| doctor_account | int | 11 | 否 | 否 | 醫(yī)生賬號(hào) |
| etiological_description | text | 0 | 否 | 否 | 病因說(shuō)明 |
| prescription_drug_details | text | 0 | 否 | 否 | 處方藥詳情 |
| matters_needing_attention | text | 0 | 否 | 否 | 注意事項(xiàng) |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態(tài) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
| 名稱(chēng) | 類(lèi)型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| medical_prescription_fee_id | int | 11 | 是 | 是 | 醫(yī)藥處方費(fèi)ID |
| doctor_number | varchar | 64 | 否 | 否 | 醫(yī)生編號(hào) |
| department_classification | varchar | 64 | 否 | 否 | 科室分類(lèi) |
| name_of_doctor | varchar | 64 | 否 | 否 | 醫(yī)生姓名 |
| patient_account_number | int | 11 | 否 | 否 | 患者賬號(hào) |
| patient_etiology | varchar | 64 | 否 | 否 | 患者病因 |
| etiological_description | varchar | 64 | 否 | 否 | 病因說(shuō)明 |
| prescription | varchar | 64 | 否 | 否 | 處方藥 |
| prescription_drug_expenses | int | 11 | 否 | 否 | 處方藥費(fèi)用 |
| doctor_account | int | 11 | 否 | 否 | 醫(yī)生賬號(hào) |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態(tài) |
| pay_state | varchar | 16 | 是 | 否 | 支付狀態(tài) |
| pay_type | varchar | 16 | 否 | 否 | 支付類(lèi)型 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
| 名稱(chēng) | 類(lèi)型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| drug_delivery_id | int | 11 | 是 | 是 | 藥品出庫(kù)ID |
| drug_number | varchar | 64 | 否 | 否 | 藥品編號(hào) |
| drug_type | varchar | 64 | 否 | 否 | 藥品類(lèi)型 |
| drug_name | varchar | 64 | 否 | 否 | 藥品名稱(chēng) |
| delivery_time | varchar | 64 | 否 | 否 | 出庫(kù)時(shí)間 |
| outbound_quantity | int | 11 | 否 | 否 | 出庫(kù)數(shù)量 |
| remarks | text | 0 | 否 | 否 | 備注 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態(tài) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
| 名稱(chēng) | 類(lèi)型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| department_category_id | int | 11 | 是 | 是 | 科室類(lèi)別ID |
| department_classification | varchar | 64 | 否 | 否 | 科室分類(lèi) |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態(tài) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
| 名稱(chēng) | 類(lèi)型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| doctor_user_id | int | 11 | 是 | 是 | 醫(yī)生用戶(hù)ID |
| gender | varchar | 64 | 否 | 否 | 性別 |
| title | varchar | 64 | 否 | 否 | 職稱(chēng) |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態(tài) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| user_id | int | 11 | 是 | 否 | 用戶(hù)ID |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
該系統(tǒng)是通過(guò)jdbc和MySQL達(dá)成連接的,新建一個(gè)jdbc.properties文件來(lái)填寫(xiě)與數(shù)據(jù)庫(kù)連接所需要的驅(qū)動(dòng)和參數(shù)。
jdbc.driverClass=com.MySQL.jdbc.Driver
jdbc.url=jdbc:MySQL://localhost:3306/tsi
jdbc.username=root
jdbc.password=123
第一個(gè)參數(shù)代表MySQL數(shù)據(jù)庫(kù)的驅(qū)動(dòng),第二個(gè)參數(shù)代表要連接的數(shù)據(jù)庫(kù),第三個(gè)和第四個(gè)參數(shù)代表數(shù)據(jù)庫(kù)連接名和密碼。
后臺(tái)與數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)主要是通過(guò)HQL語(yǔ)句來(lái)進(jìn)行查詢(xún)的,查詢(xún)語(yǔ)句中的表名是表格的實(shí)體類(lèi)名,在這種查詢(xún)語(yǔ)句中*是不允許使用的,除非適合聚合函數(shù)一起使用才可以。
用戶(hù)在填寫(xiě)數(shù)據(jù)的時(shí)候必須與注冊(cè)頁(yè)面上的驗(yàn)證相匹配否則會(huì)注冊(cè)失敗,注冊(cè)頁(yè)面的表單驗(yàn)證是通過(guò)JavaScript進(jìn)行驗(yàn)證的,用戶(hù)名的長(zhǎng)度必須在6到18之間,郵箱必須帶有@符號(hào),密碼和密碼確認(rèn)必須相同,你輸入的密碼,系統(tǒng)會(huì)根據(jù)你輸入密碼的強(qiáng)度給出指定的值,電話(huà)號(hào)碼和身份證號(hào)碼必須要求輸入格式與生活相符合,當(dāng)你前臺(tái)驗(yàn)證通過(guò)的時(shí)候你點(diǎn)擊注冊(cè),表單會(huì)將你輸入的值通過(guò)name值傳遞給后臺(tái)并保存到數(shù)據(jù)庫(kù)中。
用戶(hù)注冊(cè)流程圖如下圖所示。
?
圖5-1用戶(hù)注冊(cè)流程圖
用戶(hù)注冊(cè)界面如下圖所示。
?
圖5-2用戶(hù)注冊(cè)界面
用戶(hù)注冊(cè)邏輯代碼如下:
/**
?????* 注冊(cè)
?????* @param user
?????* @return
?????*/
????@PostMapping("register")
????public Map<String, Object> signUp(@RequestBody User user) {
????????// 查詢(xún)用戶(hù)
????????Map<String, String> query = new HashMap<>();
????????query.put("username",user.getUsername());
????????List list = service.select(query, new HashMap<>()).getResultList();
????????if (list.size()>0){
????????????return error(30000, "用戶(hù)已存在");
????????}
????????user.setUserId(null);
????????user.setPassword(service.encryption(user.getPassword()));
????????service.save(user);
????????return success(1);
}
/**
?????* 用戶(hù)ID:[0,8388607]用戶(hù)獲取其他與用戶(hù)相關(guān)的數(shù)據(jù)
?????*/
????@Id
????@GeneratedValue(strategy = GenerationType.IDENTITY)
????@Column(name = "user_id")
????private Integer userId;
????/**
?????* 賬戶(hù)狀態(tài):[0,10](1可用|2異常|3已凍結(jié)|4已注銷(xiāo))
?????*/
????@Basic
????@Column(name = "state")
????private Integer state;
????/**
?????* 所在用戶(hù)組:[0,32767]決定用戶(hù)身份和權(quán)限
?????*/
????@Basic
????@Column(name = "user_group")
????private String userGroup;
????/**
?????* 上次登錄時(shí)間:
?????*/
????@Basic
????@Column(name = "login_time")
????private Timestamp loginTime;
????/**
?????* 手機(jī)號(hào)碼:[0,11]用戶(hù)的手機(jī)號(hào)碼,用于找回密碼時(shí)或登錄時(shí)
?????*/
????@Basic
????@Column(name = "phone")
????private String phone;
????/**
?????* 手機(jī)認(rèn)證:[0,1](0未認(rèn)證|1審核中|2已認(rèn)證)
?????*/
????@Basic
????@Column(name = "phone_state")
????private Integer phoneState;
????/**
?????* 用戶(hù)名:[0,16]用戶(hù)登錄時(shí)所用的賬戶(hù)名稱(chēng)
?????*/
????@Basic
????@Column(name = "username")
????private String username;
????/**
?????* 昵稱(chēng):[0,16]
?????*/
????@Basic
????@Column(name = "nickname")
????private String nickname;
????/**
?????* 密碼:[0,32]用戶(hù)登錄所需的密碼,由6-16位數(shù)字或英文組成
?????*/
????@Basic
????@Column(name = "password")
????private String password;
????/**
?????* 郵箱:[0,64]用戶(hù)的郵箱,用于找回密碼時(shí)或登錄時(shí)
?????*/
????@Basic
????@Column(name = "email")
????private String email;
????/**
?????* 郵箱認(rèn)證:[0,1](0未認(rèn)證|1審核中|2已認(rèn)證)
?????*/
????@Basic
????@Column(name = "email_state")
????private Integer emailState;
????/**
?????* 頭像地址:[0,255]
?????*/
????@Basic
????@Column(name = "avatar")
????private String avatar;
????/**
?????* 創(chuàng)建時(shí)間:
?????*/
????@Basic
????@Column(name = "create_time")
????@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
????private Timestamp createTime;
????@Basic
????@Transient
????private String code;
}
主要由兩部分組成,登錄前的登錄界面以及登錄后的用戶(hù)功能界面。登錄界面,要求用戶(hù)輸入用戶(hù)名和密碼,當(dāng)用戶(hù)名和密碼其中一個(gè)輸入為空時(shí),給出提示“用戶(hù)名,密碼不能為空”。獲取用戶(hù)名和密碼后到數(shù)據(jù)庫(kù)中查找,如果用戶(hù)名存在,以及對(duì)應(yīng)的密碼正確,則登錄成功,否則登錄失敗。登錄失敗后給出提示,并把焦點(diǎn)停在文本框中。登錄成功后將該次會(huì)話(huà)的全局變量username設(shè)置為用戶(hù)名。登錄成功后進(jìn)入會(huì)員的功能模塊,主要有會(huì)員基本信息修改,已經(jīng)發(fā)布藥品信息管理,發(fā)布信息,和退出功能。退出功能是清除全局變量username的值,并跳回到首頁(yè)。
登錄流程圖如下圖所示。
?
?
圖5-3登錄流程圖
用戶(hù)登錄界面如下圖所示。
?? ? ? ? ? ? ? ? ? ? ? ?
?
圖5-4用戶(hù)登錄界面
用戶(hù)登錄的邏輯代碼如下所示。
/**
?????* 登錄
?????* @param data
?????* @param httpServletRequest
?????* @return
?????*/
????@PostMapping("login")
????public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
????????log.info("[執(zhí)行登錄接口]");
????????String username = data.get("username");
????????String email = data.get("email");
????????String phone = data.get("phone");
????????String password = data.get("password");
????????List resultList = null;
????????Map<String, String> map = new HashMap<>();
????????if(username != null && "".equals(username) == false){
????????????map.put("username", username);
????????????resultList = service.select(map, new HashMap<>()).getResultList();
????????}
????????else if(email != null && "".equals(email) == false){
????????????map.put("email", email);
????????????resultList = service.select(map, new HashMap<>()).getResultList();
????????}
????????else if(phone != null && "".equals(phone) == false){
????????????map.put("phone", phone);
????????????resultList = service.select(map, new HashMap<>()).getResultList();
????????}else{
????????????return error(30000, "賬號(hào)或密碼不能為空");
????????}
????????if (resultList == null || password == null) {
????????????return error(30000, "賬號(hào)或密碼不能為空");
????????}
????????//判斷是否有這個(gè)用戶(hù)
????????if (resultList.size()<=0){
????????????return error(30000,"用戶(hù)不存在");
????????}
????????User byUsername = (User) resultList.get(0);
????????Map<String, String> groupMap = new HashMap<>();
????????groupMap.put("name",byUsername.getUserGroup());
????????List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();
????????if (groupList.size()<1){
????????????return error(30000,"用戶(hù)組不存在");
? ? ? ??
????????UserGroup userGroup = (UserGroup) groupList.get(0);
????????//查詢(xún)用戶(hù)審核狀態(tài)
????????if (!StringUtils.isEmpty(userGroup.getSourceTable())){
????????????String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
????????????String res = String.valueOf(service.runCountSql(sql).getSingleResult());
????????????if (res==null){
????????????????return error(30000,"用戶(hù)不存在");
????????????}
????????????if (!res.equals("已通過(guò)")){
????????????????return error(30000,"該用戶(hù)審核未通過(guò)");
????????????}
????????}
????????//查詢(xún)用戶(hù)狀態(tài)
????????if (byUsername.getState()!=1){
????????????return error(30000,"用戶(hù)非可用狀態(tài),不能登錄");
????????}
????????String md5password = service.encryption(password);
????????if (byUsername.getPassword().equals(md5password)) {
????????????// 存儲(chǔ)Token到數(shù)據(jù)庫(kù)
????????????AccessToken accessToken = new AccessToken();
????????????accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
????????????accessToken.setUser_id(byUsername.getUserId());
????????????tokenService.save(accessToken);
????????????// 返回用戶(hù)信息
????????????JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
????????????user.put("token", accessToken.getToken());
????????????JSONObject ret = new JSONObject();
????????????ret.put("obj",user);
????????????return success(ret);
????????} else {
????????????return error(30000, "賬號(hào)或密碼不正確");
????????}
}
用戶(hù)登錄/注冊(cè)成功之后可以修改自己的基本信息。修改頁(yè)面的表單中每一個(gè)input的name值都要與實(shí)體類(lèi)中的參數(shù)相匹配,在用戶(hù)點(diǎn)擊修改頁(yè)面的時(shí)候,如果改后用戶(hù)名與數(shù)據(jù)庫(kù)里面重復(fù)了,頁(yè)面會(huì)提示該用戶(hù)名已經(jīng)存在了,否則通過(guò)Id來(lái)查詢(xún)用戶(hù),并將用戶(hù)的信息修改為表單提交的數(shù)據(jù)。
如果藥品的信息需要修改,管理員可以通過(guò)查詢(xún)藥品的基本信息來(lái)查詢(xún)藥品信息,查詢(xún)藥品信息是通過(guò)ajax技術(shù)來(lái)進(jìn)行查詢(xún)的,需要傳遞藥品名稱(chēng)等參數(shù)然后在返回到該頁(yè)面中,可以選中要修改或刪除的那條信息,如果選中了超過(guò)一條數(shù)據(jù),頁(yè)面會(huì)挑一個(gè)窗口提醒只能選擇一條數(shù),如果沒(méi)有選中數(shù)據(jù)會(huì)挑一個(gè)窗口題型必須選擇一條數(shù)據(jù)。當(dāng)選擇確認(rèn)修改的時(shí)候,后臺(tái)會(huì)根據(jù)傳過(guò)來(lái)的id到數(shù)據(jù)庫(kù)查詢(xún),并將結(jié)果返回到修改頁(yè)面中,可以在修改頁(yè)面中修改剛剛選中的信息當(dāng)點(diǎn)擊確認(rèn)的時(shí)候from表單會(huì)將修改的數(shù)據(jù)提交到后臺(tái)并保存到數(shù)據(jù)庫(kù)中,就是說(shuō)如果提交的數(shù)據(jù)數(shù)據(jù)庫(kù)中存在就修改,否則就保存。
藥品信息列表界面如下圖所示。
?
圖5-5藥品信息列表界面
藥品信息列表的邏輯代碼如下:
@PostMapping("/add")
????@Transactional
????public Map<String, Object> add(HttpServletRequest request) throws IOException {
????????service.insert(service.readBody(request.getReader()));
????????return success(1);
????}
????@Transactional
????public Map<String, Object> addMap(Map<String,Object> map){
????????service.insert(map);
????????return success(1);
}
????public Map<String,Object> readBody(BufferedReader reader){
????????BufferedReader br = null;
????????StringBuilder sb = new StringBuilder("");
????????try{
????????????br = reader;
????????????String str;
????????????while ((str = br.readLine()) != null){
????????????????sb.append(str);
????????????}
????????????br.close();
????????????String json = sb.toString();
????????????return JSONObject.parseObject(json, Map.class);
????????}catch (IOException e){
????????????e.printStackTrace();
????????}finally{
????????????if (null != br){
????????????????try{
????????????????????br.close();
????????????????}catch (IOException e){
????????????????????e.printStackTrace();
????????????????}
????????????}
????????}
????????return null;
}
????public void insert(Map<String,Object> body){
????????StringBuffer sql = new StringBuffer("INSERT INTO ");
????????sql.append("`").append(table).append("`").append(" (");
????????for (Map.Entry<String,Object> entry:body.entrySet()){
????????????sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
????????}
????????sql.deleteCharAt(sql.length()-1);
????????sql.append(") VALUES (");
????????for (Map.Entry<String,Object> entry:body.entrySet()){
????????????Object value = entry.getValue();
????????????if (value instanceof String){
????????????????sql.append("'").append(entry.getValue()).append("'").append(",");
????????????}else {
????????????????sql.append(entry.getValue()).append(",");
????????????}
????????}
????????sql.deleteCharAt(sql.length() - 1);
????????sql.append(")");
????????log.info("[{}] - 插入操作:{}",table,sql);
????????Query query = runCountSql(sql.toString());
????????query.executeUpdate();
????}
病人掛號(hào)功能整體流程:用戶(hù)瀏覽號(hào)源信息時(shí),同時(shí)會(huì)顯示號(hào)源的狀態(tài),系統(tǒng)會(huì)在其顯示詳細(xì)信息的頁(yè)面時(shí)便會(huì)判斷號(hào)源狀態(tài),若號(hào)源狀態(tài)為可預(yù)約,則會(huì)顯示預(yù)約的鏈接按鈕。在用戶(hù)點(diǎn)擊預(yù)約按鈕時(shí),會(huì)先通過(guò)攔截器判斷用戶(hù)是否登錄,若未登錄,會(huì)跳轉(zhuǎn)至登錄頁(yè)面,提示用戶(hù)先登錄,若為登錄用戶(hù)就會(huì)跳轉(zhuǎn)至填寫(xiě)預(yù)約信息的頁(yè)面,填寫(xiě)好預(yù)約信息之后,點(diǎn)擊提交按鈕,預(yù)約成功之后返回提示信息,告知用戶(hù)掛號(hào)成功。
病人掛號(hào)流程圖如下圖所示。
?
?
圖5-7病人掛號(hào)流程圖
病人掛號(hào)界面如下圖所示。
?
圖5-8病人掛號(hào)界面
根據(jù)需求,需要對(duì)病歷進(jìn)行添加、刪除或修改詳情信息。刪除或修改病歷時(shí),系統(tǒng)根據(jù)病歷的狀態(tài)判定為可刪除狀態(tài)下,才會(huì)給出刪除和修改鏈接,點(diǎn)擊刪除鏈接按鈕時(shí),請(qǐng)求到達(dá)后臺(tái),還會(huì)先查詢(xún)病人病歷狀態(tài)再次做出判定能否刪除。點(diǎn)擊修改鏈接按鈕時(shí),會(huì)跳轉(zhuǎn)到修改信息的頁(yè)面,重新填寫(xiě)好數(shù)據(jù)后,數(shù)據(jù)提交到后臺(tái)會(huì)對(duì)數(shù)據(jù)庫(kù)中相應(yīng)的記錄做出修改。
添加病歷時(shí),會(huì)給出數(shù)據(jù)填寫(xiě)的頁(yè)面,該頁(yè)面根據(jù)填寫(xiě)好的病歷編號(hào)同樣會(huì)事先發(fā)送Ajax請(qǐng)求查詢(xún)編號(hào)是否已存在,數(shù)據(jù)填寫(xiě)好之后提交到后臺(tái),會(huì)調(diào)用相關(guān)服務(wù)在數(shù)據(jù)庫(kù)中插入記錄。
病歷管理流程圖如下圖所示。
?
圖5-9病歷管理流程圖
病歷管理頁(yè)面設(shè)計(jì)效果如下圖所示。
?
圖5-10病歷管理界面
病歷管理界面邏輯代碼如下:
?@RequestMapping(value = {"/avg_group", "/avg"})
public Map<String, Object> avg(HttpServletRequest request) {
????????Query count = service.avg(service.readQuery(request), service.readConfig(request));
????????return success(count.getResultList());
}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 系統(tǒng)測(cè)試
對(duì)任何系統(tǒng)而言,測(cè)試都是必不可少的環(huán)節(jié),測(cè)試可以發(fā)現(xiàn)系統(tǒng)存在的很多問(wèn)題,所有的軟件上線(xiàn)之前,都應(yīng)該進(jìn)行充足的測(cè)試之后才能保證上線(xiàn)后不會(huì)Bug頻發(fā),或者是功能不滿(mǎn)足需求等問(wèn)題的發(fā)生。下面分別從單元測(cè)試,功能測(cè)試和用例測(cè)試來(lái)對(duì)系統(tǒng)進(jìn)行測(cè)試以保證系統(tǒng)的穩(wěn)定性和可靠性。
下表是病歷管理功能的測(cè)試用例,檢測(cè)了病歷管理中對(duì)病歷信息的增加,刪除,修改,查詢(xún)操作是否成功運(yùn)行。觀察系統(tǒng)的響應(yīng)情況,得出該功能也達(dá)到了設(shè)計(jì)目標(biāo),系統(tǒng)運(yùn)行正確。
前置條件;用戶(hù)登錄系統(tǒng)。
表6-1 病歷信息管理的測(cè)試用例
| 功能描述 | 用于病歷信息管理 | |
| 測(cè)試目的 | 檢測(cè)病歷信息管理時(shí)的各種操作的運(yùn)行情況 | |
| 測(cè)試數(shù)據(jù)以及操作 | 預(yù)期結(jié)果 | 實(shí)際結(jié)果 |
| 點(diǎn)擊添加病歷信息,必填項(xiàng)合法輸入,點(diǎn)擊保存 | 提示添加成功 | 與預(yù)期結(jié)果一致 |
| 點(diǎn)擊添加病歷信息,必填項(xiàng)輸入不合法,點(diǎn)擊保存 | 提示必填項(xiàng)不能為空 | 與預(yù)期結(jié)果一致 |
| 點(diǎn)擊修改病歷信息,必填項(xiàng)修改為空,點(diǎn)擊保存 | 提示必填項(xiàng)不能為空 | 與預(yù)期結(jié)果一致 |
| 點(diǎn)擊修改病歷信息,必填項(xiàng)輸入不合法,點(diǎn)擊保存 | 提示必填項(xiàng)不能為空 | 與預(yù)期結(jié)果一致 |
| 點(diǎn)擊刪除病歷信息,選擇病歷信息刪除 | 提示刪除成功 | 與預(yù)期結(jié)果一致 |
| 點(diǎn)擊搜索病歷信息,輸入存在的病歷信息名 | 查找出病歷信息 | 與預(yù)期結(jié)果一致 |
| 點(diǎn)擊搜索病歷信息,輸入不存在的病歷信息名 | 不顯示病歷信息 | 與預(yù)期結(jié)果一致 |
下表是醫(yī)生信息管理功能的測(cè)試用例,檢測(cè)了醫(yī)生信息管理中對(duì)醫(yī)生信息信息的增加,刪除,修改,查詢(xún)操作是否成功運(yùn)行。觀察系統(tǒng)的響應(yīng)情況,得出該功能也達(dá)到了設(shè)計(jì)目標(biāo),系統(tǒng)運(yùn)行正確。
前置條件;用戶(hù)登錄系統(tǒng)。
表6-2 醫(yī)生信息管理的測(cè)試用例
| 功能描述 | 用于醫(yī)生信息管理 | |
| 測(cè)試目的 | 檢測(cè)醫(yī)生信息管理時(shí)的各種操作的運(yùn)行情況 | |
| 測(cè)試數(shù)據(jù)以及操作 | 預(yù)期結(jié)果 | 實(shí)際結(jié)果 |
| 點(diǎn)擊添加醫(yī)生信息,必填項(xiàng)合法輸入,點(diǎn)擊保存 | 提示添加成功 | 與預(yù)期結(jié)果一致 |
| 點(diǎn)擊添加醫(yī)生信息,必填項(xiàng)輸入不合法,點(diǎn)擊保存 | 提示必填項(xiàng)不能為空 | 與預(yù)期結(jié)果一致 |
| 點(diǎn)擊修改醫(yī)生信息,必填項(xiàng)修改為空,點(diǎn)擊保存 | 提示必填項(xiàng)不能為空 | 與預(yù)期結(jié)果一致 |
| 點(diǎn)擊修改醫(yī)生信息,必填項(xiàng)輸入不合法,點(diǎn)擊保存 | 提示必填項(xiàng)不能為空 | 與預(yù)期結(jié)果一致 |
| 點(diǎn)擊刪除醫(yī)生信息,選擇醫(yī)生信息刪除 | 提示刪除成功 | 與預(yù)期結(jié)果一致 |
| 點(diǎn)擊搜索醫(yī)生信息,輸入存在的醫(yī)生信息名 | 查找出醫(yī)生信息 | 與預(yù)期結(jié)果一致 |
| 點(diǎn)擊搜索醫(yī)生信息,輸入不存在的醫(yī)生信息名 | 不顯示醫(yī)生信息 | 與預(yù)期結(jié)果一致 |
下表是病人掛號(hào)管理功能的測(cè)試用例,檢測(cè)了病人掛號(hào)管理中病人掛號(hào)訂單的操作是否成功運(yùn)行。觀察系統(tǒng)的響應(yīng)情況,得出該功能也達(dá)到了設(shè)計(jì)目標(biāo),系統(tǒng)運(yùn)行正確。
前置條件;用戶(hù)登錄系統(tǒng)。
表6-3 病人掛號(hào)管理的測(cè)試用例
| 功能描述 | 用于病人掛號(hào)管理 | |
| 測(cè)試目的 | 檢測(cè)病人掛號(hào)管理時(shí)各種操作的情況 | |
| 測(cè)試數(shù)據(jù)以及操作 | 預(yù)期結(jié)果 | 實(shí)際結(jié)果 |
| 未選擇病人掛號(hào),點(diǎn)擊提交 | 提示請(qǐng)選擇病人掛號(hào) | 與預(yù)期結(jié)果一致 |
| 未輸入時(shí)間,點(diǎn)擊提交 | 提示請(qǐng)輸入時(shí)間 | 與預(yù)期結(jié)果一致 |
使用阿里云PTS(Performance Testing Service)性能測(cè)試服務(wù)對(duì)線(xiàn)上系統(tǒng)進(jìn)行壓力測(cè)試。線(xiàn)上服務(wù)器環(huán)境為:1核心CPU,1G內(nèi)存,1Mbps公網(wǎng)帶寬,Centos7.0操作系統(tǒng)。
壓測(cè)過(guò)程中使用了2臺(tái)并發(fā)機(jī)器,每臺(tái)機(jī)器20個(gè)用戶(hù)并發(fā),對(duì)系統(tǒng)主頁(yè),登錄,數(shù)據(jù)查詢(xún)和數(shù)據(jù)維護(hù)等模塊進(jìn)行并發(fā)訪(fǎng)問(wèn),測(cè)試結(jié)果是有40個(gè)用戶(hù)并發(fā)時(shí),數(shù)據(jù)管理相關(guān)頁(yè)面的響應(yīng)時(shí)間甚至達(dá)到了7s,通過(guò)查看服務(wù)器出網(wǎng)流量發(fā)現(xiàn)已經(jīng)達(dá)到1381kb/s,可以看出服務(wù)器的帶寬已經(jīng)達(dá)到峰值,如果系統(tǒng)使用5Mbps的帶寬,系統(tǒng)的響應(yīng)時(shí)間和TPS將會(huì)大大增加。在整個(gè)測(cè)試的過(guò)程中,CPU的使用率占用僅8%,也提現(xiàn)出帶寬瓶頸對(duì)系統(tǒng)的影響非常嚴(yán)重。
隨著計(jì)算機(jī)互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,各行各業(yè)都已經(jīng)實(shí)現(xiàn)采用計(jì)算機(jī)相關(guān)技術(shù)對(duì)日益放大的數(shù)據(jù)進(jìn)行管理。該課題是研究電子病管理為核心展開(kāi)的,主要是為了實(shí)現(xiàn)線(xiàn)上病歷信息化管理的需求。
電子病歷管理APP的開(kāi)發(fā)是以Springboot框架,系統(tǒng)整體為B/S架構(gòu),數(shù)據(jù)庫(kù)系統(tǒng)使用MySQL。文中詳細(xì)分析了電子病歷管理APP的研究背景、研究目的和意義、開(kāi)發(fā)工具和相關(guān)技術(shù)以及系統(tǒng)需求、系統(tǒng)詳細(xì)設(shè)計(jì)和系統(tǒng)測(cè)試等等一系列內(nèi)容。系統(tǒng)實(shí)現(xiàn)了電子病歷管理APP所需的一些基本功能,并通過(guò)測(cè)試對(duì)這些實(shí)現(xiàn)的功能進(jìn)行了完善,進(jìn)而提高了系統(tǒng)整體的實(shí)用性。系統(tǒng)投入運(yùn)行時(shí),各功能均運(yùn)行正常。系統(tǒng)的每個(gè)界面的操作符合常規(guī)邏輯,對(duì)使用者來(lái)說(shuō)操作簡(jiǎn)單,界面友好。整個(gè)系統(tǒng)的各個(gè)功能設(shè)計(jì)合理,體現(xiàn)了人性化。但是由于自己在系統(tǒng)開(kāi)發(fā)過(guò)程中對(duì)一些用到的相關(guān)知識(shí)和技術(shù)掌握不夠牢固,再加上自身開(kāi)發(fā)經(jīng)驗(yàn)欠缺,因此系統(tǒng)在有些方面的功能還不夠完善,考慮的不夠全面,因此整個(gè)系統(tǒng)還有待日后逐步完善。
參考文獻(xiàn)
[1]唐世芳,倪芳,鄭川.檔案視角下電子病歷管理的問(wèn)題與對(duì)策[J].資源信息與工程,2022,37(01):156-158.DOI:10.19534/j.cnki.zyxxygc.2022.01.017.
[2]李俊峰.全面病歷質(zhì)量管理在住院病歷質(zhì)量控制的應(yīng)用研究[J].中國(guó)社區(qū)醫(yī)師,2021,37(36):181-183.
[3]宋文攀,梁坤,宋有彬,李海龍,高允鎖.基于霧計(jì)算的區(qū)塊鏈病歷管理架構(gòu)設(shè)計(jì)與應(yīng)用[J].中國(guó)衛(wèi)生質(zhì)量管理,2021,28(12):59-62.DOI:10.13912/j.cnki.chqm.2021.28.12.16.
[4]劉衛(wèi)蘭.基于J2EE的醫(yī)院病歷信息管理系統(tǒng)研究[J].電腦編程技巧與維護(hù),2021(12):79-80+96.DOI:10.16184/j.cnki.comprg.2021.12.029.
[5]倪靜,孫娜,蔡文軍,劉芳,劉小燕.新型冠狀病毒肺炎救治中病歷管理的探討[J].西南軍醫(yī),2021,23(Z1):490-491.
[6]孔麗惠,朱惠璇,何杏芳.批注式電子護(hù)理文書(shū)質(zhì)控方案在護(hù)理病歷管理中的應(yīng)用效果[J].護(hù)理實(shí)踐與研究,2021,18(19):2974-2976.
[7]逵建恒.醫(yī)院檔案信息化管理與電子病歷管理信息系統(tǒng)[J].電子技術(shù)與軟件工程,2021(19):180-181.
[8]曹笑霄,陳麗.三級(jí)病歷質(zhì)控體系與獎(jiǎng)懲細(xì)則在醫(yī)院病歷質(zhì)量管理中的應(yīng)用[J].中醫(yī)藥管理雜志,2021,29(18):170-171.DOI:10.16690/j.cnki.1007-9203.2021.18.084.
[9]王瑩.淺析基于電子病歷的醫(yī)療質(zhì)量管理平臺(tái)系統(tǒng)構(gòu)建和完善[J].電子元器件與信息技術(shù),2021,5(09):191-192.DOI:10.19772/j.cnki.2096-4455.2021.9.087.
[10]涂銀瑩.基于結(jié)構(gòu)化電子病歷的醫(yī)療質(zhì)量管理系統(tǒng)建設(shè)成效[J].電子技術(shù)與軟件工程,2021(18):172-173.
[11]崔尋吉.基于全媒體時(shí)代背景下醫(yī)院病歷檔案管理創(chuàng)新研究[J].黑龍江檔案,2021(04):146-147.
[12]王志強(qiáng),袁利君,廖雪姣,余萬(wàn)其,肖萬(wàn)玲,張淑琴,陽(yáng)靖.層級(jí)管理對(duì)門(mén)診電子病歷管理質(zhì)量的影響[J].中國(guó)衛(wèi)生標(biāo)準(zhǔn)管理,2021,12(12):15-18.
[13]游敏吉,管靜靜,翁曉華,吳繼敏,徐巧敏,陳琴.信息技術(shù)再造門(mén)診麻醉藥品專(zhuān)用病歷管理流程效果分析[J].中醫(yī)藥管理雜志,2021,29(11):190-191.DOI:10.16690/j.cnki.1007-9203.2021.11.084.
[14]潘芳云.基于結(jié)構(gòu)化電子病歷的醫(yī)療質(zhì)量管理系統(tǒng)建設(shè)的成效[J].中醫(yī)藥管理雜志,2021,29(11):174-175.DOI:10.16690/j.cnki.1007-9203.2021.11.076.
[15]萬(wàn)紅艷,黃勤慧,朱金君.現(xiàn)代化三級(jí)病歷質(zhì)控體系及獎(jiǎng)懲細(xì)則在我院病歷質(zhì)量管理中的應(yīng)用[J].中醫(yī)藥管理雜志,2021,29(10):147-148.DOI:10.16690/j.cnki.1007-9203.2021.10.067.
[16] Computers; Research from Peking Union Medical College Hospital Yields New Findings on Computers (Generation of a local lung respiratory motion model using a weighted sparse algorithm and motion prior-based registration)[J]. Journal of Mathematics,2020:
[17]張玉芬.現(xiàn)代化醫(yī)院電子信息工程建設(shè)與應(yīng)用管窺[J].電子元器件與信息技術(shù),2020,4(04):101-102+119.
致謝
本次設(shè)計(jì)歷時(shí)3個(gè)月。在這個(gè)畢業(yè)設(shè)計(jì)中,它離不開(kāi)指導(dǎo)教師的指導(dǎo),使事情基本順利。指導(dǎo)老師無(wú)論是在畢業(yè)設(shè)計(jì)歷經(jīng)中,還是在論文做完中都給了了我特別大的助益。另1個(gè)方面,教師認(rèn)真負(fù)責(zé)的工作姿態(tài),謹(jǐn)慎的教學(xué)精神厚重的理論水準(zhǔn)都使我獲益匪淺。他勤懇謹(jǐn)慎的教學(xué)育人學(xué)習(xí)姿態(tài)也給我留下了特別特別深的感覺(jué)。我從老師那里學(xué)到了很多東西。在理論和實(shí)踐中,我的技能得到了特別大的提高。在此,特向教師表示由衷的感激。
經(jīng)過(guò)對(duì)該畢業(yè)設(shè)計(jì)的全部研究和開(kāi)發(fā),我的系統(tǒng)研發(fā)經(jīng)歷了從需求分析到實(shí)現(xiàn)詳細(xì)功能,再到最終測(cè)試和維護(hù)的特殊進(jìn)展。讓我對(duì)系統(tǒng)研發(fā)有了更深層次的認(rèn)識(shí)。如今我的動(dòng)手本領(lǐng)單獨(dú)處理疑惑的本領(lǐng)也獲取到了特別大的演練學(xué)習(xí)增多,這是這次畢業(yè)設(shè)計(jì)最好的收獲。
最后,在整個(gè)系統(tǒng)開(kāi)發(fā)過(guò)程中,我周?chē)耐瑢W(xué)和朋友給了我很多意見(jiàn),所以我很快就確認(rèn)了系統(tǒng)的商業(yè)思想。在次,我由衷的向他們表示感激。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 點(diǎn)贊+收藏+關(guān)注??→? 私信領(lǐng)取本源代碼、數(shù)據(jù)庫(kù)
總結(jié)
以上是生活随笔為你收集整理的Springboot电子病历管理APP毕业设计源码010350的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Nosql之Redis的概念介绍+安装配
- 下一篇: windows使用WiFi-direct