← Portfolio View source on GitHub →

CMS-9115-F Provider Directory Quality Board

Views of one FHIR provider-directory pull from a mid-size enterprise payer in the state of Arizona, subject to CMS-9115-F owing to participation in both Medicaid and Medicare Advantage plans. Fourteen findings as cards; every card opens the full finding with its charts, and each finding reaches the section of the underlying report it summarises. Card colours are the report's own reading-aid bands, never a verdict. Every rate is shown with its n.

No determination of compliance with the CMS rule is being made here; this is a best-effort data quality exploration and visualization project of data extracted from public-access production APIs at a single point in time from payers subject to CMS-9115-F. Compliance determinations rest solely between CMS and the payer's Compliance Office, and this report is not intended to be taken as any substitute for that. Data available upon request.

Esc close previous / next while open

MA Plan Finder utility likely impacted

0 of 45,616 Medicare Advantage roles link to a network, carry an NPI, or can reach a real plan record

CMS requires Medicare Advantage organizations to publish this directory in exactly the machine-readable format measured here (42 CFR 422.111(m), naming Plan-Net 1.2.0). As captured, the one published InsurancePlan record is a placeholder, not real plan data — its only identifier is the bare value "1", its required type is present solely as a data-absent-reason, it names no network, period, or coverage area, and it has not been modified since 2024-10-18 while the rest of the directory refreshes regularly — so it cannot be matched to a Plan Finder plan entry, and this report cannot assess whether a real plan record would meet the guide's requirements; 0 of 45,616 Medicare Advantage provider roles carry the NPI the guide requires at the role level; 0 provider roles link to any network, so in-network provider lookup — Plan Finder's core function — has no data path; the OrganizationAffiliation records the guide requires are absent entirely. Until real plan-level data is published, this directory cannot power Medicare Plan Finder provider search for the Medicare Advantage line. Full element-by-element readiness: report section F, inside finding 14. Checked against the federal NPI registry (finding 13), the 21,528 distinct practitioners those roles reach are 98.9% live NPIs, but 381 roles point at a deactivated NPI (all 45,616 Medicare Advantage roles are marked active, so the role-level flag carries no signal), and of the 10,809 practitioners the directory marks inactive, 10,643 (98.5%) still hold a live NPI, so the flag is not tracking registry status.

Band Population Sort

Isolated under 10% of records affected, nothing error-severity · Partial everything between · Widespread 40%+ of records affected, including error-severity findings. Fixed cuts, not tuned to this payer; a reading aid, never a verdict. Full rule in finding 14, section A.

Nothing on this page is modelled or extrapolated. All counts are from the measured pull (data captured 2026-08-25, analysed 2026-08-29; the registry cross-check in finding 13 uses NPPES as of 2026-08-23). Percentages are rounded to one decimal; shares under 0.1% but above zero are printed as "<0.1%". The full report, sections A to L, is finding 14.

Provider directory data quality — a mid-size enterprise payer in the state of Arizona, subject to CMS-9115-F owing to participation in both Medicaid and Medicare Advantage plans

Full-population analysis of 3,133,014 published FHIR records, reported per line of business — Medicaid and Medicare Advantage, with records carrying a third source marker (Other (ODS)) reported separately. Findings are defect patterns in plain language, graded as a reading aid — not a compliance verdict. See §A.

Medicare Plan Finder impact. CMS requires Medicare Advantage organizations to publish this directory in exactly the machine-readable format measured here (42 CFR 422.111(m), naming Plan-Net 1.2.0). As captured, the one published InsurancePlan record is a placeholder, not real plan data — its only identifier is the bare value "1", its required type is present solely as a data-absent-reason, it names no network, period, or coverage area, and it has not been modified since 2024-10-18 while the rest of the directory refreshes regularly — so it cannot be matched to a Plan Finder plan entry, and this report cannot assess whether a real plan record would meet the guide's requirements; 0 of 45,616 Medicare Advantage provider roles carry the NPI the guide requires at the role level; 0 provider roles link to any network, so in-network provider lookup — Plan Finder's core function — has no data path; the OrganizationAffiliation records the guide requires are absent entirely. Until real plan-level data is published, this directory cannot power Medicare Plan Finder provider search for the Medicare Advantage line. Full element-by-element readiness: §F.
How to read this report. The unit is a finding: one defect pattern, counted once per record it touches (raw message counts are shown too, but never alone). Every rate shows its denominator (n) and renders in 20-point shaded bands whose color encodes how wide the affected share is — red for the widest share, amber for a moderate one, blue-gray for a narrow one, blue for little or none — whichever direction the failure lies: a high affected-rate goes red, and so does a LOW populated-rate. A cell smaller than 30 records shows the exact count instead of a percentage, colored the same way. Isolated / Partial / Widespread bands are a reading aid over the three data-quality categories only — fixed cuts, defined in §A, never a compliance verdict. Sources: Medicaid and Medicare Advantage are the two lines of business; Other (ODS) is the label for a third source marker found only on organization records — reported separately, never folded into either line, and characterized from its own data in §K. Click any row with a ▸ marker to open its drill-down in place.

A. Summary

source: a mid-size enterprise payer in the state of Arizona, subject to CMS-9115-F owing to participation in both Medicaid and Medicare Advantage planslines of business: Medicaid · Medicare Advantagedata captured 2026-08-25analysis 2026-08-29standard: Da Vinci PDex Plan-Net 1.2.0

What this is. Every FHIR record in the plan's published Plan-Net provider directory — 3,133,014 records — was validated against the Da Vinci PDex Plan-Net 1.2.0 profiles, and the population was independently audited for element completeness, referential integrity, locality, and placeholder values. This report describes measured agreement with the published standard as a set of data-quality signals. It is not a certification, a regulatory compliance determination, or a legal assessment, and no number in it should be read as one.

records validated (100% of capture)
3,133,014
… in the directory proper
1,756,583
… carrying the Other (ODS) marker
1,376,431
raw validator messages
31,320,889
distinct defect patterns (findings)
153
tests in the Isolated band
1
tests in the Partial band
8
tests in the Widespread band
2
cells too small to grade
2

What matters most in this data

  • The plan→network→provider chain cannot be walked: one insurance plan record is published, none names a network, no role or affiliation references any of the 36 network records, so no provider can be tied to any plan or network.
  • 50,492 of 221,172 practitioners (23%) are published with active = false — inactive records shipped into a directory whose profile requires active ones (Medicare Advantage: 50,492 of 205,454 / Medicaid: 0 of 15,718).
  • Most provider roles never say what kind of provider they are: PractitionerRole.code (a must-support element) is populated on Medicare Advantage: 0 of 45,616, Medicaid: 18,862 of 50,411. The validator cannot see absent elements, so this comes from the element-population audit (§C).
  • 325,187 of 915,339 locations (36%) are outside the plan's home state; the two lines of business differ (§I).
  • 12,382,415 of 31,320,889 validator messages (40%) trace to one mechanical defect: stamping “4.0.1” as the version of every code system (§B, code-system version stamping).
  • A single defect averages 501 repeats per affected record (extension › extension › value › coding › system (inside the profile's extension family — the message text names the failing item) on PractitionerRole) — pathological array duplication, not many distinct problems.
  • 1,376,431 of 3,133,014 validated records (44%) carry the Other (ODS) marker, not either line of business; aggregate numbers that pool it describe someone else's dataset (§K).

Records by source

source / line of businessrecords
Other (ODS) — a source system, not a line of business1,376,431
Medicare Advantage1,084,751
Medicaid671,832
How to read the grades. A test is one (record type, issue category) cell over the three categories that measure the payer's own data (structural conformance, required code sets, preferred code sets). Isolated: under 10% of records affected and nothing error-severity. Widespread: 40%+ of records affected including error-severity findings. Partial: everything between. The cuts are fixed constants, not tuned to this payer. Grades are a reading aid layered over the banded rates and record counts beside them — never a substitute, and never a verdict. Environment artifacts (uncheckable codes, validator limitations, the publisher's own metadata extension) are reported separately in §B and are excluded from every grade and every headline rate.

B. Tests

one test per (record type, issue category); ordered by affected-rate; click any row for the drill-down
source: a mid-size enterprise payer in the state of Arizona, subject to CMS-9115-F owing to participation in both Medicaid and Medicare Advantage planslines of business: Medicaid · Medicare Advantagedata captured 2026-08-25analysis 2026-08-29standard: Da Vinci PDex Plan-Net 1.2.0

In plain terms: each row below is one kind of check on one record type. The graded rows measure the publisher's own data; the ungraded block underneath collects things that are real but are not data defects (validation-environment limits, the publisher's tooling habits), so they can never inflate or excuse a grade.

Data-quality tests (graded)

Partial Practitioner preferred code sets all 221,172 records

A coded field carries a value outside the profile's preferred code set. Allowed when no listed code applies, but at scale it usually means a local code system is used where a standard one exists.

Rate by source

source / line of businessrecords affected
Medicare Advantageall 205,454 records
Medicaidall 15,718 records

Which code sets fail

The failing code set names the exact profile rule even where one element row above spans several profile slices.

code setrecords affected by source
http://hl7.org/fhir/ValueSet/identifier-typeall 221,172 recordsMedicare Advantage: 205,454 of 205,454 Medicaid: 15,718 of 15,718

Constituent findings

elementseverity / requirement records affectedrepeats per record
identifier › typePractitioner.identifier.typewarning must-supportall 221,172 records1.0×
No code was provided where the profile expects one from a specific code set.
Medicare Advantage: 205,454 of 205,454 Medicaid: 15,718 of 15,718
identifier › typePractitioner.identifier.typewarning must-supportall 221,172 records1.0×
None of the codes provided are in the profile's preferred code set for this field.
Medicare Advantage: 205,454 of 205,454 Medicaid: 15,718 of 15,718
Widespread Network structural conformance all 36 records

The record breaks a rule the applicable profile states directly: a required element is missing, a value the profile fixes is different, or a structural invariant fails. These are the defects a directory consumer hits first.

Rate by source

source / line of businessrecords affected
Medicare Advantageall 36 records

Constituent findings

elementseverity / requirement records affectedrepeats per record
the Network record as a wholeOrganizationerror whole recordall 36 records1.0×
A required component is missing (for example a geolocation extension without its latitude/longitude parts).
Medicare Advantage: 36 of 36
address › extension (spans 2 profile slices — the failing rule is identified by its code set in the drill-down)Organization.address.extensionerror mixed slices66.7%n=3694.7×
A required, specifically-typed component is missing from a structure that demands it.
Medicare Advantage: 24 of 36
address › extension (spans 2 profile slices — the failing rule is identified by its code set in the drill-down)Organization.address.extensionerror mixed slices66.7%n=3623.7×
An extension carries both a direct value and sub-extensions, which FHIR does not allow.
Medicare Advantage: 24 of 36
address › extension (spans 2 profile slices — the failing rule is identified by its code set in the drill-down)Organization.address.extensionerror mixed slices66.7%n=3623.7×
A required component is missing (for example a geolocation extension without its latitude/longitude parts).
Medicare Advantage: 24 of 36
address › textOrganization.address.textwarning mixed slices11.1%n=362.0×
A text value starts or ends with stray whitespace (e.g. a name stored with a trailing space).
Medicare Advantage: 4 of 36
too few rows to grade InsurancePlan preferred code sets 1 of 1 records

A coded field carries a value outside the profile's preferred code set. Allowed when no listed code applies, but at scale it usually means a local code system is used where a standard one exists.

Rate by source

source / line of businessrecords affected
Medicare Advantage1 of 1 records

Which code sets fail

The failing code set names the exact profile rule even where one element row above spans several profile slices.

code setrecords affected by source
http://hl7.org/fhir/us/davinci-pdex-plan-net/ValueSet/InsuranceProductTypeVS1 of 1 recordsMedicare Advantage: 1 of 1

Constituent findings

elementseverity / requirement records affectedrepeats per record
typeInsurancePlan.typewarning required element1 of 1 records1.0×
No code was provided where the profile expects one from a specific code set.
Medicare Advantage: 1 of 1
too few rows to grade InsurancePlan structural conformance 1 of 1 records

The record breaks a rule the applicable profile states directly: a required element is missing, a value the profile fixes is different, or a structural invariant fails. These are the defects a directory consumer hits first.

Rate by source

source / line of businessrecords affected
Medicare Advantage1 of 1 records

Constituent findings

elementseverity / requirement records affectedrepeats per record
the InsurancePlan record as a wholeInsurancePlanerror whole record1 of 1 records1.0×
The insurance plan names no network at all — the link that connects a plan to its provider networks is absent.
Medicare Advantage: 1 of 1
Partial PractitionerRole preferred code sets 98.9%n=96,027 94,975 of 96,027 records

A coded field carries a value outside the profile's preferred code set. Allowed when no listed code applies, but at scale it usually means a local code system is used where a standard one exists.

Rate by source

source / line of businessrecords affected
Medicare Advantageall 45,616 records
Medicaid97.9%n=50,411

Which code sets fail

The failing code set names the exact profile rule even where one element row above spans several profile slices.

code setrecords affected by source
http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.114222.4.11.106698.9%n=96,027Medicare Advantage: 45,616 of 45,616 Medicaid: 49,357 of 50,411
http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1099.30<0.1%n=96,027Medicaid: 73 of 50,411

Constituent findings

elementseverity / requirement records affectedrepeats per record
specialtyPractitionerRole.specialtywarning must-support98.9%n=96,0271.5×
None of the codes provided are in the profile's preferred code set for this field.
Medicare Advantage: 45,616 of 45,616 Medicaid: 49,357 of 50,411
codePractitionerRole.codewarning must-support<0.1%n=96,0271.0×
None of the codes provided are in the profile's preferred code set for this field.
Medicaid: 73 of 50,411
specialtyPractitionerRole.specialtywarning must-support<0.1%n=96,0271.0×
No code was provided where the profile expects one from a specific code set.
Medicaid: 4 of 50,411
Partial Organization preferred code sets 95.9%n=1,862,241 1,786,308 of 1,862,241 records

A coded field carries a value outside the profile's preferred code set. Allowed when no listed code applies, but at scale it usually means a local code system is used where a standard one exists.

Rate by source

source / line of businessrecords affected
Medicare Advantage76.8%n=218,574
Medicaid90.6%n=267,236
Other (ODS)all 1,376,431 records

Which code sets fail

The failing code set names the exact profile rule even where one element row above spans several profile slices.

code setrecords affected by source
http://hl7.org/fhir/ValueSet/identifier-type95.9%n=1,862,241Medicare Advantage: 167,887 of 218,574 Medicaid: 241,990 of 267,236 Other (ODS): 1,376,431 of 1,376,431

Constituent findings

elementseverity / requirement records affectedrepeats per record
identifier › typeOrganization.identifier.typewarning must-support95.9%n=1,862,2411.0×
None of the codes provided are in the profile's preferred code set for this field.
Medicare Advantage: 167,887 of 218,574 Medicaid: 241,990 of 267,236 Other (ODS): 1,376,431 of 1,376,431
Widespread Practitioner structural conformance 95.0%n=221,172 210,064 of 221,172 records

The record breaks a rule the applicable profile states directly: a required element is missing, a value the profile fixes is different, or a structural invariant fails. These are the defects a directory consumer hits first.

Rate by source

source / line of businessrecords affected
Medicare Advantage98.7%n=205,454
Medicaid46.2%n=15,718

Constituent findings

elementseverity / requirement records affectedrepeats per record
address › period › endPractitioner.address.period.endwarning sub-field of an optional element86.1%n=221,1724.0×
A date on the record is outside the range of plausible years — typically a placeholder such as 2999-12-31 (“never expires”) or 1753-01-01 (a system-minimum start date).
Medicare Advantage: 190,324 of 205,454
name › textPractitioner.name.textwarning must-support44.4%n=221,1721.0×
A text value starts or ends with stray whitespace (e.g. a name stored with a trailing space).
Medicare Advantage: 90,934 of 205,454 Medicaid: 7,254 of 15,718
activePractitioner.activeerror required element22.8%n=221,1721.0×
The record carries a value the profile fixes to something else — for example active = false where the profile fixes active = true, or an inactive qualification status where the profile fixes it active: the publisher ships records it has itself marked inactive.
Medicare Advantage: 50,492 of 205,454
qualification › extension › extension › value (spans 2 profile slices — the failing rule is identified by its code set in the drill-down)Practitioner.qualification.extension.extension.value[x]error required element13.1%n=221,1721.1×
The record carries a value the profile fixes to something else — for example active = false where the profile fixes active = true, or an inactive qualification status where the profile fixes it active: the publisher ships records it has itself marked inactive.
Medicare Advantage: 29,052 of 205,454
qualification › period › endPractitioner.qualification.period.endwarning sub-field of a must-support element10.6%n=221,1721.1×
A date on the record is outside the range of plausible years — typically a placeholder such as 2999-12-31 (“never expires”) or 1753-01-01 (a system-minimum start date).
Medicare Advantage: 23,484 of 205,454
address › period › startPractitioner.address.period.startwarning sub-field of an optional element<0.1%n=221,1721.1×
A date on the record is outside the range of plausible years — typically a placeholder such as 2999-12-31 (“never expires”) or 1753-01-01 (a system-minimum start date).
Medicare Advantage: 23 of 205,454 Medicaid: 1 of 15,718
qualificationPractitioner.qualificationerror must-support<0.1%n=221,1723.0×
A required component is missing (for example a geolocation extension without its latitude/longitude parts).
Medicare Advantage: 16 of 205,454
identifier (spans 2 profile slices — the failing rule is identified by its code set in the drill-down)Practitioner.identifiererror mixed slices<0.1%n=221,1721.0×
The practitioner record fails a US Core rule on name/period consistency.
Medicare Advantage: 14 of 205,454
identifier (spans 2 profile slices — the failing rule is identified by its code set in the drill-down)Practitioner.identifiererror mixed slices<0.1%n=221,1721.0×
The practitioner record fails a US Core naming rule.
Medicare Advantage: 8 of 205,454
qualification › extension › extension (spans 3 profile slices — the failing rule is identified by its code set in the drill-down)Practitioner.qualification.extension.extensionerror mixed slices<0.1%n=221,1721.0×
A required component is missing (for example a geolocation extension without its latitude/longitude parts).
Medicare Advantage: 6 of 205,454
qualification › extension › extension (spans 3 profile slices — the failing rule is identified by its code set in the drill-down)Practitioner.qualification.extension.extensionerror mixed slices<0.1%n=221,1721.0×
An extension carries both a direct value and sub-extensions, which FHIR does not allow.
Medicare Advantage: 6 of 205,454
Partial Practitioner required code sets 19.8%n=221,172 43,744 of 221,172 records

A coded field carries a value outside the code set the profile requires for that field. Only codes from that set are valid there.

Rate by source

source / line of businessrecords affected
Medicare Advantage21.3%n=205,454
Medicaid0 of 15,718 records

Which code sets fail

The failing code set names the exact profile rule even where one element row above spans several profile slices.

code setrecords affected by source
http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state19.8%n=221,172Medicare Advantage: 43,744 of 205,454

Constituent findings

elementseverity / requirement records affectedrepeats per record
qualification › extension › extension › value (spans 2 profile slices — the failing rule is identified by its code set in the drill-down)Practitioner.qualification.extension.extension.value[x]error required element19.8%n=221,1721.1×
None of the codes provided are in the code set the profile requires for this field.
Medicare Advantage: 43,744 of 205,454
Partial PractitionerRole required code sets 14.7%n=96,027 14,092 of 96,027 records

A coded field carries a value outside the code set the profile requires for that field. Only codes from that set are valid there.

Rate by source

source / line of businessrecords affected
Medicare Advantage30.9%n=45,616
Medicaid<0.1%n=50,411

Which code sets fail

The failing code set names the exact profile rule even where one element row above spans several profile slices.

code setrecords affected by source
http://hl7.org/fhir/us/core/ValueSet/us-core-usps-state14.7%n=96,027Medicare Advantage: 14,088 of 45,616
http://hl7.org/fhir/us/davinci-pdex-plan-net/ValueSet/IndividualAndGroupSpecialtiesVS<0.1%n=96,027Medicaid: 4 of 50,411

Constituent findings

elementseverity / requirement records affectedrepeats per record
qualification › whereValid › value (slice identified by its failing code set)PractitionerRole.extension.extension.value[x]error required element14.7%n=96,027501.3×
None of the codes provided are in the code set the profile requires for this field.
Medicare Advantage: 14,088 of 45,616
specialtyPractitionerRole.specialtyerror must-support<0.1%n=96,0271.0×
The code provided is not in the code set the profile requires for this field.
Medicaid: 4 of 50,411
Partial PractitionerRole structural conformance 13.6%n=96,027 13,102 of 96,027 records

The record breaks a rule the applicable profile states directly: a required element is missing, a value the profile fixes is different, or a structural invariant fails. These are the defects a directory consumer hits first.

Rate by source

source / line of businessrecords affected
Medicare Advantage28.7%n=45,616
Medicaid<0.1%n=50,411

Constituent findings

elementseverity / requirement records affectedrepeats per record
extension › extension › value › end (inside the profile's extension family — the message text names the failing item)PractitionerRole.extension.extension.value[x].endwarning sub-field of a required element13.6%n=96,0271.0×
A date on the record is outside the range of plausible years — typically a placeholder such as 2999-12-31 (“never expires”) or 1753-01-01 (a system-minimum start date).
Medicare Advantage: 13,055 of 45,616
the PractitionerRole record as a wholePractitionerRoleerror whole record<0.1%n=96,0271.0×
The role record has neither its own contact information nor a reference to a location that has it — a consumer cannot contact this provider.
Medicare Advantage: 86 of 45,616 Medicaid: 10 of 50,411
Partial Organization structural conformance 7.5%n=1,862,241 140,339 of 1,862,241 records

The record breaks a rule the applicable profile states directly: a required element is missing, a value the profile fixes is different, or a structural invariant fails. These are the defects a directory consumer hits first.

Rate by source

source / line of businessrecords affected
Medicare Advantage9.5%n=218,574
Medicaid42.5%n=267,236
Other (ODS)0.4%n=1,376,431

Constituent findings

elementseverity / requirement records affectedrepeats per record
the Organization record as a wholeOrganizationerror whole record7.0%n=1,862,2411.0×
A required component is missing (for example a geolocation extension without its latitude/longitude parts).
Medicare Advantage: 10,329 of 218,574 Medicaid: 113,599 of 267,236 Other (ODS): 5,901 of 1,376,431
activeOrganization.activeerror required element0.3%n=1,862,2411.0×
The record carries a value the profile fixes to something else — for example active = false where the profile fixes active = true, or an inactive qualification status where the profile fixes it active: the publisher ships records it has itself marked inactive.
Medicare Advantage: 5,177 of 218,574
addressOrganization.addresserror mixed slices0.3%n=1,862,2415.7×
The record carries a property that does not exist in FHIR R4 at that position (for example “geolocation” written as a plain property instead of the geolocation extension).
Medicare Advantage: 4,908 of 218,574
identifier (spans 4 profile slices — the failing rule is identified by its code set in the drill-down)Organization.identifiererror mixed slices<0.1%n=1,862,2411.0×
The organization record fails a US Core rule on name/period consistency.
Medicare Advantage: 372 of 218,574
address › textOrganization.address.textwarning mixed slices<0.1%n=1,862,2411.1×
A text value starts or ends with stray whitespace (e.g. a name stored with a trailing space).
Medicare Advantage: 211 of 218,574 Medicaid: 51 of 267,236 Other (ODS): 5 of 1,376,431
identifier (spans 4 profile slices — the failing rule is identified by its code set in the drill-down)Organization.identifiererror mixed slices<0.1%n=1,862,2411.0×
The organization record fails a US Core naming rule (a proper name value is required).
Medicare Advantage: 210 of 218,574
address › extension (spans 2 profile slices — the failing rule is identified by its code set in the drill-down)Organization.address.extensionerror mixed slices<0.1%n=1,862,2414.6×
A required, specifically-typed component is missing from a structure that demands it.
Medicare Advantage: 156 of 218,574
address › extension (spans 2 profile slices — the failing rule is identified by its code set in the drill-down)Organization.address.extensionerror mixed slices<0.1%n=1,862,2411.2×
An extension carries both a direct value and sub-extensions, which FHIR does not allow.
Medicare Advantage: 156 of 218,574
address › extension (spans 2 profile slices — the failing rule is identified by its code set in the drill-down)Organization.address.extensionerror mixed slices<0.1%n=1,862,2411.2×
A required component is missing (for example a geolocation extension without its latitude/longitude parts).
Medicare Advantage: 156 of 218,574
nameOrganization.namewarning required element<0.1%n=1,862,2411.0×
A text value starts or ends with stray whitespace (e.g. a name stored with a trailing space).
Medicaid: 14 of 267,236 Other (ODS): 29 of 1,376,431
Partial Location required code sets 0.3%n=915,339 3,124 of 915,339 records

A coded field carries a value outside the code set the profile requires for that field. Only codes from that set are valid there.

Rate by source

source / line of businessrecords affected
Medicare Advantage0 of 605,951 records
Medicaid1.0%n=309,388

Which code sets fail

The failing code set names the exact profile rule even where one element row above spans several profile slices.

code setrecords affected by source
http://hl7.org/fhir/ValueSet/contact-point-system0.3%n=915,339Medicaid: 3,124 of 309,388
value set not named in the message0.3%n=915,339Medicaid: 3,124 of 309,388

Constituent findings

elementseverity / requirement records affectedrepeats per record
telecom › systemLocation.telecom.systemerror must-support0.3%n=915,3391.0×
The value could not be matched to any code system for this field.
Medicaid: 3,124 of 309,388
telecom › systemLocation.telecom.systemerror must-support0.3%n=915,3391.0×
The value is not a valid code for this field (for example “website” is not a valid contact-point type).
Medicaid: 3,124 of 309,388
Isolated Location structural conformance 0.1%n=915,339 1,330 of 915,339 records

The record breaks a rule the applicable profile states directly: a required element is missing, a value the profile fixes is different, or a structural invariant fails. These are the defects a directory consumer hits first.

Rate by source

source / line of businessrecords affected
Medicare Advantage0.2%n=605,951
Medicaid0 of 309,388 records

Constituent findings

elementseverity / requirement records affectedrepeats per record
address › lineLocation.address.linewarning must-support0.1%n=915,3391.0×
A text value starts or ends with stray whitespace (e.g. a name stored with a trailing space).
Medicare Advantage: 1,330 of 605,951

Environment & advisory observations (not graded, excluded from all rates above)

These describe the validation environment or the publisher's tooling rather than directory data quality; they are listed so nothing is silently dropped.

Organization advisory practices all 1,862,241 records

Advisory findings from HL7's best-practice checks — here, entirely the absence of a human-readable narrative block. Machine consumers are unaffected.

Rate by source

source / line of businessrecords affected
Medicare Advantageall 218,574 records
Medicaidall 267,236 records
Other (ODS)all 1,376,431 records

Constituent findings

elementseverity / requirement records affectedrepeats per record
the Organization record as a wholeOrganizationwarning whole recordall 1,862,241 records1.0×
The record has no human-readable narrative text.
Medicare Advantage: 218,574 of 218,574 Medicaid: 267,236 of 267,236 Other (ODS): 1,376,431 of 1,376,431
Organization publisher infrastructure all 1,862,241 records

The publisher attaches its own internal metadata extension (a record-creation timestamp) to every record without publishing its definition. Harmless to directory use, but it is on 100% of records by construction, which is why it is reported separately instead of inside any quality rate.

Rate by source

source / line of businessrecords affected
Medicare Advantageall 218,574 records
Medicaidall 267,236 records
Other (ODS)all 1,376,431 records

Extension URLs involved

extension URLrecords affected occurrences
ex:createdAtall 1,862,241 records1,862,241

Constituent findings

elementseverity / requirement records affectedrepeats per record
meta › extension (inside the profile's extension family — the message text names the failing item)Organization.meta.extensionerror sub-field of an optional elementall 1,862,241 records1.0×
The record carries a custom extension whose definition is not published, so its meaning cannot be verified.
Medicare Advantage: 218,574 of 218,574 Medicaid: 267,236 of 267,236 Other (ODS): 1,376,431 of 1,376,431
Organization code-system version stamping all 1,862,241 records

The records mechanically stamp version “4.0.1” — the FHIR specification's own version number — onto every code system they cite (provider taxonomies, organization types, …). The codes themselves may be fine, but they claim a version that does not exist, so version-aware consumers cannot validate them. One mechanical publishing defect, repeated on nearly every record.

Rate by source

source / line of businessrecords affected
Medicare Advantageall 218,574 records
Medicaidall 267,236 records
Other (ODS)all 1,376,431 records

Constituent findings

elementseverity / requirement records affectedrepeats per record
type › coding › systemOrganization.type.coding.systemwarning sub-field of a required elementall 1,862,241 records1.2×
The record claims version “4.0.1” of a known code system; that version does not exist, so the code could not be checked at the claimed version.
Medicare Advantage: 218,574 of 218,574 Medicaid: 267,236 of 267,236 Other (ODS): 1,376,431 of 1,376,431
type › coding › versionOrganization.type.coding.versionwarning sub-field of a required elementall 1,862,241 records1.0×
The record stamps a different code-system version than the one the profile's value set is defined against.
Medicare Advantage: 218,574 of 218,574 Medicaid: 267,236 of 267,236 Other (ODS): 1,376,431 of 1,376,431
identifier › type › coding › codeOrganization.identifier.type.coding.codeerror sub-field of a must-support element0.4%n=1,862,2411.0×
The code is not present in the code-system version the record claims.
Medicare Advantage: 712 of 218,574 Medicaid: 1,040 of 267,236 Other (ODS): 5,902 of 1,376,431
Location advisory practices all 915,339 records

Advisory findings from HL7's best-practice checks — here, entirely the absence of a human-readable narrative block. Machine consumers are unaffected.

Rate by source

source / line of businessrecords affected
Medicare Advantageall 605,951 records
Medicaidall 309,388 records

Constituent findings

elementseverity / requirement records affectedrepeats per record
the Location record as a wholeLocationwarning whole recordall 915,339 records1.0×
The record has no human-readable narrative text.
Medicare Advantage: 605,951 of 605,951 Medicaid: 309,388 of 309,388
Location publisher infrastructure all 915,339 records

The publisher attaches its own internal metadata extension (a record-creation timestamp) to every record without publishing its definition. Harmless to directory use, but it is on 100% of records by construction, which is why it is reported separately instead of inside any quality rate.

Rate by source

source / line of businessrecords affected
Medicare Advantageall 605,951 records
Medicaidall 309,388 records

Extension URLs involved

extension URLrecords affected occurrences
ex:createdAtall 915,339 records915,339

Constituent findings

elementseverity / requirement records affectedrepeats per record
meta › extension (inside the profile's extension family — the message text names the failing item)Location.meta.extensionerror sub-field of an optional elementall 915,339 records1.0×
The record carries a custom extension whose definition is not published, so its meaning cannot be verified.
Medicare Advantage: 605,951 of 605,951 Medicaid: 309,388 of 309,388
Practitioner advisory practices all 221,172 records

Advisory findings from HL7's best-practice checks — here, entirely the absence of a human-readable narrative block. Machine consumers are unaffected.

Rate by source

source / line of businessrecords affected
Medicare Advantageall 205,454 records
Medicaidall 15,718 records

Constituent findings

elementseverity / requirement records affectedrepeats per record
the Practitioner record as a wholePractitionerwarning whole recordall 221,172 records1.0×
The record has no human-readable narrative text.
Medicare Advantage: 205,454 of 205,454 Medicaid: 15,718 of 15,718
Practitioner publisher infrastructure all 221,172 records

The publisher attaches its own internal metadata extension (a record-creation timestamp) to every record without publishing its definition. Harmless to directory use, but it is on 100% of records by construction, which is why it is reported separately instead of inside any quality rate.

Rate by source

source / line of businessrecords affected
Medicare Advantageall 205,454 records
Medicaidall 15,718 records

Extension URLs involved

extension URLrecords affected occurrences
ex:createdAtall 221,172 records221,172

Constituent findings

elementseverity / requirement records affectedrepeats per record
meta › extension (inside the profile's extension family — the message text names the failing item)Practitioner.meta.extensionerror sub-field of an optional elementall 221,172 records1.0×
The record carries a custom extension whose definition is not published, so its meaning cannot be verified.
Medicare Advantage: 205,454 of 205,454 Medicaid: 15,718 of 15,718
Practitioner uncheckable codes all 221,172 records

The code system named by the record is not part of the loaded validation packages, so the code could not be checked. A limitation of the validation environment, not evidence the code is wrong.

Rate by source

source / line of businessrecords affected
Medicare Advantageall 205,454 records
Medicaidall 15,718 records

Constituent findings

elementseverity / requirement records affectedrepeats per record
identifier › type › coding › systemPractitioner.identifier.type.coding.systemwarning sub-field of a must-support elementall 221,172 records1.0×
The code system named by the record is not in the loaded validation packages, so the code could not be checked.
Medicare Advantage: 205,454 of 205,454 Medicaid: 15,718 of 15,718
communication › coding › systemPractitioner.communication.coding.systemwarning sub-field of an optional element4.4%n=221,1721.0×
The code system named by the record is not in the loaded validation packages, so the code could not be checked.
Medicare Advantage: 9,680 of 205,454
PractitionerRole advisory practices all 96,027 records

Advisory findings from HL7's best-practice checks — here, entirely the absence of a human-readable narrative block. Machine consumers are unaffected.

Rate by source

source / line of businessrecords affected
Medicare Advantageall 45,616 records
Medicaidall 50,411 records

Constituent findings

elementseverity / requirement records affectedrepeats per record
the PractitionerRole record as a wholePractitionerRolewarning whole recordall 96,027 records1.0×
The record has no human-readable narrative text.
Medicare Advantage: 45,616 of 45,616 Medicaid: 50,411 of 50,411
PractitionerRole publisher infrastructure all 96,027 records

The publisher attaches its own internal metadata extension (a record-creation timestamp) to every record without publishing its definition. Harmless to directory use, but it is on 100% of records by construction, which is why it is reported separately instead of inside any quality rate.

Rate by source

source / line of businessrecords affected
Medicare Advantageall 45,616 records
Medicaidall 50,411 records

Extension URLs involved

extension URLrecords affected occurrences
ex:createdAtall 96,027 records96,027

Constituent findings

elementseverity / requirement records affectedrepeats per record
meta › extension (inside the profile's extension family — the message text names the failing item)PractitionerRole.meta.extensionerror sub-field of an optional elementall 96,027 records1.0×
The record carries a custom extension whose definition is not published, so its meaning cannot be verified.
Medicare Advantage: 45,616 of 45,616 Medicaid: 50,411 of 50,411
HealthcareService advisory practices all 38,198 records

Advisory findings from HL7's best-practice checks — here, entirely the absence of a human-readable narrative block. Machine consumers are unaffected.

Rate by source

source / line of businessrecords affected
Medicare Advantageall 9,119 records
Medicaidall 29,079 records

Constituent findings

elementseverity / requirement records affectedrepeats per record
the HealthcareService record as a wholeHealthcareServicewarning whole recordall 38,198 records1.0×
The record has no human-readable narrative text.
Medicare Advantage: 9,119 of 9,119 Medicaid: 29,079 of 29,079
HealthcareService publisher infrastructure all 38,198 records

The publisher attaches its own internal metadata extension (a record-creation timestamp) to every record without publishing its definition. Harmless to directory use, but it is on 100% of records by construction, which is why it is reported separately instead of inside any quality rate.

Rate by source

source / line of businessrecords affected
Medicare Advantageall 9,119 records
Medicaidall 29,079 records

Extension URLs involved

extension URLrecords affected occurrences
ex:createdAtall 38,198 records38,198

Constituent findings

elementseverity / requirement records affectedrepeats per record
meta › extension (inside the profile's extension family — the message text names the failing item)HealthcareService.meta.extensionerror sub-field of an optional elementall 38,198 records1.0×
The record carries a custom extension whose definition is not published, so its meaning cannot be verified.
Medicare Advantage: 9,119 of 9,119 Medicaid: 29,079 of 29,079
HealthcareService code-system version stamping all 38,198 records

The records mechanically stamp version “4.0.1” — the FHIR specification's own version number — onto every code system they cite (provider taxonomies, organization types, …). The codes themselves may be fine, but they claim a version that does not exist, so version-aware consumers cannot validate them. One mechanical publishing defect, repeated on nearly every record.

Rate by source

source / line of businessrecords affected
Medicare Advantageall 9,119 records
Medicaidall 29,079 records

Constituent findings

elementseverity / requirement records affectedrepeats per record
category › coding › systemHealthcareService.category.coding.systemwarning sub-field of a mixed-class elementall 38,198 records1.0×
The record claims version “4.0.1” of a known code system; that version does not exist, so the code could not be checked at the claimed version.
Medicare Advantage: 9,119 of 9,119 Medicaid: 29,079 of 29,079
extension › extension › value › coding › version (inside the profile's extension family — the message text names the failing item)HealthcareService.extension.extension.value[x].coding.versionwarning sub-field of a required element76.1%n=38,1981.0×
The record stamps a different code-system version than the one the profile's value set is defined against.
Medicaid: 29,079 of 29,079
extension › extension › value › coding › system (inside the profile's extension family — the message text names the failing item)HealthcareService.extension.extension.value[x].coding.systemerror sub-field of a required element76.1%n=38,1981.0×
The record claims version “4.0.1” of a known code system; that version does not exist, so the code could not be checked at the claimed version.
Medicaid: 29,079 of 29,079
specialty › coding › systemHealthcareService.specialty.coding.systemwarning sub-field of a must-support element61.1%n=38,1981.2×
The record claims version “4.0.1” of a code system that has no such version (no version of it is in the validation packages), so the code could not be checked.
Medicare Advantage: 4,322 of 9,119 Medicaid: 19,013 of 29,079
extension › extension › value › coding › system (inside the profile's extension family — the message text names the failing item)HealthcareService.extension.extension.value[x].coding.systemwarning sub-field of a required element2.9%n=38,1981.0×
The record claims version “4.0.1” of a known code system; that version does not exist, so the code could not be checked at the claimed version.
Medicaid: 1,098 of 29,079
Network advisory practices all 36 records

Advisory findings from HL7's best-practice checks — here, entirely the absence of a human-readable narrative block. Machine consumers are unaffected.

Rate by source

source / line of businessrecords affected
Medicare Advantageall 36 records

Constituent findings

elementseverity / requirement records affectedrepeats per record
the Network record as a wholeOrganizationwarning whole recordall 36 records1.0×
The record has no human-readable narrative text.
Medicare Advantage: 36 of 36
Network publisher infrastructure all 36 records

The publisher attaches its own internal metadata extension (a record-creation timestamp) to every record without publishing its definition. Harmless to directory use, but it is on 100% of records by construction, which is why it is reported separately instead of inside any quality rate.

Rate by source

source / line of businessrecords affected
Medicare Advantageall 36 records

Extension URLs involved

extension URLrecords affected occurrences
ex:createdAtall 36 records36

Constituent findings

elementseverity / requirement records affectedrepeats per record
meta › extension (inside the profile's extension family — the message text names the failing item)Organization.meta.extensionerror sub-field of an optional elementall 36 records1.0×
The record carries a custom extension whose definition is not published, so its meaning cannot be verified.
Medicare Advantage: 36 of 36
Network code-system version stamping all 36 records

The records mechanically stamp version “4.0.1” — the FHIR specification's own version number — onto every code system they cite (provider taxonomies, organization types, …). The codes themselves may be fine, but they claim a version that does not exist, so version-aware consumers cannot validate them. One mechanical publishing defect, repeated on nearly every record.

Rate by source

source / line of businessrecords affected
Medicare Advantageall 36 records

Constituent findings

elementseverity / requirement records affectedrepeats per record
type › coding › versionOrganization.type.coding.versionwarning sub-field of a required elementall 36 records1.0×
The record stamps a different code-system version than the one the profile's value set is defined against.
Medicare Advantage: 36 of 36
type › coding › systemOrganization.type.coding.systemerror sub-field of a required elementall 36 records1.0×
The record claims version “4.0.1” of a known code system; that version does not exist, so the code could not be checked at the claimed version.
Medicare Advantage: 36 of 36
InsurancePlan advisory practices 1 of 1 records

Advisory findings from HL7's best-practice checks — here, entirely the absence of a human-readable narrative block. Machine consumers are unaffected.

Rate by source

source / line of businessrecords affected
Medicare Advantage1 of 1 records

Constituent findings

elementseverity / requirement records affectedrepeats per record
the InsurancePlan record as a wholeInsurancePlanwarning whole record1 of 1 records1.0×
The record has no human-readable narrative text.
Medicare Advantage: 1 of 1
InsurancePlan publisher infrastructure 1 of 1 records

The publisher attaches its own internal metadata extension (a record-creation timestamp) to every record without publishing its definition. Harmless to directory use, but it is on 100% of records by construction, which is why it is reported separately instead of inside any quality rate.

Rate by source

source / line of businessrecords affected
Medicare Advantage1 of 1 records

Extension URLs involved

extension URLrecords affected occurrences
ex:createdAt1 of 1 records1

Constituent findings

elementseverity / requirement records affectedrepeats per record
meta › extension (inside the profile's extension family — the message text names the failing item)InsurancePlan.meta.extensionerror sub-field of an optional element1 of 1 records1.0×
The record carries a custom extension whose definition is not published, so its meaning cannot be verified.
Medicare Advantage: 1 of 1
PractitionerRole code-system version stamping 99.2%n=96,027 95,258 of 96,027 records

The records mechanically stamp version “4.0.1” — the FHIR specification's own version number — onto every code system they cite (provider taxonomies, organization types, …). The codes themselves may be fine, but they claim a version that does not exist, so version-aware consumers cannot validate them. One mechanical publishing defect, repeated on nearly every record.

Rate by source

source / line of businessrecords affected
Medicare Advantageall 45,616 records
Medicaid98.5%n=50,411

Constituent findings

elementseverity / requirement records affectedrepeats per record
specialty › coding › systemPractitionerRole.specialty.coding.systemwarning sub-field of a must-support element98.9%n=96,0271.5×
The record claims version “4.0.1” of a code system that has no such version (no version of it is in the validation packages), so the code could not be checked.
Medicare Advantage: 45,616 of 45,616 Medicaid: 49,357 of 50,411
extension › extension › value › coding › version (inside the profile's extension family — the message text names the failing item)PractitionerRole.extension.extension.value[x].coding.versionwarning sub-field of a required element30.6%n=96,0278.6×
The record stamps a different code-system version than the one the profile's value set is defined against.
Medicare Advantage: 29,350 of 45,616
extension › extension › value › coding › system (inside the profile's extension family — the message text names the failing item)PractitionerRole.extension.extension.value[x].coding.systemerror sub-field of a required element30.6%n=96,0278.6×
The record claims version “4.0.1” of a known code system; that version does not exist, so the code could not be checked at the claimed version.
Medicare Advantage: 29,350 of 45,616
code › coding › versionPractitionerRole.code.coding.versionwarning sub-field of a must-support element19.6%n=96,0271.0×
The record stamps a different code-system version than the one the profile's value set is defined against.
Medicaid: 18,862 of 50,411
code › coding › systemPractitionerRole.code.coding.systemerror sub-field of a must-support element19.6%n=96,0271.0×
The record claims version “4.0.1” of a known code system; that version does not exist, so the code could not be checked at the claimed version.
Medicaid: 18,819 of 50,411
extension › extension › value › coding › system (inside the profile's extension family — the message text names the failing item)PractitionerRole.extension.extension.value[x].coding.systemwarning sub-field of a required element14.7%n=96,027501.3×
The record claims version “4.0.1” of a code system that has no such version (no version of it is in the validation packages), so the code could not be checked.
Medicare Advantage: 14,088 of 45,616
Organization uncheckable codes 95.3%n=1,862,241 1,774,701 of 1,862,241 records

The code system named by the record is not part of the loaded validation packages, so the code could not be checked. A limitation of the validation environment, not evidence the code is wrong.

Rate by source

source / line of businessrecords affected
Medicare Advantage76.5%n=218,574
Medicaid88.7%n=267,236
Other (ODS)99.6%n=1,376,431

Constituent findings

elementseverity / requirement records affectedrepeats per record
identifier › type › coding › systemOrganization.identifier.type.coding.systemwarning sub-field of a must-support element95.3%n=1,862,2411.0×
The code system named by the record is not in the loaded validation packages, so the code could not be checked.
Medicare Advantage: 167,175 of 218,574 Medicaid: 236,997 of 267,236 Other (ODS): 1,370,529 of 1,376,431
Practitioner code-system version stamping 50.6%n=221,172 111,936 of 221,172 records

The records mechanically stamp version “4.0.1” — the FHIR specification's own version number — onto every code system they cite (provider taxonomies, organization types, …). The codes themselves may be fine, but they claim a version that does not exist, so version-aware consumers cannot validate them. One mechanical publishing defect, repeated on nearly every record.

Rate by source

source / line of businessrecords affected
Medicare Advantage46.8%n=205,454
Medicaid>99.9%n=15,718

Constituent findings

elementseverity / requirement records affectedrepeats per record
qualification › code › coding › systemPractitioner.qualification.code.coding.systemwarning sub-field of a required element48.9%n=221,1721.4×
The record claims version “4.0.1” of a code system that has no such version (no version of it is in the validation packages), so the code could not be checked.
Medicare Advantage: 95,352 of 205,454 Medicaid: 12,889 of 15,718
qualification › extension › extension › value › coding › system (inside the profile's extension family — the message text names the failing item)Practitioner.qualification.extension.extension.value[x].coding.systemwarning sub-field of a required element19.8%n=221,1721.1×
The record claims version “4.0.1” of a code system that has no such version (no version of it is in the validation packages), so the code could not be checked.
Medicare Advantage: 43,744 of 205,454
communication › coding › codePractitioner.communication.coding.codeerror sub-field of an optional element7.0%n=221,1721.0×
The code is not present in the code-system version the record claims.
Medicaid: 15,583 of 15,718
communication › coding › systemPractitioner.communication.coding.systemwarning sub-field of an optional element6.1%n=221,1721.3×
The record claims version “4.0.1” of a known code system; that version does not exist, so the code could not be checked at the claimed version.
Medicare Advantage: 13,590 of 205,454 Medicaid: 2 of 15,718
communication › coding › versionPractitioner.communication.coding.versionwarning sub-field of an optional element1.8%n=221,1721.0×
The record stamps a different code-system version than the one the profile's value set is defined against.
Medicare Advantage: 3,910 of 205,454 Medicaid: 2 of 15,718
Network validator limitation 22.2%n=36 8 of 36 records

The validator's own machinery failed (pattern-check timeouts). These are not data defects and are excluded from every data-quality rate; they are counted here for completeness.

Rate by source

source / line of businessrecords affected
Medicare Advantage22.2%n=36

Constituent findings

elementseverity / requirement records affectedrepeats per record
address › extension › extension › value (inside the profile's extension family — the message text names the failing item)Organization.address.extension.extension.value[x]error sub-field of a mixed-class element8.3%n=361.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 3 of 36
address › lineOrganization.address.lineerror must-support5.6%n=361.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 2 of 36
address › cityOrganization.address.cityerror must-support5.6%n=361.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 2 of 36
address › extension › url (inside the profile's extension family — the message text names the failing item)Organization.address.extension.urlerror sub-field of a mixed-class element5.6%n=361.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 2 of 36
address › stateOrganization.address.stateerror must-support2.8%n=361.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 1 of 36
address › extension › extension › url (inside the profile's extension family — the message text names the failing item)Organization.address.extension.extension.urlerror sub-field of a mixed-class element2.8%n=361.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 1 of 36
address › countryOrganization.address.countryerror must-support2.8%n=361.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 1 of 36
address › textOrganization.address.texterror mixed slices2.8%n=361.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 1 of 36
address › typeOrganization.address.typeerror mixed slices2.8%n=361.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 1 of 36
PractitionerRole uncheckable codes 16.9%n=96,027 16,261 of 96,027 records

The code system named by the record is not part of the loaded validation packages, so the code could not be checked. A limitation of the validation environment, not evidence the code is wrong.

Rate by source

source / line of businessrecords affected
Medicare Advantage35.6%n=45,616
Medicaid0 of 50,411 records

Constituent findings

elementseverity / requirement records affectedrepeats per record
extension › extension › value › coding › system (inside the profile's extension family — the message text names the failing item)PractitionerRole.extension.extension.value[x].coding.systemwarning sub-field of a required element16.9%n=96,0271.0×
The code system named by the record is not in the loaded validation packages, so the code could not be checked.
Medicare Advantage: 16,261 of 45,616
PractitionerRole validator limitation 3.5%n=96,027 3,358 of 96,027 records

The validator's own machinery failed (pattern-check timeouts). These are not data defects and are excluded from every data-quality rate; they are counted here for completeness.

Rate by source

source / line of businessrecords affected
Medicare Advantage7.3%n=45,616
Medicaid<0.1%n=50,411

Constituent findings

elementseverity / requirement records affectedrepeats per record
extension › extension › value › coding › code (inside the profile's extension family — the message text names the failing item)PractitionerRole.extension.extension.value[x].coding.codeerror sub-field of a required element1.3%n=96,0271.3×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 1,247 of 45,616
extension › extension › value › coding › display (inside the profile's extension family — the message text names the failing item)PractitionerRole.extension.extension.value[x].coding.displayerror sub-field of a required element1.3%n=96,0271.2×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 1,237 of 45,616
extension › extension › value › coding › version (inside the profile's extension family — the message text names the failing item)PractitionerRole.extension.extension.value[x].coding.versionerror sub-field of a required element0.9%n=96,0271.1×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 826 of 45,616
extension › extension › url (spans 6 profile slices — the failing rule is identified by its code set in the drill-down)PractitionerRole.extension.extension.urlerror required element0.3%n=96,0271.2×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 304 of 45,616
extension › extension › value › coding › system (inside the profile's extension family — the message text names the failing item)PractitionerRole.extension.extension.value[x].coding.systemerror sub-field of a required element0.2%n=96,0271.4×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 156 of 45,616
qualification › urlPractitionerRole.extension.urlerror required element<0.1%n=96,0271.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 84 of 45,616
extension › extension › value › reference (inside the profile's extension family — the message text names the failing item)PractitionerRole.extension.extension.value[x].referenceerror sub-field of a required element<0.1%n=96,0271.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 32 of 45,616
telecom › valuePractitionerRole.telecom.valueerror required element<0.1%n=96,0271.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 30 of 45,616 Medicaid: 1 of 50,411
specialty › coding › codePractitionerRole.specialty.coding.codeerror sub-field of a must-support element<0.1%n=96,0271.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 17 of 45,616 Medicaid: 4 of 50,411
specialty › coding › displayPractitionerRole.specialty.coding.displayerror sub-field of a must-support element<0.1%n=96,0271.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 16 of 45,616 Medicaid: 1 of 50,411
meta › profilePractitionerRole.meta.profileerror sub-field of an optional element<0.1%n=96,0271.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 13 of 45,616 Medicaid: 4 of 50,411
specialty › coding › versionPractitionerRole.specialty.coding.versionerror sub-field of a must-support element<0.1%n=96,0271.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 12 of 45,616
specialty › textPractitionerRole.specialty.texterror sub-field of a must-support element<0.1%n=96,0271.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 7 of 45,616 Medicaid: 3 of 50,411
telecom › systemPractitionerRole.telecom.systemerror required element<0.1%n=96,0271.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 8 of 45,616 Medicaid: 1 of 50,411
location › referencePractitionerRole.location.referenceerror sub-field of a must-support element<0.1%n=96,0271.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 8 of 45,616 Medicaid: 1 of 50,411
period › startPractitionerRole.period.starterror sub-field of a must-support element<0.1%n=96,0271.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 5 of 45,616 Medicaid: 4 of 50,411
location › typePractitionerRole.location.typeerror sub-field of a must-support element<0.1%n=96,0271.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 4 of 45,616 Medicaid: 1 of 50,411
meta › sourcePractitionerRole.meta.sourceerror sub-field of an optional element<0.1%n=96,0271.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 3 of 45,616 Medicaid: 1 of 50,411
activePractitionerRole.activeerror required element<0.1%n=96,0271.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 4 of 45,616
extension › extension › value › start (inside the profile's extension family — the message text names the failing item)PractitionerRole.extension.extension.value[x].starterror sub-field of a required element<0.1%n=96,0271.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 4 of 45,616

13 smaller findings in this cell are in the accompanying dataset.

Location code-system version stamping 2.5%n=915,339 23,285 of 915,339 records

The records mechanically stamp version “4.0.1” — the FHIR specification's own version number — onto every code system they cite (provider taxonomies, organization types, …). The codes themselves may be fine, but they claim a version that does not exist, so version-aware consumers cannot validate them. One mechanical publishing defect, repeated on nearly every record.

Rate by source

source / line of businessrecords affected
Medicare Advantage1.4%n=605,951
Medicaid4.7%n=309,388

Constituent findings

elementseverity / requirement records affectedrepeats per record
extension › extension › value › coding › system (inside the profile's extension family — the message text names the failing item)Location.extension.extension.value[x].coding.systemerror sub-field of a required element1.6%n=915,3391.0×
The record claims version “4.0.1” of a known code system; that version does not exist, so the code could not be checked at the claimed version.
Medicaid: 14,531 of 309,388
extension › extension › value › coding › version (inside the profile's extension family — the message text names the failing item)Location.extension.extension.value[x].coding.versionwarning sub-field of a required element1.6%n=915,3391.0×
The record stamps a different code-system version than the one the profile's value set is defined against.
Medicaid: 14,531 of 309,388
type › coding › versionLocation.type.coding.versionwarning sub-field of a must-support element1.0%n=915,3393.0×
The record stamps a different code-system version than the one the profile's value set is defined against.
Medicare Advantage: 8,754 of 605,951
type › coding › systemLocation.type.coding.systemwarning sub-field of a must-support element1.0%n=915,3391.0×
The record claims version “4.0.1” of a known code system; that version does not exist, so the code could not be checked at the claimed version.
Medicare Advantage: 8,754 of 605,951
extension › value › coding › system (inside the profile's extension family — the message text names the failing item)Location.extension.value[x].coding.systemwarning sub-field of a mixed-class element0.2%n=915,3394.8×
The record claims version “4.0.1” of a known code system; that version does not exist, so the code could not be checked at the claimed version.
Medicaid: 1,869 of 309,388
extension › value › coding › version (inside the profile's extension family — the message text names the failing item)Location.extension.value[x].coding.versionwarning sub-field of a mixed-class element0.2%n=915,3394.8×
The record stamps a different code-system version than the one the profile's value set is defined against.
Medicaid: 1,869 of 309,388
Organization validator limitation <0.1%n=1,862,241 166 of 1,862,241 records

The validator's own machinery failed (pattern-check timeouts). These are not data defects and are excluded from every data-quality rate; they are counted here for completeness.

Rate by source

source / line of businessrecords affected
Medicare Advantage<0.1%n=218,574
Medicaid<0.1%n=267,236
Other (ODS)<0.1%n=1,376,431

Constituent findings

elementseverity / requirement records affectedrepeats per record
address › lineOrganization.address.lineerror must-support<0.1%n=1,862,2411.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 11 of 218,574 Medicaid: 5 of 267,236 Other (ODS): 9 of 1,376,431
identifier › type › coding › codeOrganization.identifier.type.coding.codeerror sub-field of a must-support element<0.1%n=1,862,2411.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 2 of 218,574 Medicaid: 4 of 267,236 Other (ODS): 14 of 1,376,431
address › postalCodeOrganization.address.postalCodeerror must-support<0.1%n=1,862,2411.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 8 of 218,574 Other (ODS): 5 of 1,376,431
telecom › valueOrganization.telecom.valueerror must-support<0.1%n=1,862,2411.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 8 of 218,574 Medicaid: 2 of 267,236 Other (ODS): 2 of 1,376,431
address › extension › extension › value (inside the profile's extension family — the message text names the failing item)Organization.address.extension.extension.value[x]error sub-field of a mixed-class element<0.1%n=1,862,2411.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 11 of 218,574
identifier › valueOrganization.identifier.valueerror must-support<0.1%n=1,862,2411.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 2 of 218,574 Medicaid: 2 of 267,236 Other (ODS): 6 of 1,376,431
address › stateOrganization.address.stateerror must-support<0.1%n=1,862,2411.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 3 of 218,574 Medicaid: 3 of 267,236 Other (ODS): 4 of 1,376,431
address › cityOrganization.address.cityerror must-support<0.1%n=1,862,2411.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 5 of 218,574 Other (ODS): 4 of 1,376,431
address › countryOrganization.address.countryerror must-support<0.1%n=1,862,2411.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 6 of 218,574 Other (ODS): 3 of 1,376,431
type › coding › displayOrganization.type.coding.displayerror sub-field of a required element<0.1%n=1,862,2411.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 3 of 218,574 Other (ODS): 4 of 1,376,431
address › textOrganization.address.texterror mixed slices<0.1%n=1,862,2411.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 1 of 218,574 Medicaid: 2 of 267,236 Other (ODS): 3 of 1,376,431
meta › profileOrganization.meta.profileerror sub-field of an optional element<0.1%n=1,862,2411.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 1 of 218,574 Medicaid: 1 of 267,236 Other (ODS): 4 of 1,376,431
type › coding › codeOrganization.type.coding.codeerror sub-field of a required element<0.1%n=1,862,2411.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 2 of 218,574 Medicaid: 1 of 267,236 Other (ODS): 2 of 1,376,431
address › useOrganization.address.useerror optional element<0.1%n=1,862,2411.0×
The validator's own pattern check timed out. Not a data defect.
Other (ODS): 4 of 1,376,431
address › typeOrganization.address.typeerror mixed slices<0.1%n=1,862,2411.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 1 of 218,574 Other (ODS): 3 of 1,376,431
identifier › systemOrganization.identifier.systemerror must-support<0.1%n=1,862,2411.0×
The validator's own pattern check timed out. Not a data defect.
Medicaid: 2 of 267,236 Other (ODS): 2 of 1,376,431
telecom › systemOrganization.telecom.systemerror must-support<0.1%n=1,862,2411.0×
The validator's own pattern check timed out. Not a data defect.
Other (ODS): 3 of 1,376,431
meta › extension › url (inside the profile's extension family — the message text names the failing item)Organization.meta.extension.urlerror sub-field of an optional element<0.1%n=1,862,2411.0×
The validator's own pattern check timed out. Not a data defect.
Medicaid: 1 of 267,236 Other (ODS): 1 of 1,376,431
identifier › type › coding › systemOrganization.identifier.type.coding.systemerror sub-field of a must-support element<0.1%n=1,862,2411.0×
The validator's own pattern check timed out. Not a data defect.
Other (ODS): 2 of 1,376,431
telecom › useOrganization.telecom.useerror optional element<0.1%n=1,862,2411.0×
The validator's own pattern check timed out. Not a data defect.
Medicaid: 1 of 267,236

3 smaller findings in this cell are in the accompanying dataset.

Practitioner validator limitation <0.1%n=221,172 1 of 221,172 records

The validator's own machinery failed (pattern-check timeouts). These are not data defects and are excluded from every data-quality rate; they are counted here for completeness.

Rate by source

source / line of businessrecords affected
Medicare Advantage<0.1%n=205,454
Medicaid0 of 15,718 records

Constituent findings

elementseverity / requirement records affectedrepeats per record
address › period › startPractitioner.address.period.starterror sub-field of an optional element<0.1%n=221,1721.0×
The validator's own pattern check timed out. Not a data defect.
Medicare Advantage: 1 of 205,454

C. Completeness — are the promised elements populated?

a validator cannot see an element that is simply absent; this section comes from a separate element-population audit of the same capture
source: a mid-size enterprise payer in the state of Arizona, subject to CMS-9115-F owing to participation in both Medicaid and Medicare Advantage planslines of business: Medicaid · Medicare Advantagedata captured 2026-08-25analysis 2026-08-29standard: Da Vinci PDex Plan-Net 1.2.0

In plain terms: a validator can only judge what is present — it says nothing about an element that is simply missing. This section closes that blind spot: for every element the profiles require or mark must-support, the audit counts how many records of that type actually populate it, per line of business. Shown below: every such element populated on fewer than 95% of records anywhere. The element-population audit ran over the same capture, per source.

HealthcareService 41 required / must-support elements populated on fewer than 95% of records
elementrequirement populated, by source
appointmentRequiredHealthcareService.appointmentRequiredmust-supportMedicare Advantage: 0 of 9,119 records Medicaid: 0 of 29,079 records
availabilityExceptionsHealthcareService.availabilityExceptionsmust-supportMedicare Advantage: 0 of 9,119 records Medicaid: 0 of 29,079 records
availableTimeHealthcareService.availableTimemust-supportMedicare Advantage: 0 of 9,119 records Medicaid: 0 of 29,079 records
availableTime › allDayHealthcareService.availableTime.allDaymust-supportMedicare Advantage: 0 of 9,119 records Medicaid: 0 of 29,079 records
availableTime › availableEndTimeHealthcareService.availableTime.availableEndTimemust-supportMedicare Advantage: 0 of 9,119 records Medicaid: 0 of 29,079 records
availableTime › availableStartTimeHealthcareService.availableTime.availableStartTimemust-supportMedicare Advantage: 0 of 9,119 records Medicaid: 0 of 29,079 records
availableTime › daysOfWeekHealthcareService.availableTime.daysOfWeekmust-supportMedicare Advantage: 0 of 9,119 records Medicaid: 0 of 29,079 records
commentHealthcareService.commentmust-supportMedicare Advantage: 0 of 9,119 records Medicaid: 0 of 29,079 records
coverageAreaHealthcareService.coverageAreamust-supportMedicare Advantage: 0 of 9,119 records Medicaid: 0 of 29,079 records
endpointHealthcareService.endpointmust-supportMedicare Advantage: 0 of 9,119 records Medicaid: 0 of 29,079 records
deliverymethodHealthcareService.extension:deliverymethodmust-supportMedicare Advantage: 0 of 9,119 records Medicaid: 3.8%n=29,079
deliverymethod › typeHealthcareService.extension:deliverymethod.extension:typerequired elementMedicare Advantage: 0 of 9,119 records Medicaid: 3.8%n=29,079
deliverymethod › type › valueHealthcareService.extension:deliverymethod.extension:type.value[x]required elementMedicare Advantage: 0 of 9,119 records Medicaid: 3.8%n=29,079
deliverymethod › virtualModalitiesHealthcareService.extension:deliverymethod.extension:virtualModalitiesmust-supportMedicare Advantage: 0 of 9,119 records Medicaid: 3.8%n=29,079
deliverymethod › virtualModalities › valueHealthcareService.extension:deliverymethod.extension:virtualModalities.value[x]required elementMedicare Advantage: 0 of 9,119 records Medicaid: 3.8%n=29,079

26 further under-populated elements in the dataset.

InsurancePlan 15 required / must-support elements populated on fewer than 95% of records
elementrequirement populated, by source
aliasInsurancePlan.aliasmust-supportMedicare Advantage: 0 of 1 records
coverage › benefitInsurancePlan.coverage.benefitrequired elementMedicare Advantage: 0 of 1 records
coverage › benefit › typeInsurancePlan.coverage.benefit.typerequired elementMedicare Advantage: 0 of 1 records
coverage › typeInsurancePlan.coverage.typerequired elementMedicare Advantage: 0 of 1 records
coverageAreaInsurancePlan.coverageAreamust-supportMedicare Advantage: 0 of 1 records
endpointInsurancePlan.endpointmust-supportMedicare Advantage: 0 of 1 records
identifier › typeInsurancePlan.identifier.typemust-supportMedicare Advantage: 0 of 1 records
nameInsurancePlan.namemust-supportMedicare Advantage: 0 of 1 records
networkInsurancePlan.networkmust-supportMedicare Advantage: 0 of 1 records
periodInsurancePlan.periodmust-supportMedicare Advantage: 0 of 1 records
plan › coverageAreaInsurancePlan.plan.coverageAreamust-supportMedicare Advantage: 0 of 1 records
plan › specificCost › benefit › cost › typeInsurancePlan.plan.specificCost.benefit.cost.typerequired elementMedicare Advantage: 0 of 1 records
plan › specificCost › benefit › typeInsurancePlan.plan.specificCost.benefit.typerequired elementMedicare Advantage: 0 of 1 records
plan › specificCost › categoryInsurancePlan.plan.specificCost.categoryrequired elementMedicare Advantage: 0 of 1 records
plan › typeInsurancePlan.plan.typemust-supportMedicare Advantage: 0 of 1 records
Location 36 required / must-support elements populated on fewer than 95% of records
elementrequirement populated, by source
aliasLocation.aliasmust-supportMedicare Advantage: 0 of 605,951 records Medicaid: 0 of 309,388 records
availabilityExceptionsLocation.availabilityExceptionsmust-supportMedicare Advantage: 0 of 605,951 records Medicaid: 0 of 309,388 records
descriptionLocation.descriptionmust-supportMedicare Advantage: 0 of 605,951 records Medicaid: 0 of 309,388 records
endpointLocation.endpointmust-supportMedicare Advantage: 0 of 605,951 records Medicaid: 0 of 309,388 records
accessibilityLocation.extension:accessibilitymust-supportMedicare Advantage: 0 of 605,951 records Medicaid: 0.6%n=309,388
accessibility › valueLocation.extension:accessibility.value[x]required elementMedicare Advantage: 0 of 605,951 records Medicaid: 0.6%n=309,388
newpatientsLocation.extension:newpatientsmust-supportMedicare Advantage: 0 of 605,951 records Medicaid: 4.7%n=309,388
newpatients › acceptingPatientsLocation.extension:newpatients.extension:acceptingPatientsrequired elementMedicare Advantage: 0 of 605,951 records Medicaid: 4.7%n=309,388
newpatients › acceptingPatients › valueLocation.extension:newpatients.extension:acceptingPatients.value[x]required elementMedicare Advantage: 0 of 605,951 records Medicaid: 4.7%n=309,388
newpatients › characteristicsLocation.extension:newpatients.extension:characteristicsmust-supportMedicare Advantage: 0 of 605,951 records Medicaid: 0 of 309,388 records
newpatients › characteristics › valueLocation.extension:newpatients.extension:characteristics.value[x]required elementMedicare Advantage: 0 of 605,951 records Medicaid: 0 of 309,388 records
newpatients › fromNetworkLocation.extension:newpatients.extension:fromNetworkmust-supportMedicare Advantage: 0 of 605,951 records Medicaid: 0 of 309,388 records
newpatients › fromNetwork › valueLocation.extension:newpatients.extension:fromNetwork.value[x]required elementMedicare Advantage: 0 of 605,951 records Medicaid: 0 of 309,388 records
regionLocation.extension:regionmust-supportMedicare Advantage: 0 of 605,951 records Medicaid: 0 of 309,388 records
hoursOfOperationLocation.hoursOfOperationmust-supportMedicare Advantage: 0 of 605,951 records Medicaid: 0 of 309,388 records

21 further under-populated elements in the dataset.

Organization 56 required / must-support elements populated on fewer than 95% of records
elementrequirement populated, by source
address › geolocationOrganization.address.extension:geolocationmust-supportMedicare Advantage: 22.8%n=218,574 Medicaid: 0 of 267,236 records Other (ODS): 0 of 1,376,431 records
contactOrganization.contactmust-supportMedicare Advantage: 0 of 218,574 records Medicaid: 0 of 267,236 records Other (ODS): 0 of 1,376,431 records
contact › nameOrganization.contact.namemust-supportMedicare Advantage: 0 of 36 records Medicaid: no signal, n=0 Other (ODS): no signal, n=0
contact › telecomOrganization.contact.telecommust-supportMedicare Advantage: 0 of 218,574 records Medicaid: 0 of 267,236 records Other (ODS): 0 of 1,376,431 records
contact › telecom › contactpoint-availabletime › allDayOrganization.contact.telecom.extension:contactpoint-availabletime.extension:allDaymust-supportMedicare Advantage: 0 of 218,574 records Medicaid: 0 of 267,236 records Other (ODS): 0 of 1,376,431 records
contact › telecom › contactpoint-availabletime › availableEndTimeOrganization.contact.telecom.extension:contactpoint-availabletime.extension:availableEndTimemust-supportMedicare Advantage: 0 of 218,574 records Medicaid: 0 of 267,236 records Other (ODS): 0 of 1,376,431 records
contact › telecom › contactpoint-availabletime › availableStartTimeOrganization.contact.telecom.extension:contactpoint-availabletime.extension:availableStartTimemust-supportMedicare Advantage: 0 of 218,574 records Medicaid: 0 of 267,236 records Other (ODS): 0 of 1,376,431 records
contact › telecom › contactpoint-availabletime › daysOfWeekOrganization.contact.telecom.extension:contactpoint-availabletime.extension:daysOfWeekmust-supportMedicare Advantage: 0 of 218,574 records Medicaid: 0 of 267,236 records Other (ODS): 0 of 1,376,431 records
contact › telecom › via-intermediary › valueOrganization.contact.telecom.extension:via-intermediary.value[x]required elementMedicare Advantage: 0 of 218,574 records Medicaid: 0 of 267,236 records Other (ODS): 0 of 1,376,431 records
contact › telecom › systemOrganization.contact.telecom.systemmust-supportMedicare Advantage: 0 of 218,574 records Medicaid: 0 of 267,236 records Other (ODS): 0 of 1,376,431 records
contact › telecom › useOrganization.contact.telecom.usemust-supportMedicare Advantage: 0 of 218,574 records Medicaid: 0 of 267,236 records Other (ODS): 0 of 1,376,431 records
contact › telecom › valueOrganization.contact.telecom.valuemust-supportMedicare Advantage: 0 of 218,574 records Medicaid: 0 of 267,236 records Other (ODS): 0 of 1,376,431 records
endpointOrganization.endpointmust-supportMedicare Advantage: 0 of 218,574 records Medicaid: 0 of 267,236 records Other (ODS): 0 of 1,376,431 records
location-referenceOrganization.extension:location-referencemust-supportMedicare Advantage: 0 of 36 records Medicaid: no signal, n=0 Other (ODS): no signal, n=0
location-reference › valueOrganization.extension:location-reference.value[x]required elementMedicare Advantage: 0 of 36 records Medicaid: no signal, n=0 Other (ODS): no signal, n=0

41 further under-populated elements in the dataset.

Practitioner 22 required / must-support elements populated on fewer than 95% of records
elementrequirement populated, by source
address › geolocationPractitioner.address.extension:geolocationmust-supportMedicare Advantage: 0 of 205,454 records Medicaid: 0 of 15,718 records
communication › communication-proficiencyPractitioner.communication.extension:communication-proficiencymust-supportMedicare Advantage: 0 of 205,454 records Medicaid: 0 of 15,718 records
communication › communication-proficiency › valuePractitioner.communication.extension:communication-proficiency.value[x]required elementMedicare Advantage: 0 of 205,454 records Medicaid: 0 of 15,718 records
qualification › practitioner-qualification › whereValidPractitioner.qualification.extension:practitioner-qualification.extension:whereValidmust-supportMedicare Advantage: 21.3%n=205,454 Medicaid: 0 of 15,718 records
qualification › practitioner-qualification › whereValid › valuePractitioner.qualification.extension:practitioner-qualification.extension:whereValid.value[x]required elementMedicare Advantage: 21.3%n=205,454 Medicaid: 0 of 15,718 records
qualification › identifierPractitioner.qualification.identifiermust-supportMedicare Advantage: 0 of 205,454 records Medicaid: 0 of 15,718 records
qualification › issuerPractitioner.qualification.issuermust-supportMedicare Advantage: 44.9%n=205,454 Medicaid: 0 of 15,718 records
qualification › periodPractitioner.qualification.periodmust-supportMedicare Advantage: 42.9%n=205,454 Medicaid: 0 of 15,718 records
telecom › contactpoint-availabletime › allDayPractitioner.telecom.extension:contactpoint-availabletime.extension:allDaymust-supportMedicare Advantage: 0 of 205,454 records Medicaid: 0 of 15,718 records
telecom › contactpoint-availabletime › availableEndTimePractitioner.telecom.extension:contactpoint-availabletime.extension:availableEndTimemust-supportMedicare Advantage: 0 of 205,454 records Medicaid: 0 of 15,718 records
telecom › contactpoint-availabletime › availableStartTimePractitioner.telecom.extension:contactpoint-availabletime.extension:availableStartTimemust-supportMedicare Advantage: 0 of 205,454 records Medicaid: 0 of 15,718 records
telecom › contactpoint-availabletime › daysOfWeekPractitioner.telecom.extension:contactpoint-availabletime.extension:daysOfWeekmust-supportMedicare Advantage: 0 of 205,454 records Medicaid: 0 of 15,718 records
telecom › via-intermediary › valuePractitioner.telecom.extension:via-intermediary.value[x]required elementMedicare Advantage: 0 of 205,454 records Medicaid: 0 of 15,718 records
communicationPractitioner.communicationmust-supportMedicare Advantage: 6.6%n=205,454 Medicaid: 99.2%n=15,718
qualification › practitioner-qualificationPractitioner.qualification.extension:practitioner-qualificationmust-supportMedicare Advantage: 23.2%n=205,454 Medicaid: 82.0%n=15,718

7 further under-populated elements in the dataset.

PractitionerRole 51 required / must-support elements populated on fewer than 95% of records
elementrequirement populated, by source
availableTimePractitionerRole.availableTimemust-supportMedicare Advantage: 0 of 45,616 records Medicaid: 0 of 50,411 records
availableTime › allDayPractitionerRole.availableTime.allDaymust-supportMedicare Advantage: 0 of 45,616 records Medicaid: 0 of 50,411 records
availableTime › availableEndTimePractitionerRole.availableTime.availableEndTimemust-supportMedicare Advantage: 0 of 45,616 records Medicaid: 0 of 50,411 records
availableTime › availableStartTimePractitionerRole.availableTime.availableStartTimemust-supportMedicare Advantage: 0 of 45,616 records Medicaid: 0 of 50,411 records
availableTime › daysOfWeekPractitionerRole.availableTime.daysOfWeekmust-supportMedicare Advantage: 0 of 45,616 records Medicaid: 0 of 50,411 records
codePractitionerRole.codemust-supportMedicare Advantage: 0 of 45,616 records Medicaid: 37.4%n=50,411
endpointPractitionerRole.endpointmust-supportMedicare Advantage: 0 of 45,616 records Medicaid: 0 of 50,411 records
network-referencePractitionerRole.extension:network-referencemust-supportMedicare Advantage: 0 of 45,616 records Medicaid: 0 of 50,411 records
network-reference › valuePractitionerRole.extension:network-reference.value[x]required elementMedicare Advantage: 0 of 45,616 records Medicaid: 0 of 50,411 records
newpatientsPractitionerRole.extension:newpatientsmust-supportMedicare Advantage: 64.3%n=45,616 Medicaid: 0 of 50,411 records
newpatients › acceptingPatientsPractitionerRole.extension:newpatients.extension:acceptingPatientsrequired elementMedicare Advantage: 64.3%n=45,616 Medicaid: 0 of 50,411 records
newpatients › acceptingPatients › valuePractitionerRole.extension:newpatients.extension:acceptingPatients.value[x]required elementMedicare Advantage: 64.3%n=45,616 Medicaid: 0 of 50,411 records
newpatients › characteristicsPractitionerRole.extension:newpatients.extension:characteristicsmust-supportMedicare Advantage: 0 of 45,616 records Medicaid: 0 of 50,411 records
newpatients › characteristics › valuePractitionerRole.extension:newpatients.extension:characteristics.value[x]required elementMedicare Advantage: 0 of 45,616 records Medicaid: 0 of 50,411 records
newpatients › fromNetworkPractitionerRole.extension:newpatients.extension:fromNetworkmust-supportMedicare Advantage: 64.3%n=45,616 Medicaid: 0 of 50,411 records

36 further under-populated elements in the dataset.

D. Required vs must-support elements

every element with findings: what the profile expects there, and how many records fall short
source: a mid-size enterprise payer in the state of Arizona, subject to CMS-9115-F owing to participation in both Medicaid and Medicare Advantage planslines of business: Medicaid · Medicare Advantagedata captured 2026-08-25analysis 2026-08-29standard: Da Vinci PDex Plan-Net 1.2.0

In plain terms: this section answers, element by element, “what should be here, and is it?” — the expected value type, how many are allowed (cardinality, e.g. 0..1 = optional single, 1..1 = exactly one required), and the code set the value must come from where one is bound.

required element = the profile demands the element itself (minimum cardinality ≥ 1). must-support = optional (0..1 or 0..*), but a conforming system must be able to populate and consume it. sub-field of a required / must-support / optional element = the message sits on a core-FHIR field inside such an element. Read those rows carefully: a “sub-field of an optional element” finding does NOT mean the optional element is missing — it means the record populated the optional parent and the content inside it is defective (e.g. the 0..1 period.end inside an optional 0..1 address period, filled with a placeholder date). Each such row states the parent's own cardinality and class in its “what the profile expects” column. whole record = the message applies to the record, not an element. base-FHIR element = no profile-enumerated element within two levels above.

Of 31,320,889 validator messages: 9,712,048 sit directly on profile-enumerated elements, 18,345,865 on sub-fields inside them, 3,262,976 apply to whole records, and 0 sit on base-FHIR elements outside the profile's reach. All groups are itemized below; nothing is dropped. Records-affected counts are exact per (element, category) row; the same record can appear in several rows.

required element 13 element rows
elementrecord type what the profile expects hereissue category records affectedmessages
activePractitioner.activePractitionertype boolean, 1..1structural conformance22.8%n=221,17250,492
qualification › extension › extension › valuePractitioner.qualification.extension.extension.value[x]Practitionertype varies by slice, 1..1, binding varies by slicerequired code sets19.8%n=221,17249,990
qualification › extension › extension › valuePractitioner.qualification.extension.extension.value[x]Practitionertype varies by slice, 1..1, binding varies by slicestructural conformance13.1%n=221,17232,942
extension › extension › valuePractitionerRole.extension.extension.value[x]PractitionerRoletype varies by slice, 1..1, binding varies by slicerequired code sets14.7%n=96,0277,062,435
activeOrganization.activeOrganizationtype boolean, 1..1structural conformance0.3%n=1,862,2415,177
extension › extension › urlPractitionerRole.extension.extension.urlPractitionerRole1..1validator limitation0.3%n=96,027363
extension › urlPractitionerRole.extension.urlPractitionerRole1..1validator limitation<0.1%n=96,02788
nameOrganization.nameOrganizationtype string, 1..1structural conformance<0.1%n=1,862,24143
telecom › valuePractitionerRole.telecom.valuePractitionerRoletype string, 1..1validator limitation<0.1%n=96,02731
telecom › systemPractitionerRole.telecom.systemPractitionerRoletype code, 1..1, required binding to contact-point-systemvalidator limitation<0.1%n=96,0279
activePractitionerRole.activePractitionerRoletype boolean, 1..1validator limitation<0.1%n=96,0274
typeInsurancePlan.typeInsurancePlan1..1, extensible binding to InsuranceProductTypeVSpreferred code sets1 of 1 records1
extension › extension › valuePractitionerRole.extension.extension.value[x]PractitionerRoletype varies by slice, 1..1, binding varies by slicevalidator limitation<0.1%n=96,0271
must-support 22 element rows
elementrecord type what the profile expects hereissue category records affectedmessages
identifier › typeOrganization.identifier.typeOrganization0..1, extensible binding to identifier-typepreferred code sets95.9%n=1,862,2411,786,308
identifier › typePractitioner.identifier.typePractitioner0..1, extensible binding to identifier-typepreferred code setsall 221,172 records442,344
name › textPractitioner.name.textPractitionertype string, 0..1structural conformance44.4%n=221,17298,188
specialtyPractitionerRole.specialtyPractitionerRole0..*, required binding to IndividualAndGroupSpecialtiesVSpreferred code sets98.9%n=96,027142,277
telecom › systemLocation.telecom.systemLocationtype code, 0..1, required binding to contact-point-systemrequired code sets0.3%n=915,3396,248
address › lineLocation.address.lineLocationtype string, 0..*structural conformance0.1%n=915,3391,330
codePractitionerRole.codePractitionerRole0..*, required binding to PractitionerRoleVSpreferred code sets<0.1%n=96,02773
address › lineOrganization.address.lineOrganizationtype string, 0..4validator limitation<0.1%n=1,862,24125
qualificationPractitioner.qualificationPractitioner0..*structural conformance<0.1%n=221,17248
address › postalCodeOrganization.address.postalCodeOrganizationtype string, 0..1validator limitation<0.1%n=1,862,24113
telecom › valueOrganization.telecom.valueOrganizationtype string, 0..1validator limitation<0.1%n=1,862,24112
address › stateOrganization.address.stateOrganizationtype string, 0..1, extensible binding to us-core-usps-statevalidator limitation<0.1%n=1,862,24110
identifier › valueOrganization.identifier.valueOrganizationtype string, 0..1validator limitation<0.1%n=1,862,24110
address › cityOrganization.address.cityOrganizationtype string, 0..1validator limitation<0.1%n=1,862,2419
address › countryOrganization.address.countryOrganizationtype string, 0..1validator limitation<0.1%n=1,862,2419
identifier › systemOrganization.identifier.systemOrganizationtype uri, 0..1validator limitation<0.1%n=1,862,2414
specialtyPractitionerRole.specialtyPractitionerRole0..*, required binding to IndividualAndGroupSpecialtiesVSrequired code sets<0.1%n=96,0274
telecom › systemOrganization.telecom.systemOrganizationtype code, 0..1, required binding to contact-point-systemvalidator limitation<0.1%n=1,862,2413
address › cityOrganization.address.cityNetworktype string, 0..1validator limitation5.6%n=362
address › lineOrganization.address.lineNetworktype string, 0..4validator limitation5.6%n=362
address › countryOrganization.address.countryNetworktype string, 0..1validator limitation2.8%n=361
address › stateOrganization.address.stateNetworktype string, 0..1, extensible binding to us-core-usps-statevalidator limitation2.8%n=361
sub-field of a required element 24 element rows
elementrecord type what the profile expects hereissue category records affectedmessages
type › coding › systemOrganization.type.coding.systemOrganizationcore-FHIR sub-field coding.system inside an element (cardinality varies by slice, binding varies by slice) — these messages can only fire in records that populated the parentcode-system version stampingall 1,862,241 records2,320,009
type › coding › versionOrganization.type.coding.versionOrganizationcore-FHIR sub-field coding.version inside an element (cardinality varies by slice, binding varies by slice) — these messages can only fire in records that populated the parentcode-system version stampingall 1,862,241 records1,862,241
qualification › code › coding › systemPractitioner.qualification.code.coding.systemPractitionercore-FHIR sub-field coding.system inside an element (1..1, extensible binding to IndividualSpecialtyAndDegreeLicenseCertificateVS) — these messages can only fire in records that populated the parentcode-system version stamping48.9%n=221,172147,587
qualification › extension › extension › value › coding › systemPractitioner.qualification.extension.extension.value[x].coding.systemPractitionercore-FHIR sub-field coding.system inside an element (type varies by slice, 1..1, binding varies by slice) — these messages can only fire in records that populated the parentcode-system version stamping19.8%n=221,17249,990
extension › extension › value › coding › systemPractitionerRole.extension.extension.value[x].coding.systemPractitionerRolecore-FHIR sub-field coding.system inside an element (type varies by slice, 1..1, binding varies by slice) — these messages can only fire in records that populated the parentcode-system version stamping45.2%n=96,0277,315,970
extension › extension › value › coding › versionPractitionerRole.extension.extension.value[x].coding.versionPractitionerRolecore-FHIR sub-field coding.version inside an element (type varies by slice, 1..1, binding varies by slice) — these messages can only fire in records that populated the parentcode-system version stamping30.6%n=96,027253,535
extension › extension › value › coding › systemHealthcareService.extension.extension.value[x].coding.systemHealthcareServicecore-FHIR sub-field coding.system inside an element (type varies by slice, 1..1, binding varies by slice) — these messages can only fire in records that populated the parentcode-system version stamping76.1%n=38,19830,177
extension › extension › value › coding › versionHealthcareService.extension.extension.value[x].coding.versionHealthcareServicecore-FHIR sub-field coding.version inside an element (type varies by slice, 1..1, binding varies by slice) — these messages can only fire in records that populated the parentcode-system version stamping76.1%n=38,19830,177
extension › extension › value › coding › systemPractitionerRole.extension.extension.value[x].coding.systemPractitionerRolecore-FHIR sub-field coding.system inside an element (type varies by slice, 1..1, binding varies by slice) — these messages can only fire in records that populated the parentuncheckable codes16.9%n=96,02716,864
extension › extension › value › coding › systemLocation.extension.extension.value[x].coding.systemLocationcore-FHIR sub-field coding.system inside an element (type varies by slice, 1..1, binding varies by slice) — these messages can only fire in records that populated the parentcode-system version stamping1.6%n=915,33914,531
extension › extension › value › coding › versionLocation.extension.extension.value[x].coding.versionLocationcore-FHIR sub-field coding.version inside an element (type varies by slice, 1..1, binding varies by slice) — these messages can only fire in records that populated the parentcode-system version stamping1.6%n=915,33914,531
extension › extension › value › endPractitionerRole.extension.extension.value[x].endPractitionerRolecore-FHIR sub-field end inside an element (type varies by slice, 1..1, binding varies by slice) — these messages can only fire in records that populated the parentstructural conformance13.6%n=96,02713,575
extension › extension › value › coding › codePractitionerRole.extension.extension.value[x].coding.codePractitionerRolecore-FHIR sub-field coding.code inside an element (type varies by slice, 1..1, binding varies by slice) — these messages can only fire in records that populated the parentvalidator limitation1.3%n=96,0271,635
extension › extension › value › coding › displayPractitionerRole.extension.extension.value[x].coding.displayPractitionerRolecore-FHIR sub-field coding.display inside an element (type varies by slice, 1..1, binding varies by slice) — these messages can only fire in records that populated the parentvalidator limitation1.3%n=96,0271,538
extension › extension › value › coding › versionPractitionerRole.extension.extension.value[x].coding.versionPractitionerRolecore-FHIR sub-field coding.version inside an element (type varies by slice, 1..1, binding varies by slice) — these messages can only fire in records that populated the parentvalidator limitation0.9%n=96,027931
extension › extension › value › coding › systemPractitionerRole.extension.extension.value[x].coding.systemPractitionerRolecore-FHIR sub-field coding.system inside an element (type varies by slice, 1..1, binding varies by slice) — these messages can only fire in records that populated the parentvalidator limitation0.2%n=96,027211
type › coding › systemOrganization.type.coding.systemNetworkcore-FHIR sub-field coding.system inside an element (cardinality varies by slice, binding varies by slice) — these messages can only fire in records that populated the parentcode-system version stampingall 36 records36
type › coding › versionOrganization.type.coding.versionNetworkcore-FHIR sub-field coding.version inside an element (cardinality varies by slice, binding varies by slice) — these messages can only fire in records that populated the parentcode-system version stampingall 36 records36
extension › extension › value › referencePractitionerRole.extension.extension.value[x].referencePractitionerRolecore-FHIR sub-field reference inside an element (type varies by slice, 1..1, binding varies by slice) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=96,02732
type › coding › displayOrganization.type.coding.displayOrganizationcore-FHIR sub-field coding.display inside an element (cardinality varies by slice, binding varies by slice) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=1,862,2417
type › coding › codeOrganization.type.coding.codeOrganizationcore-FHIR sub-field coding.code inside an element (cardinality varies by slice, binding varies by slice) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=1,862,2415
extension › extension › value › startPractitionerRole.extension.extension.value[x].startPractitionerRolecore-FHIR sub-field start inside an element (type varies by slice, 1..1, binding varies by slice) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=96,0274
extension › extension › value › displayPractitionerRole.extension.extension.value[x].displayPractitionerRolecore-FHIR sub-field display inside an element (type varies by slice, 1..1, binding varies by slice) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=96,0271
extension › extension › value › endPractitionerRole.extension.extension.value[x].endPractitionerRolecore-FHIR sub-field end inside an element (type varies by slice, 1..1, binding varies by slice) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=96,0271
sub-field of a must-support element 27 element rows
elementrecord type what the profile expects hereissue category records affectedmessages
identifier › type › coding › systemOrganization.identifier.type.coding.systemOrganizationcore-FHIR sub-field coding.system inside an element (0..1, extensible binding to identifier-type) — these messages can only fire in records that populated the parentuncheckable codes95.3%n=1,862,2411,774,701
identifier › type › coding › systemPractitioner.identifier.type.coding.systemPractitionercore-FHIR sub-field coding.system inside an element (0..1, extensible binding to identifier-type) — these messages can only fire in records that populated the parentuncheckable codesall 221,172 records221,172
specialty › coding › systemPractitionerRole.specialty.coding.systemPractitionerRolecore-FHIR sub-field coding.system inside an element (0..*, required binding to IndividualAndGroupSpecialtiesVS) — these messages can only fire in records that populated the parentcode-system version stamping98.9%n=96,027142,273
qualification › period › endPractitioner.qualification.period.endPractitionercore-FHIR sub-field end inside an element (0..1) — these messages can only fire in records that populated the parentstructural conformance10.6%n=221,17224,966
specialty › coding › systemHealthcareService.specialty.coding.systemHealthcareServicecore-FHIR sub-field coding.system inside an element (0..*, required binding to SpecialtiesVS) — these messages can only fire in records that populated the parentcode-system version stamping61.1%n=38,19827,462
code › coding › versionPractitionerRole.code.coding.versionPractitionerRolecore-FHIR sub-field coding.version inside an element (0..*, required binding to PractitionerRoleVS) — these messages can only fire in records that populated the parentcode-system version stamping19.6%n=96,02718,985
code › coding › systemPractitionerRole.code.coding.systemPractitionerRolecore-FHIR sub-field coding.system inside an element (0..*, required binding to PractitionerRoleVS) — these messages can only fire in records that populated the parentcode-system version stamping19.6%n=96,02718,912
type › coding › systemLocation.type.coding.systemLocationcore-FHIR sub-field coding.system inside an element (0..*, extensible binding to v3-ServiceDeliveryLocationRoleType) — these messages can only fire in records that populated the parentcode-system version stamping1.0%n=915,3398,754
type › coding › versionLocation.type.coding.versionLocationcore-FHIR sub-field coding.version inside an element (0..*, extensible binding to v3-ServiceDeliveryLocationRoleType) — these messages can only fire in records that populated the parentcode-system version stamping1.0%n=915,33926,262
identifier › type › coding › codeOrganization.identifier.type.coding.codeOrganizationcore-FHIR sub-field coding.code inside an element (0..1, extensible binding to identifier-type) — these messages can only fire in records that populated the parentcode-system version stamping0.4%n=1,862,2417,654
specialty › coding › codePractitionerRole.specialty.coding.codePractitionerRolecore-FHIR sub-field coding.code inside an element (0..*, required binding to IndividualAndGroupSpecialtiesVS) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=96,02721
identifier › type › coding › codeOrganization.identifier.type.coding.codeOrganizationcore-FHIR sub-field coding.code inside an element (0..1, extensible binding to identifier-type) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=1,862,24120
specialty › coding › displayPractitionerRole.specialty.coding.displayPractitionerRolecore-FHIR sub-field coding.display inside an element (0..*, required binding to IndividualAndGroupSpecialtiesVS) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=96,02717
specialty › coding › versionPractitionerRole.specialty.coding.versionPractitionerRolecore-FHIR sub-field coding.version inside an element (0..*, required binding to IndividualAndGroupSpecialtiesVS) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=96,02712
specialty › textPractitionerRole.specialty.textPractitionerRolecore-FHIR sub-field text inside an element (0..*, required binding to IndividualAndGroupSpecialtiesVS) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=96,02710
location › referencePractitionerRole.location.referencePractitionerRolecore-FHIR sub-field reference inside an element (type Reference, 0..*) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=96,0279
period › startPractitionerRole.period.startPractitionerRolecore-FHIR sub-field start inside an element (0..1) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=96,0279
location › typePractitionerRole.location.typePractitionerRolecore-FHIR sub-field type inside an element (type Reference, 0..*) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=96,0275
practitioner › typePractitionerRole.practitioner.typePractitionerRolecore-FHIR sub-field type inside an element (type Reference, 0..1) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=96,0273
specialty › coding › systemPractitionerRole.specialty.coding.systemPractitionerRolecore-FHIR sub-field coding.system inside an element (0..*, required binding to IndividualAndGroupSpecialtiesVS) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=96,0273
identifier › type › coding › systemOrganization.identifier.type.coding.systemOrganizationcore-FHIR sub-field coding.system inside an element (0..1, extensible binding to identifier-type) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=1,862,2412
code › coding › codePractitionerRole.code.coding.codePractitionerRolecore-FHIR sub-field coding.code inside an element (0..*, required binding to PractitionerRoleVS) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=96,0271
code › coding › systemPractitionerRole.code.coding.systemPractitionerRolecore-FHIR sub-field coding.system inside an element (0..*, required binding to PractitionerRoleVS) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=96,0271
code › coding › versionPractitionerRole.code.coding.versionPractitionerRolecore-FHIR sub-field coding.version inside an element (0..*, required binding to PractitionerRoleVS) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=96,0271
healthcareService › referencePractitionerRole.healthcareService.referencePractitionerRolecore-FHIR sub-field reference inside an element (type Reference, 0..*) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=96,0271

2 smaller rows of this class are in the accompanying dataset.

sub-field of an optional element 21 element rows
elementrecord type what the profile expects hereissue category records affectedmessages
meta › extensionOrganization.meta.extensionOrganizationcore-FHIR sub-field extension inside an element (0..1) — these messages can only fire in records that populated the parentpublisher infrastructureall 1,862,241 records1,862,241
meta › extensionLocation.meta.extensionLocationcore-FHIR sub-field extension inside an element (0..1) — these messages can only fire in records that populated the parentpublisher infrastructureall 915,339 records915,339
meta › extensionPractitioner.meta.extensionPractitionercore-FHIR sub-field extension inside an element (0..1) — these messages can only fire in records that populated the parentpublisher infrastructureall 221,172 records221,172
address › period › endPractitioner.address.period.endPractitionercore-FHIR sub-field end inside an element (0..1) — these messages can only fire in records that populated the parentstructural conformance86.1%n=221,172764,915
meta › extensionPractitionerRole.meta.extensionPractitionerRolecore-FHIR sub-field extension inside an element (0..1) — these messages can only fire in records that populated the parentpublisher infrastructureall 96,027 records96,027
meta › extensionHealthcareService.meta.extensionHealthcareServicecore-FHIR sub-field extension inside an element (0..1) — these messages can only fire in records that populated the parentpublisher infrastructureall 38,198 records38,198
communication › coding › codePractitioner.communication.coding.codePractitionercore-FHIR sub-field code inside an element (0..*) — these messages can only fire in records that populated the parentcode-system version stamping7.0%n=221,17215,583
communication › coding › systemPractitioner.communication.coding.systemPractitionercore-FHIR sub-field system inside an element (0..*) — these messages can only fire in records that populated the parentcode-system version stamping6.1%n=221,17217,504
communication › coding › systemPractitioner.communication.coding.systemPractitionercore-FHIR sub-field system inside an element (0..*) — these messages can only fire in records that populated the parentuncheckable codes4.4%n=221,1729,680
communication › coding › versionPractitioner.communication.coding.versionPractitionercore-FHIR sub-field version inside an element (0..*) — these messages can only fire in records that populated the parentcode-system version stamping1.8%n=221,1723,912
meta › extensionOrganization.meta.extensionNetworkcore-FHIR sub-field extension inside an element (0..1) — these messages can only fire in records that populated the parentpublisher infrastructureall 36 records36
address › period › startPractitioner.address.period.startPractitionercore-FHIR sub-field start inside an element (0..1) — these messages can only fire in records that populated the parentstructural conformance<0.1%n=221,17226
meta › profilePractitionerRole.meta.profilePractitionerRolecore-FHIR sub-field profile inside an element (0..1) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=96,02717
meta › profileOrganization.meta.profileOrganizationcore-FHIR sub-field profile inside an element (0..1) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=1,862,2416
meta › sourcePractitionerRole.meta.sourcePractitionerRolecore-FHIR sub-field source inside an element (0..1) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=96,0274
meta › extension › valuePractitionerRole.meta.extension.value[x]PractitionerRolecore-FHIR sub-field extension.value[x] inside an element (0..1) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=96,0273
meta › lastUpdatedPractitionerRole.meta.lastUpdatedPractitionerRolecore-FHIR sub-field lastUpdated inside an element (0..1) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=96,0273
meta › extension › urlOrganization.meta.extension.urlOrganizationcore-FHIR sub-field extension.url inside an element (0..1) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=1,862,2412
meta › extensionInsurancePlan.meta.extensionInsurancePlancore-FHIR sub-field extension inside an element (0..1) — these messages can only fire in records that populated the parentpublisher infrastructure1 of 1 records1
meta › lastUpdatedOrganization.meta.lastUpdatedOrganizationcore-FHIR sub-field lastUpdated inside an element (0..1) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=1,862,2411
address › period › startPractitioner.address.period.startPractitionercore-FHIR sub-field start inside an element (0..1) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=221,1721
mixed slices 12 element rows
elementrecord type what the profile expects hereissue category records affectedmessages
addressOrganization.addressOrganizationcardinality varies by slicestructural conformance0.3%n=1,862,24128,126
identifierOrganization.identifierOrganization0..*structural conformance<0.1%n=1,862,241582
address › textOrganization.address.textOrganizationtype string, 0..1structural conformance<0.1%n=1,862,241295
address › extensionOrganization.address.extensionOrganizationcardinality varies by slicestructural conformance<0.1%n=1,862,2411,080
address › extensionOrganization.address.extensionNetworkcardinality varies by slicestructural conformance66.7%n=363,408
identifierPractitioner.identifierPractitionercardinality varies by slicestructural conformance<0.1%n=221,17222
address › textOrganization.address.textOrganizationtype string, 0..1validator limitation<0.1%n=1,862,2416
qualification › extension › extensionPractitioner.qualification.extension.extensionPractitionercardinality varies by slice, binding varies by slicestructural conformance<0.1%n=221,17212
address › textOrganization.address.textNetworktype string, 0..1structural conformance11.1%n=368
address › typeOrganization.address.typeOrganizationtype code, 0..1, required binding to address-typevalidator limitation<0.1%n=1,862,2414
address › textOrganization.address.textNetworktype string, 0..1validator limitation2.8%n=361
address › typeOrganization.address.typeNetworktype code, 0..1, required binding to address-typevalidator limitation2.8%n=361
sub-field of a mixed-class element 8 element rows
elementrecord type what the profile expects hereissue category records affectedmessages
category › coding › systemHealthcareService.category.coding.systemHealthcareServicecore-FHIR sub-field coding.system inside an element (cardinality varies by slice, binding varies by slice) — these messages can only fire in records that populated the parentcode-system version stampingall 38,198 records38,198
extension › value › coding › systemLocation.extension.value[x].coding.systemLocationcore-FHIR sub-field coding.system inside an element (type varies by slice, cardinality varies by slice, binding varies by slice) — these messages can only fire in records that populated the parentcode-system version stamping0.2%n=915,3399,048
extension › value › coding › versionLocation.extension.value[x].coding.versionLocationcore-FHIR sub-field coding.version inside an element (type varies by slice, cardinality varies by slice, binding varies by slice) — these messages can only fire in records that populated the parentcode-system version stamping0.2%n=915,3399,048
address › extension › extension › valueOrganization.address.extension.extension.value[x]Organizationcore-FHIR sub-field extension.value[x] inside an element (cardinality varies by slice) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=1,862,24111
address › extension › extension › valueOrganization.address.extension.extension.value[x]Networkcore-FHIR sub-field extension.value[x] inside an element (cardinality varies by slice) — these messages can only fire in records that populated the parentvalidator limitation8.3%n=363
address › extension › urlOrganization.address.extension.urlNetworkcore-FHIR sub-field url inside an element (cardinality varies by slice) — these messages can only fire in records that populated the parentvalidator limitation5.6%n=362
address › extension › extension › urlOrganization.address.extension.extension.urlNetworkcore-FHIR sub-field extension.url inside an element (cardinality varies by slice) — these messages can only fire in records that populated the parentvalidator limitation2.8%n=361
address › extension › extension › urlOrganization.address.extension.extension.urlOrganizationcore-FHIR sub-field extension.url inside an element (cardinality varies by slice) — these messages can only fire in records that populated the parentvalidator limitation<0.1%n=1,862,2411
optional element 3 element rows
elementrecord type what the profile expects hereissue category records affectedmessages
address › useOrganization.address.useOrganizationtype code, 0..1, required binding to address-usevalidator limitation<0.1%n=1,862,2414
idOrganization.idOrganization0..1validator limitation<0.1%n=1,862,2411
telecom › useOrganization.telecom.useOrganizationtype code, 0..1, required binding to contact-point-usevalidator limitation<0.1%n=1,862,2411
whole record 11 element rows
elementrecord type what the profile expects hereissue category records affectedmessages
the Organization record as a wholeOrganizationOrganizationa record-level rule (a profile invariant or record-wide check), not any single elementadvisory practicesall 1,862,241 records1,862,241
the Location record as a wholeLocationLocationa record-level rule (a profile invariant or record-wide check), not any single elementadvisory practicesall 915,339 records915,339
the Practitioner record as a wholePractitionerPractitionera record-level rule (a profile invariant or record-wide check), not any single elementadvisory practicesall 221,172 records221,172
the Organization record as a wholeOrganizationOrganizationa record-level rule (a profile invariant or record-wide check), not any single elementstructural conformance7.0%n=1,862,241129,829
the PractitionerRole record as a wholePractitionerRolePractitionerRolea record-level rule (a profile invariant or record-wide check), not any single elementadvisory practicesall 96,027 records96,027
the HealthcareService record as a wholeHealthcareServiceHealthcareServicea record-level rule (a profile invariant or record-wide check), not any single elementadvisory practicesall 38,198 records38,198
the PractitionerRole record as a wholePractitionerRolePractitionerRolea record-level rule (a profile invariant or record-wide check), not any single elementstructural conformance<0.1%n=96,02796
the Network record as a wholeOrganizationNetworka record-level rule (a profile invariant or record-wide check), not any single elementadvisory practicesall 36 records36
the Network record as a wholeOrganizationNetworka record-level rule (a profile invariant or record-wide check), not any single elementstructural conformanceall 36 records36
the InsurancePlan record as a wholeInsurancePlanInsurancePlana record-level rule (a profile invariant or record-wide check), not any single elementadvisory practices1 of 1 records1
the InsurancePlan record as a wholeInsurancePlanInsurancePlana record-level rule (a profile invariant or record-wide check), not any single elementstructural conformance1 of 1 records1

E. Which standard's rules fire

validator messages attributed to the standard that owns the rule that produced them
source: a mid-size enterprise payer in the state of Arizona, subject to CMS-9115-F owing to participation in both Medicaid and Medicare Advantage planslines of business: Medicaid · Medicare Advantagedata captured 2026-08-25analysis 2026-08-29standard: Da Vinci PDex Plan-Net 1.2.0

In plain terms: “conformance” is really three stacked rulebooks — core FHIR R4, US Core, and Plan-Net — plus the code sets they point at. This section says which rulebook each failure belongs to, so the right team owns the fix.

Records were validated against the Plan-Net 1.2.0 profiles, which build on FHIR R4. The first three rows attribute by the standard that owns the failing rule (named in the message itself: an R4, US Core, or Plan-Net invariant, or a fixed-value / cardinality constraint whose defining profile the message cites). Code-set membership failures get their own row: a message that cites a value set does not say which standard's profile imposed the binding (a Plan-Net slice can require a US Core value set), so counting them under the set's owner would misattribute the rule — the exact failing sets, per source, are in §B's binding drill-downs.

US Core / USCDI was not independently evaluated. Plan-Net does not derive from US Core, and this analysis validated against Plan-Net only; the US Core row below counts the US Core invariants Plan-Net itself imports. A statement about full US Core (USCDI v3) conformance would require its own validation pass and is not made here.
rule ownerMedicare AdvantageMedicaidOther (ODS)
Plan-Net 1.2.099,603113,5995,901
US Core102100
FHIR R4 base1,990,245679,2311,376,546
code-set membership (set owner ≠ rule owner)16,683,5771,705,2115,505,724
not attributable to one standard1,112,877671,8321,376,431

Counts are validator messages, not records; one record can appear under several rows.

USCDI v3 data classes — how well is the underlying data there?

Separate from validator rules: for each USCDI v3 data class that has a directory counterpart, how many records actually populate it. No official USCDI-to-directory mapping exists, so every row carries its mapping quality. These figures are population-wide (this lens does not split by source); the per-line-of-business completeness picture is §C.

record typeUSCDI data class mappingpopulated
Endpointprovenance author timestamp USCDI-requiredproxy measurementno signal, n=0
Groupgroup identifier USCDI-requirednot measurable hereno signal, n=0
HealthcareServiceprovenance author timestamp USCDI-requiredproxy measurementall 38,198 records
InsurancePlaninsurance plan identifierweak proxy1 of 1 records
InsurancePlanprovenance author timestamp USCDI-requiredproxy measurement1 of 1 records
Locationdemographics email USCDI-requiredclosest directory analog0 of 915,339 records
Locationdemographics location address complete USCDI-requiredclosest directory analog>99.9%n=915,339
Locationdemographics phone USCDI-requiredclosest directory analog15.1%n=915,339
Locationdemographics phone typeclosest directory analog<0.1%n=915,339
Locationprovenance author timestamp USCDI-requiredproxy measurementall 915,339 records
Organizationdemographics email USCDI-requiredclosest directory analog0.7%n=1,862,241
Organizationdemographics phone USCDI-requiredclosest directory analog84.9%n=1,862,241
Organizationdemographics phone typeclosest directory analog8.5%n=1,862,241
Organizationprovenance author timestamp (denominator includes the 36 network records) USCDI-requiredproxy measurementall 1,862,277 records
OrganizationAffiliationprovenance author timestamp USCDI-requiredproxy measurementno signal, n=0
Practitionercare team member identifier npi USCDI-requiredinferred mappingall 221,172 records
Practitionercare team member name family USCDI-requiredinferred mappingall 221,172 records
Practitionercare team member name given USCDI-requiredinferred mappingall 221,172 records
Practitionercare team member telecom phone USCDI-requiredinferred mapping65.0%n=221,172
Practitionercare team member telecom phone formatclosest directory analog65.0%n=221,172
Practitionerdemographics communication presence USCDI-requiredclosest directory analog13.2%n=221,172
Practitionerdemographics communication rfc5646closest directory analog12.9%n=221,172
Practitionerdemographics email USCDI-requiredclosest directory analog0 of 221,172 records
Practitionerdemographics phone USCDI-requiredclosest directory analog65.0%n=221,172
Practitionerdemographics phone typeclosest directory analog18.9%n=221,172
Practitionerprovenance author timestamp USCDI-requiredproxy measurementall 221,172 records
PractitionerRolecare team member location USCDI-requiredinferred mapping>99.9%n=96,027
PractitionerRolecare team member role USCDI-requiredinferred mapping19.6%n=96,027
PractitionerRoleprovenance author timestamp USCDI-requiredproxy measurementall 96,027 records
Provenanceprovenance author organization USCDI-requirednot measurable hereno signal, n=0

Mapping quality: closest directory analog = the directory field that carries the same fact (e.g. a practitioner's phone for the phone data class); proxy = a stand-in signal (e.g. a last-updated timestamp standing in for provenance); inferred = no official mapping exists, ours is a reasoned one; weak proxy = the stand-in is loose — read with care; not measurable here = the data class has no directory counterpart. Denominators count the captured tables directly (the organization figure includes the 36 network records).

F. Medicare Plan Finder readiness

the CMS-required digital directory format, measured element by element
source: a mid-size enterprise payer in the state of Arizona, subject to CMS-9115-F owing to participation in both Medicaid and Medicare Advantage planslines of business: Medicaid · Medicare Advantagedata captured 2026-08-25analysis 2026-08-29standard: Da Vinci PDex Plan-Net 1.2.0

In plain terms: CMS requires Medicare Advantage organizations to publish their provider directory in a machine-readable format (42 CFR 422.111(m)), and the CMS implementation guide names Plan-Net 1.2.0 — the same standard this report measures — with a specific list of required elements. This section checks each of them. As captured, this directory could not power a Medicare Plan Finder provider search for the Medicare Advantage line: the one published InsurancePlan record is a placeholder, not a real plan — its only identifier is the bare value "1", its required type is present solely as a data-absent-reason (the only occurrence of that pattern anywhere in this capture), it names no network, period, or coverage area, and it has not been modified since 2024-10-18 while the rest of the directory refreshes regularly. So this section cannot assess whether a real plan record would meet the guide's requirements — it can only report that no real plan data has been published to assess. 0 of 45,616 Medicare Advantage provider roles carry the NPI the guide requires at the role level.

record typeguide element populated (Medicare Advantage records)
IsolatedInsurancePlanidentifier required by the guide1 of 1 records
WidespreadInsurancePlanname required by the guide0 of 1 records
WidespreadInsurancePlannetwork linkage required by the guide0 of 1 records
WidespreadInsurancePlanplan period start required by the guide0 of 1 records
WidespreadInsurancePlanCMS-format plan id (H/R/S/E contract shape)0 of 1 records
IsolatedLocationcity required by the guide>99.9%n=605,951
IsolatedLocationcomplete address required by the guide>99.9%n=605,951
IsolatedLocationstreet line required by the guide>99.9%n=605,951
IsolatedLocationpostal code required by the guide>99.9%n=605,951
IsolatedLocationstate required by the guide>99.9%n=605,951
WidespreadLocationphone required by the guide0 of 605,951 records
IsolatedOrganizationaddress required by the guide95.3%n=218,574
IsolatedOrganizationlast-updated timestamp required by the guideall 218,574 records
IsolatedOrganizationname required by the guideall 218,574 records
WidespreadOrganizationNPI required by the guide76.8%n=218,574
IsolatedOrganizationorganization type required by the guideall 218,574 records
WidespreadOrganizationtype coded in NUCC system0 of 218,574 records
WidespreadOrganizationAffiliationpractice location linkage required by the guidenot published at all — the guide requires this record type
WidespreadOrganizationAffiliationnetwork linkage required by the guidenot published at all — the guide requires this record type
WidespreadOrganizationAffiliationmanaging organization required by the guidenot published at all — the guide requires this record type
WidespreadOrganizationAffiliationparticipating organization required by the guidenot published at all — the guide requires this record type
WidespreadOrganizationAffiliationspecialty required by the guidenot published at all — the guide requires this record type
WidespreadPractitionerlanguages spoken required by the guide6.6%n=205,454
IsolatedPractitionerfamily name required by the guideall 205,454 records
IsolatedPractitionergiven name required by the guideall 205,454 records
IsolatedPractitionergenderall 205,454 records
IsolatedPractitionerNPI at practitioner levelall 205,454 records
IsolatedPractitionerRolelast-updated timestamp required by the guideall 45,616 records
IsolatedPractitionerRolepractice location linkage required by the guide99.8%n=45,616
WidespreadPractitionerRolenetwork linkage required by the guide0 of 45,616 records
WidespreadPractitionerRoleNPI on the role required by the guide0 of 45,616 records
IsolatedPractitionerRolespecialty required by the guideall 45,616 records
IsolatedPractitionerRolephone on the role required by the guide99.8%n=45,616
WidespreadPractitionerRoleaccepting-new-patients flag64.3%n=45,616
IsolatedPractitionerRoleupdated within 30 daysall 45,616 records
IsolatedPractitionerRolespecialty in NUCC taxonomy formatall 45,616 records
IsolatedPractitionerRolespecialty coded in a standard systemall 45,616 records

Only Medicare Advantage records are counted — the Plan Finder obligation attaches to the Medicare line, and the Other (ODS) feed and Medicaid records are excluded from every figure above. Isolated = 95% or more of Medicare Advantage records populate the element; Widespread = anything less, including a required record type that is not published at all. These checks were measured 2026-08-31 over the same captured population as the rest of this report (the analysis date in the identity strip refers to the validator run; this lens ran separately). Plan-Finder eligibility basis: the plan publicly sells Medicare Advantage products and the captured directory carries MA-designated network records; the automated MA classifier alone does not trip on this capture's naming, so eligibility is recorded as a documented public-record determination. Rule-set provenance: CMS Technical Implementation Guide for the MA/MAPD/PDP Provider/Facility Directory Digital Format (2026-02-18), under 42 CFR 422.111(m) (CMS-4208-F2), naming Da Vinci PDex Plan-Net 1.2.0 as the required format. cms.gov 403s automated fetches; read via a DocumentCloud mirror of the published PDF. Element list transcribed from that mirror, not cross-checked against a second independent source.

Note added 2026-09-02 (not part of the original report). The 45,616 Medicare Advantage roles resolve to 21,528 distinct practitioners, each carrying an NPI on the practitioner record. Checked against the federal NPI registry (NPPES, as of 2026-08-23): 21,527 resolve; 245 (1.1%) are deactivated, 79 of them on records marked active; 381 roles point at a deactivated NPI, and since all 45,616 Medicare Advantage roles are marked active the role-level flag carries no status signal; of the 10,809 practitioners marked inactive, 10,643 (98.5%) carry a live NPI. Method, charts and the general-population check: finding 13 of the board this report is embedded in.

G. Data-quality rates per source and record type

material categories only — environment artifacts and advisories excluded (see §B)
source: a mid-size enterprise payer in the state of Arizona, subject to CMS-9115-F owing to participation in both Medicaid and Medicare Advantage planslines of business: Medicaid · Medicare Advantagedata captured 2026-08-25analysis 2026-08-29standard: Da Vinci PDex Plan-Net 1.2.0

In plain terms: the same quality questions, asked separately of each line of business — because a pooled number would hide that the two lines often differ sharply.

record typesourcerecords ≥1 material finding≥1 error-severity structuralrequired code setspreferred code sets
HealthcareServiceMedicaid29,0790 of 29,079 records0 of 29,079 records0 of 29,079 records0 of 29,079 records0 of 29,079 records
HealthcareServiceMedicare Advantage9,1190 of 9,119 records0 of 9,119 records0 of 9,119 records0 of 9,119 records0 of 9,119 records
InsurancePlanMedicare Advantage11 of 1 records1 of 1 records1 of 1 records0 of 1 records1 of 1 records
LocationMedicare Advantage605,9510.2%n=605,9510 of 605,951 records0.2%n=605,9510 of 605,951 records0 of 605,951 records
LocationMedicaid309,3881.0%n=309,3881.0%n=309,3880 of 309,388 records1.0%n=309,3880 of 309,388 records
NetworkMedicare Advantage36all 36 recordsall 36 recordsall 36 records0 of 36 records0 of 36 records
OrganizationOther (ODS)1,376,431all 1,376,431 records0.4%n=1,376,4310.4%n=1,376,4310 of 1,376,431 recordsall 1,376,431 records
OrganizationMedicaid267,23695.2%n=267,23642.5%n=267,23642.5%n=267,2360 of 267,236 records90.6%n=267,236
OrganizationMedicare Advantage218,57477.9%n=218,5749.4%n=218,5749.5%n=218,5740 of 218,574 records76.8%n=218,574
PractitionerMedicare Advantage205,454all 205,454 records45.9%n=205,45498.7%n=205,45421.3%n=205,454all 205,454 records
PractitionerMedicaid15,718all 15,718 records0 of 15,718 records46.2%n=15,7180 of 15,718 recordsall 15,718 records
PractitionerRoleMedicaid50,41197.9%n=50,411<0.1%n=50,411<0.1%n=50,411<0.1%n=50,41197.9%n=50,411
PractitionerRoleMedicare Advantage45,616all 45,616 records31.0%n=45,61628.7%n=45,61630.9%n=45,616all 45,616 records

H. Placeholder and default values

how much of the data satisfies structure with content that carries no information
source: a mid-size enterprise payer in the state of Arizona, subject to CMS-9115-F owing to participation in both Medicaid and Medicare Advantage planslines of business: Medicaid · Medicare Advantagedata captured 2026-08-25analysis 2026-08-29standard: Da Vinci PDex Plan-Net 1.2.0

FHIR's sanctioned mechanism for declaring absent data (data-absent-reason) appears on 1 record in the entire capture — the publisher does not use it. Placeholders here take other shapes: fixed values contradicted by the record's own status, sentinel dates, literal “Unknown” names, and a version number stamped mechanically on every code system (§B). The version-stamping defect alone accounts for 12,382,415 validator messages (40% of all output).

signalmeasured, by source
Inactive practitioners publishedactive = false where the profile fixes active = trueMedicare Advantage: 24.6%n=205,454 Medicaid: 0 of 15,718 records
Practitioner gender recorded as “unknown”a legal FHIR value; at scale it is a fill-inMedicare Advantage: 1.9%n=205,454 Medicaid: 1.4%n=15,718
Placeholder “never expires” datesrecords carrying 2999-12-31 or 9999-12-31 anywhereMedicare Advantage: 92.8%n=205,454 Medicaid: 0 of 15,718 records
… in the address validity period (end date)Practitioner.address.period.end = 2999/9999-12-31: the address is declared valid foreverMedicare Advantage: 92.6%n=205,454 Medicaid: 0 of 15,718 records
… in qualification / licence validity periodsa 2999/9999-12-31 date inside Practitioner.qualification: the licence or certification is declared to never expireMedicare Advantage: 11.4%n=205,454 Medicaid: 0 of 15,718 records
… placeholder start dates (1753-01-01)Practitioner.address.period.start set to a database-epoch placeholderMedicare Advantage: <0.1%n=205,454 Medicaid: <0.1%n=15,718
Services named “Unknown”a required name filled with a literal placeholderMedicare Advantage: 0 of 9,119 records Medicaid: 34.6%n=29,079
Locations with no geocoordinatesstructurally valid addresses that cannot be mappedMedicare Advantage: 79.1%n=605,951 Medicaid: 98.4%n=309,388
Networks with placeholder namesINVALID, NOT APPLICABLE, UNKNOWN, UNKNOWN-ERROR4 of 36 networks
Junk postal codes / location names00000-style postal codes; names like UNKNOWN / N/A23 junk postal codes, 5 junk names

I. How much of the directory is inside the plan’s state boundaries?

locality measured from published addresses
source: a mid-size enterprise payer in the state of Arizona, subject to CMS-9115-F owing to participation in both Medicaid and Medicare Advantage planslines of business: Medicaid · Medicare Advantagedata captured 2026-08-25analysis 2026-08-29standard: Da Vinci PDex Plan-Net 1.2.0

Locations, by source

sourcelocationsinside state boundaries no state recorded
Medicare Advantage605,95160.4%n=605,951435
Medicaid309,38872.5%n=309,38840

Locations a provider role actually points at

an out-of-state location no role references is a different problem from one a member can be routed to

sourcereferenced locations inside state boundaries
Medicare Advantage21,85493.4%n=21,854
Medicaid8,82598.2%n=8,825

Organizations, by source

sourceorganizationsinside state boundaries no state recorded
Other (ODS)1,376,4312.2%n=1,376,43119,491
Medicaid267,2368.1%n=267,236115,596
Medicare Advantage218,61025.1%n=218,61010,475

Organization counts in this section read the captured tables directly and include the 36 network records; §G's per-type rates report Network as its own record type, so its Organization denominators are smaller by exactly that count.

Largest out-of-state concentrations (locations)

statelocations
CA60,745
TX32,967
FL16,538
NV15,946
IL14,192
ME13,439
UT12,143
CO11,794
MN10,686
PA10,338

Out-of-state entries are not automatically wrong — border towns, national providers and telehealth exist — but their share, and the 12-point spread between the two lines of business, is directory signal a consumer should know.

J. Referential integrity

records were validated standalone, so the validator never checked whether references resolve; measured here directly against the captured population
source: a mid-size enterprise payer in the state of Arizona, subject to CMS-9115-F owing to participation in both Medicaid and Medicare Advantage planslines of business: Medicaid · Medicare Advantagedata captured 2026-08-25analysis 2026-08-29standard: Da Vinci PDex Plan-Net 1.2.0

In plain terms: directory records point at each other — a role points at its practitioner, its clinic, its locations. Here we follow every such pointer and report the ones that lead nowhere, the ones that lead into the other line of business, and the records nothing points at.

Forward: do references point at records that exist?

“crosses source” counts references that resolve, but to a record carrying a different source marker — intact for a pooled directory, broken from within one line of business. Unparseable references (non-Type/id forms) are counted separately, not as dangling.

These numbers are capture-relative. A reference counts as dangling when its target id is absent from the captured population. The capture walked the plan's published directory to exhaustion on every record type — every page the source serves was retrieved, and the record counts reconcile exactly against the validated population — so a dangling reference here means the target is not retrievable from the published directory, not merely that it was missed. Capture method and its limits: §L.
referencesource of the recordrefs danglingcrosses sourceunparseable
HealthcareService → LocationMedicare Advantage173,167<0.1%n=173,16700
HealthcareService → LocationMedicaid17,39164.8%n=17,39100
HealthcareService → OrganizationMedicare Advantage9,1192.8%n=9,11900
HealthcareService → OrganizationMedicaid29,079all 29,079 records00
InsurancePlan → Organization(ownedBy)Medicare Advantage10 of 1 records00
Location → Organization(managing)Medicare Advantage605,9510.2%n=605,95100
Location → Organization(managing)Medicaid26,198<0.1%n=26,19800
PractitionerRole → LocationMedicare Advantage139,0380 of 139,038 records00
PractitionerRole → LocationMedicaid50,51682.0%n=50,51600
PractitionerRole → OrganizationMedicare Advantage45,6160 of 45,616 records00
PractitionerRole → OrganizationMedicaid50,4110 of 50,411 records00
PractitionerRole → PractitionerMedicare Advantage45,6160 of 45,616 records00
PractitionerRole → PractitionerMedicaid50,4110.7%n=50,41135,6030

Reverse: what does nothing point at?

sourcepractitioners with no role at all
Medicare Advantage205,45485.7%n=205,454
Medicaid15,71851.5%n=15,718
sourcelocations referenced by no role or service
Medicare Advantage605,95195.5%n=605,951
Medicaid309,38896.0%n=309,388

Network references are absent everywhere: no role, no affiliation and no plan references any of the 36 network records (§K).

K. Population shape — what the counts say

structural observations, all computed from this capture
source: a mid-size enterprise payer in the state of Arizona, subject to CMS-9115-F owing to participation in both Medicaid and Medicare Advantage planslines of business: Medicaid · Medicare Advantagedata captured 2026-08-25analysis 2026-08-29standard: Da Vinci PDex Plan-Net 1.2.0

In plain terms: before judging quality record by record, the shape of the population itself tells a story — what is published in abundance, what is nearly absent, and what exists but connects to nothing.

Insurance plans: 1, and it is a placeholder

Published: one InsurancePlan record, and its contents mark it as a stub rather than real plan data — its identifier is the bare value "1", its required type element is present only as a data-absent-reason (the sole occurrence of that pattern in this entire capture), it names no network, period, or coverage area, it is owned by and administered by the payer's own organization, and it has not been touched since 2024-10-18 while the rest of the directory carries 2026-08 timestamps. Whether this is a deliberate stub or an abandoned load cannot be determined from the data; either way, no real plan-level data has been published. That said, the chain-break finding below does not rest on this one record: with 0 network references on 96,027 roles and 0 affiliation records, the plan→network→provider chain has no first link and no last link regardless of whether the plan record itself is real — the question “which providers are in this plan?” cannot be answered from the published directory, for either line of business, and a real InsurancePlan record would not by itself change that.

Networks: 36, referenced by nothing

Of the 36 network records, 32 carry the plan's internal product and geography names (withheld here to preserve anonymity); 4 carry placeholder names (INVALID, NOT APPLICABLE, UNKNOWN, UNKNOWN-ERROR). The placeholder rows indicate an unfiltered export of an internal enumeration.

The Other (ODS) population

1,376,431 of 1,862,277 organizations (a count that includes the 36 network records) carry a third source marker — the one labeled Other (ODS) throughout this report. What the data says about it: the records span the whole country, are NPI-complete, and virtually none is referenced by any provider role — consistent with an externally sourced organization roster loaded alongside the directory rather than directory content. Provider roles reference only 14,138 distinct organizations — Medicare Advantage: 8,092. Medicaid: 6,046. Under 1% of published organizations participate in the provider graph; conformance rates on the Organization type are therefore dominated by records that never surface in a provider search.

Location duplication

The 915,339 location records collapse to 188,844 distinct street addresses (~4.8 records per address) — measured, the location table is largely the same addresses republished per practitioner context.

L. Methodology, limits, provenance

source: a mid-size enterprise payer in the state of Arizona, subject to CMS-9115-F owing to participation in both Medicaid and Medicare Advantage planslines of business: Medicaid · Medicare Advantagedata captured 2026-08-25analysis 2026-08-29standard: Da Vinci PDex Plan-Net 1.2.0

What was validated, and how

Every FHIR record captured from the plan's published Plan-Net directory (3,133,014 records, capture window 2026-08-25) was passed through the official HL7 validator (validator_cli 6.10.1) against Da Vinci PDex Plan-Net 1.2.0. No sampling. Three material facts about the setup:

  • Profiles were forced. The records mostly do not declare the Plan-Net profiles; they were validated against them anyway because Plan-Net is the applicable regulatory target for a payer provider directory regardless of what the records claim.
  • Declared foreign profiles were removed first. 2,083,449 records declared CARIN Blue Button profiles (a claims-data standard irrelevant to a directory); those declarations were stripped so records could be evaluated against the directory standard.
  • No terminology server. Code checks ran locally against the shipped packages (terminology snapshot hl7.terminology.r4#6.5.0); codes in systems outside those packages are reported as “uncheckable”, not as failures.

Capture method and completeness

The plan's directory does not allow deep pagination (bulk listing stops at a fixed offset), so the capture enumerated records through last-updated time windows, bisecting each window until every window returned fewer records than the server's page limit — i.e. until the published surface was exhausted for every record type. Referential findings in §J are relative to this capture: a target counted missing is one the published directory does not serve, to the completeness of this method. The capture completed 2026-08-25 and the validated population equals the captured population exactly (asserted at build time).

Unit of presentation

A finding is one defect pattern — one (record type, element, message, severity) combination — counted once per record it touches, with a repeats-per-record multiplier for array duplication. The 31,320,889 raw validator messages behind the findings are retained verbatim and every number here reproduces from them.

Lines of business

Each published record embeds a source marker (urn:source_name). Attribution covered 3,133,014 of 3,133,014 records. The third marker on organization records is a source system, not a line of business, and is never folded into either plan line. No cross-type pooled rate is reported anywhere in this document; every rate is per (record type, source).

Issue categories and exclusions

Validator messages are grouped into data-quality categories (structural, required code sets, preferred code sets) and environment / advisory categories (uncheckable codes, version stamping, validator limitations, publisher infrastructure, missing narrative). Only the data-quality categories enter grades and headline rates; the others are fully reported in §B. Version stamping is data-borne but classified separately from structural conformance so that one mechanical defect cannot set the headline structural rate for the largest record type (12,382,415 messages).

Element mapping

Validator element paths are normalized and joined to the Plan-Net element definitions, collapsing profile slice discriminators (the validator emits positional paths). Where a collapsed path spans several profile slices, the row says so, and code-set failures are attributed by the failing code set itself, which is slice-exact. Sub-elements of profiled fields that core FHIR (not the profile) defines are classed “base-FHIR element”; whole-record messages are classed “whole record”. Nothing is dropped: §D accounts for 100% of messages.

Rendering rules

Rates render in five 20-point bands with the record count always visible; no rate renders as 100.0% or 0.0%. Cells with fewer than 30 records show the exact count instead of a rate (this is a census; small cells have no sampling error, but a percentage over 1 record misleads). A cell with no records shows “no signal”. Grades (Isolated/Partial/Widespread) follow the fixed rule in §A and are never shown without the underlying rate.

What this report does not do

  • No certification or compliance determination of any kind.
  • No cross-payer comparison (single source).
  • No claim of a full, independent US Core validation pass. What IS measured for US Core / USCDI v3: the US Core rules Plan-Net imports (§E, rule-owner table) and USCDI v3 data-class population over the whole capture (§E, USCDI table). A standalone US Core validation run would add invariant-level detail and is the one remaining gap.
  • No pooled cross-type rates.