[开源] 双通道药房对账协调器:面向医院药房与零售药店处方协同的CLI对账工具

发布时间:2026/6/3 1:26:58

[开源] 双通道药房对账协调器:面向医院药房与零售药店处方协同的CLI对账工具 本项目是专为解决「双通道」药品管理场景下医院药房与零售药店之间处方执行结果不一致问题而设计的轻量级对账协调工具。我们直面医保双通道政策落地中普遍存在的系统割裂、编码不一、时间不同步、责任难追溯等现实堵点不依赖中间数据库或定制化Web界面而是以命令行CLI为核心交付形态通过医院HIS药房API与药店ERP API双通道实时采集数据基于药品本位码映射表统一药品标识用时间窗口状态机对齐跨系统时间戳并自动检测处方量与实发量的数量差异、定位可疑断点如接单时间缺失、时间漂移、编码错配、生成含会签栏的可打印对账联单与结构化差异报告。全部逻辑由Go语言实现模块清晰适配器可插拔输出格式支持ledger单张联单与report批量汇总适用于药学部质控、双通道药店合规审计、医保飞行检查前自查等真实工作流。定位与能力范围我们不做通用数据集成平台也不替代医院或药店原有ERP/HIS系统。本项目的边界非常明确只处理「一张处方从医院开出、到药店发药」这一闭环中的数量一致性校验与归因。它不参与处方审核、不开具药品、不修改库存只读取、比对、标注、输出。所有判断依据均来自两个源头系统的原始字段医院端提供处方号、药品名称、处方量、开方时间药店端提供同一处方号下的实发量、接单时间、发药时间、ERP药品编码。当二者数量不等或关键时间字段缺失/越界系统即触发归因逻辑而非简单标红报错。这种克制的设计让工具能快速嵌入现有流程药学部人员可在办公室终端一键跑单条处方复核信息科可在夜间批处理全量处方生成日报监管人员可导出带会签栏的PDF联单作为存档凭证。核心功能机制本项目五大能力模块彼此解耦又通过事件总线紧密协同。我们坚持「每个模块只解决一类问题」双通道适配器分别对接医院HIS药房JSON API与药店ERP JSON API支持字段重命名、空值兜底、HTTP超时重试不强求两套系统字段名完全一致药品本位码映射层以国家药品本位码为锚点建立与各药店ERP编码的双向映射表内置模糊匹配拼音首字母规格关键词与人工标注降级机制应对编码录入不规范场景时间窗口状态机将「开方→接单→发药」建模为三阶段有限状态机定义合法时间窗口如接单必须在开方后2小时内自动识别时间漂移、逆序、缺失等可疑断点对账引擎核心判断逻辑封装在此不仅计算「处方量 - 实发量」更结合断点类型、药品属性如是否冷链、操作时段如夜班给出归因说明与处置建议输出生成器生成两类产物对账联单含处方号、药品名称、处方量、实发量、数量差、对账状态、可疑断点、归因说明、会签栏与差异报告汇总总处方数、通过数、差异数、四类差异分布。这五层不是堆叠而是流水线适配器取数 → 映射层对齐药品 → 状态机校准时间 → 引擎判定差异 → 输出器生成结果。使用与配置方式本项目无安装包无需部署服务开箱即用。只要本地有Go 1.20环境即可直接运行。我们提供两种典型使用路径单条处方即时核验适用于药师日常抽查、争议处方复盘、新药店上线验证。只需指定处方号启用Mock模式即可模拟全流程go run cmd/reconciler/main.go --prescription-idTEST001 --mock --formatledger输出为结构化文本含会签栏MustSigntrue时显示可直接复制进Word或转PDF归档。批量处方定时稽查适用于药学部每日晨会前生成前一日双通道处方执行摘要。输入为JSON数组文件每项含处方号与可选药店IDgo run cmd/reconciler/main.go --batch data/sample/batch_input.json --formatreport输出为Markdown格式汇总报告含总处方数、通过率、差异数、四类差异占比接单时间缺失、数量填报错误、药品编码错误、时间窗口外事件便于快速定位高频问题环节。所有参数均可通过--help查看完整说明无隐藏开关无配置文件强制依赖。真实环境使用时仅需替换--mock为实际API地址与认证参数详见项目文档。工程结构与模块职责目录结构严格遵循关注点分离原则每一层职责单一且可测试目录职责说明cmd/reconciler/CLI主入口解析参数、调度流程、输出结果零业务逻辑cmd/mock_server/内置Mock API服务器用于离线验收与教学演示不依赖外部服务internal/adapter/适配器实现层含医院药房与药店ERP两个独立适配器接口契约统一internal/mapper/映射表加载与查询逻辑支持CSV/JSON映射源内置缓存与热更新钩子internal/engine/时间窗口状态机定义与事件总线实现驱动跨系统时序校准internal/reconciler/对账核心算法含数量比对、断点识别、归因规则引擎非硬编码规则可配置化演进internal/output/联单模板渲染text/template与报告聚合逻辑输出格式与样式解耦data/sample/中存放脱敏样例数据覆盖正常、差异、时间异常三类典型场景可直接用于验证各分支逻辑。数据字段与输出解读理解输出字段含义是用好本工具的关键。我们不隐藏判断依据所有结论均可回溯到原始字段字段来源系统说明示例处方号医院HIS全局唯一双端必须一致TEST001药品名称医院HIS开方时填写的通用名规格利妥昔单抗注射液100mg/10ml处方量医院HIS医生开具数量单位由医院定义2实发量药店ERP药店实际扫码发出数量1数量差计算得出处方量 - 实发量0表示少发0表示多发1对账状态引擎判定通过差0且无断点或差异差≠0或存在断点差异可疑断点状态机输出如接单时间缺失、发药早于接单、开方后超2h未接单接单时间缺失归因说明规则引擎结合断点与业务常识生成建议如“建议核查药店接单环节是否漏操作”接单环节未记录疑似未完成系统接单会签栏输出器添加MustSigntrue时显示签字栏供药师手写确认药师签字__________批量报告中“四类差异分布”并非主观分类而是由状态机与引擎联合输出的结构化标签确保统计口径统一、可审计。限制与说明本项目明确不覆盖以下场景避免用户误用 - 不处理药品价格、医保结算、物流轨迹等非数量维度 - 不支持非JSON协议的老旧ERP系统需先由对方提供JSON封装层 - 映射表需人工维护初始版本模糊匹配仅为兜底不能替代准确映射 - 时间窗口规则如“接单须在开方后2小时内”为默认值可按地方医保细则在代码中调整暂不支持运行时配置文件注入 - Mock服务器仅用于演示真实环境需对接生产API并配置鉴权。这些限制不是能力短板而是设计选择我们优先保障核心对账逻辑的确定性、可追溯性与交付轻便性。复杂度被显式收口而非隐藏在黑盒配置中。项目地址https://github.com/nexorin9/dual-channel-inventory-reconciler

相关新闻