【源码论文】基于SSM的医院电子病历管理系统JAVA.JSP

  博主介绍:👉全网个人号和企业号粉丝40W+,每年辅导几千名大学生较好的完成毕业设计,专注计算机软件领域的项目研发,不断的进行新技术的项目实战👈
⭐️热门专栏推荐订阅⭐️ 订阅收藏起来,防止下次找不到

🔎千套JAVA实战项目持续更新中~

🔎上百套小程序实战项目持续更新中~

🔎上百套Python实战项目持续更新中
有需求的各位可以先收藏起来,还有大家在毕设选题,开题报告有疑惑的都可以找我,帮你完成文档

⚠️文末联系方式获取完整资料⚠️

 

4系统设计

4.1 软件功能模块设计

电子病历系统分为两个模块,分别是医生功能模块和管理员功能模块。医生功能模块包括:个人中心、入院登记管理、病区管理、科室管理、临时医嘱管理、长期医嘱管理、中药处方管理、护理记录管理、体温单管理、出院带药管理、出院登记管理、系统管理等。管理员功能模块包括:个人中心、医生管理、入院登记管理、病区管理、科室管理、临时医嘱管理、长期医嘱管理、中药处方管理、护理记录管理、体温单管理、出院带药管理、出院登记管理、系统管理等。

电子病历系统整功能如下图所示。

图4-1电子病历系统总体功能模块图

4.2 数据库设计

4.2.1 概念模型设计

概念模型是对现实中的问题出现的事物的进行描述,ER图是由实体及其关系构成的图,通过E-R图可以清楚地描述系统涉及到的实体之间的相互关系。

医生E-R图如图4-2所示。

图4-2医生E-R图

临时医嘱E-R图如图4-3所示。

图4-3临时医嘱E-R图

中药处方E-R图如图4-4所示。

图4-4中药处方E-R图

公告栏E-R图如图4-5所示。

 图4-5公告栏E-R图

电子病历系统总体E-R图如图4-6所示:

图4-6 电子病历系统总体E-R图

4.2.2 数据表

本系统采用的是MySQL数据库存储数据,系统中使用到的主要数据表的具体展示部分如下所示。

表4-1:配置文件

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

name

varchar

100

配置参数名称

value

varchar

100

配置参数值

表4-2:用户表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

username

varchar

100

用户名

password

varchar

100

密码

role

varchar

100

角色

管理员

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

表4-3:token表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

userid

bigint

用户id

username

varchar

100

用户名

tablename

varchar

100

表名

role

varchar

100

角色

token

varchar

200

密码

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

expiratedtime

timestamp

过期时间

CURRENT_TIMESTAMP

表4-4:入院登记

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

huanzhebianhao

varchar

200

患者编号

huanzhexingming

varchar

200

患者姓名

nianling

varchar

200

年龄

xingbie

varchar

200

性别

zhaopian

longtext

4294967295

照片

jiwangbingshi

longtext

4294967295

既往病史

lianxifangshi

varchar

200

联系方式

jinjilianxiren

varchar

200

紧急联系人

lianxidianhua

varchar

200

联系电话

huanzheziliao

longtext

4294967295

患者资料

ruyuanbeizhu

varchar

200

入院备注

ruyuanshijian

datetime

入院时间

yishengzhanghao

varchar

200

医生账号

yishengxingming

varchar

200

医生姓名

表4-5:公告栏

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

title

varchar

200

标题

introduction

longtext

4294967295

简介

picture

longtext

4294967295

图片

content

longtext

4294967295

内容

表4-6:临时医嘱

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

linshiyizhu

varchar

200

临时医嘱

yizhuneirong

longtext

4294967295

医嘱内容

yizhushijian

datetime

医嘱时间

beizhu

varchar

200

备注

huanzhebianhao

varchar

200

患者编号

huanzhexingming

varchar

200

患者姓名

nianling

varchar

200

年龄

xingbie

varchar

200

性别

zhaopian

longtext

4294967295

照片

yishengzhanghao

varchar

200

医生账号

yishengxingming

varchar

200

医生姓名

表4-7:科室

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

keshi

varchar

200

科室

表4-8:护理记录

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

hulimingcheng

varchar

200

护理名称

hulixiangqing

longtext

4294967295

护理详情

hulishijian

datetime

护理时间

beizhu

varchar

200

备注

huanzhebianhao

varchar

200

患者编号

huanzhexingming

varchar

200

患者姓名

nianling

varchar

200

年龄

xingbie

varchar

200

性别

zhaopian

longtext

4294967295

照片

yishengzhanghao

varchar

200

医生账号

yishengxingming

varchar

200

医生姓名

表4-9:长期医嘱

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

zhangqiyizhu

varchar

200

长期医嘱

yizhuneirong

longtext

4294967295

医嘱内容

yizhushijian

datetime

医嘱时间

beizhu

varchar

200

备注

huanzhebianhao

varchar

200

患者编号

huanzhexingming

varchar

200

患者姓名

nianling

varchar

200

年龄

xingbie

varchar

200

性别

zhaopian

longtext

4294967295

照片

yishengzhanghao

varchar

200

医生账号

yishengxingming

varchar

200

医生姓名

表4-10:出院登记

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

huanzhebianhao

varchar

200

患者编号

huanzhexingming

varchar

200

患者姓名

nianling

varchar

200

年龄

xingbie

varchar

200

性别

zhaopian

longtext

4294967295

照片

jiwangbingshi

longtext

4294967295

既往病史

lianxifangshi

varchar

200

联系方式

jinjilianxiren

varchar

200

紧急联系人

lianxidianhua

varchar

200

联系电话

huanzheziliao

longtext

4294967295

患者资料

ruyuanbeizhu

varchar

200

入院备注

ruyuanshijian

varchar

200

入院时间

shoushufeiyong

int

手术费用

yiliaofeiyong

int

医疗费用

yaopinfeiyong

int

药品费用

hulifeiyong

int

护理费用

qitafeiyong

int

其它费用

zongfeiyong

int

总费用

chuyuanbeizhu

varchar

200

出院备注

chuyuanshijian

datetime

出院时间

yishengzhanghao

varchar

200

医生账号

yishengxingming

varchar

200

医生姓名

表4-11:医生

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

yishengzhanghao

varchar

200

医生账号

yishengxingming

varchar

200

医生姓名

mima

varchar

200

密码

xingbie

varchar

200

性别

shouji

varchar

200

手机

touxiang

longtext

4294967295

头像

表4-12:中药处方

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

chufangmingcheng

varchar

200

处方名称

chufangneirong

longtext

4294967295

处方内容

kaifangshijian

datetime

开方时间

beizhu

varchar

200

备注

huanzhebianhao

varchar

200

患者编号

huanzhexingming

varchar

200

患者姓名

nianling

varchar

200

年龄

xingbie

varchar

200

性别

zhaopian

longtext

4294967295

照片

yishengzhanghao

varchar

200

医生账号

yishengxingming

varchar

200

医生姓名

表4-13:出院带药

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

yaopinmingcheng

varchar

200

药品名称

yaopinxiangqing

longtext

4294967295

药品详情

yaopinshuliang

varchar

200

药品数量

yaopinjinji

varchar

200

药品禁忌

dengjishijian

datetime

登记时间

beizhu

varchar

200

备注

huanzhebianhao

varchar

200

患者编号

huanzhexingming

varchar

200

患者姓名

nianling

varchar

200

年龄

xingbie

varchar

200

性别

zhaopian

longtext

4294967295

照片

yishengzhanghao

varchar

200

医生账号

yishengxingming

varchar

200

医生姓名

表4-14:病区

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

bingqumingcheng

varchar

200

病区名称

bingquweizhi

varchar

200

病区位置

bingquxiangqing

longtext

4294967295

病区详情

keshi

varchar

200

科室

zhuanrushijian

datetime

转入时间

zhuanchushijian

datetime

转出时间

beizhu

varchar

200

备注

huanzhebianhao

varchar

200

患者编号

huanzhexingming

varchar

200

患者姓名

nianling

varchar

200

年龄

xingbie

varchar

200

性别

zhaopian

longtext

4294967295

照片

yishengzhanghao

varchar

200

医生账号

yishengxingming

varchar

200

医生姓名

表4-15:体温单

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

tiwen

varchar

200

体温

tiwendan

longtext

4294967295

体温单

cewenshijian

datetime

测温时间

beizhu

varchar

200

备注

huanzhebianhao

varchar

200

患者编号

huanzhexingming

varchar

200

患者姓名

nianling

varchar

200

年龄

xingbie

varchar

200

性别

zhaopian

longtext

4294967295

照片

yishengzhanghao

varchar

200

医生账号

yishengxingming

varchar

200

医生姓名

5 系统功能实现

本章讲述的是系统对各个模块功能实现的效果图,对管理员功能和医生功能分别进行了展示,页面布局清晰,操作简单快捷,基本实现了对用户和管理员对系统的需求。

5.1医生功能模块

在系统登录界面,通过输入用户名、密码等信息进行登录,如图5-1所示。

图5-1系统登录界面图

在医生注册界面,通过输入医生账号、密码及个人信息进行注册,如图5-2所示:

图5-2 医生注册界面

医生登录进入系统,可查看并使用个人中心、入院登记管理、病区管理、科室管理、临时医嘱管理、长期医嘱管理、中药处方管理、护理记录管理、体温单管理、出院带药管理、出院登记管理、系统管理等功能,如图5-3所示:

图5-3医生功能界面

在个人中心界面,医生可查看并修改其个人信息、密码,如图5-4所示。

图5-4个人中心界面图

在入院登记管理界面,医生可查看患者编号、患者姓名、年龄、性别、照片、联系方式、紧急联系人、联系电话、患者资料、入院备注、入院时间、医生账号、医生姓名等信息,并可进行增删查改、病区进出、临时医嘱、长期医嘱、处方、护理、体温、带药、出院操作,如图5-5所示。

图5-5入院登记管理界面图

在病区管理界面,医生可查看病区名称、病区位置、科室、转入时间、备注、患者编号、患者姓名、年龄、性别、照片、医生账号、医生姓名等信息,并可进行查删改操作,如图5-6所示。

图5-6病区管理界面图

代码实现

package com.controller;
 
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
 
import javax.servlet.http.HttpServletRequest;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
 
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
 
/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;
 
	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }
 
	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }
 
    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
 
    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }
 
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }
 
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

源码获取

大家点赞、收藏、关注 ,让更多需要的同学看到

不同开发语言专栏推荐订阅

🔎千套JAVA实战项目持续更新中~

🔎上百套小程序实战项目持续更新中~

🔎上百套Python实战项目持续更新中

👇下方有我的微信名片👇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值