《门诊电子处方系统大学论文.doc》由会员分享,可在线阅读,更多相关《门诊电子处方系统大学论文.doc(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、河北农业大学 本科毕业论文(设计)题 目: 门诊电子处方系统 摘要随着信息高速公路的建立,Internet的普及,网络技术的迅猛发展,人类社会已经进入了一个信息化社会。在当今时代看病就医是每个人都在所难免的事情,传统的就医流程中,挂号、取药、计费等环节,需要大量的人力物力,即浪费了资源,又存在很多缺陷和漏洞。因而,我们结合信息化技术开发了门诊电子处方系统。该系统大大的减少病人不必要的等待时间,使病人尽早尽快的就医;更好的保存了医生的处方,对以后的病例研究和事故查处都带来了极大的方便。本系统主要以j2EE作为开发基础,使用了struts+spring+hibernate框架实现。实现的电子处方系
2、统,进行了一定的优化设计,系统界面简洁,操作简单,容易使用。关键词:电子处方系统;数字化医院;信息化管理AbstructWith the establishment of the information highway, the popularity of the Internet, the rapid development of network technology, human society has entered an information society. In todays era of hospital is what everyone is inevitable, trad
3、itional medical treatment process, register, take medicine, billing, need a lot of manpower material resources, namely, wasted resources, and there are many defects and holes. Therefore, we combined with information technology development the outpatient electronic prescription system. The system gre
4、atly reduces the patient unnecessary waiting time, make the patients go to a doctor as soon as possible as early as possible; Better save the doctors prescription, to the following case study and accident investigation has brought great convenience.This system is mainly based on the development of t
5、he j2EE, the use of the struts + spring + hibernate framework implementation. Implementation of the electronic prescription system, has carried on the certain optimization design, the system interface is concise, simple operation, easy to use.Key words: electronic prescription system; Digital hospit
6、al; Information management目录1.引言11.1.课题背景11.2.课题目的和意义12.系统应用的关键技术12.1.JSP技术介绍12.1.1.JSP的概述12.1.2.JSP的运行机制12.2.J2EE概述22.2.1.J2EE简介22.2.2.J2EE的优势22.3.关于Struts22.3.1.Struts简介22.3.2.Struts的主要功能32.4.关于Spring32.4.1.Spring简介32.4.2.Spring带给我们什么32.5.关于Hibernate32.5.1.为什么引入hibernate32.5.2.使用Hibernate的好处42.6.T
7、omcat服务器42.6.1.Tomcat服务器简介43.系统需求分析43.1.整体需求43.2.使用电子处方后可达到的效果54.系统设计54.1.系统流程图54.2.总体功能结构图64.3.功能需求64.4.系统数据库模型设计74.4.1.数据库逻辑结构设计74.4.2.数据表详细说明85.系统详细设计125.1.系统详细设计总体概述125.2.开发前的配置准备125.2.1.导入ssh所需的jar包125.2.2.配置文件的引入125.2.3.配置文件的配置125.3.实体类的开发135.4.Dao层功能实现145.5.Biz层功能实现145.6.Action层功能实现155.7.Filt
8、er165.8.Interceptor165.9.二级缓存配置165.9.1.二级缓存的作用165.9.2.二级缓存的配置过程165.10.界面设计175.10.1.登录注册175.10.2.用户管理185.10.3.管理员管理195.10.4.功能管理206.整体分析246.1.设计亮点246.2.设计中存在的问题247.总结25参考文献26致谢271. 引言1.1. 课题背景在当今时代看病就医是每个人都在所难免的事情,普通的就医流程中,病人在挂号、就诊、缴费、取药上需要花很多的时间排队等候,而且医生的处方由于书写上的不规范导致难以辨认,病人无法了解到具体的药物品种,也很可能导致药房配药时有
9、配错、配多、配少的情况发生。由于处方是单片纸张想要永久保存下来非常困难,查询时也非常不便,给以后的病例研究和事故处理带来了比较大的困难和麻烦。随着信息高速公路的建立,Internet的普及,网络技术的迅猛发展,人类社会已经进入了一个信息化社会。随着计算机信息技术在各个领域的不断渗透, 医院信息管理系统被广泛应用。加快数字化医院的建设步伐,提高医院信息化管理水平成为了医院的发展趋势。门诊医师工作站作为医院信息系统的重要组成部分,是其信息化水平的重要标志。 1.2. 课题目的和意义门诊医师工作站作为医院信息系统的重要组成部分,是其信息化水平的重要标志。 其运行为医患双方带来了突破性的效益,特别是该
10、工作站子系统电子处方的应用对减少手写量、规范处方管理、缓解患者排队压力、提高取药速率及工作质量发挥了重要作用。门诊电子处方系统的使用,就会大大的减少病人不必要的等待时间,使病人尽早尽快的就医,而且此系统可以更好的保存医生的处方,对以后的病例研究和事故查处都带来了极大的方便, 加快数字化医院的建设步伐,提高医院信息化管理水平;为下一步的检验信息数字化和影像信息数字化打下坚实的基础。门诊电子处方系统是数字化医院系统不可分割的一部份,是全院数字化管理的基础,也是不可跨越的。2. 系统应用的关键技术2.1. JSP技术介绍2.1.1. JSP的概述JSP是新一代的动态内容编程技术,它继承了Java技术
11、的“一次编写,随处运行”的特性,允许Web开发人员开发和维护与平台无关,信息丰富动态的Web页面,包括HTML,DHTML,XHTML和XML,它能使Web开发人员轻易搭建网络平台,建立起功能强大的Web网站。JSP可以把用户界面从内容层次中分离出来,使得Web开发人员不必修改在底层的动态内容,就可以修改整体的页面布局。2.1.2. JSP的运行机制JSP文档被复制到Web服务器的文档目录中。当有人请求这个文档时,服务器识别出这个带有.jsp扩展名的文档,并意识到需要做特殊处理。第一次请求这个文档时,它被编译成一个servlet对象,并存储在内存中,然后输出内容回送给发出请求的客户机。第一请求
12、之后,只要有请求到来,服务器将进行检查,看看这个文件是否做过改动,如果没有变化,服务器调用先前编译过的servlet对象。2.2. J2EE概述2.2.1. J2EE简介J2EE(Java 2 Platform Enterprise Edition)是使用Java技术开发企业级应用的一种事实上的工业标准(Sun公司出于其自身利益的考虑,至今没有将Java及其相关技术纳入标准化组织的体系),它是Java技术不断适应和促进企业级应用过程中的产物。目前,Java平台有三个版本:适用于小型设备和智能卡的J2ME(Java 2 Platform Micro Edition)、适用于桌面系统的J2SE(J
13、ava 2 Platform Standard Edition)和适用于企业级应用的J2EE(Java 2 Platform Enterprise Edition)。Sun推出J2EE的目的是为了克服传统Client/Server模式的弊病,迎合Browser/Server架构的潮流,为应用Java技术开发服务器端应用提供一个平台独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和部署。J2EE是一个标准,而不是一个现成的产品。各个平台开发商按照J2EE规范分别开发了不同的J2EE应用服务器,J2EE应用服务器是J2EE企业级应用的部署平台。由于它们都遵循了
14、J2EE规范,因此,使用J2EE技术开发的企业级应用可以部署在各种J2EE应用服务器上。为了推广并规范化使用J2EE架构企业级应用的体系架构,Sun同时给出了一个建议性的J2EE应用设计模型:J2EE Blueprints。J2EE Blueprints提供了实施J2EE企业级应用的体系架构、设计模式和相关的代码,通过应用J2EE Blueprints所描述的体系模型,能够部分简化架构企业级应用这项复杂的工作。J2EE Blueprints是开发人员设计和优化J2EE组件的基本原则,同时为围绕开发工作进行职能分工给出了指导性策略,以帮助应用开发设计人员合理地分配技术资源。2.2.2. J2EE
15、的优势1) 高效的开发2) 持续性服务3) 支持异构环境4) 可伸缩性5) 稳定的可用性2.3. 关于Struts2.3.1. Struts简介Struts已逐步越来越多运用于商业软件,是一种非常优秀的J2EE MVC实现方式。Struts用Java Servlet/JavaServer Pages技术,开发Web应用程序的开放源码的framework。2.3.2. Struts的主要功能1) 包含一个controller servlet,能将用户的请求发送到相应的Action对象。2) JSP自由tag库,并且在controller servlet中提供关联支持,帮助开发员创建交互式表单应用
16、。3) 提供了一系列实用对象:XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息。Struts项目的目标是为创建Java web应用提供一个开放源代framework。Struts framework的内核是基于例如Java Servlets,JavaBeans, ResourceBundles和XML,以及各种Jakarta Commons包的标准技术的灵活的控制层。Struts提供了它自身的控制器组件,并整合了其他技术,以提供模型和视图。Struts已逐步越来越多运用于商业软件,是一种非常优秀的J2EE MVC实现方式。2.4. 关于
17、Spring2.4.1. Spring简介Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。2.4.2. Spring带给我们什么1) 方便解耦,简化开发2) AOP编程的支持3) 声明式事务的支持4) 方便程序的测试5) 方便集成各种优秀框架6) 降低Java EE API的使用难度7) Java源码是经典学习范例2.5. 关于Hibern
18、ate2.5.1. 为什么引入hibernate在B/S项目的开发中,和数据库的交互式不可避免的,J2EE的规范中提供了JDBC的接口来操作数据库,对于JDBC,开发人员可以获取数据库连接,然后向数据库发送SQL语句,并返回数据库操作的结果集,然后封装成对象返回给上层的应用程序。这就造成开发人员不但要求能够编写程序,熟悉业务逻辑,还要求开发人员同时能够担任DBA,对开发人员的要求很高;同时,当引入新的项目时,很多地方必须废弃,因为我们的代码中不光是业务逻辑,其中也嵌入了许多和底层有关的一些SQL代码;另外这些嵌入在代码中的SQL语句也影响了我们程序的可测试性,我们在对代码进行调试的时候,既要测
19、试代码,同时我们还要测试SQL语句。为了解决这些问题,引入了hibernate。2.5.2. 使用Hibernate的好处1) Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP(Bean-Managed Persistence)里面的访问数据库的代码。2) Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它
20、的Java程序,和Application Server没有任何关系,也不存在兼容性问题。3) Hibernate不能用来直接和Entity Bean做对比,只有放在整个J2EE项目的框架中才能比较。并且即使是放在软件整体框架中来看,Hibernate也是做为JDBC的替代者出现的,而不是Entity Bean的替代者出现的。4) 由于是对JDBC的轻易级封闭,内存消耗少,最快的运行效率。5) 开发效率高,Eclipse、JBuilder等主流JAVA集成开发环境对Hibernate有很好的支持,在大的项目,特别是持久层关系映射很复杂的情况下,Hibernate效率高的惊人。6) 分布式,安全检
21、查,集群,负载均衡的支持。2.6. Tomcat服务器2.6.1. Tomcat服务器简介Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。Tomcat中采用了Servlet容器:Catalina,完整的实现了Servlet2.3和Jsp1.2规范。Tomcat提供了各种平台的版本供下载,可以从其官方网站上下载其源代码版或者二进制版。由于Java的跨平台特性,基于Java的Tomcat也具有
22、跨平台性。3. 系统需求分析3.1. 整体需求设计并且实现一个基于web技术的网上电子处方系统。系统主要以j2EE作为开发基础,使用tomcat、myeclipse、oracle等工具,程序中使用了struts、spring、hibernate等框架实现后台开发,使用jquery进行前台的开发。实现用户的登陆、注册、挂号、处方录入、配药管理、收费管理、退药、查询等功能。3.2. 使用电子处方后可达到的效果1) 方便患者,加快患者就诊流程。2) 医生熟悉电子处方系统后,通过疾病知识库的使用和处方模板的使用可加快开处方速度。3) 加快数字化医院的建设步伐,提高医院信息化管理水平;为下一步的检验信息
23、数字化和影像信息数字化打下坚实的基础。4) 减少处方流失。5) 加快配药流程,处方收费后便可配药了,当病人到药房时有时便可取药了。6) 门诊电子处方系统是数字化医院系统不可分割的一部份,是全院数字化管理的基础,也是不可跨越的。4. 系统设计4.1. 系统流程图系统从实际的需求出发,与传统的就医流程相匹配,以挂号,医生开具处方,收费管理,配药管理为主要流程,并在此流程的基础上为系统添加了很多的辅助功能,使系统的可用性大大提高,具体流程如下图:图1 系统流程图4.2. 总体功能结构图系统主要分为两大功能模块:用户管理模块和功能管理模块,用户管理又分为信息查询管理、管理员管理和用户信息管理,功能管理
24、分为挂号管理、处方管理、费用管理和处方管理,具体功能划分如下图:电子处方系统功能管理挂号管理处方管理其他用户管理信息查询用户信息管理管理员管理挂号记录挂号信息管理中药处方管理西药处方管理配药管理查询挂号信息用户查询用户类型科别设置用户信息查看修改用户登录用户注册用户信息的查看与修改费用管理图2 系统功能结构图4.3. 功能需求1) 门诊挂号主要负责门诊挂号磁卡的管理,患者的注册登记,登录和患者姓名、性别、年龄、地址、电话等具体个人信息的录入,增加,删除和修改,患者对自己信息的查询,患者身份识别,挂号登记。2) 处方录入主要包括对患者以往病历的查询,医生对患者病情的记录登记,医生的处方录入,完成
25、后打印签字,以及对相互作用药物的检查。3) 门诊收费完成处方输入后,直接传送至收费处,自动算出此次处方金额。病人凭磁卡或挂号单到收费处缴费。4) 配药管理当患者缴费后,缴费信息和处方一同发送至药房,药师开始配药,配药完成后, 由药师核对患者信息无误后发药。5) 退药当配药错误,开的处方有误或者其他特殊情况,重开处方、重新配药。6) 查询查询包括处方查询和药品查询。处方查询指可根据处方号、流水号、挂号日期、病人姓名等检索条件查询处方,为病人提供用药咨询或解决退药等问题。药品查询可提供关于医院药品的规格、包装、零售价等信息。4.4. 系统数据库模型设计4.4.1. 数据库逻辑结构设计表1 总表概述
26、编号名称说明表2hospital_userType用户类型表表3hospital_xuexing血型表表4hospital_medical_service科别表表5hospital_user用户信息表表6hospital_age年龄表表7hospital_doseType剂型表表8hospital_unit单位表表9Hospital_medicine药品表表10hospital_medicineZh中药表表11hospital_usageAndDosage用法用量表表12hospital_medicin_usage药品用法表表13hospital_diagnosis诊断表表14hospital
27、_medicalRecord病历表表15hospital_freeType费别表表16hospital_prescription处方表表17hospital_itemXi西药处方项表18hospital_itemZh中药处方项表19hospital_registration挂号表表20hospital_marital_status婚姻状态表4.4.2. 数据表详细说明用户类型表(hospital_userType)记录用户类型分类,具体情况如表2:表2用户类型表字段名数据类型是否为空描述说明idint否编号,主键typevarchar2否类型名称血型表(hospital_xuexing)记录血
28、型分类,具体情况如表3:表3 血型表字段名数据类型是否为空描述说明idint否编号,主键typevarchar2否类型名称科别表(hospital_medical_service)记录科别分类,具体情况如表4:表4 科别表字段名数据类型是否为空描述说明idint否编号,主键namevarchar2否类型名称numnumber否就诊人数用户表(hospital_user)记录用户的基本信息,具体情况如表5:表5 用户表字段名数据类型是否为空描述说明idint否编号,主键usernameVarchar2否注册名passwordVarchar2否密码nameVarchar2否真实姓名idcardVa
29、rchar2否身份证号weightnumber是体重Xuexing_idint是血型,外键SexVarchar2是性别nationVarchar2是民族jobVarchar2是工作telephoneVarchar2是电话addressVarchar2是地址emailVarchar2是邮箱maritalStatus_idint是婚姻状态,外键medicalService_idint是科别,外键lastTimedate是最后一次就诊时间allergiesVarchar2是过敏史年龄表(hospital_age)记录用户年龄,具体情况如表6:表6 年龄表字段名数据类型是否为空描述说明idint否编号
30、,主键,外键countnumber否数值UnitVarchar2否单位剂型表(hospital_doseType)记录剂型分类,具体情况如表7:表7 剂型表字段名数据类型是否为空描述说明idint否编号,主键typevarchar2否类型名称单位表(hospital_unit)记录单位分类,具体情况如表8:表8 单位表字段名数据类型是否为空描述说明idint否编号namevarchar2否类型名称药品表(hospital_medicine)记录合成药品信息,具体情况如表9:表9 药品表字段名数据类型是否为空描述说明idint否编号,主键barcodevarchar2否类型名称namevarch
31、ar2否药品名称pinyinmavarchar2否拼音码specificationvarchar2否规格Unit_idint是单位,外键doseType_idint是剂型,外键remarksvarchar2是说明中药表(hospital_medicineZh)记录中药药品信息,具体情况如表10:表10 中药表字段名数据类型是否为空描述说明idint否编号,主键namevarchar2否药品名称pinyinmavarchar2否拼音码remarksvarchar2是说明用法用量表(hospital_usageAndDosage)记录用法用量,具体情况如表11:表11 用量用法表字段名数据类型是否
32、为空描述说明idint否编号typevarchar2否类型名称pinyinmavarchar2否拼音码药品用法表(hospital_medicine_usage)记录用法用量,具体情况如表12:表12 药品用法表字段名数据类型是否为空描述说明Medicine_idint否药品编号Usage_idint否用法编号诊断表(hospital_diagnosis)记录诊断结果条目,具体情况如表13:表13 婚姻状态表字段名数据类型是否为空描述说明idint否编号namevarchar2否类型名称medicalService_idint否科别,外键病历表(hospital_medicalRecord)记
33、录病历的相关信息,具体情况如表14:表14 病历表字段名数据类型是否为空描述说明idint否编号Patient_idint否类型名称medicalService_idvarchar2否拼音码Create_datedate否创建时间chief_complaintvarchar2是主诉firstOrNotvarchar2是初诊复诊hpivarchar2是现病史past_historyvarchar2是既往史personal_historyvarchar2是个人史family_historyvarchar2是家族史historyOfMarriagevarchar2是婚姻史physical_exami
34、nationvarchar2是体格检查auxiliary_examinationsvarchar2是辅助检查clinical_diagnosisvarchar2否临床诊断doctor_idint否医师费别表(hospital_freeType)记录费别分类,具体情况如表15:表15 费别表字段名数据类型是否为空描述说明idint否编号typevarchar2否类型名称处方表(hospital_prescription)记录处方主体信息,具体情况如表16:表16 单位表字段名数据类型是否为空描述说明idint否编号,主键doctor_idInt否医师patient_idInt否患者freeTyp
35、e_idInt否费别protectedCardVarchar2否医疗证号remarksVarchar2是说明totalPricenumber否总价check_idint是检查verify_idint是核对pharmacist_idint是收费dispensing_idint是配药西药处方项表(hospital_itemXi)记录西药处方的每一项,具体情况如表17:表17 西药处方项字段名数据类型是否为空描述说明idint否编号,主键prescription_idInt否处方medicine_idInt否药品medicine_specificationVarchar2否规格countVarcha
36、r2否数量Usage_idInt否用法中药处方项表(hospital_itemZh)记录中药处方的每一项,具体情况如表18:表18 中药处方项字段名数据类型是否为空描述说明idint否编号,主键prescription_idInt否处方medicine_idInt否药品weightnumber否重量unitVarchar2否单位UsageVarchar2否用法挂号表(hospital_registration)记录挂号的信息,具体情况如表19:表19 挂号表字段名数据类型是否为空描述说明idint否编号,主键patient_idInt否患者medicalService_idInt否科别numn
37、umber否号码sdatedate否时间婚姻状态表(hospital_marital_status)记录婚姻状态分类,具体情况如表20:表20 婚姻状态表字段名数据类型是否为空描述说明idint否编号,主键typevarchar2否类型名称5. 系统详细设计5.1. 系统详细设计总体概述本系统要求设计并且实现一个基于web技术的网上电子处方系统。并且实现完全的使用了ssh框架,并mvc分层的基础上,将系统进一步的划分成了dao、biz、action、view。在dao中采用hibernate框架对其实现,action和view采用structs2框架实现,各层中使用spring进行对象的注入使
38、系统的耦合度降低,并且使用spring的DI(动态代理)实现对事务的控制。为了提高系统的效率,在程序中配置了hibernate的二级缓存,存放一些不畅改变的数据。View层采用javaScript使用界面的交互性更强,操作更加方便,使用的更加流畅、舒适。5.2. 开发前的配置准备5.2.1. 导入ssh所需的jar包1) ssh所需的jar包共计31个2) oracle数据库的jar包1个(ojdbc14.jar)3) hibernate二级缓存所需jar包1个(ehcache-1.2.3.jar)4) 整合jar包1个(structs2-spring-plugin-2.3.8.jar)5.2
39、.2. 配置文件的引入1) Structs.xml structs2框架的配置文件2) applicationContext.xml spring框架的配置文件3) ehcache.xml hibernate二级缓存的配置文件4) hospital.hbm.xml数据库映射文件5) 没有hibernate的配置文件因为它的配置信息在spring 的配置中配置5.2.3. 配置文件的配置1) 在web.xml中配置如下信息:org.springframework.web.context.ContextLoaderListenercontextConfigLocationclasspath:con
40、figure/applicationContext.xmlstruts2org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterstruts2/*2) 在structs.xml中配置3) 在spring中配置连接池5.3. 实体类的开发1) 编写一个类实现Serializable接口并按照javabean的规范进行实现添加set、get方法,程序如下:public class Diagnosis implements Serializableprivate String name;public String ge
41、tName() return name;public void setName(String name) this.name = name;5.4. Dao层功能实现1) 编写一个接口,在里面编写要实现的功能(即对数据库完成哪些操作),程序如下:public interface DiagnosisDao public void saveDiagnosis(Diagnosis diagnosis);2) 编写一个class实现上面定义的接口,用hibernate(spring中hibernateTemplate)去实现对数据库数据的操作,程序如下:public class DiagnosisDa
42、oImpl implements DiagnosisDao private HibernateTemplate hibernateTemplate;Overridepublic void saveDiagnosis(Diagnosis diagnosis) / TODO Auto-generated method stubhibernateTemplate.save(diagnosis);3) 在spring的配置文件中配置hibernateTemplate,程序如下:bean id=sessionFactoryclass=org.springframework.orm.hibernate3.Local