医疗机构的预约挂号通常同时面对患者端体验、院内排班协同、支付退款闭环和多院区运营管理等问题。传统线下窗口或单体系统容易出现号源不透明、科室导诊不清晰、患者重复排队、运营内容分散、权限边界不明确等情况。
本项目面向医院、诊所集团、区域医疗服务公司和第三方医疗 SaaS 服务商,提供一套微信小程序 + SaaS 管理后台 + 多租户 API 的预约挂号解决方案。患者从小程序完成科室导诊、医生选择、就诊人维护、预约下单和支付;医院管理员在后台维护院区、科室、医生、号源、订单、退款、内容和网站配置;平台方统一管理租户、域名、支付、短信和权限。
适用场景包括:
多院区医院统一预约入口
专科医院或连锁门诊快速上线微信预约
医疗 SaaS 服务商托管多个医院租户
医院信息科需要按岗位拆分后台权限
门诊处、医生、运营部协同处理挂号和内容运营
项目采用 monorepo 组织:
backend:PHP API 服务,包含小程序 API、后台 API、租户解析、权限、支付、短信、上传和业务服务。
admin-web:Vue2 + Ant Design Vue 1.x 的 SaaS 管理后台,使用 Hash 路由提供门户首页和独立功能地址。
miniapp:原生微信小程序,负责患者端预约、支付、就诊人和资讯展示。
infra:Docker Compose、Nginx、MySQL、Redis 和本地 HTTPS 配置。
docs:接口、数据模型、部署、支付、上线和项目介绍文档。
核心实现要点:
多租户采用平台库 + 租户独立业务库模式,平台库保存租户、域名、平台账号和平台配置,租户业务库保存医院业务数据。
租户上下文由登录 token、X-Tenant-Code 或 API Host 域名解析得到,后端强制隔离租户数据。
后台菜单由 GET /admin/v1/auth/me 返回的权限码和菜单树驱动,前端只负责渲染,接口仍由后端校验权限。
医生账号绑定 doctor_id,预约订单和用户服务中的订单查询都会按医生范围过滤。
预约号源由排班和时段号源组成,创建预约时扣减号源,取消待支付预约时恢复号源。
已支付或已确认预约取消时创建退款记录,预约进入退款中,便于退款闭环跟踪。
支付配置保存时忽略回调 URL 字段,实际回调地址由租户 API 域名生成,避免人为配置错误。