医院预约系统
1.一个完整的FIGO医院预约管理系统,包含后端API服务和前端管理端界面
2.该系统为医疗机构提供了完整的数字化预约解决方案,具有技术先进、功能完善、易于维护的特点。
仓库地址:gitee.com/hfqf1234/mk… (谢谢顺手给个star)
演示预约h5:zx.ykdzkt.com/h5/yy/index…
技术特点
- 🚀 现代化技术栈 - Node.js + Vue.js + 微信小程序
- 🏗️ 清晰架构设计 - 前后端分离,模块化开发
- 🔐 完善安全体系 - JWT认证,HTTPS加密,权限控制
- ⚡ 高效开发体验 - 自动化工具,热重载,代码规范
- 🔧 智能运维管理 - 一键部署,自动监控,故障自愈
- 📱 多端统一体验 - 微信小程序,管理后台,H5页面
适用场景
- 🏥 医院预约管理 - 大型医院、专科医院
- 🏥 诊所预约系统 - 私人诊所、社区医院
- 🏥 体检中心预约 - 体检机构、健康管理中心
- 🏥 多机构管理 - 医疗集团、连锁医院
核心价值
- ✅ 提升效率 - 自动化预约流程,减少人工成本
- ✅ 改善体验 - 便捷的在线预约,用户友好的界面
- ✅ 数据驱动 - 完整的预约数据统计和分析
- ✅ 扩展性强 - 模块化设计,支持业务快速扩展
- ✅ 维护简单 - 自动化运维,降低维护成本
📋 项目概述
项目名称: 医院预约系统 (Hospital Appointment System)
技术栈: Node.js + Express + MySQL + Vue.js + 微信小程序
部署环境: 阿里云ECS + Nginx + PM2 + SSL证书
🎯 前后端功能梳理
前端功能模块
1. 微信小程序端
📱 用户端功能
├── 🏥 医院浏览
│ ├── 医院列表展示
│ ├── 医院详情查看
│ └── 医院搜索筛选
├── 🏥 科室选择
│ ├── 科室列表
│ ├── 科室详情
│ └── 科室医生列表
├── 👨⚕️ 医生预约
│ ├── 医生信息查看
│ ├── 预约时间选择
│ ├── 预约号池查询
│ └── 预约确认提交
├── 👤 个人中心
│ ├── 我的预约
│ ├── 预约历史
│ ├── 个人信息
│ └── 微信授权登录
└── 📞 联系客服
├── 在线咨询
├── 电话咨询
└── 问题反馈
2. 管理后台 (Vue.js)
🖥️ 管理端功能
├── 🏥 医院管理
│ ├── 医院信息维护
│ ├── 医院配置管理
│ ├── 医院状态控制
│ └── 医院数据统计
├── 🏥 科室管理
│ ├── 科室信息维护
│ ├── 科室排序管理
│ ├── 科室状态控制
│ └── 科室数据统计
├── 👨⚕️ 医生管理
│ ├── 医生信息维护
│ ├── 医生排班管理
│ ├── 医生状态控制
│ └── 医生预约统计
├── 📅 预约管理
│ ├── 预约列表查看
│ ├── 预约状态管理
│ ├── 预约数据统计
│ └── 预约取消处理
├── 👥 用户管理
│ ├── 用户列表查看
│ ├── 用户信息管理
│ ├── 用户权限控制
│ └── 用户行为分析
└── 📊 数据统计
├── 预约数据统计
├── 用户数据分析
├── 系统运行监控
└── 报表生成导出
3. H5页面端
🌐 H5端功能
├── 📱 移动端适配
│ ├── 响应式设计
│ ├── 触摸交互优化
│ └── 移动端性能优化
├── 🏥 预约功能
│ ├── 医院科室选择
│ ├── 医生时间预约
│ ├── 预约信息确认
│ └── 预约结果查看
└── 🔗 微信集成
├── 微信授权登录
├── 微信分享功能
└── 微信支付集成
后端功能模块
1. API接口层
🔌 API接口功能
├── 🏥 医院相关API
│ ├── GET /api/hospitals - 获取医院列表
│ ├── GET /api/hospitals/:id - 获取医院详情
│ ├── POST /api/hospitals - 创建医院
│ ├── PUT /api/hospitals/:id - 更新医院
│ └── DELETE /api/hospitals/:id - 删除医院
├── 🏥 科室相关API
│ ├── GET /api/departments - 获取科室列表
│ ├── GET /api/departments/:id - 获取科室详情
│ ├── POST /api/departments - 创建科室
│ ├── PUT /api/departments/:id - 更新科室
│ └── DELETE /api/departments/:id - 删除科室
├── 👨⚕️ 医生相关API
│ ├── GET /api/doctors - 获取医生列表
│ ├── GET /api/doctors/:id - 获取医生详情
│ ├── POST /api/doctors - 创建医生
│ ├── PUT /api/doctors/:id - 更新医生
│ └── DELETE /api/doctors/:id - 删除医生
├── 📅 预约相关API
│ ├── GET /api/appointments - 获取预约列表
│ ├── POST /api/appointments - 创建预约
│ ├── PUT /api/appointments/:id - 更新预约
│ ├── DELETE /api/appointments/:id - 取消预约
│ └── GET /api/appointments/pools - 获取预约号池
└── 👤 用户相关API
├── POST /api/auth/login - 用户登录
├── POST /api/auth/logout - 用户登出
├── GET /api/users/profile - 获取用户信息
└── PUT /api/users/profile - 更新用户信息
2. 业务逻辑层
⚙️ 业务逻辑功能
├── 🔐 认证授权
│ ├── JWT Token生成验证
│ ├── 用户权限控制
│ ├── 角色权限管理
│ └── 会话状态管理
├── 📅 预约业务
│ ├── 预约号池管理
│ ├── 预约时间冲突检查
│ ├── 预约状态流转
│ └── 预约取消处理
├── 📧 消息通知
│ ├── 邮件发送服务
│ ├── 短信通知服务
│ ├── 微信消息推送
│ └── 系统消息管理
├── 📊 数据统计
│ ├── 预约数据统计
│ ├── 用户行为分析
│ ├── 系统性能监控
│ └── 业务报表生成
└── 🔄 定时任务
├── 数据清理任务
├── 邮件发送任务
├── 系统监控任务
└── 数据备份任务
3. 数据访问层
🗄️ 数据访问功能
├── 🏥 医院数据管理
│ ├── 医院信息CRUD
│ ├── 医院配置管理
│ ├── 医院状态控制
│ └── 医院数据统计
├── 🏥 科室数据管理
│ ├── 科室信息CRUD
│ ├── 科室排序管理
│ ├── 科室状态控制
│ └── 科室数据统计
├── 👨⚕️ 医生数据管理
│ ├── 医生信息CRUD
│ ├── 医生排班管理
│ ├── 医生状态控制
│ └── 医生预约统计
├── 📅 预约数据管理
│ ├── 预约信息CRUD
│ ├── 预约状态管理
│ ├── 预约数据统计
│ └── 预约历史查询
└── 👤 用户数据管理
├── 用户信息CRUD
├── 用户权限管理
├── 用户行为记录
└── 用户数据分析
🏗️ 系统架构
整体架构图
┌─────────────────────────────────────────────────────────────────┐
│ 用户层 │
├─────────────────┬─────────────────┬─────────────────────────────┤
│ 微信小程序 │ 管理后台 │ H5页面 │
│ (Miniprogram) │ (Vue.js Admin) │ (HTML5 Web) │
└─────────────────┴─────────────────┴─────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ 网关层 │
├─────────────────────────────────────────────────────────────────┤
│ Nginx (反向代理 + SSL) │
│ • 静态文件服务 • API代理 • HTTPS重定向 • 负载均衡 │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ 应用层 │
├─────────────────────────────────────────────────────────────────┤
│ Node.js + Express API │
│ • RESTful API • JWT认证 • CORS处理 • 文件上传 │
│ • 微信小程序API • 定时任务 • 邮件服务 • 数据统计 │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ 数据层 │
├─────────────────────────────────────────────────────────────────┤
│ MySQL 数据库 │
│ • 医院信息 • 科室医生 • 预约数据 • 用户管理 • 系统配置 │
└─────────────────────────────────────────────────────────────────┘
🎯 核心功能模块
1. 用户端功能
- 微信小程序: 医院浏览、科室选择、医生预约、个人中心
- H5页面: 移动端网页版预约功能
- 管理后台: 医院管理、科室管理、医生管理、预约管理
2. 系统管理功能
- 多环境支持: my环境、hlj环境、local环境
- 权限管理: 超级管理员、医院管理员、普通管理员
- 数据统计: 预约统计、用户分析、系统监控
🚀 技术栈详解
后端技术栈
// 核心框架
Node.js + Express.js
// 数据库
MySQL 5.7+ (支持utf8mb4字符集)
// 认证与安全
JWT (JSON Web Tokens)
CORS (跨域资源共享)
SSL/TLS 加密
// 进程管理
PM2 (进程守护 + 集群模式)
// 定时任务
node-cron (数据清理、邮件发送)
// 文件处理
multer (文件上传)
sharp (图片处理)
// 邮件服务
nodemailer (SMTP邮件发送)
前端技术栈
// 管理后台
Vue.js 3 + Vite
Element Plus UI
Axios HTTP客户端
// 微信小程序
微信小程序原生框架
WXML + WXSS + JavaScript
// H5页面
原生HTML5 + CSS3 + JavaScript
响应式设计
部署技术栈
# Web服务器
Nginx (反向代理 + 静态文件服务)
# 进程管理
PM2 (Node.js进程守护)
# 数据库
MySQL (关系型数据库)
# 云服务
阿里云ECS (CentOS 7)
SSL证书 (DigiCert)
🔧 部署架构亮点
1. 多环境配置管理
// 环境配置中心化
const config = {
my: { // 生产环境
server: { ip: "114.215.203.208", domain: "zx.ykdzkt.com" },
database: { host: "127.0.0.1", user: "admin", password: "***" }
},
hlj: { // 黑龙江环境
server: { ip: "59.110.82.60", domain: "gh.yjlnyy.com" },
database: { host: "127.0.0.1", user: "root", password: "12345678" }
},
local: { // 本地开发
server: { ip: "127.0.0.1", domain: "localhost" },
database: { host: "127.0.0.1", user: "root", password: "123456" }
}
};
2. 自动化部署脚本
# 一键部署脚本
./shells/start-all-services.sh
# 功能特性:
✅ 环境检测与配置加载
✅ 数据库连接测试
✅ 前端项目构建
✅ Nginx配置生成
✅ SSL证书配置
✅ PM2进程管理
✅ 服务健康检查
3. 数据库管理自动化
# 数据库初始化脚本
./shells/execute-data-sql.sh
# 功能特性:
✅ 多环境数据库配置
✅ 自动备份机制
✅ 表结构验证
✅ 数据完整性检查
✅ 执行报告生成
4. 表结构修复工具
# 数据库表结构修复
./shells/fix-database-schema.sh
# 功能特性:
✅ 字段存在性检查
✅ 动态SQL执行
✅ MySQL版本兼容
✅ 错误处理与回滚
🌐 网络架构
请求流程图
用户请求 → Nginx → Node.js API → MySQL
↓ ↓ ↓ ↓
微信小程序 静态文件 业务逻辑 数据存储
管理后台 API代理 认证授权 数据查询
H5页面 HTTPS CORS处理 数据更新
Nginx配置亮点
# HTTP到HTTPS重定向
server {
listen 80;
server_name gh.yjlnyy.com;
return 301 https://$server_name$request_uri;
}
# HTTPS主服务
server {
listen 443 ssl http2;
server_name gh.yjlnyy.com;
# API代理
location /api/ {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 静态文件服务
location /hospital-admin/ {
alias /var/www/hospital-appointment/admin/dist/;
try_files $uri $uri/ /hospital-admin/index.html;
}
}
🔐 安全特性
1. 认证与授权
// JWT Token认证
const jwt = require('jsonwebtoken');
const token = jwt.sign({ userId, userType }, secretKey, { expiresIn: '24h' });
// 中间件权限控制
const requireAdmin = (req, res, next) => {
const token = req.headers.authorization;
// 验证token有效性
// 检查用户权限
};
2. CORS跨域处理
// 动态CORS配置
const allowedOrigins = [
'https://gh.yjlnyy.com',
'https://zx.ykdzkt.com',
'http://localhost:3000'
];
app.use(cors({
origin: function (origin, callback) {
if (!origin || allowedOrigins.includes(origin)) {
callback(null, true);
} else {
callback(new Error('CORS策略不允许此来源'));
}
}
}));
3. 数据安全
-- 数据库字段加密
CREATE TABLE wechat_users (
openid VARCHAR(50) NOT NULL UNIQUE,
session_key VARCHAR(100) COMMENT '微信session_key',
-- 敏感信息加密存储
);
📊 监控与运维
1. PM2进程管理
# 进程监控
pm2 list
pm2 logs hospital-api
pm2 monit
# 集群模式
pm2 start server/app.js -i max --name hospital-api
2. 日志管理
// 请求日志记录
app.use((req, res, next) => {
console.log(`${new Date().toISOString()}: ${req.method} ${req.url}`);
console.log('请求头:', req.headers);
next();
});
3. 健康检查
// 健康检查端点
app.get('/health', (req, res) => {
res.json({
status: 'healthy',
timestamp: new Date().toISOString(),
uptime: process.uptime()
});
});
🚀 快速部署
一键部署脚本
# 1. 环境准备
sudo yum install -y nodejs mysql-server nginx
npm install -g pm2
# 2. 项目部署
git clone <repository-url>
cd mk-hospital-appointment-xcx
npm install
# 3. 配置环境并部署
export ENV_MODE=1 # hlj环境
./shells/start-all-services.sh
# 4. 数据库初始化
./shells/execute-data-sql.sh
部署脚本功能
- ✅ 环境检测 - 自动检测Node.js、MySQL、Nginx
- ✅ 配置管理 - 多环境配置自动切换
- ✅ 前端构建 - Vue.js管理后台自动构建
- ✅ Nginx配置 - 自动生成SSL和反向代理配置
- ✅ 数据库初始化 - 自动执行SQL脚本和表结构修复
- ✅ 服务启动 - PM2进程管理和健康检查
🔧 运维管理
服务管理
# PM2进程管理
pm2 list # 查看进程列表
pm2 logs hospital-api # 查看应用日志
pm2 restart hospital-api # 重启服务
pm2 monit # 监控面板
# Nginx管理
sudo nginx -t # 测试配置
sudo systemctl restart nginx # 重启Nginx
sudo tail -f /var/log/nginx/error.log # 查看错误日志
数据库管理
# 数据库连接测试
mysql -h127.0.0.1 -P3306 -uroot -p12345678 -e "SELECT 1;"
# 表结构修复
./shells/fix-database-schema.sh
# 数据库备份
mysqldump -h127.0.0.1 -P3306 -uroot -p12345678 hospital_booking > backup.sql
🚀 技术特点
1. 现代化技术栈
🛠️ 技术选型亮点
├── 🎯 后端技术
│ ├── Node.js + Express.js (高性能异步I/O)
│ ├── MySQL 5.7+ (关系型数据库)
│ ├── JWT认证 (无状态身份验证)
│ └── PM2进程管理 (生产环境守护)
├── 🎨 前端技术
│ ├── Vue.js 3 + Vite (现代化前端框架)
│ ├── Element Plus (企业级UI组件库)
│ ├── 微信小程序 (原生小程序开发)
│ └── 响应式H5 (移动端适配)
└── 🚀 部署技术
├── Nginx (反向代理 + 静态文件服务)
├── SSL/TLS (HTTPS安全传输)
├── 阿里云ECS (云服务器部署)
└── 自动化脚本 (一键部署)
2. 架构设计特点
🏗️ 架构设计亮点
├── 🔄 前后端分离
│ ├── RESTful API设计
│ ├── JSON数据交换
│ ├── 跨域CORS处理
│ └── 统一错误处理
├── 🏢 多租户架构
│ ├── 医院独立管理
│ ├── 数据隔离设计
│ ├── 权限分级控制
│ └── 个性化配置
├── 🔐 安全设计
│ ├── JWT Token认证
│ ├── 密码加密存储
│ ├── HTTPS传输加密
│ └── SQL注入防护
└── 📊 性能优化
├── 数据库索引优化
├── 静态资源缓存
├── 连接池管理
└── 异步处理机制
3. 开发效率特点
⚡ 开发效率亮点
├── 🛠️ 自动化工具
│ ├── 一键部署脚本
│ ├── 数据库自动初始化
│ ├── 表结构自动修复
│ └── 环境配置自动切换
├── 📦 模块化设计
│ ├── 功能模块独立
│ ├── 代码复用性强
│ ├── 接口标准化
│ └── 组件化开发
├── 🔧 开发工具链
│ ├── ESLint代码规范
│ ├── Prettier代码格式化
│ ├── Git版本控制
│ └── 热重载开发
└── 📋 文档完善
├── API接口文档
├── 部署说明文档
├── 功能流程图
└── 技术架构文档
4. 运维管理特点
🔧 运维管理亮点
├── 📊 监控体系
│ ├── PM2进程监控
│ ├── 应用日志记录
│ ├── 系统性能监控
│ └── 健康检查机制
├── 🚀 部署自动化
│ ├── 多环境配置管理
│ ├── 服务自动启动
│ ├── 配置自动生成
│ └── 回滚机制支持
├── 🗄️ 数据管理
│ ├── 数据库自动备份
│ ├── 表结构版本控制
│ ├── 数据迁移脚本
│ └── 数据完整性检查
└── 🔄 持续集成
├── 代码自动构建
├── 依赖自动安装
├── 服务自动重启
└── 错误自动恢复
5. 业务功能特点
💼 业务功能亮点
├── 🏥 医院管理
│ ├── 多医院支持
│ ├── 医院信息管理
│ ├── 医院配置管理
│ └── 医院数据统计
├── 👨⚕️ 医生管理
│ ├── 医生信息维护
│ ├── 排班管理
│ ├── 预约号池管理
│ └── 医生工作量统计
├── 📅 预约系统
│ ├── 在线预约功能
│ ├── 预约时间管理
│ ├── 预约状态跟踪
│ └── 预约数据分析
├── 📱 多端支持
│ ├── 微信小程序端
│ ├── 管理后台端
│ ├── H5移动端
│ └── 响应式设计
└── 🔔 消息通知
├── 邮件通知服务
├── 短信通知服务
├── 微信消息推送
└── 系统消息管理