@pipeworx/ga-medical-exclusions
Connect: https://pipeworx.io/mcp — every tool in the catalog, including @pipeworx/ga-medical-exclusions’s. Install: one-click buttons
Connect to just the @pipeworx/ga-medical-exclusions pack
https://gateway.pipeworx.io/ga-medical-exclusions/mcp — only @pipeworx/ga-medical-exclusions’s own tools, nothing else in the catalog.
No MCP client? Skip the connection: POST https://gateway.pipeworx.io/v1/tools/search_packs {"query":"..."} to find a tool below, GET /v1/tools/<name> for its schema, POST the same URL with arguments for the data — see For AI agents.
Tools: 2
Georgia Department of Community Health (DCH) Office of Inspector General
(OIG) List of Excluded Individuals and Entities screening — check a
provider by name or NPI against the ~1,377-row current-snapshot list of
individuals and entities excluded from Georgia’s Medicaid program, the
state-level counterpart to the federal HHS OIG LEIE (leie pack) and the
sibling of ny-omig-exclusions (New York), ca-medical-exclusions
(California), tx-medical-exclusions (Texas), fl-medical-exclusions
(Florida) and pa-medical-exclusions (Pennsylvania).
Tools
ga_medical_check_exclusion(name?, npi?, limit?)— screens a provider against the DCH OIG exclusions list. An NPI match is an identification (an exact, provider-specific identifier); a name match — even an exact one — is a candidate lead only, since the list carries no date of birth and most rows carry no business name to disambiguate same-named providers.ga_medical_exclusion_coverage()— total exclusions currently on the list, how many carry an NPI, how many distinct provider types appear, and the oldest/newest sanction effective date. Passyearorstart_date/end_dateto instead count exclusions whose sanction effective date falls in that range, over the whole list.
Auth
Keyless.
Data sources
- Georgia Department of Community Health (DCH), Office of Inspector General — List of Excluded Individuals and Entities, the state’s published roster of individuals and businesses excluded from participating in Georgia’s Medicaid program under O.C.G.A. §§ 49-4-140 et seq., searchable/downloadable at https://dch.georgia.gov/office-inspector-general/georgia-oig-exclusions-list.
The download link is NOT stable — resolved fresh every bake
DCH republishes a new document node roughly monthly, and its URL embeds
the publication date (e.g. a slug ending in -october-5-2026).
scripts/bake-index.mjs fetches the listing page first and extracts the
CURRENT download link from it — the same “resolve from the listing page,
never guess the filename” discipline scripts/ingest-dmepos.mjs uses for
CMS’s unstable DMEPOS zip names. Never hardcode the dated URL.
Why this is baked, not a live proxy
Per root CLAUDE.md’s standing rule for a table this size, the full list
(1,377 rows at capture time) is baked by scripts/bake-index.mjs into
src/ga-dch-oig-index-data.ts, registered in
workers/gateway/src/pack-baked-indexes.json, uploaded to KV at deploy,
and injected into every call as args._bakedIndex — never a static
module-scope import (fleet #2754). A missing or malformed injection throws
loudly rather than answering “not found” — see src/index.test.ts.
The resolved download is a plain, unauthenticated GET returning an Excel
2007+ (.xlsx) file — no VIEWSTATE, no session, no form replay, simpler
than tx-medical-exclusions and even pa-medical-exclusions.
No external XLSX library — hand-rolled, same “no dependencies” discipline
An .xlsx is a zip of XML parts. bake-index.mjs reuses
scripts/ingest-dmepos.mjs’s minimal pure-Node zip reader (Node’s built-in
zlib.inflateRawSync over a hand-walked central directory — no unzip
CLI, no npm package), resolves the workbook’s first sheet dynamically via
xl/workbook.xml + xl/_rels/workbook.xml.rels (Excel reassigns
sheetN.xml numbers when tabs are reordered, so this is never assumed),
decodes xl/sharedStrings.xml for text cells, and walks <row>/<c>
elements for the 9 columns this file uses.
SANCDATE is three different raw shapes in the same column
Verified directly against all 1,377 rows, not assumed: most rows (922)
carry the sanction date as an 8-digit STRING ("19820415"), 445 as an
8-digit NUMBER (same meaning, typed differently), and a handful of the
most recently added rows carry a genuine Excel date SERIAL (e.g.
45828 = 2025-06-20) because DCH typed a real date into the cell. The
baker tells the two numeric shapes apart by MAGNITUDE: an 8-digit YYYYMMDD
value is always ≥ 19,000,000, while an Excel date serial for any date in
this list’s range (1982-2026) is always under 100,000 — no possible
collision, so reading xl/styles.xml for each cell’s number format was
unnecessary. 6 of 1,377 rows carry no sanction date at all and are kept
with sanction_date: null.
This is a current-snapshot list, not an ever-excluded file
Different from the five precedent packs. DCH’s own page states exclusions
“remain in effect until they are removed from this list” — there is no
reinstated-date column; a reinstated provider simply disappears from the
next monthly publication. So every row returned here IS currently
excluded by construction, and this pack states plainly (via
snapshot_caveat) that it cannot answer anything about a past exclusion
already removed from the list.
No license number, no FEIN — narrower matching model than the siblings
Checked directly, not assumed from the sibling packs’ shape: DCH’s columns
are LAST NAME, FIRST NAME, MIDDLE NAME, BUSINESS NAME, GENERAL (provider
type), STATE, SANCDATE, NPI — no license or FEIN column exists. Only an
NPI query (exact 10-digit numeric) is an identification; a license or
fein argument the sibling packs accept has no equivalent here.
STATE is free text, often multiple states
Most rows carry a plain two-letter code ("GA"), but others carry comma-
or ampersand-joined lists of every state the entity is also excluded or
licensed in (e.g. "GA,FL,IL,VA,SC,CT", "GA & FL"), and a handful carry
a trailing space ("GA "). Served verbatim, trimmed only — never parsed
into a single enum.
DOB exists in the source file but is not carried into this pack
A handful of the most recently added rows include a date-of-birth column
DCH has started populating. This pack serves the same fields the five
precedent state packs serve and adds no new personal identifier beyond
them — none of those packs serve a date of birth (its absence is exactly
why a name match is only ever a candidate lead). bake-index.mjs reads the
DOB column only to confirm its date decoder handles it correctly, then
discards it.
Reachability
Verified live 2026-10-17: the listing page resolves a current download
link, and that link returns 200 with an Excel 2007+ file, 1,377 data
rows.
Tools
- ga_medical_check_exclusion — Is this healthcare provider excluded from the Georgia Medicaid program? Screens a person or business name and/or an NPI against the Georgia Department of Community Health (DCH) Office of Inspector Gen
- ga_medical_exclusion_coverage — What the Georgia DCH OIG exclusions data covers and how current it is: total exclusions currently on the list, how many carry an NPI, how many distinct provider types appear, and the oldest/newest san
Tools
ga_medical_check_exclusion— Is this healthcare provider excluded from the Georgia Medicaid program? Screens a person or business name and/or an NPI against the Georgia Department of Community Health (DCH) Office of Inspector Genga_medical_exclusion_coverage— What the Georgia DCH OIG exclusions data covers and how current it is: total exclusions currently on the list, how many carry an NPI, how many distinct provider types appear, and the oldest/newest san