基于SSM的医院住院管理系统的设计与实现

末尾获取源码
开发语言:Java
Java开发工具:JDK1.8
后端框架:SSM
前端:采用JSP技术开发
数据库:MySQL5.7和Navicat管理工具结合
服务器:Tomcat8.5
开发软件:IDEA / Eclipse
是否Maven项目:是


目录

一、项目简介

二、系统功能

三、系统项目截图

管理员功能实现

医生管理

护士管理

住院统计报表

药品管理

医生功能实现

医嘱管理

病人信息管理

添加住院信息

护士功能实现

住院消费管理

查询医嘱

住院查询

四、核心代码

登录相关

文件上传

封装


一、项目简介

互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对医院住院信息管理混乱,出错率高,信息安全性差,劳动强度大,费时费力等问题,采用医院住院管理系统可以有效管理,使信息管理能够更加科学和规范。

医院住院管理系统在Eclipse环境中,使用Java语言SSM框架。系统可以提供信息显示和相应服务,其管理员查看住院病人消费金额统计报表,管理医生与护士的资料,管理床位,药品,医嘱以及住院消费。医生查询床位,管理病人,管理医嘱,管理病人住院信息。护士查询医嘱,药品,病人以及病人住院信息,管理病人住院消费信息。

总之,医院住院管理系统集中管理信息,有着保密性强,效率高,存储空间大,成本低等诸多优点。它可以降低信息管理成本,实现信息管理计算机化。


二、系统功能

在前面分析的管理员功能的基础上,进行接下来的设计工作,最终展示设计的管理员结构图(见下图)。管理员查看住院病人消费金额统计报表,管理医生与护士的资料,管理床位,药品,医嘱以及住院消费。

在前面分析的医生功能的基础上,进行接下来的设计工作,最终展示设计的医生结构图(见下图)。医生查询床位,管理病人,管理医嘱,管理病人住院信息。        

 在前面分析的护士功能的基础上,进行接下来的设计工作,最终展示设计的护士结构图(见下图)。护士查询医嘱,药品,病人以及病人住院信息,管理病人住院消费信息。



三、系统项目截图

管理员功能实现

医生管理

管理员进入指定功能操作区之后可以管理医生。其页面见下图。本系统设置了医生角色,其信息需要管理员管理,包括添加,修改。

护士管理

管理员进入指定功能操作区之后可以管理护士。其页面见下图。管理员增删改查护士资料。

 

住院统计报表

管理员进入指定功能操作区之后可以查看住院统计报表。其页面见下图。管理员查看各个病人住院消费金额以及其所占比值信息。

 

药品管理

管理员进入指定功能操作区之后可以管理药品。其页面见下图。管理员增删改查药品资料。比如修改药品价格,更新药品图片等都是非常简单的操作。

 

医生功能实现

医嘱管理

医生进入指定功能操作区之后可以管理医嘱。其页面见下图。医生负责登记医嘱,修改或删除本页面显示的医嘱信息。

 

病人信息管理

医生进入指定功能操作区之后可以管理病人信息。其页面见下图。医生负责对病人信息进行登记,可以修改病人的患病详情,家属联系方式以及负责医生姓名等资料,删除数据异常的病人信息

 

添加住院信息

医生进入指定功能操作区之后可以添加住院信息。其页面见下图。医生为病人登记住院信息,包括检查医生,床位,患病类型等信息的登记。

护士功能实现

住院消费管理

护士进入指定功能操作区之后可以管理病人住院消费信息。其页面见下图。护士新增病人住院消费信息,可以在当前页面修改消费原因和消费金额。

 

查询医嘱

护士进入指定功能操作区之后可以查询医嘱。其页面见下图。护士根据病人名称,或根据医生姓名查询医嘱信息。

 

住院查询

护士进入指定功能操作区之后可以查询住院信息。其页面见下图。护士根据病人名称,或者是根据床位编号查询病人住院信息,可以查看病人是否出院。

 


四、核心代码

登录相关


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);
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

文件上传

package com.controller;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.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 org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.PathVariable;
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.RestController;
import org.springframework.web.multipart.MultipartFile;

import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity;
import com.entity.EIException;
import com.service.ConfigService;
import com.utils.R;

/**
 * 上传文件映射表
 */
@RestController
@RequestMapping("file")
@SuppressWarnings({"unchecked","rawtypes"})
public class FileController{
	@Autowired
    private ConfigService configService;
	/**
	 * 上传文件
	 */
	@RequestMapping("/upload")
	public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception {
		if (file.isEmpty()) {
			throw new EIException("上传文件不能为空");
		}
		String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
		File path = new File(ResourceUtils.getURL("classpath:static").getPath());
		if(!path.exists()) {
		    path = new File("");
		}
		File upload = new File(path.getAbsolutePath(),"/upload/");
		if(!upload.exists()) {
		    upload.mkdirs();
		}
		String fileName = new Date().getTime()+"."+fileExt;
		File dest = new File(upload.getAbsolutePath()+"/"+fileName);
		file.transferTo(dest);
		FileUtils.copyFile(dest, new File("C:\\Users\\Desktop\\jiadian\\springbootl7own\\src\\main\\resources\\static\\upload"+"/"+fileName));
		if(StringUtils.isNotBlank(type) && type.equals("1")) {
			ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
			if(configEntity==null) {
				configEntity = new ConfigEntity();
				configEntity.setName("faceFile");
				configEntity.setValue(fileName);
			} else {
				configEntity.setValue(fileName);
			}
			configService.insertOrUpdate(configEntity);
		}
		return R.ok().put("file", fileName);
	}
	
	/**
	 * 下载文件
	 */
	@IgnoreAuth
	@RequestMapping("/download")
	public ResponseEntity<byte[]> download(@RequestParam String fileName) {
		try {
			File path = new File(ResourceUtils.getURL("classpath:static").getPath());
			if(!path.exists()) {
			    path = new File("");
			}
			File upload = new File(path.getAbsolutePath(),"/upload/");
			if(!upload.exists()) {
			    upload.mkdirs();
			}
			File file = new File(upload.getAbsolutePath()+"/"+fileName);
			if(file.exists()){
				/*if(!fileService.canRead(file, SessionManager.getSessionUser())){
					getResponse().sendError(403);
				}*/
				HttpHeaders headers = new HttpHeaders();
			    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);    
			    headers.setContentDispositionFormData("attachment", fileName);    
			    return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		return new ResponseEntity<byte[]>(HttpStatus.INTERNAL_SERVER_ERROR);
	}
	
}

封装

package com.utils;

import java.util.HashMap;
import java.util.Map;

/**
 * 返回数据
 */
public class R extends HashMap<String, Object> {
	private static final long serialVersionUID = 1L;
	
	public R() {
		put("code", 0);
	}
	
	public static R error() {
		return error(500, "未知异常,请联系管理员");
	}
	
	public static R error(String msg) {
		return error(500, msg);
	}
	
	public static R error(int code, String msg) {
		R r = new R();
		r.put("code", code);
		r.put("msg", msg);
		return r;
	}

	public static R ok(String msg) {
		R r = new R();
		r.put("msg", msg);
		return r;
	}
	
	public static R ok(Map<String, Object> map) {
		R r = new R();
		r.putAll(map);
		return r;
	}
	
	public static R ok() {
		return new R();
	}

	public R put(String key, Object value) {
		super.put(key, value);
		return this;
	}
}

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
医院病房管理系统源码下载医院住院管理系统 一、 需求分析 1、 便于病人调查本人的基本住院信息 2、 医院管理病人的住院信息及时了解病房入住信息和病房分配 3、 数据字典 (1) 数据结构:病人 含义说明:是住院患者的基本信息 组成:身份证号,姓名,性别,年龄,联系电话,联系地址 数据项:身份证号 含义说明:住院患者的居民身份证号码 唯一标志每一个病人 类型:int 长度:18 数据项:姓名 含义说明:病人的姓名 类型:char 长度:6 数据项:性别 含义说明:病人的性别 类型:char 长度:2 数据项:年龄 含义说明:病人的年龄 类型:int 长度:3 取值范围:任意范围 数据项:联系电话 含义说明:病人的联系电话用于出现问题是及时与病人及其家属取得联系 类型:int 长度:11 数据项:联系地址 含义说明:可以联系到病人的地址,方便找到病人的信息 类型:char 长度:30 (2) 数据结构:主治医生 含义说明:是住院患者的主治医生信息 组成:工作号,姓名,职位,科室 数据项:工作号 含义说明:住院患者主治医生的工作编号 类型:int 长度:18 数据项:主治医生姓名 含义说明:病人主治医生的姓名 类型:char 长度:6 数据项:职位 含义说明:病人主治医生的职位 类型:char 长度:10 数据项:科室 含义说明:病人主治医生所在科室 类型:char 长度:8 (3) 数据结构:病房 含义说明:是医院的患者居住病房相关信息 组成:病房号,病床号,人数 数据项:病房号 含义说明:病房的编号 类型:int 长度:4 数据项:病床号 含义说明:病房内病床的编号 类型:int 长度:2 数据项:人数 含义说明:病房内现住人数 类型:int 长度:2 (4)数据结构:治疗 含义说明:是医院的患者的治疗信息 组成:疾病号,住院日期 数据项:疾病号 含义说明:疾病的编号 类型:int 长度:4 数据项:住院日期 含义说明:病人的住院日期 类型:date 长度:8 二、 概念结构设计 三、辑结构设计 根据E-R图,最后得到的关系模式为: 主治医生(工作号,主治医生姓名,职位,科室) 病房(病房号,病床号,人数) 治疗(病人号,疾病号,工作号,住院日期) 入住(病人号,病房号,病床号) 病人(病人号,姓名,性别,年龄,联系电话,联系地址) 属于第三范式 主治医生(工作号,主治医生姓名,职位,科室)属于第三范式 病房(病房号,病床号,人数)属于第三范式 治疗(病人号,疾病号,工作号,住院日期)属于第三范式 入住(病人号,病房号,病床号)属于第三范式 四、物理结构设计 病人表 主键 列名 数据类型 可否为空 外键 Yes 病人号 Int(18) No 姓名 Cahr(6) Yes 性别 Cahr(4) Yes 年龄 Int(3) Yes 联系电话 Char(11) Yes 联系地址 Char(30) Yes 主治医生表 主键 列名 数据类型 可否为空 外键 Yes 工作号 Int(18) No 姓名 Cahr(6) Yes 职位 Cahr(10) Yes 科室 Char(8) Yes 病房表 主键 列名 数据类型 可否为空 外键 Yes 病房号 Int(4) No Yes 病床号 Int(2) Yes 人数 Int(2) Yes 治疗表 主键 列名 数据类型 可否为空 外键 Yes 病人号 Int(18) No Yes 疾病号 Int(4) Yes 工作号 Int(18) No Yes 住院日期 Date(8) No 入住表 主键 列名 数据类型 可否为空 外键 Yes 病人号 Int(18) No Yes 病床号 Int(2) Yes Yes 病房号 Int(4) Yes Yes
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值