# Part D plan service area (CMS SPUF)

`drug_silver.fact_part_d_plan_service_area` · Drugs and formularies · status live · 2,387,499 rows

Plan x geography fact from CMS SPUF — which counties each Part D plan serves. Split out of dim_part_d_plan on 2026-05-17 (Gate A.5) because a plan serves many counties and the source row is plan x service-area, not plan alone. Columns: contract_id, plan_id, segment_id, state, county_code (FIPS), report_quarter, plus is_current. The geographic-filter axis for plan_landscape.

**Grain.** One row per (contract_id, plan_id, segment_id, state, county_code, report_quarter).

| column | type | meaning |
|---|---|---|
| contract_id | string |  |
| plan_id | string |  |
| segment_id | string |  |
| state | string |  |
| county_code | string |  |
| report_quarter | string |  |
| observed_period | date |  |
| asserted_at | date |  |
| effective_period_start | date |  |
| effective_period_end | date |  |
| cms_vintage_sequence | int |  |
| parse_revision | int |  |
| parser_artifact_hash | string |  |
| source_url | string |  |
| sha256_content_hash | string |  |
| source_id | string |  |
| is_current | boolean |  |
| bronze_object_key | string |  |
| s3_version_id | string |  |
| vintage_tag | string |  |
| drug_source_version_id | string |  |

Query it: `query_substrate` with `SELECT ... FROM drug_silver.fact_part_d_plan_service_area WHERE ... LIMIT 100`; read `describe_data_source("drug_silver.fact_part_d_plan_service_area")` first.
