# community-hospital-reg-system **Repository Path**: WeatherCore/community-hospital-reg-system ## Basic Information - **Project Name**: community-hospital-reg-system - **Description**: 一套面向社区基层医院的线上挂号问诊管理平台,采用 Spring Boot3+MyBatis-Plus+MySQL8 后端、Vue3 前端开发。 系统划分普通患者、坐诊医生、后台管理员三大角色,实现在线预约挂号、AI 智能问诊、电子病历存档、科室医生排班管理、就诊数据统计看板完整业务流程;内置 JWT 权限控制、Redis 缓存,配套完整 Swagger 接口文档 - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-20 - **Last Updated**: 2026-07-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 社区医院挂号管理系统 > 基于 Spring Boot 3 + Vue 3 的前后端分离社区医院在线挂号问诊管理平台 [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Java](https://img.shields.io/badge/Java-17-orange.svg)](https://www.oracle.com/java/) [![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.2.0-brightgreen.svg)](https://spring.io/projects/spring-boot) [![Vue](https://img.shields.io/badge/Vue-3.4.0-4fc08d.svg)](https://vuejs.org/) [![MySQL](https://img.shields.io/badge/MySQL-8.0-4479A1.svg)](https://www.mysql.com/) [![PostgreSQL](https://img.shields.io/badge/PostgreSQL-16-4169E1.svg)](https://www.postgresql.org/) ## 项目介绍 本系统是一套面向社区基层医院的线上挂号问诊管理平台,系统划分**普通患者**、**坐诊医生**、**后台管理员**三大角色,实现在线预约挂号、AI 智能问诊、电子病历存档、科室医生排班管理、就诊数据统计看板等完整业务流程。 ### 功能概览 | 角色 | 功能 | |------|------| | 🧑 普通患者 | 在线预约挂号、按科室/医生筛选、AI 智能问诊、电子病历查看、就诊人管理、取消预约 | | 👨‍⚕️ 坐诊医生 | 今日患者列表、开始接诊、病历录入(诊断+处方)、就诊记录查询 | | 🛡️ 管理员 | 科室/医生/排班/用户 CRUD 管理、数据看板(近7天趋势 + 科室分布统计)、菜单权限管理、操作日志审计 | ## 技术栈 ### 后端 (`hospital-community`) | 层级 | 技术 | 版本 | |------|------|------| | 开发语言 | Java | 17 | | 核心框架 | Spring Boot | 3.2.0 | | ORM 框架 | MyBatis-Plus | 3.5.5 | | 数据库 | MySQL 8.0 / PostgreSQL 16 | — | | 缓存 | Redis 7(Lettuce 客户端) | — | | 安全框架 | Spring Security 6 + JWT(jjwt) | 0.12.3 | | API 文档 | Knife4j + SpringDoc OpenAPI 3 | 4.5.0 | | AI 集成 | Spring AI + DeepSeek Chat API | 1.0.0 | | 对象存储 | MinIO | 8.5.7 | | 短信服务 | 阿里云 Dysmsapi | 2.0.24 | | 工具库 | Hutool、Lombok | 5.8.25 / 1.18.38 | ### 前端 (`hospital-community-vue`) | 层级 | 技术 | 版本 | |------|------|------| | 核心框架 | Vue 3(Composition API) | 3.4.0 | | 构建工具 | Vite | 5.3.0 | | UI 组件库 | Element Plus | 2.7.0 | | 状态管理 | Pinia | 2.1.0 | | 路由 | Vue Router 4 | 4.3.0 | | HTTP 客户端 | Axios | 1.7.0 | | Markdown 渲染 | markdown-it | 14.3.0 | | CSS 预处理 | Sass | 1.77.0 | ## 软件架构 ``` ┌─────────────────────────────────────────────────────────┐ │ 浏览器 / 客户端 │ │ Vue 3 + Element Plus (localhost:5173) │ └─────────────────────┬───────────────────────────────────┘ │ HTTP / SSE (JWT Bearer Token) ▼ ┌─────────────────────────────────────────────────────────┐ │ Spring Boot 3 后端 (localhost:9090) │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────┐ │ │ │ 认证模块 │ │ 医院模块 │ │ 挂号模块 │ │ AI 问诊 │ │ │ │ JWT+安全 │ │ 科室/医生 │ │ 排班/预约 │ │ DeepSeek │ │ │ └──────────┘ └──────────┘ └──────────┘ └───────────┘ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────┐ │ │ │ 病历模块 │ │ 用户模块 │ │ 系统管理 │ │ 文件上传 │ │ │ │ 诊断/处方 │ │ 就诊人管理 │ │ 看板/日志 │ │ MinIO │ │ │ └──────────┘ └──────────┘ └──────────┘ └───────────┘ │ └──────┬────────────┬─────────────┬──────────────────────┘ │ │ │ ▼ ▼ ▼ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ MySQL / │ │ Redis │ │ MinIO │ │PostgreSQL│ │ 缓存 │ │ 文件存储 │ └──────────┘ └──────────┘ └──────────┘ ``` ## 快速开始 ### 环境要求 - **后端:** JDK 17+、Maven 3.8+、MySQL 8.0+ 或 PostgreSQL 16+、Redis 7+ - **前端:** Node.js 18+、npm 9+ ### 1. 克隆项目 ```bash git clone https://gitee.com/your-username/community-hospital-reg-system.git cd community-hospital-reg-system ``` ### 2. 启动后端 **创建数据库并导入初始数据:** MySQL: ```sql CREATE DATABASE hospital_community DEFAULT CHARACTER SET utf8mb4; ``` ```bash cd hospital-community # 导入 DDL + 种子数据 mysql -u root -p hospital_community < src/main/resources/hospital.sql # 导入排班和挂号示例数据 mysql -u root -p hospital_community < src/main/resources/insert.sql ``` PostgreSQL: ```sql CREATE DATABASE hospital_community; ``` ```bash psql -U postgres -d hospital_community -f src/main/resources/pg-hospital.sql psql -U postgres -d hospital_community -f src/main/resources/pg-insert.sql ``` **修改配置** `src/main/resources/application.yml`: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/hospital_community # 或 PostgreSQL username: root password: your_password data: redis: host: localhost password: your_redis_password # 如无密码则留空 ``` **启动后端服务:** ```bash cd hospital-community mvn spring-boot:run ``` 后端默认运行在 `http://localhost:9090`,API 上下文路径为 `/api`。 ### 3. 启动前端 ```bash cd hospital-community-vue npm install npm run dev ``` 前端默认运行在 `http://localhost:5173`,已配置代理将 `/api` 请求转发至后端。 ### 4. 访问系统 | 入口 | 地址 | |------|------| | 用户端首页 | http://localhost:5173 | | API 文档 (Knife4j) | http://localhost:9090/api/doc.html | | API 文档 (Swagger) | http://localhost:9090/api/swagger-ui.html | | OpenAPI 规范 | http://localhost:9090/api/v3/api-docs | > Knife4j 文档页面的默认访问账号为 `admin/admin`。 ## 测试账号 系统启动后已预置以下测试账号(密码均为 `123456`): | 角色 | 手机号 | 用户名 | 说明 | |------|--------|--------|------| | 🔧 管理员 | 13800000000 | 系统管理员 | 拥有全部后台管理权限 | | 👨‍⚕️ 医生 | 13800000001 | 张医生 | 内科医生(张明华) | | 👩‍⚕️ 医生 | 13800000002 | 李医生 | 内分泌科医生(李芳) | | 🧑 患者 | 13800000003 | 王小明 | 已绑定 3 位就诊人 | ### 预置数据 - **8 个科室:** 内科、外科、儿科、妇科、口腔科、中医科、眼科、皮肤科 - **10 位医生:** 分布在各科室,含职称和专业信息 - **3 位就诊人:** 测试患者绑定了本人、配偶、子女 - **19 个菜单项:** 三个角色的权限菜单树 - **排班数据:** 一周排班表(含上下午时段) - **示例挂号 + 病历:** 3 条完整就诊记录 ## 项目结构 ``` community-hospital-reg-system/ ├── README.md # 项目主文档(中文) ├── README.en.md # 项目主文档(英文) ├── LICENSE # MIT 许可证 ├── .gitignore ├── PROJECT_REVIEW.md # 项目审视与后续开发建议 │ ├── hospital-community/ # 后端 - Spring Boot 3 │ ├── pom.xml │ ├── README.md │ ├── src/main/java/cn/yujian95/hospital/ │ │ ├── HospitalApplication.java # 启动入口 │ │ ├── common/ # 公共模块(Result、异常、AuthContext) │ │ ├── config/ # 配置(Security、MyBatis-Plus、Redis、AI) │ │ ├── security/ # JWT 工具、认证过滤器 │ │ ├── controller/ # 控制器 │ │ │ ├── auth/ # 认证(登录/注册/验证码/密码) │ │ │ ├── user/ # 用户信息 + 就诊人管理 │ │ │ ├── hospital/ # 科室 + 医生管理 │ │ │ ├── appointment/ # 排班 + 挂号预约 │ │ │ ├── medical/ # 电子病历 │ │ │ ├── ai/ # AI 智能问诊(SSE 流式 + REST) │ │ │ ├── system/ # 数据看板 + 菜单管理 + 操作日志 │ │ │ └── common/ # 文件上传 │ │ ├── service/ # 业务接口 + 实现 │ │ ├── mapper/ # MyBatis-Plus Mapper │ │ ├── entity/ # 实体类(11 张表) │ │ ├── dto/ # 请求/响应 DTO │ │ └── enums/ # 枚举类 │ └── src/main/resources/ │ ├── application.yml # 主配置文件 │ ├── hospital.sql / pg-hospital.sql # DDL + 种子数据 │ └── insert.sql / pg-insert.sql # 补充示例数据 │ └── hospital-community-vue/ # 前端 - Vue 3 ├── package.json ├── vite.config.js ├── index.html ├── src/ │ ├── main.js # 入口文件 │ ├── App.vue # 根组件 │ ├── api/ # API 接口层(9 个模块) │ ├── router/ # 路由配置(12 条路由) │ ├── stores/ # Pinia 状态管理 │ ├── components/ # 可复用组件 │ │ ├── layout/ # 布局(Header/Footer/AppLayout) │ │ ├── home/ # 首页模块(8 个子组件) │ │ └── AiChat.vue # 浮动 AI 对话组件(SSE 流式) │ ├── views/ # 页面级组件 │ │ ├── Home.vue # 首页 │ │ ├── Login.vue # 登录 │ │ ├── Register.vue # 注册 │ │ ├── appointments/ # 挂号预约 + 我的挂号 │ │ ├── departments/ # 科室列表 + 详情 │ │ ├── doctors/ # 医生列表 + 详情 │ │ ├── medical/ # 我的病历 │ │ ├── ai/ # AI 问诊页面 │ │ └── user/ # 个人中心 │ ├── styles/ # 全局样式 │ └── utils/ # 工具函数 └── .env.development # 开发环境变量 ``` ## API 接口 系统共有 15 个 Controller、40+ 个 REST 接口,按功能分为以下模块: | 分组 | 说明 | 主要接口 | |------|------|----------| | 认证管理 | 登录/注册/短信/密码 | `/auth/login` `/auth/register` `/auth/sms-code` | | 用户管理 | 个人信息 | `/user/info` `/user/profile` | | 就诊人管理 | 家庭成员管理 | `/user/cards` | | 科室管理 | 科室 CRUD | `/departments` | | 医生管理 | 医生 CRUD | `/doctors` | | 排班管理 | 排班 CRUD | `/schedules` | | 挂号管理 | 预约/取消/接诊 | `/appointments` | | 病历管理 | 病历录入/查看 | `/medical-records` | | AI 智能问诊 | 流式对话/分诊建议 | `/chat/stream` `/ai/consult` | | 数据看板 | 指标 + 趋势 + 分布 | `/admin/dashboard` | | 菜单管理 | 角色菜单树 | `/admin/menus` | | 日志管理 | 操作审计日志 | `/admin/logs` | | 文件上传 | MinIO 文件上传 | `/file/upload` | ## 贡献指南 1. Fork 本仓库 2. 新建功能分支 `Feat_xxx` 或修复分支 `Fix_xxx` 3. 提交代码(请确保代码风格与项目一致) 4. 新建 Pull Request ## 许可证 本项目基于 [MIT License](LICENSE) 开源。 ## 联系方式 - **作者:** Weather - **项目地址:** [Gitee 仓库](https://gitee.com/WeatherCore/community-hospital-reg-system) --- ⭐ 如果这个项目对你有帮助,请给一个 Star!