计算机毕设必看!医疗管理系统全栈开发指南✨ 附源码
2026年1月14日129 阅读约 40 分钟阅读
🏥 医疗挂号管理系统
基于 Spring Boot 开发的在线医院管理系统
📋 目录
🎯 系统简介
医疗挂号管理系统是一款面向医院管理的综合性信息化平台,旨在提高医院挂号、门诊、病历管理等业务流程的效率。系统采用前后端分离架构,提供了完善的用户权限管理和业务流程控制。
✨ 核心特点
- 🔐 多角色权限管理:支持管理员、医生、挂号人员、划价人员等多种角色
- 📊 完整业务流程:覆盖挂号→门诊→病历→划价→取药全流程
- 💊 药品库管理:支持药品信息维护、分类管理
- 📝 电子病历:医生可在线填写病历、开具处方
- 🏥 门诊排班:医生门诊时间管理,支持按星期排班
- 🩺 体检管理:患者体检记录电子化管理
- 📤 文件上传:支持图片、文档等文件上传功能
- 📑 数据导出:支持 Excel 数据导出功能
🛠️ 技术架构
后端技术栈
| 技术 | 版本 | 说明 |
|---|---|---|
| Spring Boot | 2.2.2.RELEASE | 核心框架 |
| MyBatis-Plus | 2.3 | ORM 框架,简化数据库操作 |
| MyBatis Spring Boot Starter | 2.1.1 | MyBatis 集成 |
| MySQL Connector | 8.0+ | MySQL 数据库驱动 |
| Apache Shiro | 1.3.2 | 安全框架(Token 认证) |
| Spring Boot Starter Web | 2.2.2 | Web 开发框架 |
| Spring Boot Starter Thymeleaf | 2.2.2 | 模板引擎 |
| Hutool | 4.0.12 | Java 工具类库 |
| FastJson | 1.2.8 | JSON 解析库 |
| Apache POI | 3.9 | Excel 文件处理 |
| Baidu AI SDK | 4.4.1 | 百度人工智能 SDK |
| Apache Commons | 3.0 | 通用工具库 |
| Commons IO | 2.5 | IO 工具库 |
| Validation API | 2.0.1 | 数据校验 |
前端技术栈
| 技术 | 版本 | 说明 |
|---|---|---|
| Vue.js | 2.6.10 | 前端框架 |
| Element UI | 2.13.0 | UI 组件库 |
| Axios | 0.19.2 | HTTP 客户端 |
| Vue Router | 3.1.5 | 路由管理 |
| ECharts | 4.6.0 | 数据可视化图表 |
| Vue Quill Editor | 3.0.6 | 富文本编辑器 |
| Vue QR | 3.2.2 | 二维码生成 |
| Vue JSON Excel | 0.3.0 | Excel 导出 |
| Vue AMap | 0.5.10 | 高德地图组件 |
| Print.js | 1.5.0 | 打印功能 |
| JS-MD5 | 0.7.3 | MD5 加密 |
数据库
- MySQL 5.7.32+
- 数据库名称:
xxx - 字符集:UTF-8
开发工具
- 构建工具:Maven 3.x
- JDK 版本:JDK 1.8
- 推荐 IDE:IntelliJ IDEA / Eclipse
- 推荐浏览器:Google Chrome
🎨 功能模块
1️⃣ 系统管理模块
-
用户管理
- 管理员账户管理
- 用户角色分配
- 权限控制
-
字典管理
- 性别类型字典
- 科室类型字典
- 职位类型字典
- 药品类型字典
- 病例状态字典
-
配置管理
- 系统参数配置
- 文件上传配置
2️⃣ 患者管理模块
-
患者档案
- 患者基本信息录入
- 患者姓名、手机号、身份证号管理
- 患者头像上传
- 性别信息维护
-
患者查询
- 按姓名、身份证号搜索
- 患者信息查看
3️⃣ 医生管理模块
-
医生信息管理
- 医生账户管理
- 医生基本信息(姓名、联系方式)
- 医生头像上传
- 科室分配(骨科、眼科、内科等)
- 职位设置(普通医生、主治医师、主任)
- 挂号费设置
-
医生门诊管理
- 门诊名称及位置设置
- 星期几坐诊安排
- 门诊详情说明
4️⃣ 挂号管理模块
-
挂号业务
- 患者挂号登记
- 自动生成挂号编号
- 选择就诊医生
- 挂号人员信息记录
- 挂号时间记录
-
挂号人员管理
- 挂号人员账户管理
- 挂号人员基本信息维护
- 权限分配
5️⃣ 门诊管理模块
-
门诊信息
- 门诊名称管理
- 门诊位置信息
- 医生排班管理
- 星期几坐诊时间
- 门诊详情介绍
-
门诊查询
- 按医生查询门诊
- 按星期查询排班
6️⃣ 病例管理模块
-
病例记录
- 病例编号自动生成
- 关联挂号信息
- 关联医生信息
- 患者主诉记录
- 诊断结果填写
- 开药详情记录
-
病例状态管理
- 已出单状态
- 已划价状态
- 已取药状态
-
病例查询
- 按病例编号查询
- 按患者查询
- 按医生查询
7️⃣ 体检管理模块
-
体检项目
- 体检编号自动生成
- 基本体征(体重、身高)
- 视力检查(左眼度数、右眼度数)
- 心血管检查(心率、心音)
- 器官检查(肺部听诊、肝脏听诊)
- 血常规检查详情
- 尿常规检查详情
- 其他检查详情
-
体检报告
- 体检结果查看
- 体检报告打印
8️⃣ 药品管理模块
-
药品信息管理
- 药品编号管理
- 药品名称维护
- 药品图片上传
- 药品分类(药品类型1-5)
- 药品介绍说明
-
药品查询
- 按药品名称搜索
- 按药品类型筛选
- 按药品编号查询
9️⃣ 划价管理模块
-
划价业务
- 病例划价处理
- 费用计算
- 划价状态更新
-
划价人员管理
- 划价人员账户管理
- 划价人员基本信息
- 权限分配
🔟 文件管理模块
-
文件上传
- 图片上传(支持头像、药品图片等)
- 文件大小限制(最大 1000MB)
- 文件格式验证
-
文件访问
- 静态资源访问
- 文件下载功能
👥 系统角色
🔑 角色权限说明
| 角色 | 登录账户 | 密码 | 权限说明 |
|---|---|---|---|
| 管理员 | admin | admin | 系统最高权限,可管理所有模块 |
| 医生 | a1 / a2 / a3 | 123456 | 查看挂号、填写病历、查看门诊、管理体检 |
| 挂号人员 | a1 / a2 / a3 | 123456 | 患者挂号、挂号信息查询 |
| 划价人员 | a1 / a2 / a3 | 123456 | 病例划价、费用结算 |
👨⚕️ 医生角色详情
-
科室分类:
- 骨科
- 眼科
- 内科
-
职位等级:
- 普通医生
- 主治医师
- 主任
💻 环境要求
必需环境
- ✅ JDK 1.8 或更高版本
- ✅ MySQL 5.7.32 或更高版本
- ✅ Maven 3.x
- ✅ Node.js 10.x 或更高版本(前端开发)
推荐配置
- 操作系统:Windows 10/11、macOS、Linux
- 内存:4GB 及以上
- 硬盘:1GB 可用空间
🚀 快速开始
1. 项目获取
2. 导入数据库
-- 1. 创建数据库
CREATE DATABASE yiliaoguahao DEFAULT CHARACTER SET utf8;
-- 2. 导入数据库脚本
-- 执行项目根目录下的 db.sql 文件
source db.sql;
3. 配置数据库连接
编辑 src/main/resources/application.yml 文件:
spring:
datasource:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/yiliaoguahao?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
username: root # 修改为你的数据库用户名
password: 123456 # 修改为你的数据库密码
4. 启动后端服务
方式一:使用 IDE
- 使用 IntelliJ IDEA 或 Eclipse 打开项目
- 等待 Maven 依赖下载完成
- 运行
OnlineHospitalApplication.java主类
方式二:使用 Maven 命令
cd onlineHospitalSystem
mvn clean install
mvn spring-boot:run
后端服务启动成功后,访问地址:http://localhost:8080/onlineHospitalSystem
5. 启动前端服务
cd onlineHospitalSystem/src/main/resources/admin/admin
# 安装依赖(首次运行)
npm install
# 或使用 yarn
yarn install
# 启动开发服务器
npm run serve
# 或使用 yarn
yarn serve
前端服务启动后,浏览器自动打开:http://localhost:8081
6. 访问系统
后台管理系统访问地址:
http://localhost:8080/onlineHospitalSystem/admin/dist/index.html
默认登录账户:
- 管理员:账户
admin,密码admin - 医生:账户
a1,密码123456 - 挂号人员:账户
a1,密码123456 - 划价人员:账户
a1,密码123456
📸 系统截图
待添加系统实际运行截图
📁 项目结构
springboot203医疗挂号管理系统/
├── onlineHospitalSystem/ # 主项目目录
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/com/
│ │ │ │ ├── ServletContextListener/ # 监听器
│ │ │ │ │ └── DictionaryServletContextListener.java
│ │ │ │ ├── annotation/ # 注解
│ │ │ │ │ ├── APPLoginUser.java
│ │ │ │ │ ├── IgnoreAuth.java
│ │ │ │ │ └── LoginUser.java
│ │ │ │ ├── config/ # 配置类
│ │ │ │ │ ├── InterceptorConfig.java # 拦截器配置
│ │ │ │ │ ├── MyMetaObjectHandler.java # 字段填充处理器
│ │ │ │ │ └── MybatisPlusConfig.java # MyBatis-Plus配置
│ │ │ │ ├── controller/ # 控制器层
│ │ │ │ │ ├── BingliController.java # 病例管理
│ │ │ │ │ ├── CommonController.java # 通用接口
│ │ │ │ │ ├── ConfigController.java # 配置管理
│ │ │ │ │ ├── DictionaryController.java # 字典管理
│ │ │ │ │ ├── FileController.java # 文件上传
│ │ │ │ │ ├── GuahaoController.java # 挂号管理
│ │ │ │ │ ├── GuahaorenyuanController.java # 挂号人员管理
│ │ │ │ │ ├── HuajiarenyuanController.java # 划价人员管理
│ │ │ │ │ ├── HuanzheController.java # 患者管理
│ │ │ │ │ ├── MenzhenController.java # 门诊管理
│ │ │ │ │ ├── TijianController.java # 体检管理
│ │ │ │ │ ├── UsersController.java # 用户管理
│ │ │ │ │ ├── YaopinController.java # 药品管理
│ │ │ │ │ └── YishengController.java # 医生管理
│ │ │ │ ├── dao/ # 数据访问层
│ │ │ │ │ ├── BingliDao.java
│ │ │ │ │ ├── CommonDao.java
│ │ │ │ │ ├── ConfigDao.java
│ │ │ │ │ ├── DictionaryDao.java
│ │ │ │ │ ├── GuahaoDao.java
│ │ │ │ │ ├── GuahaorenyuanDao.java
│ │ │ │ │ ├── HuajiarenyuanDao.java
│ │ │ │ │ ├── HuanzheDao.java
│ │ │ │ │ ├── MenzhenDao.java
│ │ │ │ │ ├── TijianDao.java
│ │ │ │ │ ├── TokenDao.java
│ │ │ │ │ ├── UsersDao.java
│ │ │ │ │ ├── YaopinDao.java
│ │ │ │ │ └── YishengDao.java
│ │ │ │ ├── entity/ # 实体类
│ │ │ │ │ ├── model/ # 模型类
│ │ │ │ │ ├── view/ # 视图类
│ │ │ │ │ ├── vo/ # VO 类
│ │ │ │ │ ├── BingliEntity.java
│ │ │ │ │ ├── ConfigEntity.java
│ │ │ │ │ ├── DictionaryEntity.java
│ │ │ │ │ ├── EIException.java
│ │ │ │ │ ├── GuahaoEntity.java
│ │ │ │ │ ├── GuahaorenyuanEntity.java
│ │ │ │ │ ├── HuajiarenyuanEntity.java
│ │ │ │ │ ├── HuanzheEntity.java
│ │ │ │ │ ├── MenzhenEntity.java
│ │ │ │ │ ├── TijianEntity.java
│ │ │ │ │ ├── TokenEntity.java
│ │ │ │ │ ├── UsersEntity.java
│ │ │ │ │ ├── YaopinEntity.java
│ │ │ │ │ └── YishengEntity.java
│ │ │ │ ├── interceptor/ # 拦截器
│ │ │ │ │ └── AuthorizationInterceptor.java
│ │ │ │ ├── model/enums/ # 枚举类
│ │ │ │ │ └── TypeEnum.java
│ │ │ │ ├── service/ # 服务层
│ │ │ │ │ ├── impl/ # 服务实现类
│ │ │ │ │ ├── BingliService.java
│ │ │ │ │ ├── CommonService.java
│ │ │ │ │ ├── ConfigService.java
│ │ │ │ │ ├── DictionaryService.java
│ │ │ │ │ ├── GuahaoService.java
│ │ │ │ │ ├── GuahaorenyuanService.java
│ │ │ │ │ ├── HuajiarenyuanService.java
│ │ │ │ │ ├── HuanzheService.java
│ │ │ │ │ ├── MenzhenService.java
│ │ │ │ │ ├── TijianService.java
│ │ │ │ │ ├── TokenService.java
│ │ │ │ │ ├── UsersService.java
│ │ │ │ │ ├── YaopinService.java
│ │ │ │ │ └── YishengService.java
│ │ │ │ ├── thread/ # 线程工具
│ │ │ │ │ └── MyThreadMethod.java
│ │ │ │ ├── utils/ # 工具类
│ │ │ │ │ ├── BaiduUtil.java # 百度 AI 工具
│ │ │ │ │ ├── CommonUtil.java # 通用工具
│ │ │ │ │ ├── FileUtil.java # 文件工具
│ │ │ │ │ ├── HttpClientUtils.java # HTTP 客户端
│ │ │ │ │ ├── JQPageInfo.java # 分页信息
│ │ │ │ │ ├── MPUtil.java # MyBatis-Plus 工具
│ │ │ │ │ ├── PageUtils.java # 分页工具
│ │ │ │ │ ├── PoiUtil.java # Excel 工具
│ │ │ │ │ ├── Query.java # 查询工具
│ │ │ │ │ ├── R.java # 响应结果封装
│ │ │ │ │ ├── SQLFilter.java # SQL 过滤
│ │ │ │ │ ├── SpringContextUtils.java # Spring 上下文
│ │ │ │ │ ├── StringUtil.java # 字符串工具
│ │ │ │ │ └── ValidatorUtils.java # 校验工具
│ │ │ │ └── OnlineHospitalApplication.java # 启动类
│ │ │ └── resources/
│ │ │ ├── admin/admin/ # 前端项目
│ │ │ │ ├── public/
│ │ │ │ ├── src/
│ │ │ │ ├── 1-install.bat # 安装依赖脚本
│ │ │ │ ├── 2-run.bat # 运行脚本
│ │ │ │ ├── 3-build.bat # 构建脚本
│ │ │ │ ├── babel.config.js
│ │ │ │ ├── package.json
│ │ │ │ └── vue.config.js
│ │ │ ├── mapper/ # MyBatis 映射文件
│ │ │ │ ├── BingliDao.xml
│ │ │ │ ├── CommonDao.xml
│ │ │ │ ├── ConfigDao.xml
│ │ │ │ ├── DictionaryDao.xml
│ │ │ │ ├── GuahaoDao.xml
│ │ │ │ ├── GuahaorenyuanDao.xml
│ │ │ │ ├── HuajiarenyuanDao.xml
│ │ │ │ ├── HuanzheDao.xml
│ │ │ │ ├── MenzhenDao.xml
│ │ │ │ ├── TijianDao.xml
│ │ │ │ ├── TokenDao.xml
│ │ │ │ ├── UsersDao.xml
│ │ │ │ ├── YaopinDao.xml
│ │ │ │ └── YishengDao.xml
│ │ │ └── application.yml # 应用配置文件
│ │ └── target/ # 编译输出目录
│ └── pom.xml # Maven 配置文件
├── db.sql # 数据库脚本
├── 说明文档.txt # 说明文档
└── readme.md # 项目说明(本文件)
🗄️ 数据库设计
数据表列表
| 表名 | 说明 | 主要字段 |
|---|---|---|
| users | 管理员表 | id, username, password, role |
| yisheng | 医生表 | id, username, password, yisheng_name, yisheng_phone, sex_types, keshi_types, zhiwei_types, guahaofei |
| guahaorenyuan | 挂号人员表 | id, username, password, guahaorenyuan_name, guahaorenyuan_phone, sex_types |
| huajiarenyuan | 划价人员表 | id, username, password, huajiarenyuan_name, huajiarenyuan_phone, sex_types |
| huanzhe | 患者表 | id, huanzhe_name, huanzhe_phone, huanzhe_id_number, sex_types |
| guahao | 挂号表 | id, huanzhe_id, guahaorenyuan_id, yisheng_id, guahao_uuid_number, insert_time |
| menzhen | 门诊表 | id, yisheng_id, menzhen_name, menzhen_address, xingqiji, qita_content |
| bingli | 病例表 | id, guahao_id, yisheng_id, bingli_uuid_number, zhusu_content, zhenduan_content, kaiyao_content, bingli_types |
| tijian | 体检表 | id, yisheng_id, huanzhe_id, tijian_uuid_number, tizhong, shengao, xinlv, xinyin 等 |
| yaopin | 药品表 | id, yaopin_uuid_number, yaopin_name, yaopin_photo, yaopin_types, yaopin_content |
| dictionary | 字典表 | id, dic_code, dic_name, code_index, index_name |
| config | 配置表 | id, name, value |
| token | Token 表 | id, userid, username, tablename, role, token, expiratedtime |
表关系说明
用户关系:
users (管理员)
yisheng (医生)
guahaorenyuan (挂号人员)
huajiarenyuan (划价人员)
huanzhe (患者)
业务流程:
guahao (挂号) → bingli (病例) → 划价 → 取药
↓ ↓
huanzhe yisheng
↓ ↓
menzhen tijian
核心字段说明
字典类型(dictionary 表)
- 性别类型 (sex_types):1-男,2-女
- 科室 (keshi_types):1-骨科,2-眼科,3-内科
- 职位 (zhiwei_types):1-普通医生,2-主治医师,3-主任
- 病例状态 (bingli_types):1-已出单,2-已划价,3-已取药
- 药品类型 (yaopin_types):1-5 对应不同药品分类
🔧 配置说明
服务器配置
server:
port: 8080 # 服务端口
servlet:
context-path: /onlineHospitalSystem # 应用上下文路径
tomcat:
uri-encoding: UTF-8 # URI 编码
文件上传配置
spring:
servlet:
multipart:
max-file-size: 1000MB # 单个文件最大大小
max-request-size: 1000MB # 请求最大大小
MyBatis-Plus 配置
mybatis-plus:
mapper-locations: classpath*:mapper/*.xml # Mapper XML 位置
typeAliasesPackage: com.entity # 实体类包路径
global-config:
id-type: 1 # 主键类型:用户输入ID
field-strategy: 2 # 字段策略:非空判断
db-column-underline: true # 驼峰下划线转换
logic-delete-value: -1 # 逻辑删除值
logic-not-delete-value: 0 # 逻辑未删除值
📝 注意事项
- 图片文件命名:上传的图片文件名不能包含中文字符
- 图片存放路径:
src/main/webapp/upload - 数据库字符集:必须使用 UTF-8
- 浏览器兼容性:推荐使用 Google Chrome 浏览器
- 端口占用:确保 8080 端口未被占用
- JDK 版本:必须使用 JDK 1.8,不支持更高版本
- 时区设置:数据库连接使用
GMT+8时区
🐛 常见问题
1. 数据库连接失败
问题:启动时报错 Could not create connection to database server
解决方案:
- 检查 MySQL 服务是否启动
- 确认数据库用户名和密码正确
- 确认数据库
yiliaoguahao已创建 - 检查数据库端口(默认 3306)是否正确
2. 文件上传失败
问题:上传文件时报错或文件无法访问
解决方案:
- 确保
src/main/webapp/upload目录存在 - 检查目录写权限
- 确认文件名不含中文
- 检查文件大小是否超过限制(1000MB)
3. 前端页面无法访问
问题:访问前端页面显示 404
解决方案:
- 确认后端服务已启动
- 检查访问路径是否正确
- 清除浏览器缓存
- 确认前端资源已正确构建
4. Token 过期
问题:操作时提示 Token 过期
解决方案:
- 重新登录系统
- 检查系统时间是否正确
- 确认 Token 配置是否正确
📮 联系方式
如有问题或建议,欢迎联系:
- 📧 公众号: [程序员阿金]
📄 许可证
本项目采用 MIT 许可证。详见 LICENSE 文件。
最后更新于 2026/2/22