【开源】基于JAVA的医院门诊预约挂号系统

article/2024/3/2 10:26:35

在这里插入图片描述
项目编号: S 033 ,文末获取源码。 \color{red}{项目编号:S033,文末获取源码。} 项目编号:S033,文末获取源码。


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能模块
    • 2.1 功能性需求
      • 2.1.1 数据中心模块
      • 2.1.2 科室医生档案模块
      • 2.1.3 预约挂号模块
      • 2.1.4 医院时政模块
    • 2.2 可行性分析
      • 2.2.1 可靠性
      • 2.2.2 易用性
      • 2.2.3 维护性
  • 三、数据库设计
    • 3.1 用户表
    • 3.2 科室档案表
    • 3.3 医生档案表
    • 3.4 医生放号表
    • 3.5 患者挂号预约表
    • 3.6 医院时政表
    • 3.7 医院留言表
  • 四、系统展示
  • 五、核心代码
    • 5.1 查询医生
    • 5.2 医生放号
    • 5.3 置顶医院新闻
    • 5.4 查询我的挂号数据
    • 5.5 预约挂号
  • 六、免责说明


一、摘要

1.1 项目介绍

基于JAVA+Vue+SpringBoot+MySQL 的医院门诊预约挂号系统,包含了科室管理模块、医生管理模块、预约挂号模块、医院新闻模块和留言板模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,医院门诊预约挂号系统基于角色的访问控制,给患者、医院管理员使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

1.2 项目录屏

源码下载


二、功能模块

为了能让开发出来的预约挂号真正投入使用,所以需要对系统的需求加以分析设计,以下分别对功能性需求和可行性两方面分别对预约挂号进行需求分析。

在这里插入图片描述

2.1 功能性需求

本文设计的预约挂号系统的包括了系统数据中心模块,用来存放管理系统通用的模块,另外分别设计了科室/医生档案、预约挂号、医院时政这三大模块,用于存放系统的核心业务逻辑。

2.1.1 数据中心模块

数据中心模块包含了对医院门诊预约挂号系统的基础模块,比如管理谁可以登陆这套系统,记录这些人登陆系统做了什么,不同的人拥有不同权限的管理。

在这里插入图片描述

2.1.2 科室医生档案模块

科室医生档案模块是对医院科室、医生的信息进行管理,其中包括医院所有科室、及科室下医生的档案,包含了科室名称、科室代码,医生姓名、医生年龄、医生学历学位、开始工作时间、毕业院校、职称、专业、医生简介等,可以通过此模块对科室、医生进行添加、编辑更新、删除、查询操作。

在这里插入图片描述

2.1.3 预约挂号模块

医院门诊预约挂号管理系统录入了各大医院医生的放号信息,包括不同职称医生的挂号费用,管理员在这个模块进行挂号费用的设置和医生的排班。

在这里插入图片描述

2.1.4 医院时政模块

医院时政模块是医院的门面,模块上放置了医院发布的重要通知、医生坐诊停诊信息和就诊患者的留言信息。患者可以查询管理员发布的时政新闻,也可以对医院进行评价留言,做到和医院的数据交互。

在这里插入图片描述

2.2 可行性分析

2.2.1 可靠性

医院门诊预约挂号的数据真实性非常重要。所以为了保证预约挂号系统的数据准确,要定时清除系统的冗余数据,以便于对挂号数据进行数据分析。

2.2.2 易用性

易用性是任何管理系统必须要遵循的原则,对于预约挂号系统也是如此。系统必须要易于就诊患者使用,因为系统的开发就是为了简化患者的就医流程,不能因为系统的出现而让就医流程更复杂。

2.2.3 维护性

医院门诊要有自我保护机制,当收到黑客非法攻击是,需要拥有抛出异常的机制,不能陷入无限循环判断而让系统崩溃,造成患者挂号失败的情况。


三、数据库设计

3.1 用户表

在这里插入图片描述

3.2 科室档案表

在这里插入图片描述

3.3 医生档案表

在这里插入图片描述

3.4 医生放号表

在这里插入图片描述

3.5 患者挂号预约表

在这里插入图片描述

3.6 医院时政表

在这里插入图片描述

3.7 医院留言表

在这里插入图片描述


四、系统展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


五、核心代码

5.1 查询医生

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询医生")
public Result<IPage<Doctor>> getByPage(@ModelAttribute Doctor doctor,@ModelAttribute PageVo page){QueryWrapper<Doctor> qw = new QueryWrapper<>();if(!ZwzNullUtils.isNull(doctor.getDoctorName())) {qw.like("doctor_name",doctor.getDoctorName());}if(!ZwzNullUtils.isNull(doctor.getPostLevel())) {qw.eq("post_level",doctor.getPostLevel());}if(!ZwzNullUtils.isNull(doctor.getSubjectId())) {qw.eq("subject_id",doctor.getSubjectId());}if(!ZwzNullUtils.isNull(doctor.getNoeDate()) && Objects.equals(doctor.getNoeDate(),"是")) {qw.inSql("id","SELECT id FROM t_doctor WHERE id IN(SELECT DISTINCT doctor_id FROM t_doctor_scheduling WHERE DATE = '" + DateUtil.today() + "')");}return new ResultUtil<IPage<Doctor>>().setData(iDoctorService.page(PageUtil.initMpPage(page),qw));
}

5.2 医生放号

@RequestMapping(value = "/addNumber", method = RequestMethod.POST)
@ApiOperation(value = "医生放号")
public Result<Object> addNumber(@RequestParam String doctorId,@RequestParam String date,@RequestParam int step,@RequestParam int number){Doctor doctor = iDoctorService.getById(doctorId);if(doctor == null) {return ResultUtil.error("医生不存在");}if(number < 1) {return ResultUtil.error("放号数必须大于0");}for(int i = 1 ; i <= number; i ++) {DoctorScheduling ds = new DoctorScheduling();ds.setDoctorId(doctor.getId());ds.setDoctorName(doctor.getDoctorName());ds.setNumber(i + "");ds.setStep(step + "");ds.setDate(date);ds.setOrderFlag(0);iDoctorSchedulingService.saveOrUpdate(ds);}return ResultUtil.success("放号成功");
}

5.3 置顶医院新闻

@RequestMapping(value = "/set_top_by_id", method = RequestMethod.POST)
@ApiOperation(value = "置顶医院新闻")
public Result<Boolean> setTopById(@RequestParam String id){HospitalNews appDynamicNew=iHospitalNewsService.getById(id);if(appDynamicNew==null) {return ResultUtil.error("该动态信息不存在");}if(appDynamicNew.getIsTop().equals("yes")) {appDynamicNew.setIsTop("no");}else {appDynamicNew.setIsTop("yes");}if(!iHospitalNewsService.saveOrUpdate(appDynamicNew)) {return ResultUtil.error("设置失败");}return ResultUtil.success("设置成功");
}

5.4 查询我的挂号数据

@RequestMapping(value = "/getMyOrderList", method = RequestMethod.POST)
@ApiOperation(value = "查询我的挂号")
public Result<IPage<HospitalOrder>> getMyOrderList(@ModelAttribute HospitalOrder order,@ModelAttribute PageVo page){User currUser = securityUtil.getCurrUser();QueryWrapper<HospitalOrder> qw = new QueryWrapper<>();qw.eq("user_id",currUser.getId());qw.orderByDesc("create_time");if(!ZwzNullUtils.isNull(order.getDateTime())) {qw.eq("date_time",order.getDateTime());}if(!ZwzNullUtils.isNull(order.getDoctorName())) {qw.like("doctor_name",order.getDoctorName());}return new ResultUtil<IPage<HospitalOrder>>().setData(iHospitalOrderService.page(PageUtil.initMpPage(page),qw));
}

5.5 预约挂号

@RequestMapping(value = "/addOrder", method = RequestMethod.POST)
@ApiOperation(value = "新增挂号")
public Result<Object> addOrder(@RequestParam String orderId){User currUser = securityUtil.getCurrUser();DoctorScheduling ds = iDoctorSchedulingService.getById(orderId);if(ds == null) {return ResultUtil.error("号源不存在");}if(ds.getOrderFlag() > 0) {return ResultUtil.error("您手慢拉,该号已被别人预约!");}Doctor doctor = iDoctorService.getById(ds.getDoctorId());if(doctor == null) {return ResultUtil.error("医生不存在");}ds.setOrderFlag(1);iDoctorSchedulingService.saveOrUpdate(ds);HospitalOrder ho = new HospitalOrder();ho.setUserId(currUser.getId());ho.setUserName(currUser.getNickname());ho.setOrderId(ds.getId());ho.setNumber(ds.getNumber());ho.setStep(ds.getStep());ho.setDateTime(ds.getDate());ho.setDoctorId(ds.getDoctorId());ho.setDoctorName(ds.getDoctorName());ho.setMoneyData(doctor.getOrderMoney());iHospitalOrderService.saveOrUpdate(ho);return ResultUtil.success("预约成功!");
}

六、免责说明

  • 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
  • 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
  • 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。

下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!

  1. 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
  2. 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
  3. 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
  4. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

http://www.ngui.cc/article/show-1753819.html

相关文章

frp实现内网穿透(多端口穿透)

frp实现内网穿透 准备一个公网服务器&#xff08;腾讯、阿里、华为的云服务器&#xff09; 下载frp的安装包 下载对应系统的安装包&#xff0c;不要下错文件。 注意amd对应x86架构的系统 arm对应 arm架构系统&#xff08;macos&#xff09; 点击下载 查看文档将对应的安装包放…

医保支付方式探索——利益共享机制的文章分析

Care-coordination: Gain-sharing Agreements in Bundled Payment Models 分析一下这篇文章&#xff0c;这篇文章于2021年发表在POMS上&#xff0c;但是引用量没有那么高。这篇文章涉及到医疗捆绑支付&#xff0c;应该可以学习一下。 文章研究一个在一个以最小成本为目标的质…

ASP.NET版本WOL服务的使用

本文以WOL为例&#xff0c;演示如何通过 GPT-4 让其为 WebAPI 项目设计一个网页。其中介绍了如何让GPT4生成相关功能&#xff0c;添加动画效果&#xff0c;接口鉴权等。 1. 背景 前面我们已经完成了一个WOL服务的开发&#xff0c;并将其迁移改造为了 ASP.NET 服务并完成了部署…

Java的TPC通信

TPC通信-快速入门 TPC通信-客户端开发 TPC通信-服务端开发 TPC通信-多发多收 客户端 服务端 TPC通信-支持与多个客户端同时通信 服务端 独立线程对象

禁止谷歌浏览器自动更新

禁止谷歌浏览器自动更新 在使用Python包selenium的时候浏览器版版本发生变化后产生很多问题如&#xff1a; 1、直接版本不对应无法运行 2、版本不一致导致debug启动浏览器超级慢 这里是已谷歌浏览器为代表的。 禁止自动更新的方法如下&#xff1a; 1、WinR调出运行&#x…

深度学习与深度迁移学习有什么区别?

深度学习包含深度迁移学习&#xff0c;它们都利用了深层神经网络&#xff08;Deep Neural Network&#xff0c;DNN&#xff09;来处理数据&#xff0c;并从中学习特征。但是&#xff0c;它们也有一些区别。 深度学习是一种机器学习方法&#xff0c;它通过多层神经网络来自动学…

Ext4文件系统解析(三)

1、前言 前文已经讲述了如何根据索引号获取实际的文件内容。对于文件而言&#xff0c;到了这里已经结束了。 但是对于文件夹来说&#xff0c;我们还需要从数据块中解析出对应的数据。 而在文件系统的实现中&#xff0c;文件夹的实际存储方式有着两种不同的实现&#xff0c;经典…

【Android】Android Framework系列--Launcher3桌面图标加载流程

Launcher3桌面加载流程 Android Launcher3(简称Launcher&#xff09;启动后会加载桌面。基于Android12代码&#xff0c;分析一下桌面加载的流程。 一些相关的概念&#xff1a; WorkSpace&#xff1a;桌面。在桌面上可以添加快捷方式、Hoseat或Dock&#xff08;就是手机或者车…

自动化之旅:掌握Ansible常用模块的实用技巧

1 Ansible部署 1.1 三台机器配置 1台主控机器 2台被控机器 1.2 安装 dnf install ansible -yansible方便控制多台主机&#xff0c;比shell效率更高 1.3 配置文件 /etc/ansible/ansible.conf ##全局配置文件,默认很少修改 /etc/ansible/hosts ##全局主机清单清单文件2 构建…

分享88个节日PPT,总有一款适合您

分享88个节日PPT&#xff0c;总有一款适合您 88个节日PPT下载链接&#xff1a;https://pan.baidu.com/s/1mfLrdlB9Y1jqz2vkVIwBNA?pwd6666 提取码&#xff1a;6666 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不易…