基于java+ssm+jsp的电子病历管理系统

项目介绍

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

电子病历管理系统在idea环境中,使用Java语言进行编码,使用Mysql创建数据表保存本系统产生的数据。系统可以提供信息显示和相应服务,本系统管理员管理医生,患者,健康日记,手术记录,检查记录,护理记录以及医院讯息等信息。医生管理医嘱,管理患者的手术记录,检查记录,护理记录,管理患者的病例等信息。患者下载病例,查看医嘱,手术记录,检查记录,护理记录,登记健康日记信息。

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

4.2 功能结构设计
在前面分析的管理员功能的基础上,进行接下来的设计工作,最终展示设计的管理员结构图(见下图)。管理员管理医生,患者,健康日记,手术记录,检查记录,护理记录以及医院讯息等信息。
在这里插入图片描述
在前面分析的医生功能的基础上,进行接下来的设计工作,最终展示设计的医生结构图(见下图)。医生管理医嘱,管理患者的手术记录,检查记录,护理记录,管理患者的病例等信息。
在这里插入图片描述
在前面分析的患者功能的基础上,进行接下来的设计工作,最终展示设计的患者结构图(见下图)。患者下载病例,查看医嘱,手术记录,检查记录,护理记录,登记健康日记信息。
在这里插入图片描述

开发环境

编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SSM
编译工具:idea或者eclipse,jdk1.8,maven
支持定做:java/php/python/android/小程序/vue/爬虫/c#/asp.net

系统实现

5.1 管理员功能实现
5.1.1 医生管理
管理员进入指定功能操作区之后可以管理医生。其页面见下图。管理员可以增删改查医生的资料。可以为医生的账户重置密码。
在这里插入图片描述

图5.1 医生管理页面

5.1.2 患者管理
管理员进入指定功能操作区之后可以管理患者信息。其页面见下图。管理员增删改查患者信息,可以为患者的账户重置密码,可以通过患者的身份证号查询患者。
在这里插入图片描述

图5.2 患者管理页面

5.1.3 医院讯息管理
管理员进入指定功能操作区之后可以管理医院讯息。其页面见下图。管理员在本页面可以新增医院讯息,可以修改讯息名称,修改讯息详情信息,可以删除指定的医院讯息信息。
在这里插入图片描述

图5.3 医院讯息管理页面

5.2 医生功能实现
5.2.1 病例管理
医生进入指定功能操作区之后可以管理病例信息。其页面见下图。医生为患者登记病例信息,可以在本页面下载患者的病例文件。
在这里插入图片描述

图5.4 病例管理页面

5.2.2 健康日记管理
医生进入指定功能操作区之后可以管理健康日记信息。其页面见下图。医生查看患者的健康日记信息,评价患者的健康日记信息。
在这里插入图片描述

图5.5健康日记管理页面

5.2.3 手术记录管理
医生进入指定功能操作区之后管理手术记录信息。其页面见下图。医生增删改查患者的手术记录信息。
在这里插入图片描述

图5.6 手术记录管理页面
5.2.4 检查记录管理
医生进入指定功能操作区之后可以管理患者的检查记录信息。其页面见下图。医生能够对患者的检查记录进行增加,修改,删除。
在这里插入图片描述

图5.7 检查记录管理页面

5.2.5 医嘱管理
医生进入指定功能操作区之后可以管理医嘱信息。其页面见下图。医生在当前页面新增医嘱,修改医嘱详情,删除指定的医嘱信息。
在这里插入图片描述

图5.8 医嘱管理页面

5.3 患者功能实现
5.3.1 健康日记管理
患者进入指定功能操作区之后可以管理健康日记信息。其页面见下图。患者登记健康日记信息,包括健康状况,血糖,血压,血脂,饮食状况等信息,可以批量删除健康日记信息。
在这里插入图片描述

图5.9 健康日记管理页面

5.3.2 查看病例
患者进入指定功能操作区之后可以查看病例。其页面见下图。患者查看病情诊断信息,下载病例文件。
在这里插入图片描述

图5.10 查看病例页面

5.3.3 查看护理记录
患者进入指定功能操作区之后可以查看护理记录信息。其页面见下图。患者在当前页面查询护理记录信息,点击查看按钮能够查看护理记录详情信息。
在这里插入图片描述

图5.11 查看护理记录页面

核心代码

package com.controller;


import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.BingliEntity;
import com.entity.HuanzheEntity;
import com.entity.view.BingliView;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 病例
 * 后端接口
 * @author
 * @email
*/
@RestController
@Controller
@RequestMapping("/bingli")
public class BingliController {
    private static final Logger logger = LoggerFactory.getLogger(BingliController.class);

    @Autowired
    private BingliService bingliService;


    @Autowired
    private TokenService tokenService;
    @Autowired
    private DictionaryService dictionaryService;



    //级联表service
    @Autowired
    private HuanzheService huanzheService;
    @Autowired
    private YishengService yishengService;


    /**
    * 后端列表
    */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(StringUtil.isEmpty(role))
            return R.error(511,"权限为空");
        else if("医生".equals(role))
            params.put("yishengId",request.getSession().getAttribute("userId"));
        else if("患者".equals(role))
            params.put("huanzheId",request.getSession().getAttribute("userId"));
        params.put("orderBy","id");
        PageUtils page = bingliService.queryPage(params);

        //字典表数据转换
        List<BingliView> list =(List<BingliView>)page.getList();
        for(BingliView c:list){
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(c);
        }
        return R.ok().put("data", page);
    }

    /**
    * 后端详情
    */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        BingliEntity bingli = bingliService.selectById(id);
        if(bingli !=null){
            //entity转view
            BingliView view = new BingliView();
            BeanUtils.copyProperties( bingli , view );//把实体数据重构到view中

            //级联表
            HuanzheEntity huanzhe = huanzheService.selectById(bingli.getHuanzheId());
            if(huanzhe != null){
                BeanUtils.copyProperties( huanzhe , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
                view.setHuanzheId(huanzhe.getId());
            }
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }

    }

    /**
    * 后端保存
    */
    @RequestMapping("ve")
    public R save(@RequestBody BingliEntity bingli, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,bingli:{}",this.getClass().getName(),bingli.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(StringUtil.isEmpty(role))
            return R.error(511,"权限为空");
        else if("医生".equals(role))
            bingli.setBingliYesonTypes(1);
        else if("患者".equals(role))
            bingli.setHuanzheId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
        Wrapper<BingliEntity> queryWrapper = new EntityWrapper<BingliEntity>()
            .eq("huanzhe_id", bingli.getHuanzheId())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        BingliEntity bingliEntity = bingliService.selectOne(queryWrapper);
        if(bingliEntity==null){
            bingli.setCreateTime(new Date());
            bingliService.insert(bingli);
            return R.ok();
        }else {
            return R.error(511,"该患者已经有病例");
        }
    }

    /**
    * 后端修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody BingliEntity bingli, HttpServletRequest request){
        logger.debug("update方法:,,Controller:{},,bingli:{}",this.getClass().getName(),bingli.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(StringUtil.isEmpty(role))
            return R.error(511,"权限为空");
        else if("患者".equals(role))
            bingli.setHuanzheId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
        //根据字段查询是否有相同数据
        Wrapper<BingliEntity> queryWrapper = new EntityWrapper<BingliEntity>()
            .notIn("id",bingli.getId())
            .andNew()
            .eq("huanzhe_id", bingli.getHuanzheId())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        BingliEntity bingliEntity = bingliService.selectOne(queryWrapper);
        if("".equals(bingli.getBingliFile()) || "null".equals(bingli.getBingliFile())){
                bingli.setBingliFile(null);
        }
        if(bingliEntity==null){
            //  String role = String.valueOf(request.getSession().getAttribute("role"));
            //  if("".equals(role)){
            //      bingli.set
            //  }
            bingliService.updateById(bingli);//根据id更新
            return R.ok();
        }else {
            return R.error(511,"该患者已经有病例");
        }
    }



    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids){
        logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
        bingliService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }






}

论文参考

在这里插入图片描述

目 录
1 前言 1
1.1 课题背景 1
1.2 课题意义 1
1.3 研究内容 1
2 开发环境与技术 3
2.1 MYSQL数据库 3
2.2 JSP技术 3
2.3 SSM框架 3
3 系统分析 5
3.1 可行性分析 5
3.1.1 技术可行性 5
3.1.2 经济可行性 5
3.1.3 操作可行性 5
3.2 系统流程 5
3.2.1 操作流程 5
3.2.2 登录流程 6
3.2.3 删除信息流程 7
3.2.4 添加信息流程 7
3.3 性能需求 8
3.4 功能需求 8
4 系统设计 12
4.1 设计原则 12
4.2 功能结构设计 12
4.3 数据库设计 14
4.3.1 数据库概念设计 14
4.3.2 数据库物理设计 17
5 系统实现 22
5.1 管理员功能实现 22
5.1.1 医生管理 22
5.1.2 患者管理 22
5.1.3 医院讯息管理 23
5.2 医生功能实现 23
5.2.1 病例管理 23
5.2.2 健康日记管理 23
5.2.3 手术记录管理 24
5.2.4 检查记录管理 24
5.2.5 医嘱管理 25
5.3 患者功能实现 25
5.3.1 健康日记管理 25
5.3.2 查看病例 26
5.3.3 查看护理记录 26
6 系统测试 28
6.1 功能测试 28
6.1.1 登录功能测试 28
6.1.2 修改密码功能测试 28
6.2 测试结果 29
结 论 30
参考文献 31
致 谢 32

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_3306428634

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值