Insight ·
Why provider directories drift: inside a health plan's provider data
Directory errors come from how provider data is built, with many copies on different clocks. Here are the sources, systems and flows, and the fix.

A prospective member asks a health plan’s chatbot whether his cardiologist is in network, and the chatbot answers, “Your provider is outside our network.” In fact, the cardiologist is in network. On March 1 she left an independent group for a practice owned by a hospital system that also contracts with the plan, and the copy of the directory the chatbot reads hasn’t caught up.
The plan here is a composite, built from public sources and common industry patterns rather than from one of our clients. Its systems learn about the cardiologist’s move one at a time. Her old group’s next monthly roster may drop her, or it may not. The hospital’s roster adds her under a new tax ID (TIN) at a new location. Credentialing has nothing new to check. The configuration team sets up the new TIN and location in the claims platform when that roster reaches the top of its queue, the directory picks it up on its next weekly extract, and the Medicare Plan Finder file catches up after that.
Until then she can appear at both practices or at neither, depending on which copy is asked, and the chatbot read a copy that showed neither. Nobody made a mistake. The data is built that way, and the timing now matters: CMS has proposed that from contract year 2028, Medicare Advantage plans verify listings every 90 days and remove departed providers within 5 business days.
What a provider is in the data
A common assumption is that a provider is one record. In practice it is at least six, linked to each other:
- The practitioner record holds the individual NPI, licenses, specialty codes and board certifications.
- The organization record holds the group NPI, the TIN, the parent health system and the owners.
- The location record holds the service address, phone, hours, accessibility and whether it accepts new patients.
- The affiliation says who practices where, under which TIN, and in which role (primary care, specialist or hospital-based).
- Network participation is set by product and network, with tier, panel status and dates.
- The credentialing record holds status, the next recredentialing date and sanctions checks.
Key finding
Network status belongs to a combination of practitioner, TIN, location, product and date. Whether a doctor is in network has an answer only once you know which office, which plan and which day.
Most systems store participation per contract or per TIN, and that is where many wrong answers start.

Where the data comes from, and how often it changes
Each part of the record has its own sources, and each source runs on its own clock.
| Source | What it supplies | How it arrives | How often |
|---|---|---|---|
| Rosters from groups, IPAs and health systems | Additions, terminations, changes | Spreadsheets, each in the group’s own format | Monthly or quarterly |
| CAQH Provider Data Portal (formerly ProView) | Credentialing and practice data | Provider attestation | Re-attested every 120 days |
| Provider portal and calls | Phone, hours, accepting new patients | Ad hoc | Whenever the office reports it |
| Contracting | Contracts, amendments, terminations, products | Events | Any time, plus renewals |
| Credentialing | Licenses, board certification, approval | Primary source verification | At onboarding, then every three years |
| NPPES | NPI, taxonomy, addresses | Public file | Weekly updates, monthly full file |
| OIG exclusion and CMS preclusion lists | Excluded and precluded providers | Public files | Monthly |
| Claims | Who actually bills at which location | Claims feed | Daily |
| Verification outreach | Confirmed or corrected listings | Calls, portals, attestations | Every 90 days for commercial plans; proposed for Medicare Advantage |
Two of these clocks are set by law. NPI holders must update NPPES within 30 days of a change, and the No Surprises Act requires commercial plans to verify directory information every 90 days and post updates within 2 business days of receiving them. The rest depend on how quickly an office manager returns a call.
What triggers a change
- The practitioner moves, changes groups, retires, opens or closes a panel, changes phone numbers or hours, or lets a license lapse.
- The organization is acquired by a health system or a PE-backed platform, which can move a whole group to a new TIN at once, or it opens and closes sites.
- The plan signs and ends contracts, changes networks for the next plan year, or enters a new service area.
The plan is rarely the first to know. It hears from a roster or a claim, often weeks later.
Where the data lives and how it moves
Provider data typically sits in the contracting system, the credentialing system, the claims platform’s provider tables, sometimes a provider data management tool, the directory, the member portal and app, and the call center’s tools. Medicare Advantage, Medicaid and CHIP plans also run a public provider directory API, and Medicare Advantage plans now send their directories to Medicare Plan Finder. Then come network adequacy, the warehouse and, most recently, chatbots.
The flows between them are usually point to point. A configuration team keys or loads rosters into the claims platform, and credentialing decisions reach claims by hand or in a batch file. The directory is rebuilt from claims tables, which were designed to pay claims rather than to describe where a doctor sees patients, with hours and languages added from another source. Each downstream system keeps its own copy on its own refresh schedule.
The result is several copies of the same provider, each correct as of a different day, and no system that knows which copy is right for which field.

How that produces the errors members see
- A doctor shows at every location of her group, because rosters list the group’s sites, not where each doctor practices.
- A billing address shows as the office, because the directory reads fields meant for payment.
- Hospitalists and anesthesiologists look bookable, because the role isn’t modeled.
- Departed providers stay listed, because a roster drops them silently and nothing compares it with the last one.
- Network status is right for one product and wrong for the member’s plan, because participation is stored per contract.
- “Accepting new patients” goes stale, because no system owns it.
- A new TIN creates a second record for the same doctor, or a father and son with the same name merge into one.
Behavioral health shows them most. CMS’s proposal would draw 35% of each plan’s accuracy sample from specialties with high inaccuracy rates, and for now that means mental health and substance use disorder providers.
How we would fix it
Calling providers more often doesn’t fix a structural problem, so we would change the structure.
- Model the record at the right level of detail, with the six parts linked, every relationship dated, and participation stored per practitioner, TIN, location, product and date.
- Pick a source of truth per field, not per provider. Participation comes from contracting, credentials from credentialing, NPI and taxonomy from NPPES, and phone, hours and panel status from the provider’s own attestation.
- Send every source through one intake path that checks NPIs against NPPES, standardizes and geocodes addresses, compares each roster with the current record to catch silent drops, and routes uncertain matches to a data steward.
- Track verification per listing, with the date, method and source of the last confirmation, a 90-day queue, the proposed notice for listings that miss it, and clocks for the 30-day update and 5-day removal deadlines.
- Keep history in two time dimensions, when a fact was true and when the plan recorded it, so the plan can show what its directory said on the day a member relied on it. Cost-sharing protections make that a money question.
- Publish once, so one curated data set feeds the website, app, call center, API, Plan Finder file, adequacy reports and any chatbot.
- Measure accuracy by delegated group and specialty, sampled the way CMS proposes.
None of this requires replacing the claims platform. It can be built as layers in the warehouse or lakehouse the plan already runs, or on its master data hub if it has one.
If you own provider data at a health plan, we’d like to hear which of these errors costs you the most. If you’re preparing for 90-day verification or putting an AI assistant in front of members, we can review your provider data flows with you, and our senior engineers can work inside your team to fix them.