宠物连锁医院诊疗与会员健康档案落地

日期:2026-07-24

一、项目背景

我们服务的客户是某宠物连锁医院集团,旗下分布着数十家院区,早年的信息化建设以单院 HIS 为主,诊疗记录散落在不同厂商的系统里。接手项目时我们梳理出三个痛点:同一只宠物在不同院区就诊,医生看不到连续病史,重复检查多、客户体验差;疫苗、驱虫、体检的提醒完全靠前台人工电话,漏提醒直接导致客户流失;问诊预约、药品处方与库存各自为政,处方开得出却常常没货,医患两边都尴尬。

为扭转局面,我们采用的 XpShop 新普MALL 多终端一套配置能力承载会员健康档案门户,前台、小程序、院内部署共用同一份商品与会员配置;底层智能能力建立在自研的 AI 私有化部署底座上——模型服务化层用 vLLM 提供大模型推理,向量数据库层用 Milvus 存储宠物病史与知识切片,RAG 知识库层负责检索增强,微调工具链层用 LoRA 做兽医领域适配;所有模型调用统一经我们采用的 AI 网关接入,由路由层做模型选择、编排层做提醒任务编排、计量层做 token 配额管控,确保私有化环境里的成本可控、调用可观测。

二、落地场景

我们落地了四个场景。第一是电子病历与会员健康档案:把各院 HIS 的导出报文按宠物唯一标识归一,形成贯穿生命周期的主档案,包含既往病史、过敏史、疫苗与驱虫时间线。第二是疫苗与驱虫提醒:依据档案中的计划日期自动生成提醒任务,通过短信、企微与小程序推送,做到零人工干预。第三是问诊预约与排班:客户在小程序选择院区、医生与时段,后台结合排班表与已占用号源做冲突校验,避免超约。第四是药品库存与处方联动:医生开方时实时校验库存,缺货提示替代方案或转院调拨,处方审核通过后直接驱动药房出库。

这些场景背后,我们采用的 XpShop 新普MALL 多终端能力让院内外共用同一套会员与商品数据,AI 私有化底座负责把非结构化病历变成可检索的结构化档案,AI 网关则把提醒、抽取、问答等调用统一收敛到计量与限流之下,避免突发批量任务拖垮推理集群。

三、关键技术挑战与解决思路

挑战一:跨院电子病历归一。 不同 HIS 的字段命名、单位、诊断编码都不一致,直接做字段映射会丢失大量自由文本描述。我们的做法是先把历史病历 PDF 与自由文本送入模型服务化层的 vLLM 实例做结构化抽取,部署参数设为 tensor_parallel_size=2、gpu_memory_utilization=0.85、enable_prefix_caching=True,借助 continuous batching 把并发抽取吞吐提升到约三倍;抽取结果写入 Milvus 的 pet_record 集合,embedding 采用 bge-large-zh,索引类型 HNSW,M=16,efConstruction=256。随后用 RAG 知识库层检索相似病史做去重与合并,把同一宠物的多院记录收敛成一份主档案。这里踩过的坑是:最初用宠物姓名做归并主键,结果重名宠物被错误合并,改成「芯片 ID + 主人手机号」复合主键并写归并日志后才彻底解决。

挑战二:健康档案与提醒自动化。 提醒涉及疫苗、驱虫、体检等多类计划,同一宠物可能同时触发多条,难点在任务编排与幂等。我们基于 AI 网关的编排层 Orchestration 定义提醒 DAG,每条提醒任务落库时以「宠物ID + 计划类型 + 计划日期」生成幂等键写入 Redis,避免重复推送;触达失败的任务进入指数退避重试队列,重试三次仍失败则降级为人工工单。配置上把计量层 Metering 的日 token 配额按院区拆分,防止某院区突发批量任务挤占全局额度,这个隔离在促销季的集中驱虫提醒里救过我们一命。

挑战三:问诊预约与排班的冲突解决。 号源本质是分布式资源,我们放弃「先占后付」的乐观锁,改为在小程序下单链路里用 Redis 分布式锁锁定号源十秒,期间完成支付才真正占用;排班表以周为粒度缓存,医生临时停诊通过消息广播让缓存失效,预约服务读取最新排班再校验,把超约率压到极低。一个细节是锁超时设置:太短支付未完成就释放会导致超约,太长则占用他人号源,最终取十秒并配合支付结果回调提前释放,取得较好平衡。

挑战四:药品库存与处方联动的一致性。 处方审核与药房出库分属两个服务,早期用本地事务表,结果网络抖动时出现「处方已审、库存未扣」。后来改成以库存中心为权威源,处方审核通过后发领域事件,库存中心消费事件做预占与扣减,预占超时未支付自动回滚,既保证不超卖,也避免处方与实物的状态撕裂。配合算力调度监控层的 Prometheus + Grafana 面板,我们给预占回滚率设了告警阈值,一旦异常升高立刻排查。

四、效果数据

以下为脱敏示意数据,取约数,不构成审计结论。

指标改造前改造后说明
病历完整率约 62%提升至约 94%跨院归一后主档案覆盖度显著上升
复诊提醒触达率约 55%提升至约 91%自动化推送替代人工电话
客户留存率约 48%提升至约 73%提醒驱动复购与回访
预约准时率约 70%提升至约 95%号源锁与排班缓存降低超约

案例片段(已脱敏): 某院区一只柯基的档案原分散在 A、B 两院,系统经 vLLM 结构化抽取与 Milvus 去重后合并为主档案,自动在驱虫到期前 7 天推送提醒;该客户按提醒到店,避免了重复体检,当月留存标签由「流失预警」转为「活跃」。配置片段示意:yaml reminder:  cron: "0 9 * * *"  lead_days: 7  dedup_key: "{petId}:{planType}:{planDate}"  retry: 3

五、可复用经验总结

第一个经验:病历先归一再智能化。不要在数据还没打通时就急着上大模型问答,归一与去重是前提,否则 AI 只会把错误放大,复合主键加归并日志是这次最值的投入。第二个经验:提醒自动化是留存的最直接杠杆,把人工电话变成编排化的 DAG 任务,既省人力又提升触达,配额按院区隔离能防止单点突发拖垮全局。第三个经验:号源、库存这类强一致资源,务必以权威服务为准、用事件驱动做最终一致,别迷信本地事务,预占加回滚才是稳妥解法。第四个经验:私有化部署下要善用 AI 网关的计量与限流,把 token 配额按业务域拆分,运营侧用管控台看清调用与成本。以上经验在我们采用的 XpShop 新普MALL 与 AI 私有化底座上得到验证,可作为同类连锁诊疗机构的参考范式。