医疗资源分布不均、老人独自就医困难、上班族没时间跑医院,催生了陪诊服务的持续增长。陪诊小程序作为线上撮合、订单流转、服务履约的载体,既要满足普通用户快速下单、预约陪诊师,也要解决平台管控、接单派单、资金结算、就医流程协同等业务问题。同时医疗场景有隐私、合规、时效等特殊约束,在技术设计上不能照搬普通本地生活服务系统。本文从业务痛点、核心功能、技术架构、关键代码、落地风险几个方面,完整讲解陪诊小程序的搭建思路。

很多自研或者外包开发的陪诊系统,上线后容易出现各类问题。 第一,订单流转混乱,预约时间冲突,同一个陪诊师被同时分配多个同一时段的医院订单; 第二,患者病历、就诊信息、身份证、挂号信息属于敏感医疗隐私,数据存储和传输不合规; 第三,院内场景不可控,陪诊服务很难核验真实履约状态,容易出现纠纷; 第四,资金链路复杂,包含预付款、服务费、平台抽成、保证金、退款,对账难度高; 第五,消息通知不及时,用户、陪诊师、平台管理员无法同步获取挂号、候诊、检查提醒。
这些痛点决定了陪诊系统不能只做简单的下单接单,必须围绕时间防冲突、隐私保护、履约留痕、资金可追溯四个核心方向设计。
整个系统分为用户端小程序、陪诊师端小程序、后台管理平台三端,各模块职责边界清晰。

其中有两个功能是陪诊系统的重中之重:时段冲突校验和服务履约打卡。 时段冲突校验:陪诊师绑定订单之后,该时间段锁定,不再接收新订单;支持自动派单和用户指定陪诊师两种模式。 履约打卡:支持到达医院打卡、就诊开始打卡、服务结束打卡,可上传现场凭证,作为纠纷仲裁依据。
项目采用前后端分离架构,小程序端使用uni-app开发,一套代码编译成微信、支付宝小程序;后端选用SpringBoot + SpringCloud,MySQL做主业务库,Redis做缓存与分布式锁,MQ处理异步消息。
为什么引入MQ?因为陪诊场景大量异步操作:下单成功短信提醒、派单通知、服务完成后结算通知、评价推送,同步执行会拉长接口响应时间,高峰期容易超时。Redis主要用来做陪诊师时段锁、订单状态缓存,防止超单、重复接单。

时段冲突是高频踩坑点,下面是核心校验逻辑,使用Redis分布式锁保证并发场景下不会出现同一陪诊师同一时间多单。
/**
* 校验陪诊师当前预约时段是否冲突
* @param escortId 陪诊师ID
* @param startTime 服务开始时间
* @param endTime 服务结束时间
* @return true=无冲突,false=时段冲突
*/
@Service
public class EscortOrderService {
@Autowired
private StringRedisTemplate redisTemplate;
// 订单时段锁前缀
private static final String ESCORT_TIME_LOCK_PREFIX = "escort:time:lock:";
public boolean checkTimeConflict(Long escortId, LocalDateTime startTime, LocalDateTime endTime) {
String lockKey = ESCORT_TIME_LOCK_PREFIX + escortId;
// 查询该陪诊师已锁定的有效时段
Set<String> timeRangeSet = redisTemplate.opsForSet().members(lockKey);
if (CollectionUtils.isEmpty(timeRangeSet)) {
return true;
}
for (String range : timeRangeSet) {
String[] arr = range.split(",");
LocalDateTime existStart = LocalDateTime.parse(arr[0]);
LocalDateTime existEnd = LocalDateTime.parse(arr[1]);
// 时间区间重叠判断
boolean isOverlap = !(endTime.isBefore(existStart) || startTime.isAfter(existEnd));
if (isOverlap) {
return false;
}
}
return true;
}
/**
* 下单成功后锁定时段
*/
public void lockEscortTime(Long escortId, LocalDateTime startTime, LocalDateTime endTime) {
String lockKey = ESCORT_TIME_LOCK_PREFIX + escortId;
String timeStr = startTime + "," + endTime;
redisTemplate.opsForSet().add(lockKey, timeStr);
}
}该逻辑仅做基础校验,生产环境还需要加上分布式锁,防止并发下单时同时通过校验,造成撞单。订单取消、服务完成后,要及时清理Redis里面的时段缓存,释放陪诊师时间。
医疗相关信息属于敏感信息,是陪诊系统开发里最容易踩红线的地方。 就诊人姓名、身份证、手机号、病历信息,禁止明文返回小程序前端;接口传输必须使用HTTPS;数据库敏感字段建议加密存储。 陪诊师只能在服务履约期间查看就诊人必要信息,服务结束之后,脱敏展示,无法查看完整证件信息。同时平台要留存用户授权记录,用户可以申请删除自己的就诊信息。 不允许系统私自采集、留存患者的诊断、检查报告内容,除非用户主动上传并且知情同意。
陪诊资金链路:用户下单支付→资金进入平台账户→服务完成,系统自动解冻佣金→扣除平台抽成,剩余金额可由陪诊师发起提现。 支持配置不同服务类型不同抽佣比例,同时支持保证金机制,用于处理投诉赔付。 结算逻辑要异步化,服务完成后延迟结算(例如设置24小时售后窗口期),窗口期内用户发起投诉,暂停结算,人工介入处理。 对账模块每日自动生成对账报表,对比支付流水、订单金额、提现记录,输出差异清单,方便财务核对。
陪诊小程序不是简单的本地生活撮合工具,它叠加了医疗场景的合规要求、时间预约的强约束、资金履约的风险管控。开发的核心思路,是用状态机管控订单、用Redis解决时段并发冲突、用隔离方案保护用户医疗隐私,再搭配异步化的消息和结算体系。 这套架构可以支撑中小城市陪诊业务的发展,后续还可以根据业务迭代,扩展医保代办、慢病随访、家属同步查看服务进度等增值能力。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。