医院病房管理系统设计与实现

发布时间:2016-06-09 23:43:21

医院病房管理系统的设计与实现

专业:

班级:

姓名:

引言......................................................................................................................3

1系统开发及主要技术介绍..............................................................................5

1.1 系统运行环境................................................................................................5

1.1.1系统硬件环境...........................................................................................5

1.1.2系统软件环境...........................................................................................5

1.2 B/S框架介绍..................................................................................................6

1.3 MYSQL介绍 ................................................................................................6

1.4 MyEclipse介绍...............................................................................................7

1.5 Tomcat介绍....................................................................................................7

2 系统开发的技术分析......................................................................................9

2.1需求分析........................................................................................................9

2.1.1系统概述..................................................................................................9

2.1.2系统总体需求................................................................... . ..................... 9

2.2 MVC模式构架..............................................................................................11

3系统设计..........................................................................................................13

3.1 系统功能设计...............................................................................................13

3.2数据库物理实现............................................................................................14

3.3系统数据库设计............................................................................................15

3.3.1系统库E-R图设计..................................................................................15

3.3.2系统数据字典..........................................................................................19

3.3.3数据库结构表设计...................................................................................22

3.4 出错结构设...............................................................................................25

3.4.1出错信息................... ...... ......................................................................26

3.4.2补救措施................... ...... ......................................................................26

3.4.3系统维护设计..........................................................................................27

3.5 项目包名约定................................................................................................27

3.6 重要功能配置文件一览表及说明.....................................................................28

4系统实现..........................................................................................................29

4.1软件结构.......................................................................................................29

4.2界面设计.......................................................................................................29

4.2.1具体功能介绍.........................................................................................30

4.2.2设计思路................................................................................................33

4.2.3技术要点................................................................................................33

4.3系统信息管理模块设计..................................................................................34

4.3.1功能介绍.................................................................................................34

4.3.2设计思路.................................................................................................34

4.3.3技术要点.................................................................................................35

4.4病房日常管理模块设计...................................................................................35

4.4.1功能介绍.................................................................................................35

4.4.2设计思路..................................................................................................36

4.4.3技术要点..................................................................................................36

4.5财务信息管理模块设计...................................................................................37

4.5.1功能介绍................ .................................................................................37

4.5.2设计思路................ .................................................................................37

4.5.3技术要点................ .................................................................................37

5系统测试...........................................................................................................38

5.1系统测试简介.................................................................................................38

5.2系统综合测试.................................................................................................39

5.2.1 登录及主界面测试............................. ......................................................39

5.2.2系统信息管理测试.................................... ........ ........ ..............................40

5.2.3病房日常信息管理测试..............................................................................41

5.3测试总结.........................................................................................................44

结论......................................................................................................................45

致谢.......................................................................................................................46

参考文献...............................................................................................................47

附录 部分程序代码...........................................................................................49


医院病房管理系统是一个人们通用的管理信息系统(MIS)它是由一个普通的人,一台计算机可以执行医院病房管理和病人信息的采集、传输、存储、处理,并且可以维护和使用的管理系统这个系统的组成主要包括后台数据库的建立和前台应用程序的开发两个方面。程序的设计开发需要完整并且强大的数据数据库的安全性是最重要的,而对于本系统则要求具有完整功能的应用程序,操作简单人性化的设计界面。我们的这个系统采用办公自动化的现代计算机理念,实现了无纸化办公,节省了大量的时间,确保医疗单位在病历保持的管理上保证高效办公且安全所以需要建立数据一致性和完整性,数据安全性好的数据库

我根据用户对医院病房管理的实际需求和设计要求,经过认真分析,完成了面向医院的病房管理的需求分析、功能模块划分、数据库模式分析等各项工作,并根据应用程序和数据库的要求建立程序。本系统采用开源社区提供Eclipse作为前台应用程序开发工具,使用MySQL后台数据库的设计实现,并使用Hibernate配置文件的形式在前台和后台数据库连接来完成程序。

本着具有很强的实用性,可扩展性和可维护性,安全可靠,简单的操作界面的设计路线,该系统能够满足医院的病人信息加、删除、查修改等操作要求,使用户管理的医院病人数据存储更方便,快捷的软件软件。

关键词:

医院病房管理系统;MySql数据库;网站设计;B/S架构;JSP技术

Abstract

Hospital ward management system is a general management information system (MIS), it is by an ordinary person, and a computer can perform the hospital ward management and patient information collection, transmission, storage, processing, maintenance and use of management system management system. The composition of this system mainly includes the backstage database the establishment and the foreground application development two aspects. Program design and development need to complete and powerful data, database security is one of the most important, and for this system requires the application with complete functions, simple operation humanized interface design Our system USES the modern computers of the office automation concept, realize the paperless office, save a lot of time, to ensure that the medical units on the management of the medical record keeping to ensure safe and efficient office. So you need to establish data consistency and integrity, data security good database.

I according to the actual needs of users for the hospital ward management and design requirements, after careful analysis, completed the hospital ward management oriented requirements analysis, functional module division, database model analysis and so on each work, and according to the requirement of the application and the database program. This system USES the open source community provides Eclipse as foreground application development tools, MySQL backstage database design, and use the Hibernate configuration file form to complete the program in the foreground and background database connection.

In the spirit of strong practicality, scalability and maintainability, safe and reliable, simple operation interface design line, the system can meet the needs of hospital patient information such as add, delete, search, modify the operating requirements, the user management of hospital patient data storage more convenient, efficient software software.

Keywords:

The hospital ward economics service network;MySql Database;Website Design;B/S architecture;

JSP technology

上世纪五十年代,世界上第一台名为的ENIAC计算机在美国宾夕法尼亚大学诞生,经过半个多世纪的不断改进和发展,计算机科学已经成为当今社会最精尖的科学技术之一,其科技产品也广泛的应用于人类生产、生活的各个领域。小到生活中的衣食住行,大到工作学习,计算机在我们的日常活动中扮演着基础的但又必不可少的角色[1]

作为世界上增长最快的计算机科学分支,软件工程对人们的日常工作、学习和生活产生了非常大的影响,利用它对应用程序的原理和技术,影响了各种应用在许多专业工作中的显著简化程序,也为人们提供了广泛的娱乐享受结合自己的主修专业——计算机科学与技术,本人想具体研究一下计算机科学,尤其是最实用的软件工程技术,在临床医学上的应用。

在面对当今社会地位、社会医疗资源配置失衡的情况下,一些医疗条件相对较好的医院住院部往往是拥挤不堪的。对于每一个医疗病人,医院都储存了大量的信息。这些数据由医院出院后的患者继续保持,在未来继续治疗或发生法律纠纷的基础上,是有价值的信息,也是临床医学研究中非常宝贵的资源,它是循证医学的良好临床证据。

对于这样一个庞大而复杂的信息和记录,开发有针对性的应用软件系统,对患者的安全性进行数据、有序记录和管理,并提供简单的查询和统计计算,大大方便了医生的查询和临床研究分析,这是一个非常科学和实用的方法。由此,将以——医院病房管理系统——本次研究的课题,针对此次应用软件的开发进行说明和分析。

医院病房管理系统是通过计算机系统管理,完成了传统的信息采集、传输、存储、处理、维护和使用的医院科室。根据系统提供的数据,医生可以经过仔细的分析、诊断和治疗的方向,或用其提供的大量样本进行临床试验和其他研究。就其本质而言,它是一个典型的管理信息系统(MIS)。

1系统开发及主要技术介绍

1.1系统运行环境

1.1.1系统硬件环境

因为这个软件开发之后是给医院使用,因此必须要确保整个系统的稳定性,尽可能使用要求这种系统的硬件的要求,主要目的是使程序的功能能够完美展现只有在特定的软件环境下系统的性能才能完全发挥

具体要求如表1所示。

1 系统服务器配置表

1.1.2系统软件环境

操作系统:Windows XP.

数据库:Mysql

开发工具:MyEclipse10.0 GA

运行工具:IE 9.0

服务器:Tomcat 7.0

我用Java语言开发,并使用mysql数据库,这样系统就可以在其它平台上完全可以使用。但由于绝大多数当前企业和办公室的使用的电脑是Windows操作系统系列机组,需要根据实际情况,我决定把Windows作为我这次的操作系统平台。使该系统投入使用之后,能够达到最佳的效果。

1.2 B/S框架介绍

B/SBrower/Server的缩写,计算机可以安装OracleSybase MySQLSQL Server数据库。在框架结构系统的运行界面可以完全通过WWW浏览器显示出来,根据前面的一些事务逻辑,一些界面上显示的主要业务逻辑服务器。浏览器通过网络服务器和数据库的数据通信[2]

B/S架构相对于C/S架构具有许多的优点:

B / S架构的建立条件十分简单,它并不需要处理的具体的硬件环境,比使用C / S架构的具有较广的范围,一般只需要具有较为基本操作系统和浏览器

B / S组件组成可实现医院病房管理系统的快速升级,便于更换元件的网络管理。用户可以升级和改造,从而达到系统的维护和日常管理成本最低。C / S程序更加的完整但是它必须进行全面调查,在处理各种问题发生和系统升级,B / S架构是比较困难的。

B / S架构是在广域网建设的基础上建立的,是用户所需的各个群体,散落区域,这是C / S架构所没有的

基于浏览器采用B/ S架构,可以更加丰富生动的形式与用户沟通。大多数C/ S架构是基于Windows平台上,通过界面显示的要求相对较高,对程序员的技术要求是非常高的。

1.3 MySQL介绍

MySQL是一个很好的SQL数据管理系统,它不是开源软件,但通常的情况下,你可以完全自由地使用。在其强大的功能、视图操作灵活、丰富的应用编程接口(API)和优雅简洁的系统,由许多软件开发者,甚至商业软件用户的喜爱,尤其是ApachePHPPerl的联系,基于数据库的网站提供了一个非常强大的动力。MySQL是一个真正的多线程多用户SQL数据库系统。 SQL结构化查询语言是目前世界上流行和标准数据库处理语言,MySQL是根据服务器实现的需求,它由一个一般的服务器守护程序MySQL和许多完全不同的用户程序共同组成

MySQL的主要优点是使用简单,强大的功能和精美的界面。一个SQL服务器,它可以任何硬件平台自由的使用,他拥有一个庞大的数据库和一个非常强大的数据库供应商。它使我们的开发速度更快,MySQL更适用于我们这些新的开发者使用自从软件开发以来从开始到结束都使用MySQL,在其运行环境中,他的数据存储中有超过40个数据库,数据库中包含10,000个表,而且其中500多个表有超过7百万行,所以它拥有超过100个吉字节(GB)的关键应用数据[3]

1.4 MyEclipse介绍

MyEclipse的企业发展平台(MyEclipse的简称)是Eclipse IDE的扩展,我们可以运用他自身所携带的数据库和控件进行程序的编写和运行这使我们对于程序的开发速度得到极大的提高[4]他的开发环境功能非常齐全,能够完全满足我的开发需要我所需要的就是这种可以具备所有功能的开发软件可以进行所有的增加或者删除等功能的软件。完全支持HTMLStrutsJSFCSSJavascript代码,SQL等。MyEclipseEclips的一款插件,这个软件也是一个能够修改的软件,在软件上我们可以对程序进行添加,删除和修改等一系列操作。

1.5 Tomcat介绍

Tomcat服务器是一个免费的开源Web应用服务器,他的占用空间小且被人们普遍应用,当你的程序所需用户不是很多的时候可以选用他作为服务器受到大多数人的青睐。对于刚刚学学的我我使用Apache服务器是完全可以的,可以使用它的HTML页面的需求分析功能进行编写事实Tomcat的部分是Apache服务器的功能上的延伸但是他还是一个单独出来的设计程序所以当运行Tomcat服务器时可以用作使用Apache单独的进程为单独运行。当配置正确时Apache服务HTML页面和Tomcat实际上运行ServletJSP页面。同时,TomcatIISApache Web也是相同的服务器。

2系统分析

2.1需求分析

2.1.1系统概述

现在社会医疗的技术水平不断的发展,不断完善,但是好多的医院还在使用原始的纸张记录方式这种方式造成了工作效率的地下大量的资源被浪费,已经无法跟上时代的脚步了在信息化普及的社会中,这种原始的记录方法必将被取代,所以我根据医院住院部目前的实际管理情况进行开发这一款医院病房管理系统

根据现在社会和客服的需求,课题主旨与用我所学习的知识开发出一款用于病房管理的管理信息软件系统。通过这款软件可以完全改变那些原始的记录方式,使人力和物力得到很大的解放,为医院和个人节省了许多的成本和资源,同时也会对社会做出贡献,我的目标就是实现医院的无纸化办公,高效率,安全存储的目标。

2.1.2系统总体需求

设计一个系统的最根本的目的就是达到客户所需要的要求,根据用户的要求设计出需求分析,建立出完整的数据模型。数据模型是一个程序的灵魂,这个灵魂主导着程序的设计和运行,我们现在所要做的就是数据模型的建立,通过对本次设计用户的要求分析,现在将医院病房管理系统分为以下四个主要的功能模块:

1)新入院病人信息输入模块

医院每天都会有许多新入院的病人,这个模块的主要功能是对新入院病人信息的录入,包括病人的姓名,生日,住址,电话等一些基本的记录,这也是使用者最常使用的,也是病人入院所需要进行的第一项,所有我将这个模块放在第一个,并且作为单独的模块列出。

2)病人信息查询管理模块

这个模块是最重要的模块,病人入院后的所有治疗和购买记录都在这个模块,通过这个模块可以对病人的病程和日常信息进行记录,这是医生治疗病人的查询依据,这其中包括包括:患者信息检查,变更,记录,检查等方面。模块再细化成为病人信息和病程记录两个小的子模块。

3)医院信息查询模块

本模块主要记录了医院的各项信息,包括病房地址,医护人员的信息,具体科室信息查询等,方便管理者掌握医院的信息,同时也方便病人选择医护人员,病人入院后可以对自己的医生和护理人员进行选择,通过本模块可以详细了解各项情况,使使用者对医院有更直观的认知因此将本模块分为职工信息查询、病房信息查询和科室信息查询三个小的子模块

4)系统管理模块

为了使程序更加的安全和具有效率,我设计了这个模块,这个模块主要用户用户的登录和密码修改等,子用户可以对自己密码进行修改,这样就大大增加了信息的安全程度,病人的信息属于个人隐身,该模块有效的保证了病人的信息的安全。所以我将该模块分为修改密码,职工表维护,病房表维护,四个小的模块用以保护系统的安全性。新用户的增加在系统界面下不可以进行修改如果想要添加新的用户只有系统管理员可以从后台数据库中直接添加

为了能够更好的表达我的设计理念,我首先设计出了模块结构图,这样能够直观的表现出系统的各项功能,并绘制医院病房管理系统的模块结构的整体设计如下,三个主要的功能模块将在系统运行主菜单无线接口如下图

1 系统总体模块结构图

2.2可行性分析

技术可行的性:电脑本身的管理体制没有太多的硬件需求,基本的计算机办公软件的安装就行了,当前配置的计算机和计算机的每所学校完全满足个人使用的需要。对于软件的技术开发,目前使用的编程语言环境都达到了非常成熟的,JDBC数据库使用MySQL的基本工具,使用HTML模式提供的数据库[5]。建立健全和完善网站的图形和动画文件技术完全能够满足要求。

经济可行性:针对本系统为了便于使用者装有相应的应用软件,简单可行,成本是主要以生产软件开发过程中,经过该系统可以投入运行,可以很大程度上解决传统方法的弊端物力和财力的相应方面的浪费。此外,该系统基本不需要花费在日常维护,主要是为了省钱,将远远大于在软件开发成本用更大。完全可行的经济。

操作可行性:接口设计的界面简洁,轻松地为运营商降低了大量的复杂的时间,进入主页面采用静态破的方法,也使得进行操作,检查数据管理简便,易于扩大。操作是完全可行的

3 系统设计

3.1 系统功能设计

现在将本次医院病房管理系统分为下面四个主要功能模块,其中每个模块所包括的主要内容如下:

1)新入院病人信息录入模块

医院每天都会有许多新入院的病人,这个模块的主要功能是对新入院病人信息的录入,生日,住址,电话等一些基本的记录,这也是使用者最常使用的,也是病人入院所需要进行的第一项,所有我将这个模块放在第一个,并且作为单独的模块列出。

2)病人信息查询管理模块

这个模块是最重要的模块,病人入院后的所有治疗和购买记录都在这个模块,通过这个模块可以对病人的病程和日常信息进行记录,这是医生治疗病人的查询依据,这其中包括包括:患者信息检查,变更,记录,检查等方面。模块再细化成为病人信息和病程记录两个小的子模块。

3)医院信息查询模块

本模块主要记录了医院的各项信息,包括病房地址,医护人员的信息,具体科室信息查询等,方便管理者掌握医院的信息,同时也方便病人选择医护人员,病人入院后可以对自己的医生和护理人员进行选择,通过本模块可以详细了解各项情况,使使用者对医院有更直观的认知因此将本模块分为职工信息查询、病房信息查询和科室信息查询三个小的子模块

4)系统管理模块

为了使程序更加的安全和具有效率,我设计了这个模块,这个模块主要用户的登录和密码修改等,子用户可以对自己密码进行修改,这样就大大增加了信息的安全程度,病人的信息属于个人隐身,该模块有效的保证了病人的信息的安全。所以我将该模块分为修改密码,职工表维护,病房表维护,四个小的模块用以保护系统的安全性。新的用户信息在本界面是无法对信息进行修改的新的用户添加只能由管理员在后台进行一系列操作进行添加和修改等

3.2 数据库物理实现

通常我们所说的数据库管理系统,操作系统和硬件环境已经确定了数据库的设计,我们表示用户的需求来进行设计,同时需求可以转换到正确的数据库结构设计,建立数据库模型所需,我们通常称为数据库设计的过程。数据库和数据库应用系统的开发过程中,通常被分为两个主要阶段:第一是在数据库系统的详细设计阶段的数据;二是针对于数据库系统进行操作,运行和维护阶段的设计[6]。根据数据库设计任务的要求,是基于企业信息化的需求,处理需求,并支持建立数据库环境,同时这也是动态的要求。

对数据库的具体设计主要体现在下面两方面的介绍:

结构(数据)设计:指的就是对数据库的框架和结构进行的设计,数据库必须能够保证程序的调用,必须保证每个子程序的自由存取调用,它的结构设计必须是安全并且稳定的。所以结构设计的完全合理性必须得到保证,只有这样才能让程序正常的运行和存取数据,它在一定的程度对程序的运行起着决定性的作用,它是一个完整系统的后盾,就好像行军打仗一样,必须保证后方的稳定,才能取得胜利。我们的数据库就是这样的一个结构。

运行(处理)设计:它是一个程序的核心,一个程序的运行方式和结果等都都由它来决定,设计必要要保证通畅,系统才能狗完美的运行,用可以自由的进行存取操作。同时数据与程序必须完美的结合,这样既加快了运行的速度,同样也保证了系统和资料的安全。

3.3系统数据库设计

指的就是对数据库的框架和结构进行的设计,数据库必须能够保证程序的调用,必须保证每个子程序的自由存取调用,它的机构设计必须是稳定且安全的。所以我们必须保证结构设计的完全合理,只有这样才能让程序正常的运行和存取数据,它在一定的程度对程序的运行起着决定性的作用,它是一个完整系统的后盾,就好像行军打仗一样,必须保证后方的稳定,才能取得胜利。我们的数据库就是这样的一个结构。一个好的数据可以极大程度上增加系统的运行效率。

3.3.1数据库E-R图设计

通俗的来讲,概念图就是将程序实体化呈现在需求者的面前,他能够清晰的表达出客户的需求,我们根据用户的要求建立相应的概念图,它反映出在进行特定操作时系统所运行的轨迹和执行的命令,就好像幻想具现化一样概念中最常用的方法的设计是实体关系(ER),设计所需求ER模型,实体属性图表示的概念结构,获取数据库模型的概念[7]

ER模型中包含实体联系属性。在本系统中,多对多的关系用(m-n做以表示。本系统的主要的实体有病人,部门,药品,职工,用户,账单,病房,病程记录,病程记录明细等。概念图将详细表示出每个实体之间的属性关系,并且将每个实体的属性进行了逐个的说明和表示,实体ER图如下所示:

2 病人实体属性图

3 部门实体属性图

4 药品实体属性图

5 用户实体属性图

6 职工实体属性图

7 账单实体属性图

8 病程记录实体属性图

9 病程记录明细实体属性图

10 病程记录明细实体属性图

11 系统总体E-R

3.3.2 系统数据字典

数据字典就是将在程序中出现的所有的名词进行一一的解释,向用户清晰的展示出每个实体的属性,以文字的方式进行完美的诠释。

数据字典部分如下:

1 用户信息表

2 病房信息表

3 职工信息表

4 科室信息表

5 病人信息表

6 病程记录信息表

7 病程记录明细信息表

8 药品信息表

9 科室信息表

3.3.3数据库结构表设计

数据库(DataBaseDB)是指在计算机的存储设备上合理存放的相关联的有结构的数据集合。一个数据库含有各种成分,包括表、视图、存储过程、记录、字段、索引等[8]

10 病人

11 药品信息

12 科室信息表

13 用户信息

14 病房信息

15 职工信息

16 病程记录信息

17 病程记录明细信息

18 账单信息

3.4出错结构设计

3.4.1 出错信息

只要是人就会犯错误,程序和人都是一样的,不可避免的会出现一些错误,当出现错误时我们就需要一个详细的解决方案,下面就是针对每种可能出现情况的提示和处理方法,用户可以根据所出现的提示语句对程序进行自行处理或者查找原因。

19出错信息

3.4.2 补救措施

针对可能出现的采取的变通措施,包括:

1后备技术技术规格和其他计划采取一个备份技术,假设在原始系统中的数据丢失已经发生,就可以使该技术的一个拷贝,并开始建立诸如定期记录到所述存储器中的磁盘的信息,这是对备份磁盘介质防治技术

2降效技术是指备份技术制备的效果的技术规格,使用该系统或方法的一些部件的其它效率略低,得到的结果数据或功能,如技术的一个自动系统可以是手动操作手动记录和数据[9]

3恢复和重新启动,将使用还原再次启动技术,从未能履行或软件通过再次运行的方法的点还原软件技术。

3.4.3 系统维护设计

为了使系统维护方便,并在内部设计程序预置包括在程序中对系统的检查和测试角度和特殊模块的维护特预设。每个节目之间的对应关系,可采用如下的循环图的形式;

12 循环图

3.5 项目包名约定

文件名、变量名称使用有意义的英文(或缩写)进行命名,名称与数据表结构的名称命名保持一致,便于提高用户查阅效率[10]

20 包名约定

3.6 重要功能配置文件一览以及说明

如下表是对一些重要功能配置文件的说明,便于对程序理解和应用。方便文件的查找和程序的设计。

21 重要功能配置文件说明

4 系统实现

4.1软件结构

流程图是包括一些绘图框架和流线图,代表所需的各种操作类型的图框,文本框和各种符号操作,工艺路线的内容显示的顺序。该系统的流程图,如下图:

13 系统流程图

4.2界面设计

该系统在建筑设计和主界面主界面的模型需要简洁,方便。接收技术主要是JQuery-UI风格别致,主界面是白色的移动,与管理系统的设计要求很符[11]

4.2.1具体功能介绍

(1) 使用者进入系统时系统通过用户所输入的用户名和密码来判断该用户是否合法只有通过系统合法性验证的用户才能使用系统如图是登录过程中,系统将弹出信息相应的问题。

14 前台页面信息图

用户登录的处理:成功的用户登录过程:通过ActionForm中的页面输入ID和密码,通过ID和密码的值访问者发送给您进行处理和分析的动作时,动作要获得数字信息和JavaBeans,然后通过JavaBean的调用数据库层的处理方法,用户ID和密码对,如果有值,并始终返回相应的真正的,如果没有匹配就返回一个错误,与用户登录验证。

显示信息:显示信息由JSP技术的标签。我们创建一个JavaBean,他的作用是产生一个数据表,以显示项目信息,并在再次对数据显示信息添加一个链接的同时,该链接用于显示对应的详细的项目信息,在JavaBean的文件,通过调用来获得在数据库层Vector对象的方法,我们用数据从数据库中得到相应的回报信息的价值,而是通过数据码提前与您书面形式连成环控制输入,出JavaBeans的打印(“”)的输出格式。在JavaBean来配置和标签的定义,完成后根据工程文件的webroot\ WEB第一 - 信息添加自定义标签库文件(TLD)文件,然后在配置文件中进行配置web.xml

部分代码如下:

在系统管理员选择相应的操作之后,系统首先根据applicationContext.xml配置文件找到相应的Action文件,配置如下:

(2)系统主界面用来进行对病人信息进行管理,通过总管理进行用户和病人的信息添加等。在程序运行后,在浏览器中进入系统的主界面和普通用户登录,其运行结果图如图所示。

15 医院病房管理系统首界面图

(3)添加人员信息界面是管理员用于添加人员创建的,用户可以根据填写病人或者管理者信息进行添加,如图所示。

16 医院病房管理人员信息添加

4)通过该页面,可以查看病人的用药和其他各项信息,用户通过不同的权限来进行相应的操作,如图所示。

17 病人李四信息

4.2.2设计思路

当系统运行时首先弹出的是登录提示页面然后使用者输入账户名和密码,点击“登录”按钮进行验证,如果系统验证争取则可以进入系统进行操作,点击“注销”按钮,就可以退出当前的系统

16 身份验证的程序流程图

4.2.3技术要点

由于启动系统后首先弹出的是这个窗口,所以要在jsp页面中中编写相应的代码:验证的代码在“确定”按钮的click ()事件中编写,用ajax的调用方式调用后台的登录action,之后Dao层用SQL语句用来访问后台的t_user表,依据其返回值判断验证错误的具体原因(是用户名与密码不匹配,或者是系统打开数据库时出现错误),并用jquery回调函数向用户显示错误原因的信息[12]

4.3系统信息管理模块设计

4.3.1功能介绍

此模块完成的是系统信息的录入储存功能,由于该系统的运作需要一些很基本的信息,例如,病房的基本信息、用户的基本信息,职工基本信息以及科室的基本信息等,所以此功能将经常被使用到,为此将它设置为系统主菜单的第一个选项。当前的模块就拿病房信息管理举例说明。病房信息录入界面如下图所示。

17 病房信息录入界面

4.3.2设计思路

当前模块的每一种实体的录入功能都有添加功能的选项,添加的信息基本上分为数字格式、电话号码格式、文本格式、还有必选格式等。在浏览器端提交表单之前都要进行以上这些格式验证,如果验证不通过就不会被提交到后台的action当中。当格式出差的时候,会有相应的警告或者提示信息等等。

4.3.3技术要点

系统信息管理模块的技术要点主要包括,画面前端的验证以及数据输入数据的完整性。最关键的是数据列表的显示,为了用户操作的方便性,尽量的不让用户进行多画面跳转的操作。该模块所有的数据列表都以popup的形式进行呈现。之后用户按照相应的条件进行需要的数据的检索后确定选中即可。这样的设计方式很方便,但是在技术角度看来,需要熟练的掌握jqueryhtml元素的操作[13]。下面介绍下popup画面的设计,画面如图4.4所示。

18 科室选择popup界面

popup界面的上部分是检索条件部分,主要是可以根据不同的条件进行信息的检索。中间部分主要是数据列表的显示。用户可以通过鼠标单击事件进行数据的选中之后确认后点击右下方的选择按钮。最后会将选中的数据加载到主页面上。

4.4病房日常管理模块设计

4.4.1功能介绍

该模块是新医院的病人基本信息输入和存储功能,由于住院,每天会有很多新医院的病人,所以这个功能会经常使用到的时候,所以将其设置为模块的一个主要选择主菜单。该模块的主要功能是记录患者在医院的医疗信息。例如患者用药,检查,诊断,一次整个过程的记录。

4.4.2设计思路

病程记录管理的设计思路主要是以病人为中心,之后通过病人的信息进行病程记录的添加。病程记录流程图如下图所示

19 病人记录管理程序流程图

4.4.3技术要点

因为病程信息是很重要的信息,只允许增、查,不允许删改,所以本模块不提供后两种功能。在新增病程记录时,“记录日期”字段的值是当前的系统时间,这样设计也确保了安全性。

4.5财务信息管理模块设计

4.5.1功能介绍

此模块进行的是对出院病人所有的病程记录用药费用的核算功能,该模块的主要功能是对病人在病房的医疗信息进行记录。例如对病人每次服药、检查、诊断进行全程记录所花的费用。最后会合成一个总计的付款单,并记录付款时间以及付款人等信息。

4.5.2设计思路

该模块的功能入口就是病人的病程记录明细信息。病程记录账单数据流程图如图19所示

4.5.3技术要点

通过列表选择病程记录信息的过程需要取得病程记录的ID之后去异步取得所属该病程记录的所有的明细信息。每一次事件都要去后台的Action取得List类型的数据,并且以json的形式传到前台,并用jquery循环遍历出相应的信息。

主要的操作就是前端js和后台的action相互调用过程。

20 账单添加程序流程图

5 系统测试

5.1 系统测试简介

系统测试(System Test. ST)是已经完成编写的小程序组装成一个完整的系统程序,以特定的功能测试。它是在测试系统规范可以提前最有效的方法的需求函数提供完整的解决方案。所有的程序设计和开发特别是那种代码比较多的大型程序编写程序的人员不可能不发生一点错误。为了找出尽可能和及时纠正在系统设计错误,可以将损失降到最小在最大的程度上降低错误率,保证了系统的开发和运营的质量,所以在完成系统之后需要进行一系列的测试[14]

对程序的测试通常采用以下两种方法:

一是黑盒测试法,就好像是一个不透明的盒子,作为不透明框,不管该程序的结构和设计的内部,只需要考虑的整体方案的功能齐全,即测试输入数据,并且可以根据需要输出数据变换。使用黑箱测试的方法来查找程序中的错误,必须尽可能多地使用所有可能的输入数据,以测试程序是否能产生对应于正确的输出。所以通常采用的测试方法有以下几种:等价类划分法,边界值法,分为因果图法和错误的方法等通常比较完整的测试结合几种方法来使用。

二是白盒测试法,白盒测试法和黑盒测试法是完全不同的,这种测试方法是完全透明化的测试,需要系统程序代码,这是测试程序中的所有逻辑路径,因此白盒测试方法也被称为逻辑覆盖所有的内脏。如果你想使用白盒测试方法来查找程序中所有的错误,你必须在每一个程序可能路径实际执行一次[15]。在该方法的实际应用通常是不可能的,甚至执行所有通道测试,即使测试完全正确也无法保证系统的完全正确以为一些错误的输入同样可以得到正确的反馈信息测试出错误可以证明是真是存在的却不能证明错误肯定不存在。目前常用的覆盖标准是:语句覆盖、条件覆盖、判定/条件覆盖,以及条件组合覆盖等。

白盒测试法和黑盒测试法都具有各自的特点,两种方法之间相互补充,每个方法可提供一组有用的示例,但是没有办法提供了一套完整的实施例。 所以我们在处理真正的问题,最好是使用时的各种方法,使程序的严格仔细测试比较。

5.2 系统综合测试

5.2.1.登录及主界面测试

21 系统登录

22 登录及主界面测试

经测试结果显示,这个模块可以正常工作,可以交付用户使用。

5.2.2系统信息管理测试

1)病房信息管理

22 病房添加页

23病房添加测试

经测试结果显示,这个模块可以正常工作,可以交付用户使用。

2)职工修改

23 职工修改页

24 职工修改测试

经测试结果显示,这个模块可以正常工作,可以交付用户使用。

5.2.3病房日常信息管理测试

1)病人信息管理

24 病人信息添加页

25 病人信息添加测试

经测试结果显示,这个模块可以正常工作,可以交付用户使用。

2)病程记录管理

25 病程记录填写页

26 填写病程记录测试

经测试结果显示,这个模块可以正常工作,可以交付用户使用。

对系统进行测试结果显示,各项功能已经基本达到设计的要求。

5.3 测试总结

据分析上述测试和测试结果,该软件可以处理用户需求的整个业务流程中各类业务,运行稳定,正确的,对有关文件和统计数据进行相应的处理,完全达到每个部门的管理作用。系统界面风格较为单一,页面美观方面还是有很多可以执行到位。系统可以继续改进其功能,还可以继续在接口设计方面得到改善。该软件达到了预期要达到的目标,已经可以交付给客服使用。

通过上面的分析,医院管理系统,实现了病房已基本实现了无纸化管理,用户管理登记,病人信息浏览,药物释放和查询,以及各种网站的后台管理功能模块。用户可以方便快捷地登录,信息浏览,信息修改,发票等一系列操作。系统管理员可以添加,删除,更新相关信息,并根据要求,实现对员工的工作相匹配的用户需求,可以达到完美匹配的效果。

该系统在使用MyEclipse的和MySQL数据库的设计进行分析的基础上,病房管理流程,完成医院病房管理系统。通过上述系统调试结果表明,该系统充分完成了客户请求的功能要求。在整个设计中,通过使用瀑布模型和结构化设计方法。该系统界面简单易懂整洁大方,易于操作,独具自身特点。但由于时间仓促和缺乏系统开发经验,系统本身还有许多功能不够完善,在设计过程中缺乏经验比如:

1)个别数据输入时忘记了进行数据格式校验和检查,不能保证绝对准确的数据测试,为测试留下了隐患。

2)由于时间要求等诸多原因,系统功能实现的不完善,刚刚完成了基本要求,用户的使用可能会带来一些不便。

本系统在实际使用过程中还存在一些问题,有些管理上的设计思想还未能实现,界面设计的不够精致,没有足够的修饰,以后我会加强自身的学习,争取做出更好的程序!

经过这么长时间的努力,现在终于完成了本次毕业设计我的大学生涯也即将告于段落在我大学的学习和生活中很多人对我有着无私的帮助和鼓励,在这里我想表达我对他们的衷心感谢和诚挚的问候。

首先在这里,我要感谢我的指导老师,金韬老师。从几个月前我什么都不知道状态,到现在已经完成了论文和自己所开发的系统,这是一个很大的进步和飞跃。在学习和设计过程中,金韬老师给了我很大的支持、帮助、鼓励和监督,所以说,我毕业设计的完成是与金韬老师紧密相连的,是金韬老师不辞辛苦的指导造就了今日的我。从选题的开始,然后对应用文写作、金韬老师给予了大量的帮助和支持,,向我详细讲述了要做的各项工作,并对我的设计给予教学和指正,提出了许许多多的宝贵意见,在我遇到困难时为我答疑解惑

另外,我也要感谢四年来对我所有的计算机专业课程教学的指导老师,正是他们不辞辛苦的教育,使我学习到了很多计算机方面的知识,并使我能够加以运用,最后完成了所有课程。当然,我也要感谢四年来有很多的学生跟我一起学习,我在生活和他们的交流与讨论中,我们互相鼓励,互相学习很多有用的东西。

还有,我要十分感谢我的父母,是他们养育我成人,并且为了提供了优渥的生活环境,在我的人生路上不断的鼓励和鞭策我前进。

最后对于所有帮助我,鼓励我,支持我的人。再次向你们道一声诚挚的感谢:谢谢!

参考文献

[1]科内尔.Java核心技术(卷1[M].北京:机械工业出版社,2013.11:108-115

[2]杨传辉.软件工程最佳实践[M].北京:机械工业出版社, 2014.1:95-98

[3]马克.软件工程:实践者的研究方法[M].北京:人民邮电出版社.2015.2:23-

26

[4]钱学忠.MySQL数据库技术与实验指导[M].北京:清华大学出版社,2013.6:15

-17

[5]宛延闿.实用Java程序设计教程[M].北京:机械工业出版社,2016.4:153-157

[6]曲蕴慧.基于JSP的家政服务管理系统设计与实现[J].软件导刊,2013(04):

87-88

[7]阴杰.面向对象开发方法与结构化系统开发方法的继承发展关系[J].科技情报开发与经济,2015(18):116-118

[8]李珊娜,贾卓生.基于WEB的目录服务管理系统的设计[J].软件发展,2015

(08):59-61

[9]邱旭东,刘文浩.基于JSPMVC改进模式研究及应用[J].计算机技术与发展,2014(08) : 134-136

[10]王玉英.基于JSPMySQL数据库访问技术[J].现代计算机(专业版),2014

(14):67-70

[11]宣强.动态网页设计的原理分析[J].信息与电脑(理论版)2013(08):86-87

[12]张雅军.浅析软件工程中的数据流图的画法[J].天津职业院校联合学报,2015(02)70-73

[13]杨晨.数据库物理设计及其优化技术研究[J].电子世界,2013(19):178-179

[14]张爱平,赖欣.JSP中调用JavaBean实现Web数据库访问[J].计算机时代,

201(01):23-27
[15]李佳.基于JSP技术的网页自动生成工具的实现[J].电脑开发与应用, 2015(03):28-30

附录 部分程序代码

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@ taglib uri="/struts-tags" prefix="s"%>

"../dailyInfoManage/anamnesis/addProcess.action"

method="post" class="form-horizontal" id="add1Form">

"patientid" name="patientid" value="0">

"row-fluid" style="padding-left: 60px;padding-bottom: 15px;">

"span7">

"color: red">*病人信息   

"patientnum" disabled="true"

cssClass="input-small focused" />

 

"row-fluid" style="position: relative; top: -15px;">

"span5">

  

style="position: relative; top: 17px;">病人姓名   

"controls">

"name" cssClass="input-mini focused" disabled="true"/>

"span5">

  

style="position: relative; top: 17px;"> 性别   

"controls">

"checked">"optionsRadios1" value=""

type="radio"> "patient.sex"

id="optionsRadios2" value="" type="radio">

"row-fluid" style="position: relative; top: -15px;">

"span5">

  

style="position: relative; top: 17px;">年龄   

"controls">

"true" id="age"

cssClass="input-mini focused" />

"span7">

  

style="position: relative; top: 17px;">出生日期  

"controls">

"birthday" disabled="true" cssClass="input-small focused" />

"row-fluid" style="position: relative; top: -15px;">

"span5">

  

style="position: relative; top: 17px;">身份证号   

"controls">

"true" id="personId" cssClass="input-medium focused" />

"span7">

  

style="position: relative; top: 17px;">联系电话  

"controls">

"true" id="tel" cssClass="input-small focused" />

"control-group">

"box span12">

"box-header well" data-original-title>

"userTitle">病程记录列表

"btn btn-success" href="#" id="add_anamnesis_but">

class="icon-plus icon-white"> 添加     

class="btn btn-danger" href="#" id="delete_anamnesis_but">

class="icon-trash icon-white"> 删除

"box-content" >

"anamnesisBill"

class="table table-striped table-bordered bootstrap-datatable datatable">

"itemTR" style="display: none;">

"15%">生命体征"10%">用药名称"10%">用药剂量"10%">服药时间"10%">检查结果
"vitalSign" cssClass="input-xlarge focused" disabled="true"/>

"medicineId" list="medicineList" listKey="id" listValue="name" disabled="true"/>

"medicineCount" cssClass="input-mini focused" cssStyle="width: 110px;" disabled="true"/>

"useDate" cssClass="input-small focused datetimer_drug" cssStyle="width: 110px;" readonly="true" disabled="true"/>

"result" cssClass="input-xlarge focused" disabled="true"/>

"form-actions">

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@ taglib uri="/struts-tags" prefix="s"%>

"post" class="form-horizontal">

"row-fluid"

style="padding-left: 60px; padding-bottom: 15px;">

"span7">

"color: red">*病人信息   

"patientnum" name="anamnesis.patient.num"

disabled="true" cssClass="input-small focused" />

"row-fluid" style="position: relative; top: -15px;">

"span5">

  

style="position: relative; top: 17px;">病人姓名   

"controls">

"name" name="anamnesis.patient.name"

cssClass="input-mini focused" disabled="true" />

"span5">

  

style="position: relative; top: 17px;"> 性别   

"controls">

"checked">"optionsRadios1" value="" checked="checked"

type="radio"> "patient.sex"

id="optionsRadios2" value="" type="radio">

"row-fluid" style="position: relative; top: -15px;">

"span5">

  

style="position: relative; top: 17px;">年龄   

"controls">

"true" id="age" name="anamnesis.patient.age"

cssClass="input-mini focused" />

"span7">

  

style="position: relative; top: 17px;">出生日期  

"controls">

"birthday" name="anamnesis.patient.birthday"

disabled="true" cssClass="input-small focused" />

"row-fluid" style="position: relative; top: -15px;">

"span5">

  

style="position: relative; top: 17px;">身份证号   

"controls">

"true" id="personId"

name="anamnesis.patient.personId" cssClass="input-medium focused" />

"span7">

  

style="position: relative; top: 17px;">联系电话  

"controls">

"true" name="anamnesis.patient.tel" id="tel"

cssClass="input-small focused" />

"control-group">

"box span12">

"box-header well" data-original-title>

"userTitle">病程记录列表

"box-content">

"anamnesisBill"

class="table table-striped table-bordered bootstrap-datatable datatable">

"anamnesisDetailList" status="st">

"15%">生命体征"10%">用药名称"10%">用药剂量"10%">服药时间"10%">检查结果
"vitalSign" />

"drugUse.id" list="medicineList" listKey="id" listValue="name" disabled="true"/>

"medCount" />

"useDate" />

"result" />

"form-actions">

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

"box span12">

"box-header well" data-original-title>

"userTitle">病程记录信息列表

"box-content">

"rightlist" id="anamnesis_main">

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@ taglib uri="/struts-tags" prefix="s"%>

"../systemInfoManage/ward/addProcess.action" method="post" class="form-horizontal"

id="add1Form">

"departId" name="departid" value="0">

"row-fluid" style="padding-bottom: 15px;padding-left: 21px;">

"span7">

        

style="color: red">*所属科室    

"departname" disabled="true" cssClass="input-xlarge focused" />

 

"control-group">

"color: red">*总床位数

"controls">

"ward.allBedCounts" id="name" cssClass="input-mini focused"/>

  "help-inline" style="color:red;">

"control-group">

"color: red">*病房电话

"controls">

"ward.tel" id="tel" cssClass="input-small focused"/>

  "help-inline" style="color:red;">

"control-group">

"color: red">*病房地址

"controls">

"ward.address" id="address" cssClass="input-xxlarge focused"/>

  "help-inline" style="color:red;">

"form-actions">

package org.HospitalSickHouseManagementSystem.model;

import java.util.HashSet;

import java.util.Set;

import javax.persistence.CascadeType;

import javax.persistence.Entity;

import javax.persistence.FetchType;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.JoinColumn;

import javax.persistence.ManyToOne;

import javax.persistence.OneToMany;

import javax.persistence.Table;

/**

* 病程记录表

*/

@Entity

@Table(name="T_ANAMNESIS")

public class TAnamnesis {

//主键

private long id;

//住院号

private String sickInNum;

//所属病人

private TPatient patient=new TPatient();

//记录明细

private Set anamnesisDetails=new HashSet();

//记录状态

//0:记录中 1:记录关闭

private int state;

@Id

@GeneratedValue(strategy = GenerationType.AUTO)

public long getId() {

return id;

}

public void setId(long id) {

this.id = id;

}

@ManyToOne(cascade=CascadeType.PERSIST,fetch=FetchType.LAZY)

@JoinColumn(name="patient_id")

public TPatient getPatient() {

return patient;

}

public void setPatient(TPatient patient) {

this.patient = patient;

}

public String getSickInNum() {

return sickInNum;

}

public void setSickInNum(String sickInNum) {

this.sickInNum = sickInNum;

}

@OneToMany(cascade={CascadeType.ALL})

@JoinColumn(name="anamnesis_id")

public Set getAnamnesisDetails() {

return anamnesisDetails;

}

public void setAnamnesisDetails(Set anamnesisDetails) {

this.anamnesisDetails = anamnesisDetails;

}

public int getState() {

return state;

}

public void setState(int state) {

this.state = state;

}

}

package org.HospitalSickHouseManagementSystem.action.dailywork;

import java.util.List;

import java.util.List;

import javax.annotation.Resource;

import org.HospitalSickHouseManagementSystem.Service.IAnamnesisService;

import org.HospitalSickHouseManagementSystem.Service.IMedicineService;

import org.HospitalSickHouseManagementSystem.Service.IPatientService;

import org.HospitalSickHouseManagementSystem.model.TAnamnesis;

import org.HospitalSickHouseManagementSystem.model.TAnamnesisDetail;

import org.HospitalSickHouseManagementSystem.model.TMedicine;

import org.HospitalSickHouseManagementSystem.tool.PagingUtil;

import org.apache.struts2.convention.annotation.Action;

import org.apache.struts2.convention.annotation.Namespace;

import org.apache.struts2.convention.annotation.ParentPackage;

import org.apache.struts2.convention.annotation.Results;

import org.apache.struts2.convention.annotation.Result;

import org.apache.struts2.json.annotations.JSON;

import org.springframework.context.annotation.Scope;

import org.springframework.stereotype.Controller;

@Controller

@Scope("prototype")

@ParentPackage("main")

@Namespace("/dailyInfoManage/anamnesis")

@Results({

@Result(name = "toList", location = "/dailyInfoManage/anamnesis/list.jsp"),

@Result(name = "toMain", location = "/dailyInfoManage/anamnesis/main.jsp"),

@Result(name = "toModify", location = "/dailyInfoManage/anamnesis/modify.jsp"),

@Result(name = "toLook", location = "/dailyInfoManage/anamnesis/look.jsp"),

@Result(name = "toAdd", location = "/dailyInfoManage/anamnesis/add.jsp"),

@Result(name = "LoadId", type = "json", params = { "includeProperties",

"currentPageIds" }),

@Result(name = "LoadAllId", type = "json", params = {

"includeProperties", "currentAllIds" }) })

public class AnamnesisMainAction extends PagingUtil {

private static final long serialVersionUID = 7250836103313447047L;

private IPatientService patientService;

private IMedicineService medicineService;

private String currentPageIds = null;

private TAnamnesis anamnesis=new TAnamnesis();

private IAnamnesisService anamnesisService;

private String currentAllIds = null;

private List anamnesisDetailList;

private List medicineList;

private String flagString = null;

private String information = null;

private String condition_string;

{

setClass(TAnamnesis.class, "anamnesis");

// 每页显示十条数据

setPageableAmount(10);

setOrderSql(" order by anamnesis.state asc,anamnesis.id desc");

}

@Action(value = "toMain")

public String toMain() {

clearSession();

return "toMain";

}

@Action(value = "toList")

public String toList() {

searchAnamnesis();

return "toList";

}

@Action(value = "toAdd")

public String toAdd() {

medicineList=medicineService.getAllMedicine();

return "toAdd";

}

@Action(value = "toModify")

public String toModify() {

anamnesisDetailList=new List();

anamnesis=anamnesisService.getAnamnesis(anamnesis.getId());

anamnesisDetailList.addAll(anamnesis.getAnamnesisDetails());

java.util.Collections.sort(anamnesisDetailList);

medicineList=medicineService.getAllMedicine();

return "toModify";

}

@Action(value = "toLook")

public String toLook() {

anamnesisDetailList=new List();

anamnesis=anamnesisService.getAnamnesis(anamnesis.getId());

anamnesisDetailList.addAll(anamnesis.getAnamnesisDetails());

java.util.Collections.sort(anamnesisDetailList);

medicineList=medicineService.getAllMedicine();

return "toLook";

}

private void searchAnamnesis() {

if("1".equals(flagString)){

setSQL(" and anamnesis.patient.num like ? ");

queryParameters.add("%"+information + "%");

}else if("2".equals(flagString)){

setSQL(" and anamnesis.patient.ward.num like ? ");

queryParameters.add("%"+information + "%");

}else if("3".equals(flagString)){

setSQL(" and anamnesis.patient.name like ? ");

queryParameters.add("%"+information + "%");

}else if("4".equals(flagString)){

setSQL(" and anamnesis.sickInNum='"+information+"'");

}

search();

}

@Action(value = "uploadIdCollection", params = { "contentType",

"text/html;charset=UTF-8" }, results = { @Result(name = "success", type = "json") })

public String uploadIdCollection() {

updateIdCollectionInSession();

return SUCCESS;

}

@Action(value = "loadIdCollection", params = { "contentType",

"text/html;charset=UTF-8" })

public String loadIdCollection() {

this.currentPageIds = getIdCollectionFromSession();

return "LoadId";

}

@Action(value = "loadAllIdCollection", params = { "contentType",

"text/html;charset=UTF-8" })

public String loadAllIdCollection() {

this.currentAllIds = getAllIdsFromSession();

return "LoadAllId";

}

@Override

public String getCurrentPageIds() {

return currentPageIds;

}

@Override

public void setCurrentPageIds(String currentPageIds) {

this.currentPageIds = currentPageIds;

}

@Override

public String getCurrentAllIds() {

return this.currentAllIds;

}

@Override

public void setCurrentAllIds(String currentAllIds) {

this.currentAllIds = currentAllIds;

}

@Action(value = "toNext")

public String toNext() {

next();

searchAnamnesis();

return "toList";

}

@Action(value = "toPrevious")

public String toPrevious() {

previous();

searchAnamnesis();

return "toList";

}

@Action(value = "toLast")

public String toLast() {

last();

searchAnamnesis();

return "toList";

}

@Action(value = "toFirst")

public String toFirst() {

first();

searchAnamnesis();

return "toList";

}

@Action(value = "toPage")

public String toPage() {

page();

searchAnamnesis();

return "toList";

}

@Action(value = "toReload")

public String toReload() {

searchAnamnesis();

return "toList";

}

@JSON(serialize = false)

public String getFlagString() {

return flagString;

}

public void setFlagString(String flagString) {

this.flagString = flagString;

}

public String getInformation() {

return information;

}

public void setInformation(String information) {

this.information = information;

}

@JSON(serialize = false)

public String getCondition_string() {

return condition_string;

}

public void setCondition_string(String condition_string) {

this.condition_string = condition_string;

}

@JSON(serialize = false)

public TAnamnesis getAnamnesis() {

return anamnesis;

}

public void setAnamnesis(TAnamnesis anamnesis) {

this.anamnesis = anamnesis;

}

@JSON(serialize = false)

public IPatientService getPatientService() {

return patientService;

}

@Resource

public void setPatientService(IPatientService patientService) {

this.patientService = patientService;

}

@JSON(serialize = false)

public IAnamnesisService getAnamnesisService() {

return anamnesisService;

}

@Resource

public void setAnamnesisService(IAnamnesisService anamnesisService) {

this.anamnesisService = anamnesisService;

}

@JSON(serialize = false)

public List getAnamnesisDetailList() {

return anamnesisDetailList;

}

public void setAnamnesisDetailList(List anamnesisDetailList) {

this.anamnesisDetailList = anamnesisDetailList;

}

@JSON(serialize = false)

public List getMedicineList() {

return medicineList;

}

public void setMedicineList(List medicineList) {

this.medicineList = medicineList;

}

@JSON(serialize = false)

public IMedicineService getMedicineService() {

return medicineService;

}

@Resource

public void setMedicineService(IMedicineService medicineService) {

this.medicineService = medicineService;

}

}

package org.HospitalSickHouseManagementSystem.action.dailywork;

import java.util.HashSet;

import java.util.List;

import java.util.Set;

import javax.annotation.Resource;

import org.HospitalSickHouseManagementSystem.Service.IAnamnesisService;

import org.HospitalSickHouseManagementSystem.Service.IMedicineService;

import org.HospitalSickHouseManagementSystem.Service.IPatientService;

import org.HospitalSickHouseManagementSystem.model.TAnamnesis;

import org.HospitalSickHouseManagementSystem.model.TAnamnesisDetail;

import org.HospitalSickHouseManagementSystem.model.TPatient;

import org.HospitalSickHouseManagementSystem.tool.BaseProcessAction;

import org.HospitalSickHouseManagementSystem.tool.PrimaryGenerater;

import org.HospitalSickHouseManagementSystem.tool.SystemUtil;

import org.apache.struts2.convention.annotation.Action;

import org.apache.struts2.convention.annotation.Namespace;

import org.apache.struts2.convention.annotation.ParentPackage;

import org.apache.struts2.convention.annotation.Result;

import org.apache.struts2.json.annotations.JSON;

import org.springframework.context.annotation.Scope;

import org.springframework.stereotype.Controller;

@Controller

@Scope("prototype")

@ParentPackage("main")

@Namespace("/dailyInfoManage/anamnesis")

public class AnamnesisProcessAction extends BaseProcessAction {

private static final long serialVersionUID = -1651912886578153211L;

private String allIds = null;

private String message = "0";

private IPatientService patientService;

private TAnamnesis anamnesis=new TAnamnesis();

private IAnamnesisService anamnesisService;

private IMedicineService medicineService;

private long patientid;

private String[] vitalSign;

private long[] medicineId;

private int[] medicineCount;

private String[] useDate;

private String[] result;

@Action(value = "addProcess", params = { "contentType",

"text/html;charset=UTF-8" }, results = { @Result(name = "success", type = "json", params = {

"excludeNullProperties", "true", "excludeProperties", "" }) })

public String add() {

if(vitalSign!=null&&vitalSign.length>0){

Long maxid =null;

String createDate=SystemUtil.getSystemDateTime("yyyy-MM-dd HH:mm:ss");

TPatient patient=patientService.getPatient(patientid);

patient.setState(0);

maxid = anamnesisService.getMaxId();

anamnesis=new TAnamnesis();

if (maxid != null) {

anamnesis.setId(maxid + 1);

} else {

anamnesis.setId(1);

}

anamnesis.setSickInNum(PrimaryGenerater.getInstance().generaterNextNumber(maxid, true, "A"));

anamnesis.setPatient(patient);

Set ad = new HashSet();

TAnamnesisDetail tmp=null;

for(int i=0;i

tmp=new TAnamnesisDetail();

maxid = anamnesisService.getAnamnesisDetailMaxId();

if (maxid != null) {

tmp.setId(maxid + 1);

} else {

tmp.setId(1);

}

tmp.setMedCount(medicineCount[i]);

tmp.setDrugUse(medicineService.getMedicine(medicineId[i]));

tmp.setResult(result[i]);

tmp.setUseDate(useDate[i]);

tmp.setCreateDate(createDate);

tmp.setVitalSign(vitalSign[i]);

anamnesisService.addAnamnesisDetail(tmp);

ad.add(tmp);

}

anamnesis.setAnamnesisDetails(ad);

anamnesisService.addAnamnesis(anamnesis);

}

return SUCCESS;

}

@Action(value = "modifyProcess", params = { "contentType",

"text/html;charset=UTF-8" }, results = { @Result(name = "success", type = "json", params = {

"excludeNullProperties", "true", "excludeProperties", "" }) })

public String modify() {

anamnesis=anamnesisService.getAnamnesis(anamnesis.getId());

Set ad=anamnesis.getAnamnesisDetails();

if(vitalSign!=null&&vitalSign.length>0){

Long maxid =null;

String createDate=SystemUtil.getSystemDateTime("yyyy-MM-dd HH:mm:ss");

TAnamnesisDetail tmp=null;

for(int i=0;i

tmp=new TAnamnesisDetail();

maxid = anamnesisService.getAnamnesisDetailMaxId();

if (maxid != null) {

tmp.setId(maxid + 1);

} else {

tmp.setId(1);

}

tmp.setMedCount(medicineCount[i]);

tmp.setDrugUse(medicineService.getMedicine(medicineId[i]));

tmp.setResult(result[i]);

tmp.setUseDate(useDate[i]);

tmp.setCreateDate(createDate);

tmp.setVitalSign(vitalSign[i]);

anamnesisService.addAnamnesisDetail(tmp);

ad.add(tmp);

}

anamnesis.setAnamnesisDetails(ad);

anamnesisService.modifyAnamnesis(anamnesis);

}

return SUCCESS;

}

/**

* @Description:

* @param @return

* @return String

*/

@Action(value = "checkFillSickBill", params = { "contentType",

"text/html;charset=UTF-8" }, results = { @Result(name = "success", type = "json", params = {

"includeProperties", "message", "excludeNullProperties",

"true","excludeProperties","" }) })

public String checkFillSickBill() {

List idList = SystemUtil.caseStringToLong(allIds);

for (long id : idList) {

anamnesis = anamnesisService.getAnamnesis(id);

if (anamnesis.getState()==0) {

this.message = "0";// 可用

} else {

this.message = anamnesis.getSickInNum();// 不可用

break;

}

}

return SUCCESS;

}

/**

* @Description:

* @param @return

* @return String

*/

@Action(value = "checkUsePatient", params = { "contentType",

"text/html;charset=UTF-8" }, results = { @Result(name = "success", type = "json", params = {

"includeProperties", "message", "excludeNullProperties",

"true","excludeProperties","" }) })

public String checkUsePatient() {

TAnamnesis an=anamnesisService.getByPatientId(patientid,0);

if(an!=null){

message="1";

}

return SUCCESS;

}

@Action(value = "clearSessionForSearch", params = { "contentType",

"text/html;charset=UTF-8" }, results = { @Result(name = "clearSesssion", type = "json") })

public String clearSessionForSearch() {

clearSession();

return "clearSesssion";

}

@Override

public String getAllIds() {

return allIds;

}

@Override

public void setAllIds(String allIds) {

this.allIds = allIds;

}

public String getMessage() {

return message;

}

public void setMessage(String message) {

this.message = message;

}

@JSON(serialize = false)

public TAnamnesis getAnamnesis() {

return anamnesis;

}

public void setAnamnesis(TAnamnesis anamnesis) {

this.anamnesis = anamnesis;

}

@JSON(serialize = false)

public IPatientService getPatientService() {

return patientService;

}

@Resource

public void setPatientService(IPatientService patientService) {

this.patientService = patientService;

}

@JSON(serialize = false)

public IAnamnesisService getAnamnesisService() {

return anamnesisService;

}

@Resource

public void setAnamnesisService(IAnamnesisService anamnesisService) {

this.anamnesisService = anamnesisService;

}

@JSON(serialize = false)

public String[] getVitalSign() {

return vitalSign;

}

public void setVitalSign(String[] vitalSign) {

this.vitalSign = vitalSign;

}

@JSON(serialize = false)

public String[] getUseDate() {

return useDate;

}

public void setUseDate(String[] useDate) {

this.useDate = useDate;

}

@JSON(serialize = false)

public String[] getResult() {

return result;

}

public void setResult(String[] result) {

this.result = result;

}

@JSON(serialize = false)

public long getPatientid() {

return patientid;

}

public void setPatientid(long patientid) {

this.patientid = patientid;

}

@JSON(serialize = false)

public long[] getMedicineId() {

return medicineId;

}

public void setMedicineId(long[] medicineId) {

this.medicineId = medicineId;

}

@JSON(serialize = false)

public int[] getMedicineCount() {

return medicineCount;

}

public void setMedicineCount(int[] medicineCount) {

this.medicineCount = medicineCount;

}

@JSON(serialize = false)

public IMedicineService getMedicineService() {

return medicineService;

}

@Resource

public void setMedicineService(IMedicineService medicineService) {

this.medicineService = medicineService;

}

}

医院病房管理系统设计与实现

相关推荐