skin-subs: ingest historical CMS ASP files (all quarters since inception) #233
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Objective
Build a complete longitudinal ASP pricing dataset for all skin substitute products.
Tasks
skin_subs.asp_quarterly(code, quarter, asp_per_unit, payment_limit, manufacturer)source:cms-asp,module:skin-subs,year:YYYYResetting approach. Previous agent downloaded 86 ZIP files but the ingestion was not rigorous enough:
Revised plan:
skin_subs.hcpcs_universe(not regex on Q4)source_urlandsource_quartercolumnProgress update — ingestion script rewritten with full academic rigor.
Completed:
data/cms/asp_source_urls.csvdev/scripts/ingest_asp.py) with:skin_substitute_hcpcs.csvcode universe (NO regex fallback)source_urlandsource_filecolumns on every row (100% provenance)data/aco.duckdbResults:
Note: Skin subs do not appear in pre-2009 ASP files. The Q4100+ series was created 2001 but ASP reporting for these products began later.
Remaining:
Status: Data loaded with full provenance, Zotero tagging and validation outstanding.
Checklist:
data/cms/asp_source_urls.csvskin_subs.asp_quarterly— 1,974 rows, 68 quarters (2009-Q1 to 2025-Q4), 169 unique codessource_url(canonical CMS.gov URL) andsource_file(specific file within ZIP) — 100% provenanceMethodological notes:
payment_limit / 1.06(CMS payment limit = ASP + 6%). For 2026+ skin subs under reclassification (flat $127.14/cm²), this derivation no longer applies.dosage_or_unit.xlrddependency added for XLS parsing.Commits:
e169842,de20b57Files:
dev/scripts/ingest_asp.py,data/cms/asp_source_urls.csvDuckDB:
skin_subs.asp_quarterly(1,974 rows)