State directory audits
State-scoped slices of the AINPI audit of the CMS National Provider Directory.
Prepared as citable methodology for state Medicaid agencies responding to the 2026-04-23 CMS State Medicaid Director letter on provider revalidation strategies.
Eugene Vestel: Founder, FHIR IQ · Health interoperability consultant
Start here
Pennsylvania: the whole chain, end to end
One state traced all the way through: every active practitioner, whether the directory gives them an organization, whether that organization has a working address for software, and which vendor is behind it. Includes a county map you can zoom, and a named list of the organizations nothing public reaches.
230,837 practitioners. 43.7% have an organization at all. 18.7% reach an address software can use.
Open the Pennsylvania ledgerWhat CMS asked for, in element 2
“The metrics you will use to measure the effectiveness and progress of your PR strategy, including links to any public-facing data or reporting.”
Each state page below is one such public-facing artifact. The methodology and denominators are pre-registered before numbers populate; numbers are reproducible from a pinned NPD release with open analysis code under Apache-2.0. State agencies are welcome to cite these pages directly in their CMS response.
Available states
Virginia (VA)
Cardinal Care · Department of Medical Assistance Services (DMAS)
~1.8M enrollees · 6 MCOs
2026-08-31
Pennsylvania (PA)
Medical Assistance (HealthChoices) · Department of Human Services (DHS)
~3.5M enrollees · 7 MCOs
2026-08-31
Ohio (OH)
Ohio Medicaid (Next Generation Managed Care) · Ohio Department of Medicaid (ODM)
~3.0M enrollees · 7 MCOs
2026-08-31
Need your state added?
Each state page is a state-filtered re-run of the same six published findings, with state-specific MCO context and a citation block. If your state agency would like an audit slice prepared for your CMS response, email gene@fhiriq.com with the state code. Underlying methodology is open under Apache-2.0, so a state IT team can also run the analysis script directly: see analysis/state_findings.py.