mcpField
F
fraud-detection

fraud-detection

github.com/anthropics数据与数据库43194 次安装9 周前更新
代码仓库

关于 fraud-detection

fraud-detection 是面向支付方 SIU 的理赔筛查与调查技能,依据公共规则集生成排序并附有引用的调查线索。确定性检测负责计算和金额依据,模型负责审查及撰写说明,所有指控均须通过可复算的引用门控。

主要功能

  1. 01按 Medicare 或 Medicaid 理赔筛查
  2. 02对照 NCCI MUE、OIG LEIE、CMS 和 PFS 规则
  3. 03分阶段执行检测、裁定与综合分析
  4. 04复算引用金额并剔除无法验证的发现
  5. 05生成调查包、仪表板和 XLSX 文件

适用场景

  1. 01筛查理赔数据中的可疑模式
  2. 02为 SIU 调查整理带来源的线索
  3. 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 外,安装时一起下载的参考资料和脚本。

.gitignore
ARCHITECTURE.html
claims-schema.sql
LOAD-CLAIMS.md
package.json
PROPOSE-DETECTORS.md
README.md
REFERENCE-DATA.md
scripts/
apply-stages.js
CLAUDE.md
cohort-slice.js
d01-impossible-day.js
d02-unbundling.js
d03-phantom-billing.js
d04-medical-necessity.js
d07-outlier.js
d09-ineligible-orderer.js
d10-revoked-provider.js
d11-non-payable-code.js
d12-duplicate-claim.js
d13-global-period.js
d14-opt-out.js
d15-dme-outlier.js
d16-prescribing-outlier.js
d17-market-saturation.js
d18-ownership-ring.js
d19-nemt-unanchored.js
d20-hcbs-overlap.js
d21-third-party-liability.js
d22-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}"

步骤

  1. 将付款方的理赔数据导入 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 路径、季度、业务线)并确认范围。

  2. 填充公共参考数据层(仅首次运行或启用新季度时)。 检测器会引用 $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 和恢复方法。

  3. 创建运行目录。 每次调用都会写入独立的、以分钟为单位加时间戳的目录,以便并排保留先前的运行结果。每个脚本都会遵循 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。

  4. 调用 Workflow 工具运行调查,并传入:

    • scriptPath:${CLAUDE_PLUGIN_ROOT}/skills/fraud-detection/workflows/investigate.js
    • args:{ "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 实时查看任务分发情况。

  5. 生成阶段快照并渲染(必需——这是可供审核的交付物)。工作流沙盒没有文件系统,因此请将其返回结果写入磁盘,并让 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。

  6. 展示仪表板,供用户直观验证。

    • 可使用预览工具的 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)中,完全跳过此步骤——只报告路径。 如果打开或提供服务失败,不要让运行失败。

  7. 转达结果:提供工作流结果中的转介排名(NPI、方案、风险金额 $、置信度)和总风险金额;涉及数字时,原样引用。若 meta.disclaimer 有值,则一并展示。不得添加确定性底线未得出的任何金额或规则。回复必须以单独一行的运行目录路径结尾,以便下游评分器/工具定位产物:

    Run directory: <absolute $FRAUD_OUT_DIR>
    
  8. 后续跟进(可选)——参见 ${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/。

每项指控都引用一条公开规则,并附有可由闸门独立重新计算的数值,否则就会被丢弃。

评论

支持 Markdown