# Part D plan initial coverage limit (ICL), CMS SPUF sidecar, 2019-Q1 to 2024-Q3

`drug_silver.fact_part_d_plan_initial_coverage_limit` · Drugs and formularies · status live · 127,086 rows

Each Part D plan segment's initial coverage limit (ICL, dollars): the total drug spend at which the initial coverage phase ends and the coverage gap (donut hole) begins, from the ICL field of the quarterly SPUF plan information file, which the original SPUF parser never read. A sidecar of drug_silver.dim_part_d_plan: join on (contract_id, plan_id, segment_id, report_quarter) to the parent's is_current = true rows; every sidecar row joins exactly one parent row and every parent row in 2019-Q1..2024-Q3 has one. 127,086 rows in 23 quarters; icl runs $2,750 to $11,000 (Athena 693d78a1).

**Grain.** One row per (report_quarter, contract_id, plan_id, segment_id), the key of drug_silver.dim_part_d_plan.

| column | type | meaning |
|---|---|---|
| contract_id | string |  |
| plan_id | string |  |
| segment_id | string |  |
| icl | double |  |
| 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_initial_coverage_limit WHERE ... LIMIT 100`; read `describe_data_source("drug_silver.fact_part_d_plan_initial_coverage_limit")` first.
