{
  "study": {
    "slug": "excluded-providers-active-in-nppes-2026",
    "title": "Barred, but still listed: excluded providers stay active in the provider directory",
    "standfirst": "Of 6,150 providers barred from federal health programs by the OIG who appear in NPPES — the national provider identity registry — 6,123 (99.6%) are still listed as active. NPPES does not deactivate a National Provider Identifier when its holder is excluded, so the directory most credentialing checks resolve against shows them as ordinary.",
    "desk": "financial-distress",
    "article_type": "Original Research",
    "published": "2026-06-20",
    "issue": 88,
    "doi": "10.5072/fonteum/excluded-providers-active-in-nppes-2026",
    "url": "https://fonteum.com/research/excluded-providers-active-in-nppes-2026",
    "methodology_version": "nppes-exclusion/v1"
  },
  "data_as_of": "2026-06-20",
  "datasets": [
    {
      "slug": "oig-leie",
      "name": "OIG LEIE",
      "publisher": "HHS OIG — List of Excluded Individuals/Entities",
      "upstream_url": null
    },
    {
      "slug": "nppes",
      "name": "NPPES",
      "publisher": "CMS — National Plan & Provider Enumeration System",
      "upstream_url": null
    }
  ],
  "key_findings": [
    {
      "number": "6,123",
      "finding": "of 6,150 OIG-excluded providers who can be found in NPPES — 99.6% — are still listed as active in the national provider identity registry, matched on NPI and never on a name",
      "dataset": "nppes"
    },
    {
      "number": "89.0%",
      "finding": "of all 6,880 in-force NPI-identified federal exclusions still hold an active NPPES record; only 27 of those found in NPPES (0.4%) carry an NPI deactivation",
      "dataset": "oig-leie"
    },
    {
      "number": "3,530",
      "finding": "have been excluded for five years or more and are still active in NPPES — too long to be a refresh-cycle lag; 1,890 have stood for ten years or more",
      "dataset": "oig-leie"
    },
    {
      "number": "27",
      "finding": "of the 6,150 excluded providers in NPPES carry an NPI deactivation flag — NPPES treats identity and exclusion as unrelated, and an NPI is permanent",
      "dataset": "nppes"
    }
  ],
  "faqs": [
    {
      "q": "What does this study actually measure?",
      "a": "It measures how many providers the OIG has excluded from all federal health programs are still listed as active in NPPES — the National Plan and Provider Enumeration System, the federal registry of National Provider Identifiers. Of the 6,150 in-force NPI-identified federal exclusions that appear in NPPES at all, 6,123 (99.6%) carry no NPI deactivation, so the national provider directory shows them as active. The match is made on the 10-digit NPI only, never on a name."
    },
    {
      "q": "Doesn't an exclusion remove a provider from NPPES?",
      "a": "No. NPPES is an identity registry, not a sanctions registry. An NPI is a permanent identifier assigned once and effectively never reused; NPPES deactivates an NPI on death, duplicate enumeration, or a provider's own request — not because the OIG has excluded the holder. The two federal systems are not wired together, so an exclusion leaves no mark in NPPES. That is the finding: the directory of record for provider identity has no concept of exclusion."
    },
    {
      "q": "Is being active in NPPES the same as being able to bill Medicare?",
      "a": "No, and the distinction is the point. NPPES is provider identity; Medicare billing eligibility lives in PECOS, the enrollment system. PECOS gates who may bill, order, and refer, and it correctly drops almost every excluded provider — we measured only 19 still enrolled in a separate study. NPPES gates nothing. But NPPES is the registry that credentialing teams, payers, clearinghouses, EHRs, and provider-directory products resolve an NPI against, so a check that confirms only that an NPI is active in NPPES can clear a barred provider."
    },
    {
      "q": "Could this just be a data-lag artifact?",
      "a": "Lag cannot explain it. An NPI deactivation in NPPES is not the mechanism by which an exclusion is recorded — there is no mechanism — so the figure does not converge toward zero as snapshots refresh. The vintage breakdown confirms it directly: 3,530 of the still-active providers (57.7%) were excluded five years or more ago, and 1,890 ten years or more ago. These are standing bars that have coexisted with an active NPI listing for years."
    },
    {
      "q": "Are these serious exclusions or administrative ones?",
      "a": "Both, weighted toward the serious. Among the 6,123 still-active providers, 2,434 sit on a §1128(a)(1) program-related criminal conviction and another 1,499 on other mandatory §1128(a) conviction bases (patient abuse or neglect, health-care-fraud felonies, controlled-substance felonies). 1,783 rest on §1128(b)(4) state license actions. The most serious, conviction-based category is the single largest, not a long tail of paperwork terminations."
    },
    {
      "q": "Does this name or accuse any individual provider?",
      "a": "No. Every figure is an aggregate count. No individual or organization is named, surfaced, or labelled a wrongdoer anywhere in this study, and an exclusion-list entry is an administrative fact, never a finding of guilt that this study makes. The study reports how two federal lists do and do not agree, in totals only. Anyone screening a specific provider should confirm a match directly against the OIG LEIE and the provider's own NPPES record before acting."
    },
    {
      "q": "What should a screening or credentialing process take from this?",
      "a": "That an active NPPES record is not an exclusion clearance. Confirming a provider's NPI is active in the national directory says nothing about whether that provider is barred from federal programs — 6,123 barred providers pass that exact check. A complete process screens the OIG LEIE and the applicable state Medicaid exclusion lists on hire and on an ongoing basis, because employing or contracting an excluded party in a federally billable role carries civil-monetary-penalty exposure under a knew-or-should-have-known standard."
    },
    {
      "q": "Can I reproduce these numbers?",
      "a": "Yes. Every figure is a direct NPI join between two public, read-only tables — oig_leie_exclusions (the OIG monthly LEIE bulk download, release 2026-05-08) and nppes_providers (the CMS NPPES snapshot). The exact SQL is published in the reproducibility block below; each count resolves to specific rows in specific frozen snapshots, NPPES carries one row per NPI so the join never multiplies, and no match is ever inferred from a name."
    }
  ],
  "citation": {
    "apa": "Fonteum Research. (2026, June 20). Barred, but still listed: excluded providers stay active in the provider directory. Fonteum Research, Issue 88. https://doi.org/10.5072/fonteum/excluded-providers-active-in-nppes-2026",
    "url": "https://fonteum.com/research/excluded-providers-active-in-nppes-2026"
  },
  "reproducible_sql": "-- Barred, but still listed: excluded providers stay active in the national\n-- provider directory — fully reproducible query.\n--\n-- Question: of the providers the OIG has EXCLUDED from all federal health\n-- programs (by NPI), how many are still listed as ACTIVE in NPPES — the\n-- national provider identity registry that credentialing, claims, EHR, and\n-- directory checks resolve a provider against? NPPES is an identity registry,\n-- not a sanctions registry: it does not deactivate an NPI when its holder is\n-- excluded, so a check that only confirms an NPI is \"active in NPPES\" can\n-- clear a barred provider.\n--\n-- This is the IDENTITY-registry cut. It is distinct from the Medicare\n-- BILLING-enrollment cut (excluded-providers-still-enrolled-2026, LEIE x PECOS)\n-- and the ORDER/REFER-eligibility cut (excluded-providers-ordering-referring-2026):\n-- PECOS gates who may bill/order and correctly drops nearly all excluded\n-- providers; NPPES gates nothing — it is the directory of record for provider\n-- identity, and it keeps them.\n--\n-- Sources (all public, read-only):\n--   public.oig_leie_exclusions — OIG List of Excluded Individuals and Entities,\n--                                federal monthly bulk download, release\n--                                2026-05-08 (latest exclusion 2026-05-20),\n--                                68,055 active records (7,025 carry an NPI).\n--   public.nppes_providers     — CMS NPPES, the National Plan & Provider\n--                                Enumeration System (the NPI registry),\n--                                9,034,519 records, single monthly snapshot.\n--                                npi_deactivation_date IS NULL => the NPI is\n--                                active in NPPES.\n--\n-- Join key: NPI only (10-digit, btrim). We NEVER match on name — a name match\n-- is not a defensible identity assertion, so LEIE rows with no NPI are excluded\n-- from the matchable denominator and reported separately.\n--\n-- \"In force\" mirrors the production exclusion lookup (src/lib/exclusions):\n--   LEIE in force = reinstatement_date IS NULL OR reinstatement_date > today.\n-- The OIG file drops reinstated parties, so every in-force NPI is a standing\n-- federal bar. Date basis: current_date (2026-06-20 at publish).\n-- nppes_providers carries one NPI per row (0 duplicate-NPI rows), so the join\n-- never multiplies. Methodology version: nppes-exclusion/v1.\n--\n-- Every headline figure in the study resolves to one of the rows below.\n\n-- ── HEADLINE: excluded providers still active in the NPI registry ───────────\nWITH leie_inforce AS (             -- distinct in-force, NPI-identified federal OIG exclusions\n  SELECT DISTINCT nullif(btrim(npi), '') AS npi\n  FROM public.oig_leie_exclusions\n  WHERE nullif(btrim(npi), '') IS NOT NULL\n    AND length(nullif(btrim(npi), '')) = 10\n    AND nullif(btrim(npi), '') <> '0000000000'\n    AND (reinstatement_date IS NULL OR reinstatement_date > current_date)\n)\nSELECT\n  count(*)                                                                            AS leie_inforce_npi, -- 6,880\n  count(n.npi)                                                                        AS found_in_nppes,   -- 6,150\n  count(*) FILTER (WHERE n.npi IS NOT NULL AND n.npi_deactivation_date IS NULL)       AS active_in_nppes,  -- 6,123 (HEADLINE)\n  count(*) FILTER (WHERE n.npi IS NOT NULL AND n.npi_deactivation_date IS NOT NULL)   AS deactivated,      -- 27\n  count(*) FILTER (WHERE n.npi IS NULL)                                               AS not_in_nppes,     -- 730\n  round(100.0 * count(*) FILTER (WHERE n.npi IS NOT NULL AND n.npi_deactivation_date IS NULL)\n        / nullif(count(n.npi), 0), 1)                                                 AS pct_active_of_found, -- 99.6\n  round(100.0 * count(*) FILTER (WHERE n.npi IS NOT NULL AND n.npi_deactivation_date IS NULL)\n        / count(*), 1)                                                                AS pct_active_of_all   -- 89.0\nFROM leie_inforce l\nLEFT JOIN public.nppes_providers n ON n.npi = l.npi;\n--  leie_inforce_npi  found_in_nppes  active_in_nppes  deactivated  not_in_nppes  pct_active_of_found  pct_active_of_all\n--       6,880            6,150           6,123            27           730             99.6                89.0\n--  => Of the 6,150 OIG-excluded providers who exist in NPPES, 6,123 (99.6%) are still listed ACTIVE.\n--  => Across all 6,880 NPI-identified in-force exclusions, 6,123 (89.0%) hold an active NPPES record;\n--     only 27 (0.4% of those found) carry an NPI deactivation. 730 are absent from NPPES entirely.\n\n-- ── One deterministic row per excluded NPI (for the breakdown cuts below) ────\n-- All breakdown tables operate on the ACTIVE-in-NPPES set (6,123). We pick one\n-- LEIE row per NPI by most-recent exclusion date so each provider is counted once.\n-- Reusable CTE (re-stated inline in each query below for copy-paste reproducibility):\n--   WITH leie AS (\n--     SELECT DISTINCT ON (nullif(btrim(npi),'')) nullif(btrim(npi),'') AS npi,\n--            excl_date, exclusion_type, state, general_desc\n--     FROM public.oig_leie_exclusions\n--     WHERE nullif(btrim(npi),'') IS NOT NULL AND length(nullif(btrim(npi),''))=10\n--       AND nullif(btrim(npi),'') <> '0000000000'\n--       AND (reinstatement_date IS NULL OR reinstatement_date > current_date)\n--     ORDER BY 1, excl_date DESC\n--   ),\n--   active AS (\n--     SELECT l.* FROM leie l JOIN public.nppes_providers n ON n.npi = l.npi\n--     WHERE n.npi_deactivation_date IS NULL          -- 6,123 rows\n--   )\n\n-- ── How long they have been excluded yet stayed active in NPPES ─────────────\nWITH leie AS (\n  SELECT DISTINCT ON (nullif(btrim(npi),'')) nullif(btrim(npi),'') AS npi, excl_date\n  FROM public.oig_leie_exclusions\n  WHERE nullif(btrim(npi),'') IS NOT NULL AND length(nullif(btrim(npi),''))=10\n    AND nullif(btrim(npi),'') <> '0000000000'\n    AND (reinstatement_date IS NULL OR reinstatement_date > current_date)\n  ORDER BY 1, excl_date DESC\n),\nactive AS (\n  SELECT l.npi, date_part('year', age(current_date, l.excl_date)) AS yrs\n  FROM leie l JOIN public.nppes_providers n ON n.npi = l.npi\n  WHERE n.npi_deactivation_date IS NULL\n)\nSELECT\n  count(*) FILTER (WHERE yrs < 1)                AS under_1yr,   -- 466\n  count(*) FILTER (WHERE yrs >= 1 AND yrs < 5)   AS y1_4,        -- 2,127\n  count(*) FILTER (WHERE yrs >= 5 AND yrs < 10)  AS y5_9,        -- 1,640\n  count(*) FILTER (WHERE yrs >= 10 AND yrs < 20) AS y10_19,      -- 1,864\n  count(*) FILTER (WHERE yrs >= 20)              AS y20_plus,    -- 26\n  count(*) FILTER (WHERE yrs >= 5)               AS y5_plus,     -- 3,530 (57.7%)\n  count(*) FILTER (WHERE yrs >= 10)              AS y10_plus,    -- 1,890 (30.9%)\n  count(*)                                       AS total        -- 6,123\nFROM active;\n--  466 excluded <1yr · 2,127 1-4yr · 1,640 5-9yr · 1,864 10-19yr · 26 20yr+  (sum = 6,123)\n--  => 3,530 (57.7%) have been excluded 5+ years and are still active in NPPES; 1,890 (30.9%) 10+ years.\n\n-- ── By statutory basis of exclusion (SSA §1128 / 42 U.S.C. §1320a-7) ────────\nWITH leie AS (\n  SELECT DISTINCT ON (nullif(btrim(npi),'')) nullif(btrim(npi),'') AS npi, excl_date, exclusion_type\n  FROM public.oig_leie_exclusions\n  WHERE nullif(btrim(npi),'') IS NOT NULL AND length(nullif(btrim(npi),''))=10\n    AND nullif(btrim(npi),'') <> '0000000000'\n    AND (reinstatement_date IS NULL OR reinstatement_date > current_date)\n  ORDER BY 1, excl_date DESC\n)\nSELECT l.exclusion_type, count(*) AS active_in_nppes\nFROM leie l JOIN public.nppes_providers n ON n.npi = l.npi\nWHERE n.npi_deactivation_date IS NULL\nGROUP BY l.exclusion_type ORDER BY count(*) DESC;\n--  1128a1 (program-related conviction)      2,434\n--  1128b4 (license revoke/suspend/surrender)1,783\n--  1128a4 (felony controlled-substance)       704\n--  1128a3 (felony health-care fraud)          500\n--  1128a2 (patient abuse/neglect conviction)  295\n--  1128b14 (default on HEAL loan obligation)  129\n--  all other §1128 bases (12 codes)           278     (sum = 6,123)\n\n-- ── By provider category (LEIE general_desc, top categories) ────────────────\nWITH leie AS (\n  SELECT DISTINCT ON (nullif(btrim(npi),'')) nullif(btrim(npi),'') AS npi, excl_date,\n         general_desc\n  FROM public.oig_leie_exclusions\n  WHERE nullif(btrim(npi),'') IS NOT NULL AND length(nullif(btrim(npi),''))=10\n    AND nullif(btrim(npi),'') <> '0000000000'\n    AND (reinstatement_date IS NULL OR reinstatement_date > current_date)\n  ORDER BY 1, excl_date DESC\n)\nSELECT l.general_desc, count(*) AS active_in_nppes\nFROM leie l JOIN public.nppes_providers n ON n.npi = l.npi\nWHERE n.npi_deactivation_date IS NULL\nGROUP BY l.general_desc ORDER BY count(*) DESC LIMIT 10;\n--  IND- LIC HC SERV PRO 2,650 · PHYSICIAN (MD, DO) 2,080 · BUS OWNER/EXEC 335 ·\n--  EMPLOYEE - PRIVATE S 194 · MEDICAL PRACTICE, MD 192 · OTHER BUSINESS 176 ·\n--  INDIVIDUAL (UNAFFILI 99 · NURSING PROFESSION 61 · CHIROPRACTIC PRACT 60 · DENTAL PRACTICE 34.\n--  Entity split (NPPES entity_type_code): 5,866 individuals · 257 organizations  (sum = 6,123).\n\n-- ── By state of the excluded party (LEIE state) ─────────────────────────────\nWITH leie AS (\n  SELECT DISTINCT ON (nullif(btrim(npi),'')) nullif(btrim(npi),'') AS npi, excl_date, state\n  FROM public.oig_leie_exclusions\n  WHERE nullif(btrim(npi),'') IS NOT NULL AND length(nullif(btrim(npi),''))=10\n    AND nullif(btrim(npi),'') <> '0000000000'\n    AND (reinstatement_date IS NULL OR reinstatement_date > current_date)\n  ORDER BY 1, excl_date DESC\n)\nSELECT l.state, count(*) AS active_in_nppes\nFROM leie l JOIN public.nppes_providers n ON n.npi = l.npi\nWHERE n.npi_deactivation_date IS NULL\nGROUP BY l.state ORDER BY count(*) DESC LIMIT 12;\n--  CA 772 · FL 556 · OH 489 · NY 460 · TX 389 · PA 296 · MI 181 · IL 155 ·\n--  WV 152 · NJ 149 · NV 144 · KY 135.  Top 12 = 3,878; all other states = 2,245  (total 6,123).",
  "license": "U.S. Government Works (federal sources; 17 U.S.C. §105)",
  "generated_by": "Fonteum — https://fonteum.com",
  "notes": "Aggregate, source-traced figures frozen to the snapshot above. Reproduce by running reproducible_sql against the cited federal dataset; no per-entity records are included."
}
