![[开源] 医保基金流向追踪图:面向医保办自查与汇报的可视化分析系统](http://pic.xiahunao.cn/yaotu/[开源] 医保基金流向追踪图:面向医保办自查与汇报的可视化分析系统)
本项目是一个专为医保基金管理设计的可视化分析工具将原始医保结算数据自动构建成有向资金流向图以科室、医生、药品、诊疗项目为节点以实际结算路径为边直观呈现资金在医疗服务体系内的真实流动轨迹。我们不做抽象指标堆砌而是把每一分医保基金的去向落到具体服务单元上异常节点如出度突增、资金断点、闭环流动、孤岛科室自动高亮并支持下钻核查最终交付一个开箱即用的 HTML 交互式大盘既可本地运行供医保办日常筛查也适合作为向分管领导汇报资金使用合规性的核心材料。系统提供 Python Node.js 双 CLI 入口覆盖模拟数据生成、图构建、异常检测、服务启动全流程技术栈明确分层Python 负责数据建模与规则计算Node.js/TypeScript 承载 D3.js 可视化与命令行交互所有能力均通过结构化输出JSON 报告 CSV 明细留痕可溯。定位与能力范围我们聚焦医保基金监管中最基础也最易被忽视的一环资金是否按真实服务链条流动。不是看总额超支而是看钱有没有“走对路”比如某药品大量结算却未关联到对应科室或医生或某科室收治量低但资金流入极高或多个节点形成无临床意义的资金小闭环。这类问题无法靠 Excel 汇总发现必须还原为图结构才能识别。因此本项目不替代 DRG/DIP 分组或智能审核系统而是补上“资金流拓扑校验”这一层它不判断单次结算是否合理但能指出“这一批结算在整体网络中是否自洽”。适用对象非常明确一线医保办工作人员需快速自查、医保科负责人需向上汇报逻辑链、以及参与医保飞行检查的数据支持人员需定位可疑节点。边界也很清晰输入是标准医保结算明细表含患者、科室、医生、药品、项目、金额等字段输出是可交互图谱结构化异常报告不接入医院HIS实时库不处理影像或文书类非结构化数据。核心功能模块系统能力由五个协同模块构成各司其职且职责分明模块职责说明关键实现数据模型层定义资金图基本单元FundNode带类型、名称、金额、度数的节点、FundGraph有向图容器、SettlementRecord原始结算记录映射所有节点类型科室/医生/药品/项目统一继承自FundNode保障图运算一致性资金流向建模引擎将结算记录转化为有向边例如“患者在内科就诊 → 使用阿司匹林 → 产生费用”生成“内科→阿司匹林”边并累加金额FundFlowBuilder按预设映射规则如结算记录中“科室”字段指向节点“药品名称”字段指向另一节点自动连线异常检测引擎基于图论指标识别四类典型异常outlier出入度偏离均值2.5倍以上、breakpoint某节点有入无出或有出无入、isolated完全无连接、circular_flow存在长度≥3的有向环检测阈值如2.5支持 CLI 参数动态调整结果写入anomaly_report_*.json供程序调用D3.js 可视化层渲染力导向图节点大小正比于关联金额边粗细反映资金量异常节点添加红色外框与闪烁动画支持拖拽、缩放、点击查看详情面板详情面板显示该节点全部出入边、金额汇总、关联结算记录ID列表不依赖后端接口纯前端渲染CLI 交互工具统一操作入口mitmMedical Insurance Trail Map 缩写命令行工具覆盖数据生成、分析执行、服务启动全链路同时提供 Python 端python src/main.py与 Node.js 端npx mitm两种调用方式适配不同运维习惯使用与配置流程从零开始跑通整套流程只需四步命令无需修改代码# 1. 安装 Python 依赖数据处理与检测 pip install -r requirements.txt # 2. 安装 Node.js 依赖可视化与 CLI npm install# 3. 生成符合真实分布的演示数据1000条 npm run generate# 4. 执行分析并启动本地服务 npm run analyze npm run serve打开浏览器访问http://localhost:8080即可见交互图谱。若需定制分析Python CLI 提供更细粒度控制# 按科室筛选分析仅处理“内科”相关结算 python src/main.py --data-path data/demo_data.csv --department 内科 --output-dir output/ # 调整异常检测敏感度阈值从默认2.5改为3.0 python src/main.py --data-path data/demo_data.csv --output-dir output/ --outlier-threshold 3.0所有输出文件均落于output/目录anomaly_report_*.json包含异常类型、节点名、触发原因anomaly_details_*.csv列出每条异常边的原始结算记录ID、金额、时间戳方便回溯原始单据。工程结构与技术选型我们坚持“Python 做事Node.js 呈现”的分工原则。Python 层专注数据可信性结算记录清洗、图结构构建、异常规则计算这些逻辑必须可复现、可审计、可嵌入现有医保数据平台Node.js 层专注体验D3.js 图形渲染、CLI 命令解析、静态资源服务保证前端交互流畅且不依赖 Python 运行时。这种分离让系统既能作为独立工具运行也易于解耦集成比如将FundFlowBuilder导出为 Python 包供其他医保分析系统调用或将anomaly_report.json直接推送到单位内网BI平台。项目目录严格按职责划分 -src/Python 核心逻辑含models/数据定义、graph_builder.py建图、anomaly_detector.py检测、main.pyCLI 入口 -templates/HTML 与 JavaScript 模板D3 渲染逻辑在此集中维护 -data/输入数据目录支持 CSV -output/所有分析结果输出位置JSON CSV -docs/项目文档含异常类型说明、字段映射规则数据与扩展性设计输入数据只需满足基础字段即可启动patient_id,department,doctor,drug_name,treatment_item,amount,settlement_date。我们不强制要求字段名完全匹配而是在graph_builder.py中预留映射配置例如将医院HIS导出的dept_name字段映射到department或把medication映射为drug_name。这种设计使系统能快速适配不同区域医保平台的导出格式。未来扩展方向明确-新增节点类型如增加“检验科室”“耗材品牌”节点只需在FundNode子类中定义新类型并在FundFlowBuilder中补充映射规则-增强异常规则如加入“同一患者7日内跨科室高频结算”规则可直接在AnomalyDetector中新增检测方法不影响可视化层-输出对接anomaly_details_*.csv的字段设计已预留original_system_id原始系统单据号列便于与医院结算系统做 ID 对接。限制与说明本系统有明确的能力边界我们不掩盖也不夸大-不替代专业审核检测出的breakpoint断点节点需人工判断是数据缺失还是真实违规系统只负责标记“此处逻辑断裂”-不处理时间序列深度分析不预测未来流向不建模月度趋势所有分析基于单批次结算数据快照-图布局为示意性D3 力导向图的物理位置无业务含义仅用于视觉分组判断依据始终是节点度数、金额、连接关系等结构化指标-模拟数据生成逻辑公开npm run generate产生的数据遵循真实医保分布规律如门诊药品占比、科室结算集中度但数值为模拟不可用于正式审计。异常类型判定规则已在项目文档中逐条说明例如circular_flow资金闭环定义为存在至少3个节点 A→B→C→A 的有向路径且每条边金额均大于阈值这排除了因数据噪声导致的两节点互指误报。项目地址https://github.com/nexorin9/medical-insurance-trail-map