# Exclusion Screening

**Federal OIG LEIE + 33 state Medicaid exclusion lists, in one API call.**

Published at `/resources/exclusion-screening`. Data updated monthly from
primary government sources. Numbers below reflect the 2026-08-18 load.

---

## The problem

Federal law requires monthly screening against the OIG List of Excluded
Individuals/Entities (LEIE). Most compliance programs stop there.

That is not enough. 42 CFR 455.436 requires states to screen against
**state** exclusion databases, and most state Medicaid programs require
enrolled providers to do the same. Around 40 states keep their own
exclusion and termination lists. Many providers on those lists never
appear in LEIE.

Our measured overlap: the state lists carry **13,138 distinct NPIs**
(excluding rows the states mark as federal mirrors). **72% of them are
not in LEIE.** A federal-only screen misses those providers.

## What we provide

- **`state_exclusions`** — 85,697 records across 33 states, loaded from
  each state's primary public source. One row per record per NPI.
- **Federal LEIE** — the full OIG list (~83K records), refreshed monthly.
- **One-call screening** — `GET /exclusions/comprehensive/{npi}` checks
  both layers and returns a single `excluded` flag.
- **Audit trail** — every state is a registered source. See
  `GET /sources/{st}_medicaid_exclusions/history` for load history and
  `GET /exclusions/state/coverage` for freshness.

## Coverage (33 states)

| State | Records | With NPI | Currently excluded | Marked as federal mirror |
|---|---|---|---|---|
| CA | 22,547 | 2,752 | 22,547 | 0 |
| TX | 13,404 | 584 | 11,948 | 0 |
| NY | 9,011 | 2,308 | 9,011 | 0 |
| PA | 6,730 | 1,552 | 4,476 | 0 |
| LA | 5,943 | 535 | 3,476 | 1,691 |
| MI | 4,043 | 1,166 | 4,043 | 0 |
| NJ | 4,030 | 1,191 | 4,030 | 0 |
| AR | 2,213 | 0 | 2,213 | 0 |
| OH | 2,117 | 808 | 2,117 | 0 |
| AL | 2,085 | 0 | 2,085 | 0 |
| DE | 1,794 | 639 | 1,246 | 68 |
| MD | 1,617 | 272 | 1,617 | 0 |
| NE | 1,423 | 285 | 1,423 | 0 |
| GA | 1,375 | 38 | 1,375 | 0 |
| SC | 1,367 | 536 | 1,367 | 0 |
| NV | 1,309 | 914 | 1,309 | 441 |
| IA | 1,307 | 407 | 1,135 | 225 |
| KY | 403 | 369 | 403 | 0 |
| CO | 355 | 334 | 337 | 0 |
| AK | 299 | 0 | 299 | 176 |
| MO | 279 | 277 | 279 | 0 |
| WA | 245 | 188 | 245 | 0 |
| HI | 213 | 0 | 198 | 0 |
| AZ | 209 | 205 | 209 | 0 |
| KS | 208 | 117 | 208 | 0 |
| MS | 204 | 152 | 203 | 13 |
| ND | 193 | 50 | 193 | 78 |
| MT | 179 | 46 | 179 | 152 |
| NC | 178 | 163 | 178 | 12 |
| WV | 167 | 159 | 167 | 0 |
| WY | 116 | 0 | 116 | 0 |
| IN | 113 | 106 | 113 | 0 |
| TN | 21 | 9 | 21 | 0 |

States not listed: MA, NH, MN, ME, and FL block automated access or
publish no bulk data. OR publishes names only. We document each probe
internally and re-check when access changes.

## What a record carries

Each record keeps what the state publishes: person or business name,
provider type, license number, NPI (where published), address, action
type, exclusion date, reinstatement date, period, and reason. The raw
source row is stored alongside the normalized fields.

Some states mark rows as mirrors of federal OIG actions. We flag those
`oig_reciprocal` and keep them queryable, but we do not double-count
them in disciplinary alerting — LEIE already covers them.

## Methodology

- **Primary sources only.** Every list comes from the state's own site:
  direct files, form endpoints, or PDF tables. No third-party
  compilations. No browser automation.
- **Conservative NPI handling.** We keep the state-published NPI only
  when it passes the NPI check digit. We never match by name. Records
  without an NPI stay screenable by name via
  `GET /exclusions/state/search`.
- **Monthly refresh.** Every state re-loads monthly in the same pipeline
  that syncs our CMS sources. Each load is recorded per state.
- **Cross-linking.** State records with a valid NPI also appear in
  `/licenses/{npi}/disciplinary` and `/licenses/alerts/recent`, next to
  federal LEIE actions and with the same severity model.

## API

| Endpoint | What it does |
|---|---|
| `GET /exclusions/comprehensive/{npi}` | Federal + all state lists. One `excluded` flag. |
| `GET /exclusions/state/{npi}` | State-list records for an NPI. |
| `GET /exclusions/state/search` | Name / state / entity-type search. The screening path for records without an NPI. |
| `GET /exclusions/state/coverage` | Per-state counts, LEIE overlap, last-load timestamps. |
| `POST /exclusions/screen` | Batch screen up to 500 NPIs against both layers. |
| `GET /exclusions/crossref/{npi}` | Exclusion status cross-referenced against Medicare activity data. Flags state-excluded NPIs that are absent from LEIE. |

## Who this is for

- **Credentialing and enrollment teams** — screen at onboarding and
  monthly, with an audit trail per check.
- **Compliance programs** — meet the state-database screening
  requirement without visiting 33 state websites.
- **Staffing and locum platforms** — screen candidate pools in batch.
- **Payers and MCOs** — network integrity checks against both layers.
