在《中华人民共和国传染病防治法》与《传染病信息报告管理规范》持续强化执行背景下,基层医疗机构面临日益严格的法定传染病上报时效性与完整性要求。漏报、迟报、错报不仅影响公共卫生响应效率,更可能引发监管问责。但临床一线医务人员常需在繁重诊疗任务中兼顾复杂诊断标准判断,ICD-10 编码匹配、检验结果阈值判定、症状组合逻辑、病种互斥关系、上报优先级排序……这些规则高度结构化却难以人工实时闭环核验。
「传染病网报规则逆向校验引擎」正是为此而生:它不替代医生判断,而是将国家层面发布的传染病诊断标准转化为可加载、可执行、可热更新的规则模型,输入患者结构化数据后,输出明确的「应报/疑报/不报」建议及未满足条件清单,成为医务科质控与院感防控环节中可嵌入工作流的技术支点。
以下内容严格依据项目 README 还原整理,涵盖其定位、能力边界、技术构成、使用路径与配置要点,供开发者快速评估集成可行性。
核心能力与工作机制
本引擎聚焦解决“从临床数据到网报决策的规则映射断层”,其能力设计完全围绕医疗合规场景展开:
多条件联合判定同时支持 ICD-10 编码(含通配符如
A00.*)、检验结果(数值型用>,<;文本型用==,!=)、临床症状(按编码与名称双维度匹配)三类条件的逻辑组合,支持AND(全满足)与OR(任一满足)两种判定模式。病种互斥与冲突消解当患者数据同时触发多个传染病规则时,引擎自动识别
exclusion_rules中定义的互斥关系,并依据priority字段进行降级处理:低优先级病种结果由「应报」降为「疑报」,避免重复上报。全链路输出支持输出形态覆盖不同使用角色需求:
CLI 彩色终端输出,适合批量脚本调用与日志追踪 HTML 可视化报告,含高亮未匹配项与置信度评分 CSV/Excel 导出,便于 Excel 表格复核与归档 Web 看板实时统计,支持科室下钻与病例详情穿透
规则热更新机制修改 YAML 规则文件后,可通过
POST /api/rules/reload接口动态重载,无需重启服务,满足疾控中心规则频繁调整的运维节奏。LLM 辅助生成(可选)在配置
OPENAI_API_KEY后,可为「疑报」或「应报」案例自动生成整改建议草稿与网报材料初稿,降低文书负担。
所有判定逻辑均基于 YAML 规则文件驱动,无硬编码业务逻辑,规则即配置,规则即文档。
技术架构与模块职责
系统采用分层清晰的混合技术栈设计,Python 承担核心规则执行,Node.js 提供 Web 服务能力,前端轻量静态化部署:
graph TB subgraph 数据层 A[患者数据 JSON] --> D[数据适配层] R[规则 YAML] --> L[规则加载器] end subgraph 核心引擎 D --> E[规则执行引擎] L --> E E --> C[冲突解决器] C --> V[ValidationResult] end subgraph 报告层 V --> CLI[CLI彩色报告] V --> HTML[HTML可视化报告] V --> CSV[CSV导出] V --> EXCEL[Excel导出] end subgraph Web服务 E --> API[Web API] API --> WEB[Web可视化看板] API --> WS[WebSocket实时告警] end subgraph LLM辅助 V --> LLM[LLM整改建议] V --> LLM2[LLM网报材料] end各组件技术选型与职责如下表所示:
目录结构体现清晰关注点分离:
infectious-disease-reporting-validator/├── src/ # Python 主体逻辑│ ├── data_adapter/ # 数据适配层│ ├── rule_engine/ # 规则引擎核心│ ├── report_generator/ # 报告生成器│ ├── utils/ # 日志、配置等通用工具│ └── main.py # CLI 入口├── web/ # Node.js Web 服务│ ├── public/ # 前端静态文件│ └── routes/ # API 路由实现├── data/ # 示例数据与规则│ ├── rules/ # YAML 规则定义│ └── sample_*.json # 样本患者数据├── tests/ # 单元测试├── rules/ # 默认规则表(备用)└── requirements.txt # Python 依赖安装与运行方式
项目同时支持 Python CLI 与 Node.js Web 服务双模式,安装步骤明确分离:
# 安装 Python 依赖pip install -r requirements.txt# 安装 Node.js 依赖并编译 TypeScriptnpm installnpm run buildCLI 模式(推荐快速验证)
# 单次验证(终端彩色输出)python -m src.main --input data/sample_patients.json --rules data/sample_rules.yaml# 生成 HTML 报告python -m src.main --input data/sample_patients.json --rules data/sample_rules.yaml --output output/ --format html# 生成汇总统计python -m src.main --input data/sample_patients.json --rules data/sample_rules.yaml --format summaryTypeScript CLI(开发调试友好)
# 验证单个患者数据npx ts-node src/cli/index.ts validate --input data/sample_patients.json --rules data/sample_rules.yaml# 启动本地 Web 服务npx ts-node src/cli/index.ts serve --port 3000Web 服务(生产部署首选)
# 启动服务(监听 3000 端口)npm start# 浏览器访问可视化看板# http://localhost:3000规则编写与配置要点
规则以 YAML 格式定义,位于 data/rules/ 目录下,其字段设计直指传染病上报关键要素:
diseases: - id: cholera name: 霍乱 icd10_codes: - "A00.101" - "A00.201" - "A00.901" lab_conditions: - test_name: "霍乱弧菌培养" operator: "==" result_value: "阳性" required: true - test_name: "霍乱弧菌快速检测" operator: "==" result_value: "阳性" required: false symptoms: - code: "S001" name: "水样腹泻" required: true - code: "S002" name: "呕吐" required: false reportable: true priority: 10 time_limit_hours: 2 exclusion_rules: [] condition_logic: "AND"关键字段说明如下:
id病种唯一标识(小写英文),用于互斥与 API 关联 icd10_codes支持精确匹配与通配符(如 A00.*)lab_conditionsrequired: true表示该检验为强制阳性项;operator支持==,!=,>,>=,<,<=symptomsrequired: true表示该症状为必备项priority数字越大优先级越高,冲突时决定保留/降级策略 exclusion_rules填写互斥病种 id列表,如["hiv"]condition_logic控制 required条件间的布尔关系
配置通过 .env 文件或环境变量生效:
API 接口与数据契约
Web 服务提供标准 RESTful 接口,基础路径为 http://localhost:3000/api,无认证,响应均为 JSON:
验证单个患者(核心接口)
POST /api/validateContent-Type: application/json请求体需符合严格 Schema,包含 patient_id, diagnoses, lab_results, symptoms 等字段。响应返回判定结果、置信度、未匹配条件与原因说明。
查询与统计接口
GET /api/results?page=1&limit=20&department=感染科&decision=应报分页查询结果 GET /api/statistics全院维度统计摘要(应报/疑报/不报总数、科室分布、病种分布) GET /api/diseases获取当前加载的全部病种列表 GET /api/alerts/high-priority获取高优先级「应报」告警 POST /api/rules/reload热重载规则文件
错误响应统一格式:
{ "error": "VALIDATION_ERROR", "message": "患者数据格式不正确", "details": ["birth_date 字段格式错误,应为 YYYY-MM-DD"]}错误码包括 VALIDATION_ERROR、RULE_LOAD_ERROR、INTERNAL_ERROR。
使用边界与免责说明
本工具定位明确:辅助参考,非临床决策替代品。
判定结果仅反映规则引擎对输入数据的逻辑匹配程度,不构成医学诊断结论 「应报」表示满足当前规则集全部必要条件,但最终是否上报须由具备资质的医务人员结合临床实际判断 所有 LLM 生成内容仅为初稿参考,严禁未经审核直接提交至传染病信息报告系统 项目不承诺覆盖全部地方性补充规则或最新修订版国标,使用者需自行维护规则文件同步
项目地址:https://github.com/nexorin9/infectious-disease-reporting-validator国内仓库:https://gitee.com/nexorin9/infectious-disease-reporting-validator欢迎交流使用问题与规则共建。
夜雨聆风