关于 fraud-detection
fraud-detection 是面向支付方 SIU 的理赔筛查与调查技能,依据公共规则集生成排序并附有引用的调查线索。确定性检测负责计算和金额依据,模型负责审查及撰写说明,所有指控均须通过可复算的引用门控。
主要功能
- 01按 Medicare 或 Medicaid 理赔筛查
- 02对照 NCCI MUE、OIG LEIE、CMS 和 PFS 规则
- 03分阶段执行检测、裁定与综合分析
- 04复算引用金额并剔除无法验证的发现
- 05生成调查包、仪表板和 XLSX 文件
适用场景
- 01筛查理赔数据中的可疑模式
- 02为 SIU 调查整理带来源的线索
- 03复核并浏览按风险排序的转介结果
MCP 相关
确定性检测流程使用本地缓存数据,不依赖 MCP。医疗插件中的 CMS Coverage、ICD-10 和 NPI Registry MCP 服务仅用于交互式裁定或综合分析。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ anthropics/ healthcare --skill fraud-detection安装后在 Claude Code 中输入/fraud-detection确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.gitignoreARCHITECTURE.htmlclaims-schema.sqlLOAD-CLAIMS.mdpackage.jsonPROPOSE-DETECTORS.mdREADME.mdREFERENCE-DATA.mdscripts/apply-stages.jsCLAUDE.mdcohort-slice.jsd01-impossible-day.jsd02-unbundling.jsd03-phantom-billing.jsd04-medical-necessity.jsd07-outlier.jsd09-ineligible-orderer.jsd10-revoked-provider.jsd11-non-payable-code.jsd12-duplicate-claim.jsd13-global-period.jsd14-opt-out.jsd15-dme-outlier.jsd16-prescribing-outlier.jsd17-market-saturation.jsd18-ownership-ring.jsd19-nemt-unanchored.jsd20-hcbs-overlap.jsd21-third-party-liability.jsd22-telehealth-implausible.js详细介绍
欺诈检测——理赔筛查 → 有引文支持的调查
将 Medicare/Medicaid 理赔数据集与公开规则手册(NCCI MUE、OIG LEIE、CMS 注册信息、PFS)进行比对,并为 SIU 生成排序后的、附有完整引文的调查转介材料。 此技能编排三层调查:确定性底层负责检测,模型在此基础上进行判断并撰写说明,每项金额或规则指控都能追溯到底层。
输出说明
- 使用“与 [scheme] 一致的指标”,而非“欺诈”。 匹配到某种模式并不能证明意图——这属于后续调查或法律认定。此为 SIU 的标准用语,也是渲染器采用的表述方式。
- 生成材料供审核。 此技能将材料写入
$CLAUDE_HEALTHCARE_DATA/fraud-detection/out/;由付款方的 SIU 工作流决定如何处理。模型不会自行发送或发布材料。
输入
- 付款方的理赔数据,存储于
corpus.duckdb(规范的 6 表架构:claims-schema.sql)。获取该数据是下方的第 1 步——没有它,其他工作都无从谈起。 - 季度(要引用的 NCCI/PFS 规则集,例如
2026q3)。 - 业务线(
medicare/medicaid)。
数据根目录
所有获取或生成的状态数据都存放在插件安装路径之外(升级时该路径会被清除):~/.claude/data/healthcare/fraud-detection/——可通过 $CLAUDE_HEALTHCARE_DATA 覆盖其父目录(每项技能都会附加自己的名称)。下文中的 data-cache/ 和 out/ 是 $CLAUDE_HEALTHCARE_DATA/fraud-detection 的子目录。在运行开始时解析一次:
export CLAUDE_HEALTHCARE_DATA="${CLAUDE_HEALTHCARE_DATA:-$HOME/.claude/data/healthcare}"
步骤
-
将付款方的理赔数据导入
corpus.duckdb。 先询问:“已裁定的理赔数据存放在哪里?”然后按照${CLAUDE_PLUGIN_ROOT}/skills/fraud-detection/LOAD-CLAIMS.md中的说明操作——其中会引导你和用户从“我不知道”开始,直到生成包含数据的$CLAUDE_HEALTHCARE_DATA/fraud-detection/data-cache/corpus.duckdb。如果用户已有包含规范表的.duckdb(架构:${CLAUDE_PLUGIN_ROOT}/skills/fraud-detection/claims-schema.sql),可直接使用。拟定简报(corpusDb 路径、季度、业务线)并确认范围。
-
填充公共参考数据层(仅首次运行或启用新季度时)。 检测器会引用
$CLAUDE_HEALTHCARE_DATA/fraud-detection/data-cache/reference/<quarter>/reference.duckdb中的数据。如果所请求季度对应的文件不存在,请立即获取——约 34 个来源陆续就绪时,会按来源显示✓ name (size)进度:node "${CLAUDE_PLUGIN_ROOT}/skills/fraud-detection/scripts/fetch-reference.js" 2026q3 node "${CLAUDE_PLUGIN_ROOT}/skills/fraud-detection/scripts/fetch-enrichment.js"PATH 中需要有
unzip和pdftotext(poppler);大多数发行版都附带这两个工具,也可运行brew install poppler安装。需要可正常访问外网——如果看到 cms.gov / oig.hhs.gov 的“Could not resolve host”错误,说明命令沙箱阻止了访问;请关闭沙箱后重新运行。政策 PDF(NCCI 手册、MLN 文章)会保存到reference/<q>/policy/*.txt,供 grep 搜索;所有结构化数据都会写入reference.duckdb。如果文件已存在则跳过。如果获取失败或缺少某个表,请参阅REFERENCE-DATA.md,查看来源 URL 和恢复方法。 -
创建运行目录。 每次调用都会写入独立的、以分钟为单位加时间戳的目录,以便并排保留先前的运行结果。每个脚本都会遵循
FRAUD_OUT_DIR:export FRAUD_OUT_DIR="$CLAUDE_HEALTHCARE_DATA/fraud-detection/out/run-$(date +%Y%m%d-%H%M)" mkdir -p "$FRAUD_OUT_DIR" echo "$FRAUD_OUT_DIR"下一步将打印出的绝对路径原样用作
outDir。 -
调用 Workflow 工具运行调查,并传入:
scriptPath:${CLAUDE_PLUGIN_ROOT}/skills/fraud-detection/workflows/investigate.jsargs:{ "corpusDb": "<abs path to corpus.duckdb>", "quarter": "2026q3", "lob": "medicaid", "pluginRoot": "${CLAUDE_PLUGIN_ROOT}/skills/fraud-detection", "dataRoot": "<abs $CLAUDE_HEALTHCARE_DATA/fraud-detection>", "outDir": "<abs FRAUD_OUT_DIR from step 3>" }工作流分三个阶段运行(参见“工作原理”):- 检测 — 运行确定性扫描(
scripts/screen.js,不使用模型)→$FRAUD_OUT_DIR/referrals.detect.json。 - 裁定 — 每个需要判定的发现(D2/D4/D7/D13)由一个 Agent 设定
status+adjudication.reason;机械检测器自动确认。裁定可以驳回或降级,但绝不能新增发现。 - 综合 — 每个提供方由一个 Agent 撰写调查报告,并通过对抗性验证发现新的线索。
告知用户,他们可以通过
/workflows实时查看任务分发情况。 -
生成阶段快照并渲染(必需——这是可供审核的交付物)。工作流沙盒没有文件系统,因此请将其返回结果写入磁盘,并让
apply-stages.js生成可审计的主线。FRAUD_OUT_DIR不会跨独立的 Bash 调用保留——在每个需要使用它的 shell 代码块顶部重新导出它(使用步骤 3 中打印的同一绝对路径): 使用 Write 工具,将工作流返回的 JSON 原样保存到$FRAUD_OUT_DIR/workflow-result.json(文件可能超过 50KB——不要通过 Bash heredoc 写入)。然后:export FRAUD_OUT_DIR="<abs path from step 3>" node "${CLAUDE_PLUGIN_ROOT}/skills/fraud-detection/scripts/apply-stages.js"这会写入
$FRAUD_OUT_DIR/referrals.adjudicated.json、referrals.final.json、referrals.json(规范文件,= final)以及渲染器附属文件(source-excerpts.json、providers.json)。然后先渲染数据包,再渲染仪表板(只有在数据包文件已存在时,仪表板才会将提供方行链接到对应数据包),最后渲染 xlsx:
export FRAUD_OUT_DIR="<abs path from step 3>" node "${CLAUDE_PLUGIN_ROOT}/skills/fraud-detection/scripts/render-packet.js" --all node "${CLAUDE_PLUGIN_ROOT}/skills/fraud-detection/scripts/render-dashboard.js" node "${CLAUDE_PLUGIN_ROOT}/skills/fraud-detection/scripts/render-xlsx.js"→
$FRAUD_OUT_DIR/provider-packet-<npi>.html×N、index.html、referrals.xlsx。 -
展示仪表板,供用户直观验证。
- 可使用预览工具的 Claude Code Desktop:提供运行目录并在侧边栏预览窗格中打开 —
npx serve "$FRAUD_OUT_DIR"(仪表板文件为index.html,因此根 URL 就是仪表板;数据包链接指向同级文件)。 - 否则(终端 CLI,无预览工具):使用操作系统的打开程序打开
$FRAUD_OUT_DIR/index.html— 按顺序尝试,成功后即停止:f="$FRAUD_OUT_DIR/index.html" open "$f" 2>/dev/null \ # macOS || xdg-open "$f" 2>/dev/null \ # Linux || wslview "$f" 2>/dev/null \ # WSL || powershell.exe start "$(wslpath -w "$f")" 2>/dev/null \ # WSL→Windows fallback || cmd.exe /c start "" "$f" 2>/dev/null \ # Windows || echo "Could not auto-open; open manually: $f"
在无头或非交互式运行(eval、CI、Cowork)中,完全跳过此步骤——只报告路径。 如果打开或提供服务失败,不要让运行失败。
- 可使用预览工具的 Claude Code Desktop:提供运行目录并在侧边栏预览窗格中打开 —
-
转达结果:提供工作流结果中的转介排名(NPI、方案、风险金额 $、置信度)和总风险金额;涉及数字时,原样引用。若
meta.disclaimer有值,则一并展示。不得添加确定性底线未得出的任何金额或规则。回复必须以单独一行的运行目录路径结尾,以便下游评分器/工具定位产物:Run directory: <absolute $FRAUD_OUT_DIR> -
后续跟进(可选)——参见
${CLAUDE_PLUGIN_ROOT}/skills/fraud-detection/PROPOSE-DETECTORS.md,从本次运行中挖掘新的检测器候选项和特定付款方的裁定阶段检查。
不可逾越的原则
模型可以自由裁定、探索和撰写报告,但任何金额或规则指控都必须能追溯到检测阶段的确定性重新计算(由 scripts/gate.js 执行门控)。裁定可以驳回或降级某项发现(并提供可审计的理由),但绝不能新增发现或更改其金额。综合报告是独立且明确标注的模型输出,绝不能引入底线未计算出的数字。
数据补充 — 本地缓存数据(权威来源),MCP 仅用于交互
确定性流水线从本地缓存文件读取数据补充(scripts/fetch-enrichment.js
→ $CLAUDE_HEALTHCARE_DATA/fraud-detection/data-cache/enrichment/,通过 scripts/enrichment.js 加载)——无需运行时身份验证、不会产生偏差,且完全可复现。医疗保健插件捆绑的 MCP 服务(CMS Coverage / ICD-10 / NPI Registry)仅用于交互式裁定/综合分析探索;流水线不依赖它们。
- ICD-10-CM — 代码有效性/描述(NLM Clinical Tables)
- CMS Coverage (LCD/NCD) — 医疗必要性政策索引;已缓存,为 D4 裁定提供数据
- NPI Registry — 提供者分类/状态
工作原理(插件布局)
- 入口技能 — 本文件;负责协调工作流,不执行数学运算。
- 工作流 —
workflows/investigate.js(Claude Code 动态工作流):检测 → 裁定 → 综合。 - 确定性扫描 —
scripts/screen.js <corpus.duckdb> <quarter> <lob>运行所有检测器,并 写入$FRAUD_OUT_DIR/referrals.json。不调用模型。 - 检测器 —
scripts/dNN-*.js(每个模块执行一种确定性检测,共享 Finding 格式)。 - 流水线 —
scripts/pipeline.js(运行 → 闸门校验 → 汇总 → 排序 →referrals.json)。 - 引用闸门 —
scripts/gate.js(独立重新计算每个引用的数值;未引用或无法复现的发现将被丢弃——“有引用才保留”)。 - 参考数据 —
scripts/reference-data.js加载$CLAUDE_HEALTHCARE_DATA/fraud-detection/data-cache/reference/(NCCI/MUE、LEIE、PFS、参保信息),由scripts/fetch-reference.js获取,并按服务日期所属季度标注版本。 - 数据补充 —
scripts/enrichment.js加载$CLAUDE_HEALTHCARE_DATA/fraud-detection/data-cache/enrichment/,由fetch-enrichment.js获取。 - 阶段合并 —
scripts/apply-stages.js(工作流返回结果 →referrals.adjudicated.json/.final.json)。 - 渲染器 —
scripts/render-dashboard.js(→index.html)、render-packet.js、render-xlsx.js→$FRAUD_OUT_DIR/。
每项指控都引用一条公开规则,并附有可由闸门独立重新计算的数值,否则就会被丢弃。