H55publishedNPD release 2026-08-20

What arrived when the NDH went from six resource types to eight

The 2026-08-20 release added HealthcareService and InsurancePlan, announced as payer and health-plan data arriving. It is, and the shape of what arrived decides whether a consumer can use it. InsurancePlan is complete on arrival: 233 health plans, every one naming an owning organization, across 27 payers now carrying a `pay` organization type that did not exist in the previous release. HealthcareService is not: 54,445 resources of which 0.5% name a location, exactly one names a provider, and none carry a service name, type or specialty. It is a network-membership join wearing the name of a service description.

Headline

The 2026-08-20 release adds two resource types. InsurancePlan arrives usable: 233 health plans, every one naming an owning organization, across 27 payers. HealthcareService arrives empty: 54,445 resources of which 0.5% name a location, 1 name a provider, and none carry a service name, type or specialty. It is a network-membership join, not a description of a service.

273 / 54.4K = 0.50%

InsurancePlan names an owner100.0%
HealthcareService names a location0.500%
HealthcareService names a provider0.002%
HealthcareService names the service0.000%

unit: percent

What this means

Startups + integrators

Do not design against HealthcareService as a service catalogue yet. It carries a network-reference extension and almost nothing else, so it answers "is this provider in this network" and not "what is offered here". InsurancePlan, by contrast, is usable today and gives you plan-to-payer ownership directly.

CMS publishing the data

InsurancePlan.type is free text rather than a coded element, and the same product appears under several spellings in one file. Coding that field costs nothing now and saves every downstream consumer writing their own normaliser.

Everyone using NDH

Payer identity arrived in this release and payer reachability did not. 27 payer organizations now exist and none of them carries an endpoint, which is the companion result in H49.

Null hypothesis

A newly added resource type is populated to the same completeness as the established ones, so field presence on HealthcareService and InsurancePlan is indistinguishable from that on Organization or Practitioner.

Denominator

Every resource in the 04-HealthcareService and 05-InsurancePlan files of the named release, read whole from the published NDJSON. No sampling. Field presence is counted at the top level of each resource.

Data source

The NDH bulk export resolved through directory.cms.gov/downloads/manifest.json, streamed directly rather than through BigQuery: there are no warehouse tables for these types yet, and a release should be characterizable the day it lands. Compute script: analysis/h55_new_resource_types.py.

Notes

Measured by streaming the release's own NDJSON rather than through BigQuery, because there are no tables for these types yet and a release should be characterizable the day it lands. HealthcareService carries active, extension, id, location, meta, providedBy, resourceType and nothing else; the descriptive fields that would make it a service record (name, type, specialty, category, telecom, comment, availableTime, serviceProvisionCode) are absent from every resource. The registered prior, that a new resource carries identity before it carries detail, holds for HealthcareService and is rejected for InsurancePlan, which is complete enough to use on arrival. One caveat on InsurancePlan: `type` is free text and not coded, and the same product appears under several spellings (Medicare Advantage PPO Plan, CSNP-COPD, mediadv, MAPD, CSNP, Qualified Health Plan), so grouping plans by type requires normalising strings rather than reading a code. Reproduce with analysis/h55_new_resource_types.py.

Get the next finding in your inbox. One email per release, no filler.