当前位置:文档之家› 医院门诊管理系统毕业设计论文

医院门诊管理系统毕业设计论文

医院门诊管理系统毕业设计论文
医院门诊管理系统毕业设计论文

医院门诊管理系统的开发与设计

作者:

指导教师:

摘要:医院门诊信息管理系统是一个基于Internet的应用系统,完成预约、诊断、开具处方、保存病历管理的全过程。系统操作简便、界面友好、灵活、实用,解决医院系统中各种信息管理的集成问题,使医院系统的各种信息管理一体化。

关键词:JSP;医院门诊;信息管理系统

1课题背景

随着Internet技术的发展,信息管理被广泛应用与各行各业。伴随着医院的改革,医院信息化进程的加速,建立基于Web的医院门诊信息管理系统显得尤为重要。

1.1课题研究现状分析

随着医疗卫生事业的发展,医院改革的深入,信息的有效、高效利用,已受到人们的关注。充分利用现代科技手段,加强各种信息的利用开发,是医院信息管理的一个重要内容,也是当今医院的需要。目前的医院仅仅把医院的信息管理系统作为微机工具系统,而没有发挥其管理的真正功能;系统分散设计,各部门独立实施,没有考虑信息的关联和共享,存在信息孤岛现象;医院管理错综复杂,从而形成了医院信息管理系统数据的多样化,数据量大等特点[1]。

通过本次医院门诊信息系统的设计,解决医院系统中各种信息管理的集成问题,使医院系统的各种信息管理一体化。同时,了解医院门诊的流程,把握信息管理系统开发概念,掌握动态技术,熟悉系统开发的进程,做到会用相关工具设计和开发相关系统,并实现。

1.2 技术发展趋势

随着Internet技术的普及和发展基本上各种不同操作系统平台上都有相应的Web浏览器程序,这就使得医院门诊信息管理系统具有非常广泛的平台兼容性。客户端仅需一个Web浏览器程序,不再需

要安装其它软件。客户程序主要包括HTML页面和一些特殊的数据库访问程序,它们都存放在Web服务器上,客户应用系统的设计、维护和更新工作只需在Web服务器上进行,这样就大大降低了系统安装、测试、维护的工作量[2]。通过基于Web的医院门诊信息管理系统的开发,可以实现对医院门诊相关信息的整合管理以及共享,并且通过组件技术的应用,可以使得本医院门诊信息管理系统具有很大的可扩展性和可移植性。

2需求分析

需求是用户解决问题或达到目标所需的条件或功能;系统或系统部件要满足合同、标准,规X或其它正式规定文档所需具有的条件或权能。

2.1概述

医院门诊管理系统是以医院门诊挂号各工作流为基本元素的、用编程来实现其功能的软件。

2.1.1项目的目的和目标

目的:使医院门诊信息管理清晰化,透明化,便于操作,易于管理,从而达到提高医院门诊信息管理效率的目的。

目标:通过对医院门诊管理系统进行模块化设计,分成具体的各个模块来实现其所有功能。

2.1.2用户简介

本系统共有四种用户:病人,医生,科室,管理员。

(1)病人可以查询医生值班情况,医生信息。实现病人挂号和预约挂号功能。

(2)可以实现病人就诊功能:包括医生写门诊病例,开化验单或检查单,填写检查或化验结果,查看各种检查结果,下门诊诊断结果和处方或处置单等。

(3)科室用户可以进入系统查看当前科室病人状态,便于对病人进行检查。

(4)缴费划价功能:用户可以进行划价缴费功能。

(5)病人进行取药功能。

(6)管理员进行系统维护功能。

2.1.3 角色定义

(1)科室:进入系统查看当前科室病人状态,便于对病人进行检查。

(2)医生:写门诊病例,开化验单或检查单,填写检查或化验结果,查看各种检查结果,下门诊诊断结果和处方或处置单等。

(3)病人:查询医生值班情况,医生信息。实现病人挂号和预约挂号功能。可以进行划价缴费功能。进行取药功能。

(4)管理员:该软件的维护人员需要详细的了解B/S架构、C++编程语言、操作系统基本知识、数据库设计及操作等知识,进行系统维护功能。

2.2 目标系统功能需求

2.2.1 病人子系统

图1 病人子系统用例图

表1 病人管理

编号功能名称输入系统响应输出功能描述

01 处理挂号身份登录信息进入处理

挂号系统将挂号信息保

存至数据库,打

印挂号单

活动步骤

异常处理

02 查询信息身份登录信息进入查询医生信息以及

值班情况

2.2.2科室管理子系统

图2 科室管理子系统用例图

表2 科室管理

编号功能名称输入系统响应输出功能描述

03 处理查询科室身份

登录进入科室

管理系统

病人状态信息活动步骤

异常处理

2.2.3医生子系统

图3 医生子系统用例图

表3 医生管理

编号功能名称输入系统响应输出功能描述

04 处理查看身份登录信

息进入查询化验结果活动步骤

异常处理

05 处理下单身份登录信

息进入处理

下单系统

1写门诊病历

2开化验单

活动步骤

异常处理

3填化验结果

2.2.4管理员子系统

图4 管理员系统用例图

表4 管理员

编号 功能名称 输入 系统响应 输出

功能描述 06

启用新用户

身份登录信息

进入管理员子系统

启用新用户

活动步骤 异常处理

07

用户审核

身份登录信息

进入用户审核系统

停用非法用户

2.3 目标系统界面与接口需求 2.

3.1界面需求

● 输入设备:键盘、鼠标 ● 输出设备:显示器、打印机

● 显示风格:图形界面、字符界面、IE 界面等; ● 显示方式:1024×768

● 输出格式:显示布局、打印格式等。 2.3.2接口需求

● 与其他系统的接口,如监控系统、控制系统、银行结算系统、税控系统、财务系统、政府网络系统及其他系统等。

● 与系统特殊外设的接口,如CT 机、磁共振、柜员机(ATM )、IC 卡、盘点机等。 2.4目标系统的其他需求 2.4.1安全性

信息安全是企业信息网实施的第一要素,网络系统不但要能够实现功能,更重要的是要稳定安全. 因此,应采取如下技术以增强网络的安全性:

●设备的安全性

设备制造具有安全系数,控制系统完善,具有各种故障检测和指示装置

●数据级的安全性

保护数据库,防止不合法的使用以免数据的更改或破坏

2.4.2可靠性

网络系统作为其他应用系统的基础,如发生系统瘫痪,其造成的损失是难以估量的,因此系统必须可靠地连续运行,即系统设计必须从系统结构、设计方案、设备选择、厂商的技术服务与维修响应能力、设备备件供应能力等方面考虑,使故障发生的可能性尽可能少,影响面尽可能小.它应该能实现内部办公事务和外部事务处理的整合.

2.4.3灵活性

用户信息应采用大型关系数据库,模块化等先进成熟的技术方法,在给用户提供了极大的灵活性的同时,也有效地保证了系统的可靠性。

2.4.4特殊需求

由于计算机和通信技术的不断发展,用户的需求也在随着时间的推移不断的发生变化,以及由于应用软件种类和业务数量的增加,功能的强化,系统软件的升级将对主机和网络系统提出更高的要求,网络构造应具有高度的扩展性,以降低系统扩充的投入成本,并满足信息技术高速发展的需要。能适应2-3年内的业务增长和突发性事件的需要,确保各级系统的可扩充性和先进性,并注意设备的冗余设计以及网络的负载均衡。

3 概要设计

医院门诊管理系统将医生管理子系统,病人管理子系统,科室子系统,管理员子系统等四大系统的有关信息纳入电脑系统统一管理,以使医

生科室等各部门的相关人员以及就医患者及时获取有关信息,以提高医疗效果和管理效率。

系统包括前台和后台两部分。前台部分主要实现主界面登录功能。后台主要实现数据库的逻辑关系的建立和重要信息的存储管理,对后台数据信息进行管理功能。

图5 系统功能模块

3.1 医生信息管理模块

写门诊病例,开化验单,填写化验结果,查看各种检查结果,下门诊诊断结果和处方等。

3.2 科室信息管理模块

进入系统查看当前科室病人状态,便于对病人进行检查。

3.3 病人模块

查询医生值班情况,医生信息。实现病人挂号和预约挂号功能。可以进行划价缴费功能。

3.4 管理员模块

对用户身份进行审核,以及记录系统日志。

4数据库设计

系统共有有8X表。(1)医生表:用于存储医生的个人信息。(2) 患者表:用于存储患者的个人信息。(3) 病历记录表:病历记录表记录了患者的病历信息。(4) 预约记录表:预约记录表记录了已预约但尚未创建病历的患者信息。(5) 管理员表:管理员表存储了与管理员有关的信息。(6) 患者化验表:记录了患者化验结果。(7)患者药品表:记录患者所开处方信息。(8)药品表:记录药品信息。

IDNumber varchar(18) 医生编号主键

Name varchar(32) 索引

Age int 年龄—

Years int 工作年限—

Gender varchar(1) 性别 1 - 男,2 - 女

Offices varchar(32) 科室—

Remark varchar(25) 职称—

IDNumber varchar(18) 患者编号主键

Name Varchar(32)—

Gender varchar(1)性别—

Age int 年龄—

Health varchar(32) 健康状况—

Remark varchar(255) 主治医生职称—

Offices varchar(12) 医生科室—

Cost double 费用—

Doctor varchar(32) 主治医生—

表6 病人表

patientIdNumbe

r

varchar(18) 病人编号主键字段名类型备注约束result varchar(255)结果—symptom varchar(255) 症状—doctorIdNumbe

r

varchar(18) 医生编号—

QID int 记录编号主键Doctor varchar(18) 主治医生编号索引Patient varchar(18) 患者编号索引

Date Datetime 预约时间默认为当前系统日期

AID Varchar(18) 管理员编号主键Password Varchar(20) 登录时密码—Phone Varchar(15) 联系可为空

uuid varchar(50) 患者编号主键IDNumber varchar(18) 化验编号—

Subject varchar(255) 化验科目—

Code varchar(32) 名称号—

字段名类型备注约束条

表12 药品表

字段名类型备注约束Code varchar(32) 名称号主键字段名类型备注约束Name varchar(32)药品名—

Price Double 单价—5系统实现

5.1医生信息管理模块

模块功能描述:

图6 医生开化验单

主要代码如下:

package servlet;

import java.io.IOException;

import java.io.PrintWriter;

import java.sql.SQLException;

import java.util.ArrayList;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import utilitly.Utility;

import bean.AssayListBean;

import dao.AssayDao;

import dao.QueueInfoDao;

public class ShowAssyList extends HttpServlet {

private static final long serialVersionUID = 1L;

public ShowAssyList() {

super();

}

public void destroy() {

super.destroy(); // Just puts "destroy" string in log }

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

request.setCharacterEncoding("UTF-8");

response.setCharacterEncoding("UTF-8");

String patientIdNumber = request.getSession().getAttribute("patientIdNumber").toString();

String patientName = request.getSession().getAttribute("patientName").toString();

StringBuffer sb = new StringBuffer();

ArrayList assayList = new ArrayList();

AssayDao assayDao = new AssayDao();

try {

assayList = assayDao.getAssayList(patientIdNumber);

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

}

sb.append("{ \"rows\":[");

for(int i=0;i

sb.append("{\"patientIdNumber\":\""+patientIdNumber+"\"");

sb.append(",\"patientName\":\""+patientName+"\"");

sb.append(",\"name\":\""+assayList.get(i).getName()+"\"");

sb.append(",\"uuid\":\""+assayList.get(i).getUuid()+"\"");

sb.append(",\"assayResult\":\""+assayList.get(i).getAssayResult( )+"\"");

sb.append(",\"price\":\""+assayList.get(i).getPrice()+"\"}");

if(i!=(assayList.size()-1)){

sb.append(",");

}

}

sb.append("]}");

PrintWriter out= response.getWriter();

out.print(sb.toString());

out.close();

//保存流水信息

QueueInfoDao queueInfoDao = new QueueInfoDao();

try {

queueInfoDao.saveQueueInfo(request.getSession().getAttribut e("account").toString(), "开化验单",Utility.getDateTime());

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

}

}

public void init() throws ServletException {

}

}

5.2 科室信息管理模块

模块功能描述:

图7 查询病人状态

主要代码如下:

package servlet;

import java.io.IOException;

import java.io.PrintWriter;

import java.sql.SQLException;

import java.util.ArrayList;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import utilitly.Utility;

import dao.PatientDao;

import dao.QueueInfoDao;

import bean.PatientBean;

public class SeePatient extends HttpServlet {

private static final long serialVersionUID = 1L;

public SeePatient() {

super();

}

public void destroy() {

super.destroy(); // Just puts "destroy" string in log }

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

request.setCharacterEncoding("UTF-8");

response.setCharacterEncoding("UTF-8");

StringBuffer sb = new StringBuffer();

QueueInfoDao queuedInfoDao = new QueueInfoDao();

ArrayList patient = new ArrayList();

PatientDao patientDao = new PatientDao();

try {

patient = patientDao.seePatient();

//保存流水信息

queuedInfoDao.saveQueueInfo(request.getSession().getAtt ribute("account").toString(), "查询病人状态",Utility.getDateTime());

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

}

sb.append("{ \"rows\":[");

for(int i=0;i

sb.append("{\"idNumber\":\""+patient.get(i).getIdNumber()+"\ "");

sb.append(",\"name\":\""+patient.get(i).getName()+"\"");

sb.append(",\"gender\":\""+patient.get(i).getGender()+"\""); sb.append(",\"age\":\""+patient.get(i).getAge()+"\"");

sb.append(",\"health\":\""+patient.get(i).getHealth()+"\"");

sb.append(",\"remark\":\""+patient.get(i).getRemark()+"\"");

sb.append(",\"offices\":\""+patient.get(i).getOffices()+"\"");

sb.append(",\"result\":\""+patient.get(i).getResult()+"\"");

sb.append(",\"symptom\":\""+patient.get(i).getSymptom()+"\""); sb.append(",\"flag\":\""+patient.get(i).getFlag()+"\"}");

if(i!=(patient.size()-1)){

sb.append(",");

}

}

sb.append("]}");

PrintWriter out= response.getWriter();

out.print(sb.toString());

out.close();

}

public void init() throws ServletException { }

}

5.3 病人模块

模块功能描述:

图8 病人预约

主要代码如下:

package servlet;

import java.io.IOException;

import java.io.PrintWriter;

import java.sql.SQLException;

import java.util.ArrayList;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import dao.DoctorDao;

import dao.PatientDao;

import bean.DoctorBean;

import bean.PatientBean;

public class GetDutyInfo extends HttpServlet {

private static final long serialVersionUID = 1L;

public GetDutyInfo() {

super();

}

public void destroy() {

super.destroy();

}

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

request.setCharacterEncoding("UTF-8");

response.setCharacterEncoding("UTF-8");

StringBuffer sb = new StringBuffer();

PatientBean patient = new PatientBean();

ArrayList doctor = new

ArrayList();

DoctorDao doctorDao = new DoctorDao();

PatientDao patientDao = new PatientDao();

String account = request.getSession().getAttribute("account").toString();

try {

doctor = doctorDao.seeDutyInfo();

patient = patientDao.getPatientInfoByAccount(account);

if(patient.getRegister().equals("0")){

request.getSession().setAttribute("doctorName", "未挂号");

}else{

request.getSession().setAttribute("doctorName", patient.getDoctor());

}

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

}

sb.append("{ \"rows\":[");

for(int i=0;i

sb.append("{\"name\":\""+doctor.get(i).getName()+"\"");

sb.append(",\"gender\":\""+doctor.get(i).getGender()+"\"");

sb.append(",\"age\":\""+doctor.get(i).getAge()+"\"");

sb.append(",\"years\":\""+doctor.get(i).getYears()+"\"");

sb.append(",\"idnumber\":\""+doctor.get(i).getIdNumber()+"\"") ;

sb.append(",\"professionalTitle\":\""+doctor.get(i).getProfessio nalTitle()+"\"");

sb.append(",\"offices\":\""+doctor.get(i).getOffices()+"\"}");

if(i!=(doctor.size()-1)){

sb.append(",");

}

}

sb.append("]}");

PrintWriter out= response.getWriter();

out.print(sb.toString());

out.close();

}

public void init() throws ServletException {

}

}

5.4 管理员模块

模块功能描述:

图9 查询系统用户

主要代码如下:

package servlet;

import java.io.IOException;

import java.io.PrintWriter;

import java.sql.SQLException;

import java.util.ArrayList;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import bean.RoleBean;

import dao.RoleDao;

public class ShowVerifiedUser extends HttpServlet { private static final long serialVersionUID = 1L;

public ShowVerifiedUser() {

super();

}

相关主题
文本预览
相关文档 最新文档