肝了1个月开源分享-FIGO医院预约管理系统

24 阅读11分钟

医院预约系统

1.一个完整的FIGO医院预约管理系统,包含后端API服务和前端管理端界面

2.该系统为医疗机构提供了完整的数字化预约解决方案,具有技术先进、功能完善、易于维护的特点。

仓库地址:gitee.com/hfqf1234/mk… (谢谢顺手给个star)

演示预约h5:zx.ykdzkt.com/h5/yy/index…

image.png c02488b054ffaa47f32961f543bf2e71.jpg

image.png

image.png

技术特点

  1. 🚀 现代化技术栈 - Node.js + Vue.js + 微信小程序
  2. 🏗️ 清晰架构设计 - 前后端分离,模块化开发
  3. 🔐 完善安全体系 - JWT认证,HTTPS加密,权限控制
  4. ⚡ 高效开发体验 - 自动化工具,热重载,代码规范
  5. 🔧 智能运维管理 - 一键部署,自动监控,故障自愈
  6. 📱 多端统一体验 - 微信小程序,管理后台,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移动端
│   └── 响应式设计
└── 🔔 消息通知
    ├── 邮件通知服务
    ├── 短信通知服务
    ├── 微信消息推送
    └── 系统消息管理