博主介绍:✌退职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 {
@Autowiredprivate IUserService iUserService;/** * 用户登录 * @param username * @param password * @param session * @return */@RequestMapping(value = "login.do",method = RequestMethod.POST)@ResponseBodypublic 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天@Autowiredprivate 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号获取联系方式