diff --git a/changelog.d/8581.fixed.md b/changelog.d/8581.fixed.md new file mode 100644 index 00000000000..6cb66c3b0c4 --- /dev/null +++ b/changelog.d/8581.fixed.md @@ -0,0 +1 @@ +Restricted Missouri Commodity Supplemental Food Program eligibility to counties with DHSS distribution sites. diff --git a/policyengine_us/parameters/gov/states/mo/dhss/csfp/counties.yaml b/policyengine_us/parameters/gov/states/mo/dhss/csfp/counties.yaml new file mode 100644 index 00000000000..178588d702b --- /dev/null +++ b/policyengine_us/parameters/gov/states/mo/dhss/csfp/counties.yaml @@ -0,0 +1,119 @@ +description: Missouri defines the following counties as covered counties under the Commodity Supplemental Food Program. + +metadata: + unit: list + period: year + label: Missouri Commodity Supplemental Food Program covered counties + reference: + - title: Missouri Department of Health and Senior Services Commodity Supplemental Food Program + href: https://health.mo.gov/living/wellness/nutrition/foodprograms/csfp/ + - title: Missouri Commodity Supplemental Food Program State Plan + href: https://health.mo.gov/living/wellness/nutrition/foodprograms/csfp/pdf/missouri-state-plan-ada.pdf + - title: Missouri Commodity Supplemental Food Sites + href: https://www.arcgis.com/home/item.html?id=d8d8553132194b2ebd038d171503e16c + - title: Missouri Commodity Supplemental Food Sites feature layer + href: https://gis.mo.gov/arcgis/rest/services/DHSS/commodityFood/MapServer/0 + +values: + 2025-01-01: [] + 2026-01-01: + - ADAIR_COUNTY_MO + - AUDRAIN_COUNTY_MO + - BARRY_COUNTY_MO + - BARTON_COUNTY_MO + - BATES_COUNTY_MO + - BENTON_COUNTY_MO + - BOLLINGER_COUNTY_MO + - BOONE_COUNTY_MO + - BUTLER_COUNTY_MO + - CALLAWAY_COUNTY_MO + - CAMDEN_COUNTY_MO + - CAPE_GIRARDEAU_COUNTY_MO + - CARROLL_COUNTY_MO + - CARTER_COUNTY_MO + - CASS_COUNTY_MO + - CEDAR_COUNTY_MO + - CHARITON_COUNTY_MO + - CHRISTIAN_COUNTY_MO + - CLARK_COUNTY_MO + - CLAY_COUNTY_MO + - CLINTON_COUNTY_MO + - COLE_COUNTY_MO + - COOPER_COUNTY_MO + - CRAWFORD_COUNTY_MO + - DADE_COUNTY_MO + - DALLAS_COUNTY_MO + - DENT_COUNTY_MO + - DOUGLAS_COUNTY_MO + - DUNKLIN_COUNTY_MO + - FRANKLIN_COUNTY_MO + - GASCONADE_COUNTY_MO + - GREENE_COUNTY_MO + - HENRY_COUNTY_MO + - HICKORY_COUNTY_MO + - HOWARD_COUNTY_MO + - HOWELL_COUNTY_MO + - IRON_COUNTY_MO + - JACKSON_COUNTY_MO + - JASPER_COUNTY_MO + - JEFFERSON_COUNTY_MO + - JOHNSON_COUNTY_MO + - KNOX_COUNTY_MO + - LACLEDE_COUNTY_MO + - LAFAYETTE_COUNTY_MO + - LAWRENCE_COUNTY_MO + - LEWIS_COUNTY_MO + - LINN_COUNTY_MO + - MACON_COUNTY_MO + - MADISON_COUNTY_MO + - MARIES_COUNTY_MO + - MARION_COUNTY_MO + - MCDONALD_COUNTY_MO + - MILLER_COUNTY_MO + - MISSISSIPPI_COUNTY_MO + - MONITEAU_COUNTY_MO + - MONROE_COUNTY_MO + - MONTGOMERY_COUNTY_MO + - MORGAN_COUNTY_MO + - NEW_MADRID_COUNTY_MO + - NEWTON_COUNTY_MO + - OREGON_COUNTY_MO + - OSAGE_COUNTY_MO + - OZARK_COUNTY_MO + - PEMISCOT_COUNTY_MO + - PERRY_COUNTY_MO + - PETTIS_COUNTY_MO + - PHELPS_COUNTY_MO + - PIKE_COUNTY_MO + - PLATTE_COUNTY_MO + - POLK_COUNTY_MO + - PULASKI_COUNTY_MO + - PUTNAM_COUNTY_MO + - RALLS_COUNTY_MO + - RANDOLPH_COUNTY_MO + - RAY_COUNTY_MO + - REYNOLDS_COUNTY_MO + - RIPLEY_COUNTY_MO + - SALINE_COUNTY_MO + - SCHUYLER_COUNTY_MO + - SCOTLAND_COUNTY_MO + - SCOTT_COUNTY_MO + - SHANNON_COUNTY_MO + - SHELBY_COUNTY_MO + - ST_CHARLES_COUNTY_MO + - ST_CLAIR_COUNTY_MO + - ST_FRANCOIS_COUNTY_MO + - ST_LOUIS_COUNTY_MO + - ST_LOUIS_CITY_MO + - STE_GENEVIEVE_COUNTY_MO + - STODDARD_COUNTY_MO + - STONE_COUNTY_MO + - SULLIVAN_COUNTY_MO + - TANEY_COUNTY_MO + - TEXAS_COUNTY_MO + - VERNON_COUNTY_MO + - WARREN_COUNTY_MO + - WASHINGTON_COUNTY_MO + - WAYNE_COUNTY_MO + - WEBSTER_COUNTY_MO + - WRIGHT_COUNTY_MO diff --git a/policyengine_us/tests/policy/baseline/gov/states/mo/dhss/csfp/mo_dhss_csfp_county_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/states/mo/dhss/csfp/mo_dhss_csfp_county_eligible.yaml new file mode 100644 index 00000000000..64141f7c8f7 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/mo/dhss/csfp/mo_dhss_csfp_county_eligible.yaml @@ -0,0 +1,67 @@ +- name: Case 1, Missouri household in a DHSS CSFP site county. + period: 2026 + input: + people: + person1: + age: 65 + spm_units: + spm_unit: + members: [person1] + households: + household: + members: [person1] + state_code: MO + county_str: JACKSON_COUNTY_MO + output: + mo_dhss_csfp_county_eligible: true + +- name: Case 2, Missouri household in St. Louis city. + period: 2026 + input: + people: + person1: + age: 65 + spm_units: + spm_unit: + members: [person1] + households: + household: + members: [person1] + state_code: MO + county_str: ST_LOUIS_CITY_MO + output: + mo_dhss_csfp_county_eligible: true + +- name: Case 3, Missouri household outside DHSS CSFP site counties. + period: 2026 + input: + people: + person1: + age: 65 + spm_units: + spm_unit: + members: [person1] + households: + household: + members: [person1] + state_code: MO + county_str: ANDREW_COUNTY_MO + output: + mo_dhss_csfp_county_eligible: false + +- name: Case 4, Missouri household before the sourced county filter year. + period: 2025 + input: + people: + person1: + age: 65 + spm_units: + spm_unit: + members: [person1] + households: + household: + members: [person1] + state_code: MO + county_str: ANDREW_COUNTY_MO + output: + mo_dhss_csfp_county_eligible: true diff --git a/policyengine_us/tests/policy/baseline/gov/usda/csfp/commodity_supplemental_food_program_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/usda/csfp/commodity_supplemental_food_program_eligible.yaml index e2c29440086..8959d3007a8 100644 --- a/policyengine_us/tests/policy/baseline/gov/usda/csfp/commodity_supplemental_food_program_eligible.yaml +++ b/policyengine_us/tests/policy/baseline/gov/usda/csfp/commodity_supplemental_food_program_eligible.yaml @@ -169,3 +169,57 @@ state_code: TX output: commodity_supplemental_food_program_eligible: true + +- name: Case 6, Missouri senior in a DHSS CSFP site county is eligible. + period: 2026 + input: + people: + person1: + age: 65 + spm_units: + spm_unit: + members: [person1] + school_meal_fpg_ratio: 1.4 + households: + household: + members: [person1] + state_code: MO + county_str: JACKSON_COUNTY_MO + output: + commodity_supplemental_food_program_eligible: true + +- name: Case 7, Missouri senior outside DHSS CSFP site counties is not eligible. + period: 2026 + input: + people: + person1: + age: 65 + spm_units: + spm_unit: + members: [person1] + school_meal_fpg_ratio: 1.3 + households: + household: + members: [person1] + state_code: MO + county_str: ANDREW_COUNTY_MO + output: + commodity_supplemental_food_program_eligible: false + +- name: Case 8, Missouri senior before the sourced county filter year is eligible. + period: 2025 + input: + people: + person1: + age: 65 + spm_units: + spm_unit: + members: [person1] + school_meal_fpg_ratio: 1.3 + households: + household: + members: [person1] + state_code: MO + county_str: ANDREW_COUNTY_MO + output: + commodity_supplemental_food_program_eligible: true diff --git a/policyengine_us/variables/gov/states/mo/dhss/csfp/mo_dhss_csfp_county_eligible.py b/policyengine_us/variables/gov/states/mo/dhss/csfp/mo_dhss_csfp_county_eligible.py new file mode 100644 index 00000000000..264bb2afea5 --- /dev/null +++ b/policyengine_us/variables/gov/states/mo/dhss/csfp/mo_dhss_csfp_county_eligible.py @@ -0,0 +1,22 @@ +from policyengine_us.model_api import * + + +class mo_dhss_csfp_county_eligible(Variable): + value_type = bool + entity = Household + definition_period = YEAR + label = "Missouri DHSS CSFP county eligible" + defined_for = StateCode.MO + reference = ( + "https://health.mo.gov/living/wellness/nutrition/foodprograms/csfp/", + "https://health.mo.gov/living/wellness/nutrition/foodprograms/csfp/pdf/missouri-state-plan-ada.pdf", + "https://www.arcgis.com/home/item.html?id=d8d8553132194b2ebd038d171503e16c", + "https://gis.mo.gov/arcgis/rest/services/DHSS/commodityFood/MapServer/0", + ) + + def formula(household, period, parameters): + county = household("county_str", period) + p = parameters(period).gov.states.mo.dhss.csfp + if len(p.counties) == 0: + return np.ones_like(county, dtype=bool) + return np.isin(county, p.counties) diff --git a/policyengine_us/variables/gov/usda/csfp/commodity_supplemental_food_program_eligible.py b/policyengine_us/variables/gov/usda/csfp/commodity_supplemental_food_program_eligible.py index a0ea9a806d4..6809f377bd2 100644 --- a/policyengine_us/variables/gov/usda/csfp/commodity_supplemental_food_program_eligible.py +++ b/policyengine_us/variables/gov/usda/csfp/commodity_supplemental_food_program_eligible.py @@ -20,4 +20,7 @@ def formula(person, period, parameters): state_code = person.household("state_code", period) in_tx = state_code == StateCode.TX income_eligible = where(in_tx, tx_income_eligible, federal_income_eligible) - return age_eligible & income_eligible + mo_county_eligible = person.household("mo_dhss_csfp_county_eligible", period) + in_mo = state_code == StateCode.MO + county_eligible = where(in_mo, mo_county_eligible, True) + return age_eligible & income_eligible & county_eligible