医数智联·第 10 期:MySQL + DRG 入组异常筛查 —— 让医保结算少扣钱的「关键防线」
一、场景引入:为什么「DRG 入组异常」是医保结算的「隐形失血」?
[!example] 一个真实的月底
月底,医保局结算清单发回来,某三甲医院发现:「本月 DRG 拒付 47 例,扣款金额 ¥186,000。」
信息科调出 47 例明细,发现:
- 12 例「低码高套」 —— 实际是简单手术,病历写成复杂手术,被医保局识别;
- 18 例「歧义病例」 —— 主诊选择有争议,可以入「高权重组」也可以入「低权重组」;
- 9 例「误入组」 —— 应该是内科组,误入了外科组;
- 8 例「主诊错误」 —— 主诊 ICD 选择错误,导致整组偏移。
一个月损失 18.6 万,一年就是 220 万。
这是绝大多数医院都在面临的「隐形失血」:
| 异常类型 | 原因 | 损失量级 |
|---|---|---|
| 低码高套 | 主诊/手术编码虚高 | 单例 ¥500-5000 |
| 歧义病例 | 主诊选择可左可右 | 单例 ¥200-2000 |
| 误入组 | 编码错误导致入错 DRG 组 | 单例 ¥1000-10000 |
| 主诊错误 | 主诊未选主要诊断 | 单例 ¥300-3000 |
| 入组编码缺失 | 关键诊断/手术未填 | 单例 ¥500-5000 |
[!quote] 狼叔的判断
“DRG 入组异常不是’编码员的事’,是’全院的事’。” 这一期,教你用 SQL 在「医保结算前」就发现这些异常,把损失堵在源头。
二、工具原理:DRG 入组异常的核心机制
2.1 DRG 是什么?
[!info] DRG/CHS-DRG 简介
DRG(Diagnosis Related Groups,疾病诊断相关分组) 是按「疾病诊断 + 治疗方式」把病案分入不同组的医保支付方式。中国用的是 CHS-DRG(China Healthcare Security DRG),分组逻辑大致是:
- 先按 主要诊断(MDC) 分为 26 大类(内科、外科等);
- 再按 主要操作 细分(手术 / 操作 / 非手术);
- 最后按 并发症/合并症(CC/MCC)、年龄、合并症等微调;
- 最终每例病案落入一个 ADRG 组,组内有不同权重(权重 × 费率 = 支付金额)。
2.2 入组异常的 5 大类型
[!TIP] 5 大异常类型
① 低码高套(Upcoding)
- 表现:编码「虚高」,把简单病案编入复杂 DRG 组,获得更高支付
- 医保惩罚:拒付 + 罚款(最高 5 倍)
② 歧义病例(Ambiguous Cases)
- 表现:主诊选择不明确,可以入高权重组也可以入低权重组
- 关键:编码员习惯 + 临床医生主诊书写规范
③ 误入组(Mis-grouping)
- 表现:应该是 A 组,实际入了 B 组(编码错误)
- 关键:主诊 ICD 与手术 ICD 不匹配
④ 主诊错误(Principal Diagnosis Error)
- 表现:主诊未选「消耗医疗资源最多的疾病」
- 关键:DRG 分组只看主诊,副诊不影响权重
⑤ 入组编码缺失(Missing Codes)
- 表现:关键诊断/手术未填,导致入到「不分组」或低权重组
- 关键:确保所有重要诊断和手术都已编码
2.3 用 SQL 筛查的核心思路
[!example] 核心思路:对比「实际入组」vs「理论入组」
大部分入组异常 = 「实际入组」和「理论入组」不一致。
- 实际入组:HIS 系统根据病案首页自动入组的结果
- 理论入组:根据主要诊断 + 主要操作,理论上应该入的组
我们要用 SQL 把「不一致」的找出来。
三、医院实战:5 类异常筛查 SQL
3.1 异常 ①:低码高套筛查
[!example] 实战 ①:低码高套
核心逻辑:同科室、同主诊,但「实际入组权重」远高于「上 3 个月同主诊的中位权重」,疑似高套。
1 | WITH 病案权重 AS ( |
[!warning] 「1.5 倍」是经验阈值
实际阈值可以根据医院历史数据调,建议先用 1.5 跑一遍,看命中数量,再调。
3.2 异常 ②:歧义病例筛查
[!example] 实战 ②:歧义病例
核心逻辑:同一病案号有多个主诊 ICD(诊断表里「诊断类型 = ‘主诊’」有 2 条以上),或者主诊与重要副诊的关联度低。
1 | -- 主诊 ICD 多选(诊断表里主诊类型超过 1 条) |
[!TIP] 进一步筛查:主诊与重要操作不匹配
病案主诊是「肺部感染」(内科病),但主要操作是「胸腔镜手术」(外科操作),这种「内科主诊 + 外科操作」通常是歧义病例。
1 | SELECT |
3.3 异常 ③:误入组筛查(主诊 vs 操作不匹配)
[!example] 实战 ③:误入组
核心逻辑:根据主诊 + 主要操作,理论应该入的 MDC 组 ≠ 实际入组 MDC 组。
1 | -- 用 CASE WHEN 推算「理论 MDC 组」 |
[!TIP] 把这段保存为「DRG 校验视图」
每次结算前先跑一次,所有「⚠️ 疑似误入组」的病案让编码员复核。
3.4 异常 ④:主诊选择错误筛查
[!example] 实战 ④:主诊错误
核心逻辑:副诊里有「消耗医疗资源更多」的疾病,但主诊选了消耗更少的。
1 | -- 找出「副诊有重症(MCC),但主诊选了轻症」的病案 |
3.5 异常 ⑤:入组编码缺失筛查
[!example] 实战 ⑤:编码缺失
核心逻辑:病案实际做了手术,但手术表里没有对应 ICD 编码。
1 | SELECT |
四、避坑指南:5 个让 DRG 筛查「失真」的常见错误
[!warning] 雷区 ①:用「HIS 入组结果」当作「真实入组结果」
症状:HIS 系统的入组算法和医保局不同,医院内自检正常,医保局拒付。
解决:用医保局下发的入组规则(或第三方 DRG 分组器)做基准。
[!warning] 雷区 ②:权重阈值拍脑袋
症状:1.5 倍阈值定的太高,漏掉真实高套;太低,误报一堆。
解决:先用 1.0、1.2、1.5、2.0 跑几遍,看命中率,再选平衡值。
[!warning] 雷区 ③:不区分医院等级
症状:三甲医院和二甲医院用同一套阈值,不适用。
解决:分医院等级(三级/二级)、分专科维护阈值。
[!warning] 雷区 ④:只看错误数,不看错误率
症状:骨科错误数 28 条,看着多,但骨科总病案 1000 条;而消化科 12 条,总病案 100 条,实际消化科错误率更高。
解决:用错误率排序(参见第 09 期)。
[!warning] 雷区 ⑤:跑完 SQL 不复核,直接修改病案
症状:发现疑似异常,直接改病案主诊,触犯「病案涂改」红线。
解决:SQL 只做筛查,修改病案必须有医生/编码员书面复核。
五、把 SQL 沉淀为「定期任务」
[!TIP] 实战:配置月度自动筛查
Step 1:把上面的 SQL 保存为
drg_异常筛查.sqlStep 2:用 Navicat 创建「查询计划」,每月 28 日自动跑
Step 3:把结果导出 Excel,自动发送给编码员 + 质管办
Step 4:编码员在 Excel 里标注意见,质管办汇总成报告
六、下期预告
[!quote] 第 11 期
PostgreSQL 入门 —— 为什么医学界更推荐它MySQL 之外,这一期介绍医学界更推崇的 PostgreSQL,以及它在病案存储、医学术语、地理信息检索方面的独特优势。
[!TIP] 互动
如果你觉得这篇「医数智联·第 10 期」对你有用,请点赞、在看、转发给科里的同事。
我是白衣狼,一个用数字化工具把医院管理做「轻」的实战派。咱们下期见。





