共计 13333 个字符,预计需要花费 34 分钟才能阅读完成。
博主介绍:✌退职 Java 研发工程师、专一于程序设计、源码分享、技术交换和毕业设计✌
项目名称
(精品)基于 Spingboot vue 的 HIS 医院门诊信息系统设计与实现 毕业论文 + 我的项目源码及数据库文件
视频介绍
(精品)基于 Spingboot vue 的 HIS 医院门诊信息系统设计与实现 毕业论文 + 我的项目源码及数据库文件_哔哩哔哩_bilibili
零碎阐明
摘 要
医院门诊信息管理系统是根据医院的门诊部分以及门诊部分配套的前台、医技、药房等部分的实际情况进行开发编写的一套全方位的管理系统。它的次要目标是便利医院对于门诊部分以及其配套的一些子部份进行集中管理,便利医生的看诊过程和患者的就诊过程,提高医生的工作效率以及患者的满意度。
本零碎的前端次要使用了 Vue 框架、Element UI 和 AJAX 技术。Vue 采纳自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,也非常容易与其它库或已有我的项目整合。Element UI 则具备一致性、优化反馈、高效率和可控的长处。我的项目后端次要使用了 Spring 等一系列框架和 MyBatis 以及 Maven。这一套技术易于学习、操作和治理。数据库方面则是使用了 MySQL 数据库以及 Navicat 数据库管理工具,轻量,易于治理。
本零碎基本实现了我的项目需要中提出的各项内容,次要实现了前台部分、门诊医生部分、医技医生部分、药房部分和系统管理部分五个子系统。其中前台部分蕴含了现场挂号、退号、费用查问、免费退费四个子模块;门诊医生部分蕴含了病历首页、测验申请、门诊确诊、处理申请、药物处方、费用查问六个子模块;医技医生部分蕴含了患者测验、患者处理、医技治理三个子模块;药房治理部分蕴含出药和药品治理两个子模块;系统管理部分蕴含科室治理、医生排班治理、用户治理三个子模块。
本文将从所利用的技术、具体的实现、实现的功能、在零碎中的作用等方面,对咱们实现的医院门诊管理系统进行粗疏的描述。
关键词 HIS 医院信息系统;前后端分离;VUE;Spingboot
summary
The outpatient information management system of the hospital is an all-round management system developed and written according to the actual situation of the outpatient part of the hospital and the supporting reception desk, medical technology, pharmacy and other parts of the outpatient part.Its main purpose is to facilitate the hospital to conduct centralized management of the outpatient department and its supporting subsidiaries, so as to facilitate the consultation process of doctors and the treatment process of patients, and improve the work efficiency of doctors and patient satisfaction.
The front end of this system mainly uses the Vue framework, Element UI, and AJAX technologies.The Vue uses a bottom-up incremental development design.Vue’s core library focuses only on the view layer and is very easy to learn and easily integrate with other libraries or existing projects.Element UI has the advantages of consistency, optimized feedback, high efficiency, and control.The backend of the project mainly uses a series of frameworks like Spring and MyBatis as well as Maven.This set of technologies is easy to learn, operate, and manage.In the database side, MySQL database and Navicat database management tools are lightweight and easy to manage.
The system basically realizes the contents proposed in the project needs, mainly realizing five sub-systems: front desk part, outpatient doctor part, medical technology doctor part, pharmacy part and system management part.The front desk part includes four sub-modules: field registration, withdrawal, fee inquiry and fee refund; outpatient doctor part includes home page, inspection application, outpatient diagnosis, treatment application, drug prescription, fee inquiry; medical doctor part includes patient inspection, patient disposal, medical technology management; pharmacy management part includes two submodules of drug delivery and drug management; and system management part includes three submodules: department management, physician scheduling management and user management.
This paper will provide a detailed description of the hospital outpatient management system we implement in terms of the applied technology, specific implementation, completed functions, role in the system, etc.
Keywords HIS hospital information system; front and rear separation; VUE;Spingboot
目录
摘 要 I
summary 1
第 1 章 绪论 5
1.1 我的项目背景 5
1.2 我的项目意义 6
1.3 工作内容 6
1.3.1 我的项目故事板 6
1.3.2 我的项目结构档次图 9
1.3.3 整体业务流程图 9
1.4 工作计划 10
1.4.1 人员安排 10
1.4.2 工夫安排 10
1.5 本章小结 10
第 2 章 开发工具及相干技术简介 11
2.1 HbuilderX 11
2.2 IntelliJ IDEA 11
2.3 MySQL 11
2.4 Navicat 12
2.5 配置管理与 Git 利用 12
2.6 Vue 开发前端开发框架 12
2.7 Element UI 13
2.8 Ajax 13
2.9 Spring 13
2.10 Spring MVC 13
2.11 Springboot 13
2.12 MyBatis 14
2.13 Maven 14
2.14 Axure RP 14
2.15 PowerDesigner 15
2.16 ProcessOn 15
2.17 本章小结 15
第 3 章 需要分析 16
3.1 引言 16
3.1.1 目标 16
3.1.2 参考资料 16
3.1.3 术语 16
3.2 工作概述 16
3.2.1 目标 16
3.3 需要规定 16
3.3.1 一般性需求 16
3.3.2 功能性需求 17
3.3.3 挂号 19
3.3.4 缴费 / 退费 21
3.3.5 病例填写 23
3.3.6 测验申请 25
3.3.7 门诊确诊 26
3.3.8 处理申请 28
3.3.9 开立处方 30
3.3.10 处方治理 31
3.3.11 患者测验 32
3.3.12 患者处理 34
3.3.13 医技治理 36
3.3.14 药房开药 37
3.3.15 药房治理 39
3.3.16 医生排班治理 40
3.3.17 科室治理 41
3.3.18 用户治理 43
3.4 零碎安全性的申请 45
3.4.1 数据存储安全 45
3.4.2 访问控制安全 45
3.4.3 网络传输安全 45
3.4.4 利用零碎审计 45
3.4.5 零碎束缚 45
3.5 运行环境规定 45
3.5.1 运行环境 45
3.5.2 接口 46
3.6 遗留问题 46
3.7 我的项目非技术需要 46
3.8 本章小结 46
第 4 章 零碎设计 47
4.1 界面原型及接口设计 47
4.1.1 挂号部分 47
4.1.2 退号部分 48
4.1.3 患者费用查问部分 49
4.1.4 缴费 / 退费部分 50
4.1.5 病历首页部分 51
4.1.6 测验申请部分 52
4.1.7 处理申请部分 53
4.1.8 门诊确诊部分 54
4.1.9 成药处方部分 55
4.1.10 草药处方部分 56
4.1.11 门诊费用查问部分 57
4.1.12 患者测验部分 58
4.1.13 患者处理部分 59
4.1.14 医技治理部分 60
4.1.15 开药部分 60
4.1.16 药物治理部分 61
4.1.17 医生排班治理部分 62
4.1.18 科室治理部分 63
4.1.19 用户治理部分 63
4.2 数据库设计(ER 图,标准化,物理设计)64
4.2.1 我的项目总 E - R 图 64
4.2.2 我的项目分 E - R 图 65
70
71
4.2.3 数据库标准化分析 71
4.2.4 数据库表设计 72
环境须要
1. 运行环境:最好是 java jdk 1.8,咱们在这个平台上运行的。其余版本实践上也能够。
2.IDE 环境:IDEA,Eclipse,Myeclipse 都能够。举荐 IDEA;
3.tomcat 环境:Tomcat 7.x,8.x,9.x 版本均可
4. 硬件环境:windows 7/8/10 1G 内存以上;或者 Mac OS;
5. 数据库:MySql 5.7 版本;
6. 是否 Maven 我的项目:否;
技术栈
- 后端:Spring+SpringMVC+Mybatis
- 前端:JSP+CSS+JavaScript+jQuery
应用阐明
- 应用 Navicat 或者其它工具,在 mysql 中创立对应名称的数据库,并导入我的项目的 sql 文件;
- 应用 IDEA/Eclipse/MyEclipse 导入我的项目,Eclipse/MyEclipse 导入时,若为 maven 我的项目请抉择 maven;
若为 maven 我的项目,导入胜利后请执行 maven clean;maven install 命令,而后运行; - 将我的项目中 springmvc-servlet.xml 配置文件中的数据库配置改为本人的配置;
- 运行我的项目,在浏览器中输出 http://localhost:8080/ 登录
运行截图
用户管理控制层:
package com.houserss.controller;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.houserss.common.Const;
import com.houserss.common.Const.Role;
import com.houserss.common.ServerResponse;
import com.houserss.pojo.User;
import com.houserss.service.IUserService;
import com.houserss.service.impl.UserServiceImpl;
import com.houserss.util.MD5Util;
import com.houserss.util.TimeUtils;
import com.houserss.vo.DeleteHouseVo;
import com.houserss.vo.PageInfoVo;
/**
- Created by admin
*/
@Controller
@RequestMapping(“/user/”)
public class UserController {
@Autowired
private IUserService iUserService;
/**
* 用户登录
* @param username
* @param password
* @param session
* @return
*/
@RequestMapping(value = "login.do",method = RequestMethod.POST)
@ResponseBody
public ServerResponse<User> login(User user,String uvcode, HttpSession session){String code = (String)session.getAttribute("validationCode");
if(StringUtils.isNotBlank(code)) {if(!code.equalsIgnoreCase(uvcode)) {return ServerResponse.createByErrorMessage("验证码不正确");
}
}
ServerResponse<User> response = iUserService.login(user.getUsername(),user.getPassword());
if(response.isSuccess()){session.setAttribute(Const.CURRENT_USER,response.getData());
}
return response;
}
}
管理员管理控制层:
package com.sxl.controller.admin;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.sxl.controller.MyController;
@Controller(“adminController”)
@RequestMapping(value = “/admin”)
public class AdminController extends MyController {
@RequestMapping(value = "/index")
public String frame(Model model, HttpServletRequest request)throws Exception {return "/admin/index";}
@RequestMapping(value = "/main")
public String main(Model model, HttpServletRequest request)throws Exception {return "/admin/main";}
@RequestMapping(value = "/tj1")
public String tj1(Model model, HttpServletRequest request)throws Exception {String sql="select DATE_FORMAT(insertDate,'%Y-%m-%d') dates,sum(allPrice) price from t_order order by DATE_FORMAT(insertDate,'%Y-%m-%d') desc";
List<Map> list = db.queryForList(sql);
model.addAttribute("list", list);
System.out.println(list);
return "/admin/tj/tj1";
}
@RequestMapping(value = "/password")
public String password(Model model, HttpServletRequest request)throws Exception {return "/admin/password";}
@RequestMapping(value = "/changePassword")
public ResponseEntity<String> loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {Map admin = getAdmin(request);
if(oldPassword.equals(admin.get("password").toString())){
String sql="update t_admin set password=? where id=?";
db.update(sql, new Object[]{newPassword,admin.get("id")});
return renderData(true,"1",null);
}else{return renderData(false,"1",null);
}
}
}
批改明码业务逻辑:
package com.sxl.controller.admin;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.sxl.controller.MyController;
@Controller(“userController”)
@RequestMapping(value = “/user”)
public class UserController extends MyController {
@RequestMapping(value = "/index")
public String frame(Model model, HttpServletRequest request)throws Exception {return "/user/index";}
@RequestMapping(value = "/main")
public String main(Model model, HttpServletRequest request)throws Exception {return "/user/main";}
@RequestMapping(value = "/password")
public String password(Model model, HttpServletRequest request)throws Exception {return "/user/password";}
@RequestMapping(value = "/changePassword")
public ResponseEntity<String> loginSave(Model model,HttpServletRequest request,String oldPassword,String newPassword) throws Exception {Map user = getUser(request);
if(oldPassword.equals(user.get("password").toString())){
String sql="update t_user set password=? where id=?";
db.update(sql, new Object[]{newPassword,user.get("id")});
return renderData(true,"1",null);
}else{return renderData(false,"1",null);
}
}
@RequestMapping(value = "/mine")
public String mine(Model model, HttpServletRequest request)throws Exception {
Map user =getUser(request);Map map = db.queryForMap(“select * from t_user where id=?”,new Object[]{user.get(“id”)});model.addAttribute(“map”, map); return “/user/mine”;
}
@RequestMapping(value = "/mineSave")
public ResponseEntity<String> mineSave(Model model,HttpServletRequest request,Long id
,String username,String password,String name,String gh,String mobile) throws Exception{
int result = 0;
String sql="update t_user set name=?,gh=?,mobile=? where id=?";
result = db.update(sql, new Object[]{name,gh,mobile,id});
if(result==1){return renderData(true,"操作胜利",null);
}else{return renderData(false,"操作失败",null);
}
}
}
通用治理模块:
package com.sxl.controller;
import java.nio.charset.Charset;
import java.util.Locale;
import java.util.ResourceBundle;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import com.sxl.util.JacksonJsonUtil;
import com.sxl.util.StringUtil;
import com.sxl.util.SystemProperties;
public class BaseController {
public static final Long EXPIRES_IN = 1000 * 3600 * 24 * 1L;// 1 天
@Autowired
private SystemProperties systemProperties;
/**
* 取得配置文件内容
*/
public String getConfig(String key) {return systemProperties.getProperties(key);
}
/**
* 返回服务器地址 like http://192.168.1.1:8441/UUBean/
*/
public String getHostUrl(HttpServletRequest request) {String hostName = request.getServerName();
Integer hostPort = request.getServerPort();
String path = request.getContextPath();
if (hostPort == 80) {return "http://" + hostName + path + "/";} else {return "http://" + hostName + ":" + hostPort + path + "/";}
}
/***
* 获取以后的 website 门路 String
*/
public static String getWebSite(HttpServletRequest request) {String returnUrl = request.getScheme() + "://"
+ request.getServerName();
if (request.getServerPort() != 80) {returnUrl += ":" + request.getServerPort();
}
returnUrl += request.getContextPath();
return returnUrl;
}
/**
* 初始化 HTTP 头.
*
* @return HttpHeaders
*/
public HttpHeaders initHttpHeaders() {HttpHeaders headers = new HttpHeaders();
MediaType mediaType = new MediaType("text", "html",
Charset.forName("utf-8"));
headers.setContentType(mediaType);
return headers;
}
/**
* 返回 信息数据
*
* @param status
* @param msg
* @return
*/
public ResponseEntity<String> renderMsg(Boolean status, String msg) {if (StringUtils.isEmpty(msg)) {msg = "";}
String str = "{\"status\":\"" + status + "\",\"msg\":\""+ msg +"\"}";
ResponseEntity<String> responseEntity = new ResponseEntity<String>(str,
initHttpHeaders(), HttpStatus.OK);
return responseEntity;
}
/**
* 返回 obj 数据
*
* @param status
* @param msg
* @param obj
* @return
*/
public ResponseEntity<String> renderData(Boolean status, String msg,
Object obj) {if (StringUtils.isEmpty(msg)) {msg = "";}
StringBuffer sb = new StringBuffer();
sb.append("{");
sb.append("\"status\":\"" + status + "\",\"msg\":\""+ msg +"\",");
sb.append("\"data\":" + JacksonJsonUtil.toJson(obj) + "");
sb.append("}");
ResponseEntity<String> responseEntity = new ResponseEntity<String>(sb.toString(), initHttpHeaders(), HttpStatus.OK);
return responseEntity;
}
/***
* 获取 IP(如果是多级代理,则失去的是一串 IP 值)*/
public static String getIpAddr(HttpServletRequest request) {String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getRemoteAddr();
}
if (ip != null && ip.length() > 0) {String[] ips = ip.split(",");
for (int i = 0; i < ips.length; i++) {if (!"unknown".equalsIgnoreCase(ips[i])) {ip = ips[i];
break;
}
}
}
return ip;
}
/**
* 国际化取得语言内容
*
* @param key
* 语言 key
* @param args
* @param argsSplit
* @param defaultMessage
* @param locale
* @return
*/
public static String getLanguage(String key, String args, String argsSplit,
String defaultMessage, String locale) {
String language = "zh";
String contry = "cn";
String returnValue = defaultMessage;
if (!StringUtil.isEmpty(locale)) {
try {String[] localeArray = locale.split("_");
language = localeArray[0];
contry = localeArray[1];
} catch (Exception e) {}}
try {
ResourceBundle resource = ResourceBundle.getBundle("lang.resource",
new Locale(language, contry));
returnValue = resource.getString(key);
if (!StringUtil.isEmpty(args)) {String[] argsArray = args.split(argsSplit);
for (int i = 0; i < argsArray.length; i++) {returnValue = returnValue.replace("{" + i + "}",
argsArray[i]);
}
}
} catch (Exception e) { }
return returnValue;
}
}
源码获取:
大家点赞、珍藏、关注、评论啦、查看👇🏻👇🏻👇🏻QQ 号获取联系方式👇🏻👇🏻👇🏻