基于JAVA+Vue+SpringBoot+MySQL 的医院门诊预约挂号系统,包含了科室管理模块、医生管理模块、预约挂号模块、医院新闻模块和留言板模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,医院门诊预约挂号系统基于角色的访问控制,给患者、医院管理员使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。
项目编号: S 033 ,源码已在 B i l i b i l i 中上架,需要的朋友请自行下载。 \color{red}{项目编号:S033,源码已在 Bilibili 中上架,需要的朋友请自行下载。} 项目编号:S033,源码已在Bilibili中上架,需要的朋友请自行下载。
https://gf.bilibili.com/item/detail/1104216029
为了帮助小白入门 Java,博主录制了本项目配套的《项目手把手启动教程》,希望能给同学们带来帮助。
为了能让开发出来的预约挂号真正投入使用,所以需要对系统的需求加以分析设计,以下分别对功能性需求和可行性两方面分别对预约挂号进行需求分析。
本文设计的预约挂号系统的包括了系统数据中心模块,用来存放管理系统通用的模块,另外分别设计了科室/医生档案、预约挂号、医院时政这三大模块,用于存放系统的核心业务逻辑。
数据中心模块包含了对医院门诊预约挂号系统的基础模块,比如管理谁可以登陆这套系统,记录这些人登陆系统做了什么,不同的人拥有不同权限的管理。
科室医生档案模块是对医院科室、医生的信息进行管理,其中包括医院所有科室、及科室下医生的档案,包含了科室名称、科室代码,医生姓名、医生年龄、医生学历学位、开始工作时间、毕业院校、职称、专业、医生简介等,可以通过此模块对科室、医生进行添加、编辑更新、删除、查询操作。
医院门诊预约挂号管理系统录入了各大医院医生的放号信息,包括不同职称医生的挂号费用,管理员在这个模块进行挂号费用的设置和医生的排班。
医院时政模块是医院的门面,模块上放置了医院发布的重要通知、医生坐诊停诊信息和就诊患者的留言信息。患者可以查询管理员发布的时政新闻,也可以对医院进行评价留言,做到和医院的数据交互。
医院门诊预约挂号的数据真实性非常重要。所以为了保证预约挂号系统的数据准确,要定时清除系统的冗余数据,以便于对挂号数据进行数据分析。
易用性是任何管理系统必须要遵循的原则,对于预约挂号系统也是如此。系统必须要易于就诊患者使用,因为系统的开发就是为了简化患者的就医流程,不能因为系统的出现而让就医流程更复杂。
医院门诊要有自我保护机制,当收到黑客非法攻击是,需要拥有抛出异常的机制,不能陷入无限循环判断而让系统崩溃,造成患者挂号失败的情况。
@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));
}
@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("放号成功");
}
@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("设置成功");
}
@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));
}
@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("预约成功!");
}
下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!