医疗陪诊看似是“人陪人看病”,但真正把陪诊业务规模化的,靠的从来不是人多,而是系统是否足够严谨。
一套成熟的开源医疗陪诊系统源码,本质上是一套围绕“预约、调度、履约、结算”设计的平台型系统。
本文从源码结构和关键实现出发,拆解医疗陪诊系统是如何真正跑起来的。
一、医疗陪诊系统的业务本质
从技术角度看,陪诊系统至少同时处理三类问题:
- 时间型服务(预约、排班、冲突校验)
- 多角色协作(用户、陪诊员、平台)
- 流程强约束(状态流转、责任边界)
这决定了它不能简单套“普通商城”模型,而必须单独设计业务结构。
二、系统整体架构设计
典型的开源医疗陪诊系统,会采用标准的分层架构:
前端层(H5 / 小程序)
↓
接口层(Controller / API)
↓
业务服务层(订单 / 排班 / 调度)
↓
领域模型层(用户 / 陪诊员 / 医院)
↓
数据层(MySQL / Redis)
这样设计的好处是:
- 业务逻辑集中
- 多端共用一套接口
- 后期支持多城市、多医院扩展
三、核心数据模型设计
1. 用户与角色模型
陪诊系统必须从第一天就区分角色。
CREATE TABLE users (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
mobile VARCHAR(20),
role VARCHAR(20), -- user / escort / admin
status TINYINT,
created_at DATETIME
);
role 不是装饰字段,而是权限与流程的起点。
2. 陪诊人员模型
陪诊员不是普通用户,而是可调度资源。
CREATE TABLE escorts (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT,
real_name VARCHAR(50),
service_city VARCHAR(50),
service_status TINYINT,
created_at DATETIME
);
系统重点关注的是:
- 是否可接单
- 服务区域
- 是否已排班
3. 医院与服务项目模型
CREATE TABLE hospitals (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255),
city VARCHAR(50)
);
CREATE TABLE escort_services (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100),
service_hours INT
);
这样可以把陪诊从“人力”抽象为标准化服务单元。
四、陪诊订单的核心设计
1. 订单表结构
陪诊订单不是一次性行为,而是一个完整流程。
CREATE TABLE escort_orders (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT,
escort_id BIGINT,
hospital_id BIGINT,
service_id BIGINT,
appointment_time DATETIME,
status VARCHAR(20), -- created / assigned / serving / finished / canceled
created_at DATETIME
);
2. 订单状态流转设计
典型状态流转如下:
创建订单
→ 分配陪诊员
→ 服务中
→ 服务完成
→ 用户评价
源码中一般会用状态校验来防止越权操作。
function changeStatus($order, $newStatus) {
$allow = [
'created' => ['assigned', 'canceled'],
'assigned' => ['serving'],
'serving' => ['finished']
];
if (!in_array($newStatus, $allow[$order->status])) {
throw new Exception('非法状态流转');
}
$order->status = $newStatus;
$order->save();
}
五、排班与时间冲突控制
陪诊系统最容易出问题的地方就是时间冲突。
function checkEscortAvailable($escortId, $time) {
return !EscortOrder::where('escort_id', $escortId)
->where('appointment_time', $time)
->whereIn('status', ['assigned','serving'])
->exists();
}
这个逻辑决定了:
- 陪诊员不会被重复分配
- 平台调度是否可靠
六、权限与数据边界控制
医疗陪诊对数据安全要求极高,权限控制必须“多层兜底”。
1. 接口层权限判断
if ($currentUser->role !== 'admin') {
throw new UnauthorizedException();
}
2. 数据层归属校验
if ($order->user_id !== $currentUserId && $currentRole !== 'admin') {
throw new UnauthorizedException();
}
页面限制只是体验,接口和数据校验才是安全核心。
七、为什么选择开源医疗陪诊系统源码
相比完全从零开发,开源系统更适合陪诊业务:
- 业务流程成熟
- 架构清晰可控
- 可快速二次开发
- 方便多城市复制
尤其在陪诊这种强流程、强责任场景下,源码质量直接影响运营风险。
八、结语
医疗陪诊系统不是简单的“服务撮合”,而是一套对流程、时间和责任高度敏感的平台系统。
真正靠谱的开源医疗陪诊系统源码,往往已经在底层帮你把这些问题提前想清楚:
- 人怎么调
- 单怎么走
- 时间怎么控
- 权限怎么隔
如果你准备做陪诊平台,建议在看功能之前,先把源码里的这些关键逻辑看透。