[开源] 出院费用清单医保编码大白话翻译器:面向患者与家属的医疗费用可读化工具
本项目是一个专为出院患者及家属设计的费用清单翻译工具将医院结算单中晦涩的医保编码如“0012345678901234”、专业术语如“经皮冠状动脉介入治疗术”和模糊分类如“其他诊疗费”实时映射为自然中文说明如“心脏支架植入手术含导管、球囊和支架耗材”并按药品、检查、手术、床位等临床类别自动归类统计。它不依赖医院HIS系统对接不上传患者数据全部本地运行支持JSON/Excel/CSV多格式输入输出Markdown适合打印存档、二维码文本扫码即看、JSON供其他程序调用三种形态核心能力由SQLite本地数据库驱动辅以模糊匹配与LRU缓存保障查得率与响应速度可选接入LLM生成口语化费用摘要亦支持纯本地降级处理。我们用TypeScript编写CLI为主入口Docker为容器化部署路径Web单页为轻量查看补充所有逻辑闭环在用户设备端完成。定位与能力范围我们不做费用合规审计也不替代医保局结算规则解释。我们只解决一个具体问题当患者拿到一张密密麻麻印着编码、缩写和数字的出院清单时第一眼能看懂“这笔钱到底花在哪了”。因此能力边界非常明确- 输入必须是结构化费用明细每条记录含编码、名称、金额、数量、单位、类别字段不接受扫描图片或PDF- 翻译依据是本地SQLite数据库中的医保编码映射表不联网查询国家库避免隐私泄露与网络依赖- 所有处理加载、匹配、统计、格式化均在本地完成无后端服务、无用户账户、无数据出域- LLM摘要为可选增强模块启用时仅向用户配置的API端点发送脱敏后的费用分布数据不含患者身份、病历号、诊断信息且默认关闭- 二维码功能分两类--format qrtext输出UTF-8编码的纯文本二维码适配主流扫码App--qr-output生成PNG图片供张贴或嵌入报告。这个边界决定了它不是给医保科做目录管理的系统而是给患者带回家、给老人念一遍、给家属转发到家庭群的“费用说明书”。核心功能功能说明实际价值医保编码大白话翻译基于本地SQLite数据库将医保编码映射为患者能理解的中文描述例如将“XZ001234”转为“静脉留置针一次性使用含敷贴与肝素帽”消除术语黑箱让患者清楚知道“为什么收这笔钱”减少医患沟通成本多格式输入兼容支持JSON标准数组结构、Excel.xlsx/.xls、CSV三类常见导出格式自动识别字段名code/name/amount/category等无需医院IT配合改造导出模板护士导出Excel、信息科发JSON、财务给CSV都能直接用费用自动归类统计按临床习惯划分药品、检查、检验、手术、护理、床位、材料、其他八大类汇总各分类金额及占比一眼看出“药费占多少”“检查花了多少”辅助家庭财务复盘与后续报销准备模糊匹配引擎当编码存在空格、换行、前导零缺失或OCR识别误差时调用字符串相似度算法Jaro-Winkler尝试匹配近似编码解决手工录入错误、旧系统导出格式不规范等现实问题提升首用匹配成功率多通道输出Markdown保留表格与层级适配微信/邮件/打印、qrtext生成可扫码的纯文本链接、JSON结构化供二次开发满足不同场景纸质存档用Markdown家庭群分享用二维码医院内部系统集成用JSON使用与配置安装后无需服务器或数据库运维。最简启动只需一条命令node dist/index.js data/sample_discharge.json默认输出Markdown到终端复制粘贴即可阅读。若需保存为文件node dist/index.js data/sample_discharge.json --output fee_report.md关键参数按使用频次排序---db path指定自定义医保映射库如./my_hospital_codes.db默认读取data/insurance_codes.db---format type切换输出形态markdown默认、qrtext生成扫码文本、json机器可读---llm-enable启用LLM摘要需先配置.env文件填入API密钥与端点---verbose显示每条编码的匹配过程命中/未命中/模糊匹配相似度用于调试映射库覆盖度---locale zh-CN/zh-HK/zh-TW适配不同地区中文术语习惯如“B超”vs“超声波检查”。LLM摘要配置流程极简1. 复制.env.example为.env2. 填写LLM_API_KEY与LLM_ENDPOINT支持OpenAI兼容接口如Ollama、AnythingLLM本地部署3. 运行时加--llm-enable程序将把费用类别分布、最高单项、异常值提示等生成一段口语化总结例如“本次住院总费用¥3,280其中药品占62%¥2,034主要为抗生素与止痛药检查类占21%¥689含两次CT与一次核磁手术类仅占3%¥98为常规清创缝合。”交互模式无参数运行node dist/index.js提供菜单式引导适合首次使用者逐步确认输入路径、输出格式与选项。数据与扩展映射库是本项目的核心资产也是唯一需要定期更新的部分。项目自带sample_codes.db但实际使用前建议导入最新医保目录npm run import-codes该脚本会扫描data/目录下所有Excel/CSV文件按列名code, name_zh, description_zh, category自动入库。你也可以- 直接用DB Browser for SQLite等工具编辑insurance_codes.db- 将医院信息科提供的Excel医保目录放入data/后重跑导入- 在scripts/export_codes.ts基础上定制导出逻辑同步院内专科编码扩展。输入数据格式要求明确JSON必须为对象数组每个对象至少包含code医保编码、name原名称、amount金额三个字段Excel/CSV需含同名列大小写不敏感。输出Markdown示例中表格列顺序固定医保编码、原名称、大白话、类别、金额确保可读性优先。环境与运行运行环境精简可控-最低要求Node.js 18推荐20.x无Python或Java依赖-数据库SQLitevia better-sqlite3单文件、零配置、跨平台-Excel处理xlsx库支持.xlsx与.xls不依赖Office软件-二维码qrcode库纯JS实现不调用外部服务-日志pino结构化日志--verbose时输出匹配详情静默时仅报错。Docker支持开箱即用docker-compose up translator默认处理内置样本挂载自定义数据只需修改docker-compose.yml中volume配置volumes: - ./your_codes.db:/app/data/insurance_codes.db:ro - ./output:/app/outputWeb单页模式docker-compose --profile web up web提供浏览器内拖拽上传、即时预览、一键下载Markdown功能适合非技术人员临时使用。限制与说明本项目明确不覆盖以下场景- 不解析诊断编码ICD-10、疾病分组DRG/DIP或病案首页- 不校验费用合理性如“同一药品重复收费”“检查项目超适应症”- 不生成报销凭证或盖章PDF- 不支持DICOM、HL7等医疗专有协议- LLM摘要不生成诊断结论、不替代医生解释仅对费用结构作中性描述。常见问题处理原则统一- “未匹配到医保编码”优先检查编码是否带空格或不可见字符--verbose可见原始值其次确认映射库是否已更新- “二维码乱码”务必使用--format qrtext而非--qr-output后者生成图片需扫码App支持中文渲染- “大文件慢”1000条以内通常30秒因内置500条LRU缓存如需提速可增大缓存容量或预热常用编码- “多语言支持”--locale仅影响LLM摘要与部分预设文案医保编码映射内容仍由数据库字段description_zh决定需自行维护多语种描述。所有设计决策围绕一个原则让患者和家属在离开医院后第一次打开费用单时不再需要打电话问护士“这行写的‘XZ001234’到底是什么”项目地址https://github.com/nexorin9/discharge-cost-translator