Design and implementation of hospital comprehensive service management system based on SSM

Get the source code at the end
Development language: Java
Java development tool: JDK1.8
Back-end framework: SSM
Front-end: developed using Vue technology
Database: MySQL5.7 combined with Navicat management tools
Server: Tomcat8.5
Development software: IDEA/Eclipse
Whether it is a Maven project: yes


Table of contents

1. Project Introduction

2. System functions

3. System project screenshots

Doctor management

Nursing information management

Hospitalization information management

Hospitalization information management

Discharge information management

Nursing appointment management

personal information

Caregiver information

Nursing appointment management

 hospitalization information

4. Core code

Login related

File Upload

encapsulation


1. Project Introduction

Since the development of the Internet, both its theory and technology have matured, and it has widely participated in all aspects of society. It allows information to be disseminated through the Internet, and combined with information management tools, it can provide good services to people. In order to solve the problems of chaotic hospital inpatient information management, high error rate, poor information security, high labor intensity, time-consuming and labor-intensive, the hospital inpatient comprehensive service management system can be effectively managed, making information management more scientific and standardized.

The hospital comprehensive service management system is coded in the Eclipse environment using Java language and Mysql is used to create data tables to save the data generated by this system. The system can provide information display and corresponding services. Its administrator manages nursing staff, doctors, patient hospitalization, expenses and department classification information. Doctors manage patient hospitalization information and review patient discharge information. The nurse checks whether the patient's scheduled nursing service has been paid, and updates the nurse's personal information and password. Users make an appointment with a nurse, pay the nurse's service price, view hospitalization information, and apply for discharge.

In short, the hospital's comprehensive inpatient service management system centrally manages information and has many advantages such as strong confidentiality, high efficiency, large storage space, and low cost. It can reduce information management costs and realize computerization of information management.


2. System functions

This system needs to follow certain design principles during the design process. The purpose is to ensure that the developed system has high quality, complete functions, and is convenient and simple to operate, so that it can meet the user's requirements to the greatest extent. In addition to the basic principles of easy operation, the system design principles also include the principles of safety and accuracy.

The first design principle: the principle of ease of operation. The functions designed for this system must be complete and complete. When coding, the interfaces designed must be friendly. Once users use this system, they must be able to easily get started and operate the system to process data. time, it must be convenient. In addition, some necessary prompts need to be designed to guide users to operate the system.

The second design principle: the security principle. This system needs to authenticate each visitor in the login module. The system will judge based on the information entered by the visitor, use the security verification code written in advance for data comparison, and guide the successful matching. Visitors enter the specified operation interface. This prevents irrelevant visitors from stealing system data.

The third design principle: the principle of accuracy. In order to ensure that the data registered by users is correct, a data error correction mechanism needs to be designed in advance so that users can carefully check the registered error information through the system's error prompts and correct the errors in a timely manner. , fill in the correct information. For example, when setting a password, it is required that the length of the password cannot be less than 6 characters, and the data type cannot be all numbers, etc. can be standardized.

Based on the administrator functions analyzed previously, the next design work is carried out, and the designed administrator structure diagram is finally displayed (see the figure below). Administrators manage nursing staff, doctors, and manage patient hospitalization, expenses, and department classification information.

Based on the previously analyzed doctor functions, proceed with the next design work and finally display the designed doctor structure diagram (see the figure below). Doctors manage patient hospitalization information and review patient discharge information. 

Based on the previously analyzed functions of the caregiver, proceed with the next design work and finally display the designed structure diagram of the caregiver (see the figure below). The nurse checks whether the patient's scheduled nursing service has been paid, and updates the nurse's personal information and password.

 Based on the user functions analyzed previously, proceed with the next design work and finally display the designed user structure diagram (see the figure below). Users make an appointment with a nurse, pay the nurse's service price, view hospitalization information, and apply for discharge.



3. System project screenshots

Doctor management

Administrators can manage doctor information after entering the designated functional operation area. Its page is shown below. The administrator can add, delete, modify and check the doctor's information.

Nursing information management

Administrators can manage caregiver information after entering the designated functional operation area. Its page is shown below. Administrators can check users' comments about caregivers, add, delete, and modify caregiver information.

 

Hospitalization information management

Administrators can manage hospitalization information after entering the designated functional operation area. Its page is shown below. The administrator can check the patient's hospitalization date, attending doctor and other information, and can modify and delete hospitalization information.

Hospitalization information management

Doctors can manage patient hospitalization information after entering the designated functional operation area. Its page is shown below. Doctors add, delete, modify and check patient hospitalization data.

 

Discharge information management

Doctors can manage patient discharge information after entering the designated functional operation area. Its page is shown below. A doctor's review is required for patient discharge.

 

Nursing appointment management

After the nurse enters the designated functional operation area, she can manage the nurse's appointment information. Its page is shown below. The caregiver checks whether the patient's scheduled caregiver service is paid.

 

personal information

Caregivers can manage personal information after entering the designated functional operation area. Its page is shown below. In this module, caregivers can update information such as photos and mobile phones.

 

Caregiver information

After entering the designated function operation area, the user can view the nurse information. Its page is shown below. Users can check the price and contact number of nursing services and make an appointment for nursing services online.

 

Nursing appointment management

After entering the designated functional operation area, the user can manage the nurse appointment. Its page is shown below. Users pay for the already reserved nursing service and view the details of the nursing service.

 

 hospitalization information

Users can view hospitalization information after entering the designated functional operation area. Its page is shown below. Users can apply for discharge in this module.

 


4. Core code

Login related


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();
    }
}

File Upload

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);
	}
	
}

encapsulation

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;
	}
}

Guess you like

Origin blog.csdn.net/weixin_52721608/article/details/133497957