fraud-detection について
fraud-detection は、支払機関の SIU 向けに請求をスクリーニングし、公的ルールを引用した優先順位付きの調査候補を作成するスキルです。検出処理が計算と金額を確定し、モデルが判定と説明を担います。申し立ては再計算可能な引用ゲートを通過する必要があります。
主な機能
- 01Medicare または Medicaid の請求をスクリーニング
- 02NCCI MUE、OIG LEIE、CMS、PFS のルールを照合
- 03検出、判定、統合の各段階を実行
- 04引用額を再計算し、検証できない結果を除外
- 05調査パケット、ダッシュボード、XLSX を生成
活用シーン
- 01請求データから疑わしいパターンをスクリーニング
- 02SIU 調査向けに出典付き候補を整理
- 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向けに優先順位付けされ、すべての根拠が引用された調査照会を作成します。 このスキルは3段階の調査をオーケストレーションします。決定論的な基盤が検出を行い、その上でモデルが判断して説明を作成し、金額やルールに関する申し立てはすべて基盤まで遡って確認できます。
出力の位置付け
- 「[スキーム名]と整合する兆候」であり、「不正」ではありません。 パターンが一致しても意図が立証されたことにはなりません — それは後続の調査や法的判断によって決定される事項です。これは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に保存され、キー付きのデータはすべてreference.duckdbに格納されます。すでに存在する場合はスキップしてください。取得に失敗した場合やテーブルがない場合は、ソースURLと復旧方法が記載されたREFERENCE-DATA.mdを参照してください。 -
実行ディレクトリを作成します。 各実行の出力は、分単位のタイムスタンプが付いた専用ディレクトリに保存されるため、以前の実行結果と並べて保持されます。すべてのスクリプトで
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>" }ワークフローは3つのステージで実行されます(「仕組み」を参照):- Detect — 決定論的なスイープ(
scripts/screen.js、モデル不使用)を実行 →$FRAUD_OUT_DIR/referrals.detect.json。 - Adjudicate — 判断が必要な検出結果(D2/D4/D7/D13)ごとに1つのエージェントが
status+adjudication.reasonを設定します。機械的な検出器は自動確認されます。Adjudicate は却下または格下げはできますが、追加は一切できません。 - Synthesize — プロバイダーごとに1つのエージェントが調査ナラティブを作成し、さらに敵対的検証を伴う新規リードの探索を行います。
ユーザーに、
/workflowsでファンアウトをライブで確認できることを伝えてください。 -
ステージスナップショットの実体化 + レンダリング(必須 — これがレビュー可能な成果物です)。ワークフローのサンドボックスにはファイルシステムがないため、その戻り値をディスクに書き込み、
apply-stages.jsに監査可能なスパインを生成させます。FRAUD_OUT_DIRは別々の Bash 呼び出しをまたいで永続化されません — それを必要とするすべてのシェルブロックの先頭で、(手順3で出力したのと同じ絶対パスに)再エクスポートしてください: ワークフローの戻り値 JSON をそのまま$FRAUD_OUT_DIR/workflow-result.jsonに保存するには、Write ツールを使用します(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に対して OS のオープナーを使用します — 順番に試し、最初に成功したもので停止します: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> -
ループを閉じる(任意) — この実行から新しい検出器候補と支払者固有の adjudicate 時チェックをマイニングするには、
${CLAUDE_PLUGIN_ROOT}/skills/fraud-detection/PROPOSE-DETECTORS.mdを参照してください。
侵すことのできない一線
モデルは自由に adjudicate、探索、ナラティブ作成を行いますが、あらゆるドルまたはルールの申し立ては、detect ステージの決定論的な再計算(scripts/gate.js のゲート)にまで遡れなければなりません。Adjudicate は検出結果を却下または格下げできますが(監査可能な理由とともに)、検出結果を追加したり、そのドルを変更したりすることは決してありません。Synthesize のナラティブは、明確にマークされた別個のモデル出力であり、フロアが計算しなかった数値を決して導入しません。
エンリッチメント — ローカルキャッシュデータ(正規)、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 の動的 Workflow):検出 → 裁定 → 統合。 - 決定論的スイープ —
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/。
すべての申し立てには、ゲートが独立して再計算する値を含む公開ルールが引用されます。そうでない申し立ては除外されます。