news 2026/5/25 0:13:26

[开源] 医保飞检规则边界测试用例生成器:面向医保办与信息科的主动合规演练工具

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[开源] 医保飞检规则边界测试用例生成器:面向医保办与信息科的主动合规演练工具

本项目是一个专为医保管理场景设计的规则反向测试系统,它用约束求解(CP-SAT)技术,从医保飞检规则文本出发,自动推导出「最容易触发误判」的边界测试用例,不是靠人工拍脑袋列极端值,而是让数学模型穷举规则在临界点上的所有合法/违规组合。面向医保办公室、医院信息科和质控部门,核心能力包括:规则配置化加载(YAML/JSON)、业务语义到约束模型的自动映射、满足/违反双路径用例生成、HTML可视化演练报告、CSV结构化导出,以及可复用的边界案例数据库。交付形态以命令行(CLI)为主,支持本地快速验证;技术栈基于 Python 3.10+、Google OR-Tools CP-SAT 求解器、pandas、openpyxl 和 Jinja2,不依赖 Web 服务或云部署。

定位与能力范围

我们不做通用测试平台,也不覆盖全量医保结算逻辑。本项目的边界非常明确:只处理「飞检中高频被调取、且存在执行歧义」的五类典型规则,药品适应症限制、检验项目互斥、超限用药、挂床检测、分解住院。这些规则共同特点是:判断依据清晰(如“住院时长<24小时”),但临床执行中常因时间粒度、科室协作、数据录入延迟等产生模糊地带。系统不替代人工审核,而是把“这条规则到底怎么才算踩线”这件事,交由数学模型给出确定性答案。生成的每个用例都带明确标签:合规边界违规临界组合扰动,便于医保办组织内部沙盘推演,提前暴露规则漏洞、字段缺失或系统计费盲区。

核心功能

所有功能围绕「规则→模型→用例→报告」闭环展开,不设冗余入口:

  • 规则配置管理

    :接受 YAML 或 JSON 格式规则定义,字段与医保飞检常见表述对齐(如diagnosis_codedrug_codeadmit_timedischarge_time),支持嵌套条件与多级逻辑运算

  • CP-SAT 约束建模

    :将每条规则自动翻译为 Google OR-Tools 的 CP-SAT 模型,保留原始语义(例如“同一患者不得同时开具 A 与 B 检验”被建模为布尔变量互斥约束)

  • 边界用例生成

    :对每条规则,同时求解出满足条件的最小合规样本、违反条件的最大容忍样本、以及跨时段/跨科室的扰动组合样本

  • HTML 演练报告

    :按规则分组呈现用例,每条含字段值、判定结果、触发逻辑链(如“因 admit_time=2024-03-01 08:00,discharge_time=2024-03-02 07:59,差1分钟达24小时,判定为挂床”)

  • CSV 导出

    :输出标准结构化表格,含rule_idcase_typefield_values_jsondecision四列,可直接导入医院 HIS 或质控系统做批量回放

  • 边界案例数据库

    :SQLite 存储历史生成用例,支持按规则 ID、生成时间、用例类型检索复用

以下为五类预设规则及其对应生成策略的对照说明:

规则类型

判定逻辑关键词

系统生成重点

典型边界示例

药品适应症限制

“诊断编码不匹配”

构造诊断码与药品码的最小差异组合(如仅末位不同)

诊断 ICD-10:J18.9(肺炎,未特指),药品:阿奇霉素(适应症 J01-F01)→ 合规;若诊断为 R51(头痛),同药→ 违规

检验项目互斥

“不得同时开具”

枚举所有互斥对的时间重叠窗口(精确到分钟)

血清肌酐(采样时间 09:00)与尿微量白蛋白(采样时间 09:05)→ 重叠5分钟→ 违规

超限用药

“单日剂量>X mg”

在剂量上限±0.1%范围内生成连续浮点值用例

头孢曲松单日限 4g → 生成 3.996g(合规)、4.004g(违规)

挂床检测

“住院时长<24小时”

按分钟级枚举入院/出院时间差,覆盖跨日、跨班次场景

入院 2024-03-01 23:59,出院 2024-03-02 00:00 → 时长1分钟→ 违规

分解住院

“同一疾病短期内再入院”

绑定主诊断编码 + 时间窗(如7天),生成首末次入院时间差恰好卡窗边界的用例

首次入院 2024-03-01,二次入院 2024-03-07 → 差6天→ 违规;若为2024-03-08 → 差7天→ 合规

使用与配置

整个流程无需写代码,全部通过 CLI 完成。你只需准备规则文件、执行三条命令、获得报告:

安装依赖

确保 Python 3.10+ 已安装,然后执行:

pip install -r requirements.txt

加载规则

规则文件放在data/目录下(如sample_rules.yaml),格式严格遵循项目文档定义的 schema。加载命令会校验语法与字段完整性:

python -m src.cli.main load-rules --config data/sample_rules.yaml

生成测试用例

指定某条规则 ID(如rule_001),系统自动构建 CP-SAT 模型并求解,输出 JSON 格式用例集到指定目录:

python -m src.cli.main generate --rule-id rule_001 --output-dir data/output

导出报告

支持 HTML 与 CSV 双格式导出,命令中指定格式与输出路径即可:

python -m src.cli.main export --format html --output-dir data/output python -m src.cli.main export --format csv --output-dir data/output

生成的 HTML 报告可直接在浏览器打开,含折叠式规则详情、用例表格、判定逻辑高亮;CSV 文件可被 Excel 或 BI 工具读取,用于后续分析或对接院内系统。

工程结构

项目采用清晰分层架构,模块职责无重叠:

模块目录

主要职责

关键实现说明

src/rules/

规则数据模型与加载器

定义 RuleSchema 类,支持 YAML/JSON 解析、字段校验、逻辑表达式预编译

src/solver/

CP-SAT 约束建模与求解

将规则条件转为 CP-SAT 变量与约束,调用 OR-Tools 求解器生成多组解

src/reports/

HTML/CSV 报告生成

Jinja2 渲染 HTML 模板,pandas 构造 CSV DataFrame,保留原始字段语义

src/database/

边界案例持久化

SQLite 数据库存储用例元数据(ID、规则ID、生成时间、类型),支持按需查询

src/cli/

命令行接口

Click 框架封装,提供load-rulesgenerateexport三级命令

data/目录存放示例规则与结算数据,开箱即用;templates/提供可定制的 HTML 报告模板;docs/放置完整使用说明与规则 schema 定义。

环境与运行

本工具对运行环境要求极简:仅需 Python 3.10+ 与基础科学计算库。CP-SAT 求解器由 Google OR-Tools 提供,已通过requirements.txt统一管理。所有操作均在本地完成,不上传任何数据至外部服务器,符合医保数据不出域的安全要求。实测在普通办公笔记本(16GB 内存,i5-1135G7)上,单条规则生成百级用例平均耗时 1.2 秒,复杂多条件规则(如含 3 层嵌套逻辑)最长不超过 8 秒。

依赖版本要求如下表所示,均已在requirements.txt中锁定:

依赖库

版本要求

用途说明

ortools

>=9.8.0

提供 CP-SAT 求解器核心能力

pandas

>=2.0.0

结构化数据处理与 CSV 导出

openpyxl

>=3.1.0

支持 Excel 格式扩展(如未来增加 XLSX 导出)

pyyaml

>=6.0.0

规则配置文件解析

jinja2

>=3.1.0

HTML 报告模板渲染

数据与扩展

规则定义是系统输入的核心。项目文档中已明确定义了规则 YAML 的字段规范:必须包含rule_iddescriptioncondition(支持and/or/not嵌套)、fields(声明涉及的业务字段名)及examples(可选)。新增规则只需按此格式编写 YAML 文件,无需修改代码。我们预留了condition字段的扩展能力,当前支持数值比较、字符串匹配、时间差计算、集合互斥四类原子操作,后续可通过扩展解析器支持正则、区间合并等更复杂逻辑。

已有五类规则并非封闭列表。医院可根据本地飞检重点,在data/下新增 YAML 文件,只要字段名与 HIS 或结算系统实际字段一致,即可立即参与用例生成。例如某地市新增“中医辨证分型与中药饮片匹配”规则,只需定义tcm_syndrome_codeherb_code的映射关系,系统即可生成对应边界用例。

限制与说明

本工具不解决以下问题:
- 不校验原始结算数据质量(如诊断编码是否真实有效)
- 不替代临床合理性判断(如“该药是否真不该用”,只回答“按规则是否算违规”)
- 不支持实时流式用例生成(当前为离线批量模式)
- 不内置 HIS 或医保平台对接协议(导出 CSV 后需人工或脚本对接)

所有生成用例均基于规则文本的字面语义建模,若规则本身存在歧义(如“短期内”未定义天数),需先在 YAML 中明确为数值(如window_days: 7)。边界案例数据库默认启用,但 SQLite 文件可随时清空或迁移,不影响核心生成逻辑。

项目地址:
https://github.com/nexorin9/fly-inspect-case-generator

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/25 0:06:58

键盘定制指南:从硬件到软件,开启实用又有趣的键盘使用体验!

引言 我钟情于键盘,因其是高效的人机交互接口,且充满“趣味”。用力敲击大按键,无需思索;体验精确组合的键盘快捷键带来的掌控感,皆是乐事。看着屏幕内容随操作而变,特别是那些契合自身工作方式的反馈&…

作者头像 李华
网站建设 2026/5/25 0:02:19

【前端无障碍】屏幕阅读器兼容性:确保视障用户的良好体验

【前端无障碍】屏幕阅读器兼容性:确保视障用户的良好体验 前言 大家好,我是cannonmonster01!今天咱们来聊聊屏幕阅读器兼容性这个话题。想象一下,一个视障用户打开你的网站,通过屏幕阅读器来浏览内容。如果你的网站没有…

作者头像 李华
网站建设 2026/5/24 23:55:01

K210开发板固件烧录:使用kflash_gui图形化工具的完整指南

K210开发板固件烧录:使用kflash_gui图形化工具的完整指南 【免费下载链接】kflash_gui Cross platform GUI wrapper for kflash.py (download(/burn) tool for k210) 项目地址: https://gitcode.com/gh_mirrors/kf/kflash_gui 在K210开发板生态系统中&#x…

作者头像 李华
网站建设 2026/5/24 23:45:15

鸿蒙健身计划页面构建:一周训练表、营养目标、近期打卡与训练提示模块详解

鸿蒙健身计划页面构建:一周训练表、营养目标、近期打卡与训练提示模块详解 前言 在 HarmonyOS 6.0 应用开发中,健身类页面的周计划安排、营养管理和打卡记录是用户持续坚持训练的重要辅助模块。本文将以“健身计划”应用中的“一周训练表”日历模块、“营…

作者头像 李华
网站建设 2026/5/24 23:42:51

丈母娘只要第一眼看不上女婿,即使后面结婚了,大概率也会一直看不上,大家觉得对吗?——为什么有些丈母娘总是挑女婿的不是,没事就发货大吼?——

很多家庭里,确实存在这种现象,但“第一眼看不上=一辈子看不上”,并不是绝对规律。 丈母娘对女婿的第一印象往往很强,因为她看的不是单纯“喜不喜欢”,而是: 这个男人靠不靠谱 能不能让女儿过得稳定 性格是否成熟 家庭背景、经济能力、处事方式是否安心 对女儿有没有…

作者头像 李华