基于SpringBoot+Vue的医院信息管理系统

浏览 300 次

Hospital Information Management System Based on SpringBoot and Vue

该系统是一个基于SpringBoot后端与Vue前端框架开发的医院信息管理系统,旨在实现医院日常运营的数字化管理。核心功能包括患者信息管理、医生排班、药品库存管理以及医疗记录查询,有效提升医院工作效率与信息处理准确性。该系统适合作为毕业设计或实际项目实现,展示了现代Web技术在信息管理系统开发中的应用。

SpringBootVue前后端分离PC端

项目简介

该系统是一个基于SpringBoot后端与Vue前端框架开发的医院信息管理系统,旨在实现医院日常运营的数字化管理。核心功能包括患者信息管理、医生排班、药品库存管理以及医疗记录查询,有效提升医院工作效率与信息处理准确性。该系统适合作为毕业设计或实际项目实现,展示了现代Web技术在信息管理系统开发中的应用。

项目基础信息

适合专业计算机科学与技术 / 软件工程 / 信息管理
技术栈SpringBoot + Vue + MySQL + Redis
系统架构前后端分离
项目类型医院信息管理系统
运行环境JDK1.8、MySQL5.7+、Node14+
开发工具IntelliJ IDEA、VS Code、Maven、Git

项目包含内容

  • 前后端完整源码
  • 数据库完整脚本
  • 参考论文(如有)
  • 部署软件及部署说明
  • 项目介绍文档(如有)

项目详细介绍

一、项目背景介绍:

医院管理系统从整个社会实践过程来看,对医院进行信息化管理可以带来的好处如下所示:

(1)患者快速预约就诊。不同于线下就诊的是,患者不需要到医院进行排队叫号,然后才能正常就诊,信息化的结果就为该过程省略了第一步的时间,从而整体上缩短了问诊时间,方便了患者用户,和医院的叫号系统。并且患者还可以通过系统来一目了然的了解自己的症状和需要用药的情况。

(2)促使经济效益得到提升。医院在信息化的管理下,整个医院的问诊效率都大大得到了提高,并且也大大降低了各项成本,节约了人力,时间成本。物资管理中严格记录出、入库数据,随时动态掌握每种物资和药品库存利用情况,从而获得物资和经费的最大使用效益。

(3)提高社会福利。患者掌握了医院信息,提高了医院的知名度,并且可以随时知道自己的医疗费用,减少纠纷,有效的提高了社会效益。

(4)加快医院管理流程。使用管理系统,可以了解所有的医疗状况、医生和患者信息等数据,有效的提高了医院管理的效率。

二、项目技术简介:

  1. JAVA:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

  2. Vue:Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的JavaScript框架。它基于标准HTML、CSS和JavaScript构建,并提供了一套声明式的、组件化的编程模型,帮助开发者高效地开发用户界面。

Vue是一个独立的社区驱动的项目,它是由尤雨溪在2014年作为其个人项目创建, 是一个成熟的、经历了无数实战考验的框架,它是目前生产环境中使用最广泛的JavaScript框架之一,可以轻松处理大多数web应用的场景,并且几乎不需要手动优化,并且Vue完全有能力处理大规模的应用。

  1. Element-UI:Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。

  2. SpringBoot:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

  3. Mybatis-Plus:MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为 简化开发、提高效率而生。

  4. Spring-Mvc:Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框。

三、系统功能模块介绍:

功能模块图

四、数据库设计:

1:'管理员表'(admin)

| 字段名 | 类型 | 默认值 | 列注释 |

| --------- | ------------- | ------ | ------ |

| id | bigint | NULL | 主键ID |

| user_name | varchar | NULL | 用户名 |

| pass_word | varchar | NULL | 密码 |

| head_img | varchar | NULL | 头像 |

| nick_name | varchar | NULL | 姓名 |

| create_time | datetime | NULL | 创建时间 |

2:'科室表'(dept)

| 字段名 | 类型 | 默认值 | 列注释 |

| --------- | ------------- | ------ | ------ |

| id | bigint | NULL | 主键ID |

| department_name | varchar | NULL | 科室名称 |

| create_time | datetime | NULL | 创建时间 |

3:'医生表'(doctor)

| 字段名 | 类型 | 默认值 | 列注释 |

| --------- | ------------- | ------ | ------ |

| id | bigint | NULL | 主键ID |

| nick_name | varchar | NULL | 医生姓名 |

| sex | int | NULL | 性别[1:男,2:女] |

| age | int | NULL | 年龄 |

| head_img | varchar | NULL | 头像 |

| id_card | varchar | NULL | 身份证号 |

| dept_id | bigint | NULL | 所属科室ID |

| create_time | datetime | NULL | 创建时间 |

| tel | varchar | NULL | 手机 |

| email | varchar | NULL | 邮箱 |

| user_name | varchar | NULL | 用户名 |

| pass_word | varchar | NULL | 密码 |

| info | text | NULL | 简介 |

4:'药物表'(drug)

| 字段名 | 类型 | 默认值 | 列注释 |

| --------- | ------------- | ------ | ------ |

| id | bigint | NULL | 主键ID |

| drug_name | varchar | NULL | 药物名称 |

| drug_num | varchar | NULL | 药物编号 |

| drug_price | varchar | NULL | 药物价格 |

| location | varchar | NULL | 产地 |

| describes | text | NULL | 药物描述 |

| drug_info | text | NULL | 功能 |

| remark | text | NULL | 注意事项 |

| drug_img | varchar | NULL | 药品图片 |

5:'预约药品表'(sick_drug)

| 字段名 | 类型 | 默认值 | 列注释 |

| --------- | ------------- | ------ | ------ |

| id | bigint | NULL | 主键ID |

| drug_id | bigint | NULL | 药品ID |

| subscribe_id | bigint | NULL | 预约表ID |

6:'患者表'(sick_info)

| 字段名 | 类型 | 默认值 | 列注释 |

| --------- | ------------- | ------ | ------ |

| id | bigint | NULL | 主键ID |

| name | varchar | NULL | 姓名 |

| sex | int | NULL | 性别[1:男,2:女] |

| age | int | NULL | 年龄 |

| id_card | varchar | NULL | 身份证号 |

| home_location | varchar | NULL | 家庭住址 |

| family_tel | varchar | NULL | 手机号 |

| info_img | varchar | NULL | 基本图片 |

7:'病人预约表'(subscribe)

| 字段名 | 类型 | 默认值 | 列注释 |

| --------- | ------------- | ------ | ------ |

| id | bigint | NULL | 主键ID |

| doctor_id | bigint | NULL | 医生ID |

| sick_id | bigint | NULL | 病人ID |

| create_time | datetime | NULL | 预约时间 |

| info | varchar | NULL | 病情信息 |

| status | int | NULL | [1:未处理,2:已处理] |

| prescription | varchar | NULL | 药方 |

| update_time | datetime | NULL | 治疗时间 |

五、功能模块:

  1. 系统登录模块:本系统主要分为管理员,医生,患者三种不同身份的用户,三者皆使用同一个登录页面,但不同的是登录之后的操作页面将会根据角色不同进行变化。

    系统登录模块

  2. 医生管理:医生管理模块主要是对于医院所有医生的一个管理,其中包括医生的基本信息,例如姓名,性别,年龄,照片等。该模块主要对医生的详细信息信息进行维护,其中包括基本信息检索,证件照上传等

    医生管理

  3. 预约管理页面功能:预约管理模块主要用来操作刚刚入院的病人信息,为病人分配主治医生,在病人治疗期间开治疗药品等。

    预约管理页面功能

  4. 管理员管理:管理员即是系统管理员的信息管理,包括管理员的基本信息等。

    管理员管理

  5. 患者管理:系统患者管理主要是患者自己进行操作录入,改模块可以根据不同的条件查询不同的患者信息,也包括对患者的一些特殊处理等。

 患者管理

  1. 科室管理:科室管理主要对医院中所存在的科室,例如心血管内科,泌尿科等科室进行基本信息的信息化管理,其中主要包括查询,添加,编辑,删除等基本功能。

    科室管理

  2. 药品管理:药品管理模块主要包括药品的基本信息,图片,注意事项,功能的信息化管理。

 药品管理

六、代码示例:

系统登录模块

 @PostMapping()

    public ReturnMsg login(@RequestBody AdminDTO adminDTO) {

        if (adminDTO.getType() == 1) {

            Assert.isTrue(StrUtil.isNotEmpty(adminDTO.getUserName())

                    && StrUtil.isNotEmpty(adminDTO.getPassWord()), 账号或密码不能为空!);

            LambdaQueryWrapper<AdminDTO> queryWrapper = Wrappers.lambdaQuery();

            queryWrapper.eq(AdminDTO::getUserName, adminDTO.getUserName()).

                    eq(AdminDTO::getPassWord, adminDTO.getPassWord()).last(BaseConstant.LIMIT_ONE);

            AdminDTO loginUser = adminService.getOne(queryWrapper);

            Assert.notNull(loginUser, 账号或密码错误!);

            loginUser.setType(1);

            return ReturnMsg.ok(loginUser);

        }

        if (adminDTO.getType() == 2) {

            Assert.isTrue(StrUtil.isNotEmpty(adminDTO.getUserName())

                    && StrUtil.isNotEmpty(adminDTO.getPassWord()), 账号或密码不能为空!);

            LambdaQueryWrapper<DoctorDTO> queryWrapper = Wrappers.lambdaQuery();

            queryWrapper.eq(DoctorDTO::getUserName, adminDTO.getUserName()).

                    eq(DoctorDTO::getPassWord, adminDTO.getPassWord()).last(BaseConstant.LIMIT_ONE);

            DoctorDTO loginUser = doctorService.getOne(queryWrapper);

            Assert.notNull(loginUser, 账号或密码错误!);

            loginUser.setType(2);

            return ReturnMsg.ok(loginUser);

        }

        if (adminDTO.getType() == 3) {

            Assert.isTrue(StrUtil.isNotEmpty(adminDTO.getUserName()), 联系方式不能为空!);

            LambdaQueryWrapper<SickInfoDTO> queryWrapper = Wrappers.lambdaQuery();

            queryWrapper.eq(SickInfoDTO::getFamilyTel, adminDTO.getUserName()).last(BaseConstant.LIMIT_ONE);

            SickInfoDTO loginUser = sickInfoService.getOne(queryWrapper);

            if (loginUser == null) {

                loginUser = new SickInfoDTO();

                loginUser.setFamilyTel(adminDTO.getUserName());

                loginUser.setName(患者-游客);

                sickInfoService.save(loginUser);

            }

            loginUser.setType(3);

            return ReturnMsg.ok(loginUser);

        }

        return ReturnMsg.error(账号或密码错误);

    }
医生管理

    @GetMapping(/getDeptData)

    public ReturnMsg getDeptData(){

        List<DeptDTO> dataList = deptService.list();

        List<BaseSelectEntity> selectEntities = new ArrayList<>();

            if(CollectionUtil.isNotEmpty(dataList)){

            dataList.forEach(item -> {

                BaseSelectEntity baseSelectEntity = new BaseSelectEntity();

                baseSelectEntity.setKey(item.getId());

                baseSelectEntity.setValue(item.getDepartmentName());

                selectEntities.add(baseSelectEntity);

            });

        }

        return ReturnMsg.ok(selectEntities);

   }
预约管理页面功能

    /**

     * 默认分页查询

     *

     * @param sickDrugDTO

     * @return

     * @throws IOException

     */

    @PostMapping(/page)

    public ReturnMsg page(@RequestBody SickDrugDTO sickDrugDTO) {

        return ReturnMsg.ok(baseService.basePage(sickDrugDTO));

    }





    @PostMapping(value = /save/update1)

    public ReturnMsg baseSaveOrUpdate1(@RequestBody SickDrugDTO entity) throws Exception {

        LambdaQueryWrapper<SickDrugDTO> queryWrapper = new LambdaQueryWrapper<>();

        queryWrapper.eq(SickDrugDTO::getSubscribeId, entity.getSubscribeId()).eq(SickDrugDTO::getDrugId, entity.getDrugId());

        List<SickDrugDTO> list = this.baseService.list(queryWrapper);

        if (CollectionUtil.isNotEmpty(list)) {

            return ReturnMsg.ok();

        }

        this.baseService.save(entity);

        return ReturnMsg.ok();

    }
管理员管理

    @Override

    public Page<AdminDTO> basePage(AdminDTO adminDTO) {

        if (null != adminDTO.getCurrent() && null != adminDTO.getPageSize())

            adminDTO.setCurrent((adminDTO.getCurrent() - 1) * adminDTO.getPageSize());

        List<AdminDTO> list = this.baseMapper.findList(adminDTO);

        int count = this.baseMapper.findPageCount(adminDTO);

        Page<AdminDTO> page = new Page<>();

        page.setTotal(count);

        page.setRecords(list);

        return page;

    }
患者管理

 @GetMapping(/getDoctorData)

    public ReturnMsg getDoctorData() {

        List<DoctorDTO> dataList = doctorService.list();

        List<BaseSelectEntity> selectEntities = new ArrayList<>();

        if (CollectionUtil.isNotEmpty(dataList)) {

            dataList.forEach(item -> {

                BaseSelectEntity baseSelectEntity = new BaseSelectEntity();

                baseSelectEntity.setKey(item.getId());

                baseSelectEntity.setValue(item.getNickName());

                selectEntities.add(baseSelectEntity);

            });

        }

        return ReturnMsg.ok(selectEntities);

    }
科室管理

 @Override

    @Resource(name = drugService)

    protected void setBaseService(DrugService drugService) {

        this.baseService = drugService;

    }

    /**

    * 图片上传文件夹名称

    */

    private final String realPath = /drug;



    /**

    * 图片上传

    *

    * @param filename

    * @param id 需要修改的数据主键id

    * @return

    * @throws IOException

    */

    @PostMapping(/upload/{id})

    public ReturnMsg upload(@RequestParam(file) MultipartFile filename, @PathVariable(id) Long id) throws IOException {

        return  ReturnMsg.ok(this.baseUpLoad(filename, id, realPath, DrugDTO.class));

    }
药品管理

   public Page<SubscribeDTO> basePage(SubscribeDTO subscribeDTO) {

        if (null != subscribeDTO.getCurrent() && null != subscribeDTO.getPageSize())

            subscribeDTO.setCurrent((subscribeDTO.getCurrent() - 1) * subscribeDTO.getPageSize());

        List<SubscribeDTO> list = this.baseMapper.findList(subscribeDTO);

        int count = this.baseMapper.findPageCount(subscribeDTO);

        Page<SubscribeDTO> page = new Page<>();

        page.setTotal(count);

        page.setRecords(list);

        return page;

    }

七、论文参考:

论文参考···论文参考图

八、项目总结:

时间飞逝,一转眼五个月时间已经过去,医院管理系统也从无到可以正式使用,经过此次软件整个流程的设计与开发,使我感触颇深,也让我从中学习到了很多实践性的知识。

一个软件开发的难以程度完全取决于初期对于技术的选型以及之后的项目基础架构的搭建工作。正所谓磨刀不误砍柴工,只有把刀磨的锋利了,效率才会高,软件建设亦是如此。对于项目基础结构的搭建时,需要考虑的因素非常之多,例如项目包结构如何正确划分才能够使结构清晰,基础公共部分的代码该如何处理或者说如何高效的编写等等,在前端项目方面亦是如此,组件化如何拆分才能使代码复用性更高,使功能更加简易开发,在此些问题的基础之下,后端包结构划分为connom公共包,util帮助包,controller Web项目接口包,biz业务处理包,entity实体包,dao持久成包,在此项目包结构的帮助下,整个项目中的文件变得清晰明了,当处理问题的时候新建的文件或者需要修改的代码在什么地方,可以做到一目了然。所以整个项目我认为基础搭建尤为重要。

一个好的项目的研发离不开生活中人们需要的问题,只要存在问题就会存在需要,存在需要,项目才会变得更加的有意义,这才是一个完整的供需关系。在弄清楚需求之后,需要对整个项目的整体业务逻辑进行构思以及最重要的数据库表的设计,项目主要面向的用户是B端用户还是C端用户,不同的用户数据库表的设计思路也存在差异,C端用户的系统主要关键在查询操作,查询速度必须要更快,而此系统主要面向的用户为B端用户所以项目主要关注的点在于如何减少用户的操作难度,对查询速度要求很高。

系统实现是整个项目整体流程的最后一个环节,在明确本次项目需求之后,首先需求进行整体的需求分析和项目设计,然后在进行技术的一个确认工作。此外,最好能和学院的老师一起交流探讨设计的系统有啥不足之处,然后进行修改。最后在慢慢的调试中,系统得以被完整的开发出来。但系统依旧存在不足之处,需要不断的补充和完善。

联系咨询区

可沟通项目方向、预算、交付周期与答辩时间安排,支持按学校要求定制交付内容。

为你推荐

根据你的浏览兴趣与热门趋势,精选可能适合你的毕业设计项目。

基于JAVA+SpringBoot+Vue+uniapp的微信小程序点餐平台

SpringBootVue微信小程序UniAppMySQL前后端分离支付功能小程序端

该系统是一个基于Java+SpringBoot后端、Vue+Uniapp前端的微信小程序点餐平台。平台实现了在线菜单浏览、购物车管理、订单提交与支付、后台数据统计等核心功能,为餐饮商家提供高效便捷的数字化点餐解决方案。项目采用前后端分离架构,适合作为毕业设计或实际项目开发,展示了现代Web与移动应用系统的完整实现流程。

基于JAVA+SpringBoot+Vue+uniapp+协同过滤算法+爬虫+AI的减肥小程序

SpringBootVueUniAppAI智能推荐算法小程序端

该项目是一个集成了协同过滤推荐算法、网络爬虫与AI技术的智能减肥小程序。系统采用JAVA+SpringBoot构建后端服务,Vue+uniapp实现跨平台前端,旨在为用户提供个性化的饮食与运动方案。核心功能包括基于用户行为的智能推荐、健康数据管理及社区互动,适合作为毕业设计或实际项目开发,展示了现代Web与移动应用在信息管理与系统开发中的综合实践。

基于JAVA+SpringBoot+Vue的自动阅卷分析系统

SpringBootVueMySQLAI智能数据可视化前后端分离PC端

该系统是一个基于JAVA+SpringBoot后端与Vue前端的自动阅卷分析系统,旨在实现高效、准确的试卷批改与学习数据分析。核心功能包括智能识别与评分、错题统计分析、成绩报告生成以及教学效果评估。该系统开发专注于提升阅卷效率与信息管理深度,适用于在线教育、考试机构及毕业设计项目实现,为教学管理与学习分析提供一体化解决方案。

基于JAVA+SpringBoot+Vue+uniApp小程序的心理健康测试平台

SpringBootVue微信小程序UniAppMySQL前后端分离小程序端

该心理健康测试平台是一个集前端小程序与后端管理系统于一体的综合系统开发项目。平台采用JAVA与SpringBoot构建稳健后端,结合Vue与uniApp实现跨端小程序开发,为用户提供便捷的心理测评与报告服务。系统核心功能包括题库管理、在线测试、数据分析及报告生成,旨在通过信息化手段提升心理健康服务的可及性与专业性,适用于毕业设计或实际项目实现。

基于JAVA+SpringBoot+Vue+uniapp的前后端分离的微信小程序的艺术品陶瓷商城

SpringBootVue微信小程序UniAppMySQL前后端分离小程序端

该项目是一个基于JAVA+SpringBoot+Vue+uniapp技术栈的前后端分离微信小程序艺术品陶瓷商城系统。系统开发实现了艺术品陶瓷的在线展示、商品管理、用户订单处理及支付集成等核心功能,为陶瓷艺术品的数字化交易提供了完整的信息管理解决方案,适合作为毕业设计或商业项目实现。

基于JAVA+SpringBoot+Vue的二手车交易系统

SpringBootVueMySQL前后端分离PC端

该系统是一个基于Java+SpringBoot+Vue的二手车交易管理系统,旨在为用户提供便捷的在线车辆买卖平台。核心功能包括车辆信息发布、智能搜索、在线咨询、交易管理及用户评价等模块。通过前后端分离的系统开发模式,实现了高效的信息管理和流畅的用户体验,适合作为毕业设计或实际项目实现,帮助提升二手车交易效率与透明度。

基于JAVA+SpringBoot+Vue的故障报修平台

SpringBootVueMySQL前后端分离PC端

该项目是一个基于Java、SpringBoot和Vue的故障报修平台,旨在实现高效的设备故障管理与维修流程。系统提供用户在线报修、工单分配、进度跟踪及数据统计等核心功能,适用于企业或校园的日常运维。通过前后端分离架构,确保了系统的可扩展性和维护性,适合作为毕业设计或实际项目实现,展示了现代Web信息管理系统的开发实践。

基于JAVA+SpringBoot+Vue的前后端分离的学校请假管理系统

SpringBootVueMySQL权限控制多角色系统前后端分离PC端

这是一个基于JAVA+SpringBoot+Vue的前后端分离学校请假管理系统,旨在实现学生请假流程的数字化与高效管理。系统开发涵盖了学生在线提交申请、辅导员与院系审批、请假记录统计等核心功能,优化了传统纸质流程。该项目可作为信息管理系统的毕业设计或实际应用案例,展示了前后端分离架构在项目实现中的优势。