All variables are per council (CASSR), keyed on GEOGRAPHY_CODE (ONS code, e.g. E06000057) / DH_GEOGRAPHY_NAME. 153 councils.
Source file (verified): data/data-pack-2024-25/adult-social-care-finance-report-2024-2025-csv-data-tables.csv (509,352 rows, single year FY_ENDING = 2025). It is a cell-level long file: one row per statistic, value in ITEMVALUE. Every filter below was checked to return exactly 153 rows (one per council) unless stated otherwise.
Conventions (verified against the metadata ODS in the same folder):
GEOGRAPHY_LEVEL = 'Local Authority' (the file also contains Region and England rows).99 in a dimension column means "total across that dimension"; '' (blank) means "not applicable".[x] — treat as NA, never zero.ITEMVALUEs are £ thousands; UNIT COST values are £ per unit (per week for the cuts listed here); activity denominators are person-weeks.GEOGRAPHY_LEVEL='Local Authority' AND DATA_Level='Gross Current Expenditure' AND CareType='99' AND AgeBand='99' AND PrimarySupportReason='99' AND SupportSetting='99'.DATA_Level='Net Current Expenditure'. Note: this grand-total row appears twice per council (once under DimensionGroup='Expenditure', once under 'Additional Data') with identical values — deduplicate or add DimensionGroup='Expenditure'.GEOGRAPHY_LEVEL='Local Authority' AND DATA_Level='TOTAL' AND FinanceType='Income' AND FinanceDescription='Client Contributions' AND CareType='99' AND AgeBand='99' AND PrimarySupportReason='99' AND SupportSetting='99' AND ComparativeTotals=''.FinanceDescription in ('Income from NHS', 'Joint Arrangements', 'Other Income', '99' = total income) extract the other income streams the same way.DATA_Level='Gross Current Expenditure' AND CareType='Long Term Care'; the file carries every combination of SupportSetting in {Residential, Nursing, Community: Home Care, Community: Direct Payments, Community: Supported Living, Community: Other Long Term Care, Supported Accommodation}, AgeBand in {18 to 64, 65 and Over}, and PrimarySupportReason (or '99' for totals across it). Age-band totals for LTC as a whole: CareType='Long Term Care' AND SupportSetting='99' AND AgeBand='18 to 64'|'65 and Over' AND PrimarySupportReason='99'. (Setting-level rows exist only per age band — sum the two age bands to get a per-setting total.)DATA_Level='UNIT COST' AND ValueType='UNIT COST' AND CareType='Long Term Care' AND SupportSetting='Residential and Nursing' AND AgeBand='' AND ActivityProvision='All'.ValueType='Numerator' row is spend in £000s and 'Denominator' is person-weeks — 97,690 / 96,805 × 1000.)SupportSetting='Residential' or 'Nursing', AgeBand='18 to 64'|'65 and Over', any PrimarySupportReason, ActivityProvision in {All, and for Residential also In House / External}; plus CareType='Short Term Care' AND Purpose='To Maximise Independence' for reablement unit costs. 61 published unit-cost cuts in total, each 153 rows.[x]) for small groups (e.g. nursing for sensory support), so expect gaps.DimensionGroup='Activity' AND DATA_Level='TOTAL', by CareType (Long Term Care with SupportSetting Residential/Nursing, or Short Term Care), AgeBand, PrimarySupportReason.Population is not available in this dataset or verified siblings, so no per-resident variables are constructed; the natural size-normaliser available here is the council's own total service spend (sibling 01).
asc_net_current_expenditure / RSX_totsx_net_cur_exp (units already match: both £000s).asc_net_current_expenditure (above); RSX_totsx_net_cur_exp and, for cross-checking, RSX_asc_net_cur_exp from sibling ../01-revenue-outturn/data/Revenue_Outturn_time_series_data_v3.2.csv (year_ending=202503, join on ONS_code = GEOGRAPHY_CODE) — both columns verified present.asc_income_client_contributions / asc_gross_current_expenditure.GCE(LTC, Residential + Nursing, both age bands) / GCE(LTC, all settings, both age bands); complement = community-based share (Home Care + Direct Payments + Supported Living + Other + Supported Accommodation).asc_gce_long_term_care setting-level rows (sum the two AgeBand rows per setting; LTC total from the SupportSetting='99' age-band rows).asc_unit_cost_res_nursing_care(council) / asc_unit_cost_res_nursing_care(England) where the England value uses the same filter with GEOGRAPHY_LEVEL='England'.UNIT COST(Residential, In House) − UNIT COST(Residential, External) at matched AgeBand/PrimarySupportReason.asc_unit_cost_by_setting_age_psr (ActivityProvision='In House' vs 'External' cuts, both verified present, 153 rows each per cut).One file per variable in variables/: