From f7ebf1882eafe04beb670ac8ea880c396a36ae1b Mon Sep 17 00:00:00 2001 From: Ziming Date: Mon, 2 Nov 2026 17:01:21 -0500 Subject: [PATCH 1/2] Let Missouri aged, blind and disabled people who don't receive SSI spend down Co-Authored-By: Claude Opus 5.5 --- changelog.d/medicaid-mo-spend-down.fixed.md | 1 + ...ional_senior_or_disabled_for_medicaid.yaml | 100 ++++++++++++++++++ ...ptional_senior_or_disabled_for_medicaid.py | 20 +++- source_conflicts/candidates.yaml | 31 ++++++ 4 files changed, 150 insertions(+), 2 deletions(-) create mode 100644 changelog.d/medicaid-mo-spend-down.fixed.md diff --git a/changelog.d/medicaid-mo-spend-down.fixed.md b/changelog.d/medicaid-mo-spend-down.fixed.md new file mode 100644 index 00000000000..473b4199f49 --- /dev/null +++ b/changelog.d/medicaid-mo-spend-down.fixed.md @@ -0,0 +1 @@ +Let aged, blind and disabled people in Missouri who do not receive SSI deduct incurred medical expenses to reach the state's income standard, as 42 CFR 435.121(e)(4) requires in a section 209(b) state with no medically needy program. diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_for_medicaid.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_for_medicaid.yaml index 6e28ffe75fa..87f33b967a3 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_for_medicaid.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_for_medicaid.yaml @@ -391,3 +391,103 @@ is_medicaid_immigration_status_eligible: [false, false] is_optional_senior_or_disabled_income_eligible: [false, false] is_optional_senior_or_disabled_for_medicaid: [true, true] + +# Missouri has no medically needy program, so 42 CFR 435.121(e)(4) requires a +# spend down to its MHABD standard. Countable income is 16,800 - 240 = 16,560. +# The aged standard is 12 x 1,131 = 13,572, so 2,988 of expenses reach it. +- name: Case 21, Missouri aged person not on SSI spends down exactly to the standard. + period: 2026 + input: + age: 70 + social_security_retirement: 16_800 + other_medical_expenses: 2_988 + state_code: MO + output: + is_optional_senior_or_disabled_income_eligible: false + is_optional_senior_or_disabled_for_medicaid: true + medicaid_category: SENIOR_OR_DISABLED + +- name: Case 22, Missouri aged person not on SSI stays a dollar above the standard after expenses. + period: 2026 + input: + age: 70 + social_security_retirement: 16_800 + other_medical_expenses: 2_987 + state_code: MO + output: + is_optional_senior_or_disabled_for_medicaid: false + medicaid_category: NONE + +# Countable income is 18,000 - 240 = 17,760, and 14,760 after expenses. That is +# above the aged standard of 13,572 and within the blind standard of 15,960. +- name: Case 23, Missouri blind person spends down to the higher blind standard. + period: 2026 + input: + age: 70 + is_blind: true + social_security_retirement: 18_000 + other_medical_expenses: 3_000 + state_code: MO + output: + is_optional_senior_or_disabled_for_medicaid: true + +# Combined countable income is 24,000 - 240 = 23,760. The couple standard is +# 12 x 1,533 = 18,396, so one spouse's 5,364 of expenses reach it. +- name: Case 24, Missouri couple spends down together to the couple standard. + period: 2026 + input: + people: + person1: + age: 70 + is_tax_unit_head: true + social_security_retirement: 12_000 + other_medical_expenses: 5_364 + person2: + age: 70 + is_tax_unit_spouse: true + social_security_retirement: 12_000 + marital_units: + marital_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MO + output: + is_optional_senior_or_disabled_for_medicaid: [true, true] + +# The 2026 resource limit is 6,068.80, the July 2025 value. +- name: Case 25, Missouri spend down does not waive the resource limit. + period: 2026 + input: + age: 70 + social_security_retirement: 16_800 + other_medical_expenses: 5_000 + bank_account_assets: 6_100 + state_code: MO + output: + is_optional_senior_or_disabled_for_medicaid: false + +# Illinois is a 209(b) state with a medically needy program, so under +# 42 CFR 435.121(e)(5) this person spends down through that program. +- name: Case 26, Illinois person not on SSI spends down through medically needy. + period: 2026 + input: + age: 70 + social_security_retirement: 20_000 + other_medical_expenses: 10_000 + state_code: IL + output: + is_optional_senior_or_disabled_for_medicaid: false + medicaid_category: MEDICALLY_NEEDY + +- name: Case 27, Colorado has no medically needy program but is not a 209(b) state. + period: 2026 + input: + age: 70 + social_security_retirement: 16_800 + other_medical_expenses: 5_000 + state_code: CO + output: + is_optional_senior_or_disabled_for_medicaid: false + medicaid_category: NONE diff --git a/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_for_medicaid.py b/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_for_medicaid.py index 9b9b85c3c05..ab805eea618 100644 --- a/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_for_medicaid.py +++ b/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_for_medicaid.py @@ -12,6 +12,8 @@ class is_optional_senior_or_disabled_for_medicaid(Variable): "https://www.law.cornell.edu/uscode/text/42/1396b#v", "https://www.ecfr.gov/current/title-42/section-435.406#p-435.406(b)", "https://www.ecfr.gov/current/title-42/section-440.255#p-440.255(c)", + "https://www.law.cornell.edu/cfr/text/42/435.121", + "https://dssmanuals.mo.gov/wp-content/uploads/2022/07/mhabd-appendix-j.pdf#page=1", ) def formula(person, period, parameters): @@ -54,8 +56,22 @@ def formula(person, period, parameters): # for a couple, the SSI couple rate is above 80% of the poverty # guideline for two. This holds for aged people too, since 42 U.S.C. # 1396b(v)(2)(B) waives only the receipt of SSI. - income_eligible = on_exception_path | person( - "is_optional_senior_or_disabled_income_eligible", period + # A 209(b) state with no medically needy program for aged, blind and + # disabled people must let them deduct incurred medical expenses to + # reach its income standard, whether or not they receive SSI + # (42 CFR 435.121(e)(4)). Only Missouri fits this description; MHABD + # Appendix J publishes its spend down standards. + classified = person("medicaid_ssi_recipient_state_classification", period) + must_allow_spend_down = ( + classified == classified.possible_values.SECTION_209B + ) & ~person("is_in_medicaid_medically_needy_category", period) + income_eligible = ( + on_exception_path + | person("is_optional_senior_or_disabled_income_eligible", period) + | ( + must_allow_spend_down + & person("is_209b_ssi_recipient_income_eligible_for_medicaid", period) + ) ) asset_eligible = person("is_optional_senior_or_disabled_asset_eligible", period) return ( diff --git a/source_conflicts/candidates.yaml b/source_conflicts/candidates.yaml index 025bb5dd42b..26868adc56d 100644 --- a/source_conflicts/candidates.yaml +++ b/source_conflicts/candidates.yaml @@ -4811,6 +4811,37 @@ candidates: in every state as an approximation. Missouri''s MHABD limits round up the same way (medicaid_optional_senior_or_disabled_income_limit.py), and its MHF parent limit uses the published schedule (mo_mhf_parent_income_limit.py). Verify the rounding gap-fill; the separate January-versus-April timing difference is a model approximation.' +- id: us-mo:mhabd-nonblind-disabled-children + program: medicaid + years: + from: 2026 + to: 2026 + type: program + note: program year as the program defines it + question: Does Missouri's aged, blind and disabled Medicaid group cover nonblind disabled children under 18, as + the spend down heading in MHABD Appendix J says, or leave them out, as POMS SI 01715.010 says of Missouri's + definition of disability? + sources: + - kind: guidance + citation: POMS SI 01715.010 A.1, note on Connecticut, Missouri and New Hampshire + url: https://secure.ssa.gov/apps10/poms.nsf/lnx/0501715010 + - kind: manual + citation: MHABD Appendix J, "Spend Down (includes disabled child) - MHNS, MHSD, MHDC" + url: https://dssmanuals.mo.gov/wp-content/uploads/2022/07/mhabd-appendix-j.pdf#page=1 + readings: + guidance: Missouri does not include nonblind individuals under 18 in its definition of disability. + other: Missouri's spend down standards include a disabled child. + example: A nonblind disabled eight-year-old in Missouri whose parent earns $40,000 falls outside the 209(b) SSI + route but inside the optional aged, blind and disabled pathway, which reads no such exclusion. + pe_us: + follows: unknown + code: + - policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_209b_ssi_recipient_for_medicaid.py + - policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_for_medicaid.py + state: unreviewed + note: is_209b_ssi_recipient_for_medicaid excludes these children through excludes_nonblind_disabled_children, + and is_optional_senior_or_disabled_for_medicaid does not. Neither source has been checked against the Missouri + state plan. - id: us-mo:mhabd-resource-limit-boundary program: medicaid years: From 128043f67201e5d2cbf542ad8b64d8bac9c2db3e Mon Sep 17 00:00:00 2001 From: Ziming Date: Mon, 2 Nov 2026 22:18:37 -0500 Subject: [PATCH 2/2] Count parents' expenses and resources in Missouri child spend-down A parent's medical expenses count toward a child's spend-down in every 209(b) state (42 CFR 435.121(f)(1)(iii)). Missouri deems a parent's entire resources to a child (MHABD 0805.020.10) and covers nonblind disabled children on both routes (MHABD 0805.020.00, Appendix K). Co-Authored-By: Claude Opus 5.5 --- changelog.d/medicaid-mo-spend-down.fixed.md | 2 +- .../deems_entire_parental_resources.yaml | 117 +++++ .../excludes_nonblind_disabled_children.yaml | 6 +- .../is_209b_ssi_recipient_for_medicaid.yaml | 80 +++- ...nal_senior_or_disabled_asset_eligible.yaml | 399 ++++++++++++++++++ ...ional_senior_or_disabled_for_medicaid.yaml | 270 ++++++++++++ .../is_ssi_recipient_for_medicaid.yaml | 4 +- .../is_medically_needy_for_medicaid.yaml | 37 ++ ...dicaid_parental_medical_expense_share.yaml | 139 ++++++ ..._recipient_income_eligible_for_medicaid.py | 18 +- ...ional_senior_or_disabled_asset_eligible.py | 60 ++- ...ptional_senior_or_disabled_for_medicaid.py | 13 +- .../is_medically_needy_for_medicaid.py | 15 +- ...medicaid_parental_medical_expense_share.py | 33 ++ source_conflicts/candidates.yaml | 70 ++- 15 files changed, 1215 insertions(+), 48 deletions(-) create mode 100644 policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/deems_entire_parental_resources.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/medically_needy/medicaid_parental_medical_expense_share.yaml create mode 100644 policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/medically_needy/medicaid_parental_medical_expense_share.py diff --git a/changelog.d/medicaid-mo-spend-down.fixed.md b/changelog.d/medicaid-mo-spend-down.fixed.md index 473b4199f49..4d456108641 100644 --- a/changelog.d/medicaid-mo-spend-down.fixed.md +++ b/changelog.d/medicaid-mo-spend-down.fixed.md @@ -1 +1 @@ -Let aged, blind and disabled people in Missouri who do not receive SSI deduct incurred medical expenses to reach the state's income standard, as 42 CFR 435.121(e)(4) requires in a section 209(b) state with no medically needy program. +Let aged, blind and disabled people in Missouri who do not receive SSI deduct incurred medical expenses to reach the state's income standard, as 42 CFR 435.121(e)(4) requires in a section 209(b) state with no medically needy program. A child's 209(b) spend down now also counts the parents' medical expenses. In Missouri, a child's resource test now counts the parents' entire resources, and nonblind disabled children are covered. diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/deems_entire_parental_resources.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/deems_entire_parental_resources.yaml new file mode 100644 index 00000000000..08340b35b18 --- /dev/null +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/deems_entire_parental_resources.yaml @@ -0,0 +1,117 @@ +description: The state uses the entire resources of a child's parents in the asset test under the Medicaid program, if this is true. +metadata: + unit: bool + period: year + label: Medicaid senior or disabled asset test counts a child's entire parental resources + breakdown: + - state_code + reference: + - title: Missouri DSS MO HealthNet for the Aged, Blind and Disabled Manual 0805.020.10 Deeming Parental Resources + href: https://dssmanuals.mo.gov/mo-healthnet-for-the-aged-blind-and-disabled/0805-000-00/0805-020-00/0805-020-10/ + - title: Missouri DSS MO HealthNet Eligibility for Non-MAGI Programs (Appendix K, 07/2026), MO HealthNet for Disabled Children + href: https://dssmanuals.mo.gov/wp-content/uploads/2018/10/appendix_k.pdf#page=2 + +AK: + 2015-01-01: false +AL: + 2015-01-01: false +AR: + 2015-01-01: false +AZ: + 2015-01-01: false +CA: + 2015-01-01: false +CO: + 2015-01-01: false +CT: + 2015-01-01: false +DC: + 2015-01-01: false +DE: + 2015-01-01: false +FL: + 2015-01-01: false +GA: + 2015-01-01: false +HI: + 2015-01-01: false +IA: + 2015-01-01: false +ID: + 2015-01-01: false +IL: + 2015-01-01: false +IN: + 2015-01-01: false +KS: + 2015-01-01: false +KY: + 2015-01-01: false +LA: + 2015-01-01: false +MA: + 2015-01-01: false +MD: + 2015-01-01: false +ME: + 2015-01-01: false +MI: + 2015-01-01: false +MN: + 2015-01-01: false +MO: + # IM-48 (August 7, 2018) is the earliest memo MHABD 0805.020.10 lists. + # Earlier years read this value. + 2018-08-07: true +MS: + 2015-01-01: false +MT: + 2015-01-01: false +NC: + 2015-01-01: false +ND: + 2015-01-01: false +NE: + 2015-01-01: false +NH: + 2015-01-01: false +NJ: + 2015-01-01: false +NM: + 2015-01-01: false +NV: + 2015-01-01: false +NY: + 2015-01-01: false +OH: + 2015-01-01: false +OK: + 2015-01-01: false +OR: + 2015-01-01: false +PA: + 2015-01-01: false +RI: + 2015-01-01: false +SC: + 2015-01-01: false +SD: + 2015-01-01: false +TN: + 2015-01-01: false +TX: + 2015-01-01: false +UT: + 2015-01-01: false +VA: + 2015-01-01: false +VT: + 2015-01-01: false +WA: + 2015-01-01: false +WI: + 2015-01-01: false +WV: + 2015-01-01: false +WY: + 2015-01-01: false diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/ssi_recipient/section_209b/excludes_nonblind_disabled_children.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/ssi_recipient/section_209b/excludes_nonblind_disabled_children.yaml index 3a107c4dfa6..17fee1ac590 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/ssi_recipient/section_209b/excludes_nonblind_disabled_children.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/ssi_recipient/section_209b/excludes_nonblind_disabled_children.yaml @@ -8,6 +8,8 @@ metadata: reference: - title: SSA POMS SI 01715.010 Medicaid and the Supplemental Security Income Program href: https://secure.ssa.gov/apps10/poms.nsf/lnx/0501715010 + - title: Missouri DSS MO HealthNet for the Aged, Blind and Disabled Manual 0805.020.00 MO HealthNet for Disabled Children (MHDC) + href: https://dssmanuals.mo.gov/mo-healthnet-for-the-aged-blind-and-disabled/0805-000-00/0805-020-00/ AK: 2024-01-01: false @@ -58,7 +60,9 @@ MI: MN: 2024-01-01: false MO: - 2024-01-01: true + # MHABD 0805.020.00: "disabled children (under age 18) may receive MO + # HealthNet as spend down, non-spend down or vendor." + 2024-01-01: false MS: 2024-01-01: false MT: diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_209b_ssi_recipient_for_medicaid.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_209b_ssi_recipient_for_medicaid.yaml index 9ced49446da..80f38934a12 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_209b_ssi_recipient_for_medicaid.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_209b_ssi_recipient_for_medicaid.yaml @@ -152,7 +152,7 @@ output: is_209b_ssi_recipient_for_medicaid: true -- name: Case 15, Missouri nonblind child SSI recipient is excluded. +- name: Case 15, Missouri nonblind child SSI recipient is covered. period: 2026 input: state_code: MO @@ -162,7 +162,7 @@ is_optional_senior_or_disabled_income_eligible: true is_optional_senior_or_disabled_asset_eligible: true output: - is_209b_ssi_recipient_for_medicaid: false + is_209b_ssi_recipient_for_medicaid: true - name: Case 16, New Hampshire nonblind child SSI recipient is excluded. period: 2026 @@ -223,3 +223,79 @@ output: # 16,800 combined is under the 17,892 couple standard. is_209b_ssi_recipient_for_medicaid: [true, true] + +# Deemed income is (70,000 / 12 - 85) / 2 x 12 = 34,490, less 11,928, or 22,562. +# The child's budget is 22,562 / 12 - 20 = 1,860.17, so 1,860 a month or 22,320 +# a year, and 22,320 - 9,000 = 13,320 is within the 13,572 standard. The child's +# SSI is the reported amount, as in Case 17; computed SSI is zero at this income. +- name: Case 19, Missouri nonblind disabled child reporting SSI qualifies after spenddown. + period: 2026 + input: + people: + person1: + age: 40 + is_tax_unit_head: true + own_children_in_household: 1 + employment_income_before_lsr: 70_000 + person2: + age: 8 + is_tax_unit_dependent: true + meets_ssi_disability_criteria: true + receives_ssi: true + other_medical_expenses: 9_000 + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit1: + members: [person1] + marital_unit2: + members: [person2] + households: + household: + members: [person1, person2] + state_code: MO + output: + is_209b_ssi_recipient_for_medicaid: [false, true] + medicaid_category: [NONE, SSI_RECIPIENT] + +# 42 CFR 435.121(f)(1)(iii) deducts the expenses of financially responsible +# relatives in every 209(b) state. Virginia's deemed income is (60,000 / 12 +# - 85) / 2 x 12 = 29,490, less 11,928, or 17,562. The child's income is +# 17,562 - 240 = 17,322, above Virginia's 80% standard of 0.8 x 15,960 = +# 12,768. The parent's 6,000 of expenses bring it to 11,322. In the model a +# child with computed SSI is already under this standard, so the expense +# decides the case only for reported SSI, as in Case 17. +- name: Case 20, Virginia disabled child reporting SSI qualifies on the parent's medical expenses. + period: 2026 + input: + people: + person1: + age: 40 + is_tax_unit_head: true + own_children_in_household: 1 + employment_income_before_lsr: 60_000 + other_medical_expenses: 6_000 + person2: + age: 8 + is_tax_unit_dependent: true + meets_ssi_disability_criteria: true + receives_ssi: true + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit1: + members: [person1] + marital_unit2: + members: [person2] + households: + household: + members: [person1, person2] + state_code: VA + output: + medicaid_optional_senior_or_disabled_countable_income: [0, 17_322] + medicaid_parental_medical_expense_share: [0, 6_000] + is_optional_senior_or_disabled_income_eligible: [true, false] + is_209b_ssi_recipient_for_medicaid: [false, true] + medicaid_category: [NONE, SSI_RECIPIENT] diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_asset_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_asset_eligible.yaml index b972b8694d6..e32675b2157 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_asset_eligible.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_asset_eligible.yaml @@ -859,3 +859,402 @@ output: # January 1, 2027 still reads the 195,000 couple limit; 31,000 first applies in 2028. is_optional_senior_or_disabled_asset_eligible: [true, true] + +# MHABD 0805.020.10 adds the entire amount of a parent's available resources to +# the child's. RSMo 208.010.2(7) allows resources "not to exceed" the limit, and +# 2026 reads the July 2025 individual limit of 6,068.80. +- name: Missouri child and one parent with resources together exactly at the individual limit, eligible + period: 2026 + input: + people: + person1: + age: 40 + is_tax_unit_head: true + own_children_in_household: 1 + bank_account_assets: 6_000 + person2: + age: 10 + is_tax_unit_dependent: true + is_blind: true + bank_account_assets: 68.80 + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit1: + members: [person1] + marital_unit2: + members: [person2] + households: + household: + members: [person1, person2] + state_code: MO + output: + # Child: 6,000 + 68.80 = 6,068.80. + is_optional_senior_or_disabled_asset_eligible: [true, true] + +- name: Missouri child and one parent with resources together one cent over the individual limit, ineligible + period: 2026 + input: + people: + person1: + age: 40 + is_tax_unit_head: true + own_children_in_household: 1 + bank_account_assets: 6_000 + person2: + age: 10 + is_tax_unit_dependent: true + is_blind: true + bank_account_assets: 68.81 + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit1: + members: [person1] + marital_unit2: + members: [person2] + households: + household: + members: [person1, person2] + state_code: MO + output: + # Child: 6,000 + 68.81 = 6,068.81. The parent's own 6,000 stays within the limit. + is_optional_senior_or_disabled_asset_eligible: [true, false] + +# Appendix K sets the limit for a child living with two parents at the couple +# limit, which 2026 reads as the July 2025 value of 12,137.55. +- name: Missouri child with two parents whose resources are exactly at the couple limit, eligible + period: 2026 + input: + people: + person1: + age: 40 + is_tax_unit_head: true + own_children_in_household: 1 + bank_account_assets: 6_000 + person2: + age: 38 + is_tax_unit_spouse: true + own_children_in_household: 1 + bank_account_assets: 6_137.55 + person3: + age: 10 + is_tax_unit_dependent: true + is_blind: true + tax_units: + tax_unit: + members: [person1, person2, person3] + marital_units: + marital_unit1: + members: [person1, person2] + marital_unit2: + members: [person3] + households: + household: + members: [person1, person2, person3] + state_code: MO + output: + # 6,000 + 6,137.55 = 12,137.55, which the 6,068.80 individual limit would fail. + is_optional_senior_or_disabled_asset_eligible: [true, true, true] + +- name: Missouri child with two parents whose resources are one cent over the couple limit, ineligible + period: 2026 + input: + people: + person1: + age: 40 + is_tax_unit_head: true + own_children_in_household: 1 + bank_account_assets: 6_000 + person2: + age: 38 + is_tax_unit_spouse: true + own_children_in_household: 1 + bank_account_assets: 6_137.56 + person3: + age: 10 + is_tax_unit_dependent: true + is_blind: true + tax_units: + tax_unit: + members: [person1, person2, person3] + marital_units: + marital_unit1: + members: [person1, person2] + marital_unit2: + members: [person3] + households: + household: + members: [person1, person2, person3] + state_code: MO + output: + # 6,000 + 6,137.56 = 12,137.56. The parents' own test fails on the same total. + is_optional_senior_or_disabled_asset_eligible: [false, false, false] + +# MHABD 0805.020.05: a child married and living with their spouse does not live +# with a parent, even with a parent in the same home, and only a child living +# with a parent is deemed parental resources. The couple's own resources are 0. +- name: Missouri married child in the same home as a parent with savings is not deemed the parent's resources + period: 2026 + input: + people: + person1: + age: 45 + is_tax_unit_head: true + own_children_in_household: 1 + bank_account_assets: 100_000 + person2: + age: 17 + is_tax_unit_dependent: true + is_blind: true + person3: + age: 19 + is_tax_unit_dependent: true + tax_units: + tax_unit: + members: [person1, person2, person3] + marital_units: + marital_unit1: + members: [person1] + marital_unit2: + members: [person2, person3] + households: + household: + members: [person1, person2, person3] + state_code: MO + output: + # The parent's own 100,000 is above the 6,068.80 limit. + is_optional_senior_or_disabled_asset_eligible: [false, true, true] + +# MHABD 0805.020.05: a child in a nursing facility or ICF/IID, or in a hospital +# or psychiatric treatment facility for more than 30 days, does not live with a parent. +- name: Missouri child in a medical treatment facility is not deemed the parent's resources + period: 2026 + input: + people: + person1: + age: 45 + is_tax_unit_head: true + own_children_in_household: 1 + bank_account_assets: 100_000 + person2: + age: 10 + is_tax_unit_dependent: true + is_blind: true + ssi_lives_in_medical_treatment_facility: true + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit1: + members: [person1] + marital_unit2: + members: [person2] + households: + household: + members: [person1, person2] + state_code: MO + output: + is_optional_senior_or_disabled_asset_eligible: [false, true] + +# MHABD 0805.020.05: a child in a state agency's custody and placed in foster +# care does not live with a parent. +- name: Missouri child in foster care is not deemed the parent's resources + period: 2026 + input: + people: + person1: + age: 45 + is_tax_unit_head: true + own_children_in_household: 1 + bank_account_assets: 100_000 + person2: + age: 10 + is_tax_unit_dependent: true + is_blind: true + is_in_foster_care: true + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit1: + members: [person1] + marital_unit2: + members: [person2] + households: + household: + members: [person1, person2] + state_code: MO + output: + is_optional_senior_or_disabled_asset_eligible: [false, true] + +# Only Missouri's parameter is set, so this test reads an Illinois child's own +# resources. The parent's own 100,000 is above the 17,500 Illinois limit. +- name: Illinois child is not deemed the parent's resources under this test + period: 2026 + input: + people: + person1: + age: 45 + is_tax_unit_head: true + own_children_in_household: 1 + bank_account_assets: 100_000 + person2: + age: 10 + is_tax_unit_dependent: true + is_blind: true + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit1: + members: [person1] + marital_unit2: + members: [person2] + households: + household: + members: [person1, person2] + state_code: IL + output: + is_optional_senior_or_disabled_asset_eligible: [false, true] + +# MHABD 0805.020.10 deems a parent's resources and leaves out resources owned +# solely by a stepparent, and a stepparent is not a second parent. With no +# children of their own, person2 is only the child's stepparent. +- name: Missouri child living with a parent and a stepparent is tested against the one-parent limit, ineligible + period: 2026 + input: + people: + person1: + age: 40 + is_tax_unit_head: true + own_children_in_household: 1 + bank_account_assets: 8_000 + person2: + age: 42 + is_tax_unit_spouse: true + person3: + age: 10 + is_tax_unit_dependent: true + is_blind: true + tax_units: + tax_unit: + members: [person1, person2, person3] + marital_units: + marital_unit1: + members: [person1, person2] + marital_unit2: + members: [person3] + households: + household: + members: [person1, person2, person3] + state_code: MO + output: + # Child: 8,000 is above the 6,068.80 one-parent limit, though within the + # 12,137.55 limit for two parents. The couple's own 8,000 is within their limit. + is_optional_senior_or_disabled_asset_eligible: [true, true, false] + +- name: Missouri child is not deemed resources owned solely by a stepparent, eligible + period: 2026 + input: + people: + person1: + age: 40 + is_tax_unit_head: true + own_children_in_household: 1 + person2: + age: 42 + is_tax_unit_spouse: true + bank_account_assets: 20_000 + person3: + age: 10 + is_tax_unit_dependent: true + is_blind: true + tax_units: + tax_unit: + members: [person1, person2, person3] + marital_units: + marital_unit1: + members: [person1, person2] + marital_unit2: + members: [person3] + households: + household: + members: [person1, person2, person3] + state_code: MO + output: + # Child: the parent's 0 is deemed and the stepparent's 20,000 is left out. The + # couple's own 20,000 is above the 12,137.55 couple limit. + is_optional_senior_or_disabled_asset_eligible: [false, false, true] + +# MHABD 0805.020.05: a child with no natural or adoptive parent in the home does +# not live with a parent, so nothing is deemed. A minor parent is not their own +# parent, so their 4,000 counts once, within the 6,068.80 limit; counted twice, +# 8,000 would fail. +- name: Missouri blind minor parent with no parent at home counts their own resources once, eligible + period: 2026 + input: + people: + person1: + age: 17 + is_tax_unit_head: true + is_blind: true + own_children_in_household: 1 + bank_account_assets: 4_000 + person2: + age: 0 + is_tax_unit_dependent: true + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit1: + members: [person1] + marital_unit2: + members: [person2] + households: + household: + members: [person1, person2] + state_code: MO + output: + is_optional_senior_or_disabled_asset_eligible: [true, true] + +# A minor parent is not their own parent, so a 17-year-old living with their +# parent has one parent, not two: 4,000 + the parent's 3,000 = 7,000 is above the +# 6,068.80 one-parent limit, though within the 12,137.55 limit for two parents. +- name: Missouri blind minor parent living with their own parent is tested against the one-parent limit, ineligible + period: 2026 + input: + people: + person1: + age: 45 + is_tax_unit_head: true + own_children_in_household: 1 + bank_account_assets: 3_000 + person2: + age: 17 + is_tax_unit_dependent: true + is_blind: true + own_children_in_household: 1 + bank_account_assets: 4_000 + person3: + age: 0 + is_tax_unit_dependent: true + tax_units: + tax_unit: + members: [person1, person2, person3] + marital_units: + marital_unit1: + members: [person1] + marital_unit2: + members: [person2] + marital_unit3: + members: [person3] + households: + household: + members: [person1, person2, person3] + state_code: MO + output: + is_optional_senior_or_disabled_asset_eligible: [true, false, true] diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_for_medicaid.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_for_medicaid.yaml index 87f33b967a3..9acce18ff53 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_for_medicaid.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_for_medicaid.yaml @@ -491,3 +491,273 @@ output: is_optional_senior_or_disabled_for_medicaid: false medicaid_category: NONE + +# MHABD 0805.020.15 deems the parent's income to the child: (70,000 / 12 - 20 +# - 65) / 2 x 12 = 34,490, less the parent's allowance of 994 x 12 = 11,928, +# is 22,562. The child's budget takes off the 20 exemption and rounds down: +# 22,562 / 12 - 20 = 1,860.17, so 1,860 a month or 22,320 a year. The same +# section counts the parent's incurred medical expenses toward the child's +# spend down: 22,320 - 10,000 = 12,320, within the standard. +- name: Case 28, Missouri blind child spends down on the parent's medical expenses. + period: 2026 + input: + people: + person1: + age: 40 + is_tax_unit_head: true + own_children_in_household: 1 + employment_income_before_lsr: 70_000 + other_medical_expenses: 10_000 + person2: + age: 8 + is_tax_unit_dependent: true + is_blind: true + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit1: + members: [person1] + marital_unit2: + members: [person2] + households: + household: + members: [person1, person2] + state_code: MO + output: + medicaid_optional_senior_or_disabled_countable_income: [0, 22_320] + medicaid_parental_medical_expense_share: [0, 10_000] + is_optional_senior_or_disabled_for_medicaid: [false, true] + medicaid_category: [NONE, SENIOR_OR_DISABLED] + +# Without expenses, 22,320 is above the 15,960 blind standard. +- name: Case 29, Missouri blind child with no medical expenses in the family stays above the standard. + period: 2026 + input: + people: + person1: + age: 40 + is_tax_unit_head: true + own_children_in_household: 1 + employment_income_before_lsr: 70_000 + person2: + age: 8 + is_tax_unit_dependent: true + is_blind: true + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit1: + members: [person1] + marital_unit2: + members: [person2] + households: + household: + members: [person1, person2] + state_code: MO + output: + is_optional_senior_or_disabled_for_medicaid: [false, false] + medicaid_category: [NONE, NONE] + +# Two disabled children divide the deemed income equally (MHABD 0805.020.15): +# (100,000 / 12 - 85) / 2 x 12 = 49,490, less 11,928, is 37,562, or 18,781 +# each. Each child's budget is 18,781 / 12 - 20 = 1,545.08, so 1,545 a month or +# 18,540 a year. SSI countable income of 18,781 - 240 = 18,541 is above the +# 11,928 SSI rate, so neither child receives SSI. Each child must spend down +# 18,540 - 13,572 = 4,968, which is exactly half of the parent's 9,936. +- name: Case 30, two Missouri disabled children each reach the standard on half of the parent's medical expenses. + period: 2026 + input: + people: + person1: + age: 42 + is_tax_unit_head: true + own_children_in_household: 2 + employment_income_before_lsr: 100_000 + other_medical_expenses: 9_936 + person2: + age: 11 + is_tax_unit_dependent: true + meets_ssi_disability_criteria: true + person3: + age: 8 + is_tax_unit_dependent: true + meets_ssi_disability_criteria: true + tax_units: + tax_unit: + members: [person1, person2, person3] + marital_units: + marital_unit1: + members: [person1] + marital_unit2: + members: [person2] + marital_unit3: + members: [person3] + households: + household: + members: [person1, person2, person3] + state_code: MO + output: + ssi: [0, 0, 0] + medicaid_optional_senior_or_disabled_countable_income: [0, 18_540, 18_540] + medicaid_parental_medical_expense_share: [0, 4_968, 4_968] + is_optional_senior_or_disabled_for_medicaid: [false, true, true] + medicaid_category: [NONE, SENIOR_OR_DISABLED, SENIOR_OR_DISABLED] + +# Half of 9,934 is 4,967, which leaves each child at 13,573, a dollar above the +# 13,572 standard. Deducting the whole 9,934 from each child would pass. +- name: Case 31, two Missouri disabled children stay a dollar above the standard on half of the parent's medical expenses. + period: 2026 + input: + people: + person1: + age: 42 + is_tax_unit_head: true + own_children_in_household: 2 + employment_income_before_lsr: 100_000 + other_medical_expenses: 9_934 + person2: + age: 11 + is_tax_unit_dependent: true + meets_ssi_disability_criteria: true + person3: + age: 8 + is_tax_unit_dependent: true + meets_ssi_disability_criteria: true + tax_units: + tax_unit: + members: [person1, person2, person3] + marital_units: + marital_unit1: + members: [person1] + marital_unit2: + members: [person2] + marital_unit3: + members: [person3] + households: + household: + members: [person1, person2, person3] + state_code: MO + output: + medicaid_parental_medical_expense_share: [0, 4_967, 4_967] + is_optional_senior_or_disabled_for_medicaid: [false, false, false] + medicaid_category: [NONE, NONE, NONE] + +# The child passes the income test: 22,320 - 10,000 = 12,320. MHABD 0805.020.10 +# adds the entire 100,000 to the child's resources, above the 6,068.80 limit. +- name: Case 32, Missouri blind child with a parent's savings above the limit is ineligible after spending down. + period: 2026 + input: + people: + person1: + age: 40 + is_tax_unit_head: true + own_children_in_household: 1 + employment_income_before_lsr: 70_000 + bank_account_assets: 100_000 + person2: + age: 8 + is_tax_unit_dependent: true + is_blind: true + other_medical_expenses: 10_000 + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit1: + members: [person1] + marital_unit2: + members: [person2] + households: + household: + members: [person1, person2] + state_code: MO + output: + is_209b_ssi_recipient_income_eligible_for_medicaid: [true, true] + is_optional_senior_or_disabled_asset_eligible: [false, false] + is_optional_senior_or_disabled_for_medicaid: [false, false] + medicaid_category: [NONE, NONE] + +# Missouri covers a nonblind disabled child (MHABD 0805.020.00). 22,320 - 9,000 +# = 13,320 is within the 13,572 standard. +- name: Case 33, Missouri nonblind disabled child spends down on the child's own medical expenses. + period: 2026 + input: + people: + person1: + age: 40 + is_tax_unit_head: true + own_children_in_household: 1 + employment_income_before_lsr: 70_000 + person2: + age: 8 + is_tax_unit_dependent: true + meets_ssi_disability_criteria: true + other_medical_expenses: 9_000 + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit1: + members: [person1] + marital_unit2: + members: [person2] + households: + household: + members: [person1, person2] + state_code: MO + output: + is_optional_senior_or_disabled_for_medicaid: [false, true] + medicaid_category: [NONE, SENIOR_OR_DISABLED] + +# Countable income is 24,000 - 240 = 23,760, and 23,760 - 13,572 = 10,188. +- name: Case 34, Missouri disabled adult under 65 spends down exactly to the standard. + period: 2026 + input: + age: 50 + meets_ssi_disability_criteria: true + social_security_disability: 24_000 + other_medical_expenses: 10_188 + state_code: MO + output: + is_optional_senior_or_disabled_for_medicaid: true + medicaid_category: SENIOR_OR_DISABLED + +- name: Case 35, Missouri disabled adult under 65 stays a dollar above the standard after expenses. + period: 2026 + input: + age: 50 + meets_ssi_disability_criteria: true + social_security_disability: 24_000 + other_medical_expenses: 10_187 + state_code: MO + output: + is_optional_senior_or_disabled_for_medicaid: false + medicaid_category: NONE + +# The couple's income is the aged spouse's 24,000 - 240 = 23,760. The other +# spouse's 5,364 of expenses bring it to 18,396, exactly 12 x 1,533. The +# 60-year-old is not aged, blind or disabled, so stays outside the group. +- name: Case 36, Missouri couple with one aged spouse spends down on the other spouse's medical expenses. + period: 2026 + input: + people: + person1: + age: 70 + is_tax_unit_head: true + social_security_retirement: 24_000 + person2: + age: 60 + is_tax_unit_spouse: true + other_medical_expenses: 5_364 + marital_units: + marital_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MO + output: + medicaid_optional_senior_or_disabled_income_limit: [18_396, 18_396] + is_optional_senior_or_disabled_for_medicaid: [true, false] diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_ssi_recipient_for_medicaid.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_ssi_recipient_for_medicaid.yaml index 595d30fbe4e..75865b20829 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_ssi_recipient_for_medicaid.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_ssi_recipient_for_medicaid.yaml @@ -49,7 +49,7 @@ output: is_ssi_recipient_for_medicaid: true -- name: Case 7, SSI recipient child in Missouri remains excluded from 209(b). +- name: Case 7, SSI recipient child in Missouri qualifies through 209(b). period: 2026 input: ssi: 12_000 @@ -59,7 +59,7 @@ is_optional_senior_or_disabled_income_eligible: true is_optional_senior_or_disabled_asset_eligible: true output: - is_ssi_recipient_for_medicaid: false + is_ssi_recipient_for_medicaid: true - name: Case 5, SSI recipient in Oklahoma qualifies through SSI criteria. period: 2026 diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/medically_needy/is_medically_needy_for_medicaid.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/medically_needy/is_medically_needy_for_medicaid.yaml index a3934f084f7..c74522dc334 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/medically_needy/is_medically_needy_for_medicaid.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/medically_needy/is_medically_needy_for_medicaid.yaml @@ -940,3 +940,40 @@ # 2027 still reads the 195,000 couple limit; 31,000 first applies in 2028. is_in_medicaid_medically_needy_category: [true, true] is_medically_needy_for_medicaid: [true, true] + +# Illinois has a medically needy program, so the child's spend down runs through +# it. SSI countable income: (70,000 / 12 - 85) / 2 x 12 = 34,490, less 11,928, +# is 22,562, and 22,562 - 240 = 22,322. The parent's 12,000 of expenses bring it +# to 10,322, within the 15,960 limit. +- name: Case 37, Illinois blind child spends down through medically needy on the parent's medical expenses. + period: 2026 + input: + people: + person1: + age: 40 + is_tax_unit_head: true + own_children_in_household: 1 + employment_income_before_lsr: 70_000 + other_medical_expenses: 12_000 + person2: + age: 8 + is_tax_unit_dependent: true + is_blind: true + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit1: + members: [person1] + marital_unit2: + members: [person2] + households: + household: + members: [person1, person2] + state_code: IL + output: + ssi_countable_income: [0, 22_322] + medicaid_parental_medical_expense_share: [0, 12_000] + is_optional_senior_or_disabled_for_medicaid: [false, false] + is_medically_needy_for_medicaid: [false, true] + medicaid_category: [NONE, MEDICALLY_NEEDY] diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/medically_needy/medicaid_parental_medical_expense_share.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/medically_needy/medicaid_parental_medical_expense_share.yaml new file mode 100644 index 00000000000..483e18c2b2f --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/medically_needy/medicaid_parental_medical_expense_share.yaml @@ -0,0 +1,139 @@ +# A child's spend down deducts the expenses of financially responsible relatives +# (42 CFR 435.121(f)(1)(iii), 435.831(d)): the parents whose income is deemed +# (MHABD 0805.020.15). Children split them as they split the deemed income. +- name: Case 1, two disabled children split the parent's medical expenses equally. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 40 + is_tax_unit_head: true + own_children_in_household: 2 + other_medical_expenses: 9_000 + person2: + age: 11 + is_tax_unit_dependent: true + meets_ssi_disability_criteria: true + person3: + age: 8 + is_tax_unit_dependent: true + is_blind: true + tax_units: + tax_unit: + members: [person1, person2, person3] + marital_units: + marital_unit1: + members: [person1] + marital_unit2: + members: [person2] + marital_unit3: + members: [person3] + households: + household: + members: [person1, person2, person3] + state_code: MO + output: + # 9,000 / 2 = 4,500. + medicaid_parental_medical_expense_share: [0, 4_500, 4_500] + +- name: Case 2, a sibling who is not disabled takes no share of the parent's medical expenses. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 40 + is_tax_unit_head: true + own_children_in_household: 2 + other_medical_expenses: 6_000 + person2: + age: 11 + is_tax_unit_dependent: true + meets_ssi_disability_criteria: true + person3: + age: 8 + is_tax_unit_dependent: true + tax_units: + tax_unit: + members: [person1, person2, person3] + marital_units: + marital_unit1: + members: [person1] + marital_unit2: + members: [person2] + marital_unit3: + members: [person3] + households: + household: + members: [person1, person2, person3] + state_code: MO + output: + medicaid_parental_medical_expense_share: [0, 6_000, 0] + +- name: Case 3, a disabled child receives both parents' medical expenses. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 40 + is_tax_unit_head: true + own_children_in_household: 1 + other_medical_expenses: 3_000 + person2: + age: 38 + is_tax_unit_spouse: true + own_children_in_household: 1 + other_medical_expenses: 2_000 + person3: + age: 11 + is_tax_unit_dependent: true + meets_ssi_disability_criteria: true + tax_units: + tax_unit: + members: [person1, person2, person3] + marital_units: + marital_unit1: + members: [person1, person2] + marital_unit2: + members: [person3] + households: + household: + members: [person1, person2, person3] + state_code: MO + output: + # 3,000 + 2,000 = 5,000. + medicaid_parental_medical_expense_share: [0, 0, 5_000] + +# A disabled parent is not an ineligible parent, so their income is not deemed +# and their expenses are not shared. +- name: Case 4, a disabled parent's medical expenses are not shared with the child. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 40 + is_tax_unit_head: true + own_children_in_household: 1 + meets_ssi_disability_criteria: true + other_medical_expenses: 6_000 + person2: + age: 11 + is_tax_unit_dependent: true + meets_ssi_disability_criteria: true + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit1: + members: [person1] + marital_unit2: + members: [person2] + households: + household: + members: [person1, person2] + state_code: MO + output: + medicaid_parental_medical_expense_share: [0, 0] diff --git a/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_209b_ssi_recipient_income_eligible_for_medicaid.py b/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_209b_ssi_recipient_income_eligible_for_medicaid.py index da396f055d4..67157ae668e 100644 --- a/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_209b_ssi_recipient_income_eligible_for_medicaid.py +++ b/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_209b_ssi_recipient_income_eligible_for_medicaid.py @@ -4,16 +4,19 @@ class is_209b_ssi_recipient_income_eligible_for_medicaid(Variable): value_type = bool entity = Person - label = "209(b) SSI-recipient income eligibility for Medicaid" + label = "209(b) income eligibility for Medicaid" documentation = ( - "Whether this SSI recipient satisfies the income test for Medicaid " - "through a Section 209(b) state's more restrictive aged, blind, or " - "disabled criteria, including spenddown of incurred medical expenses." + "Whether this person satisfies the income test for Medicaid through a " + "Section 209(b) state's more restrictive aged, blind, or disabled " + "criteria, including spenddown of incurred medical expenses. It " + "decides SSI recipients in every 209(b) state, and people who do not " + "receive SSI in a 209(b) state with no medically needy program." ) definition_period = YEAR reference = ( "https://www.medicaid.gov/resources-for-states/downloads/macpro-ig-more-restrictive-requirements-1902f-209bstates.pdf#page=3", "https://www.govinfo.gov/link/cfr/42/435?link-type=pdf§ionnum=121&year=mostrecent", + "https://dssmanuals.mo.gov/mo-healthnet-for-the-aged-blind-and-disabled/0805-000-00/0805-020-00/0805-020-15/", ) def formula(person, period, parameters): @@ -26,10 +29,15 @@ def formula(person, period, parameters): # The countable-income measure does not add modeled SSI or state # supplement benefits, so apply the remaining 435.121 spenddown here. medical_expenses = person("medicaid_medically_needy_medical_expenses", period) + # 42 CFR 435.121(f)(1)(iii) also deducts the expenses of financially + # responsible relatives, and MHABD 0805.020.15 names a child's parents. + parental_expense_share = person( + "medicaid_parental_medical_expense_share", period + ) # SSI financial responsibility rules (42 CFR 435.602): the unit is # the individual or the married couple, not the tax filing unit. income_after_spenddown = person.marital_unit.sum( - personal_income - medical_expenses + personal_income - medical_expenses - parental_expense_share ) # The limit is per person (Missouri's blind standard can differ diff --git a/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_asset_eligible.py b/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_asset_eligible.py index b4745bda5ad..07d79a8108c 100644 --- a/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_asset_eligible.py +++ b/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_asset_eligible.py @@ -1,4 +1,11 @@ from policyengine_us.model_api import * +from policyengine_us.variables.gov.ssa.ssi.eligibility.resources.deemed.ssi_resources_deemed_from_ineligible_parent import ( + _ssi_parental_resource_pool, +) +from policyengine_us.variables.household.demographic.person._parent_links import ( + has_parent_ids, + unlinked_parent, +) class is_optional_senior_or_disabled_asset_eligible(Variable): @@ -11,6 +18,9 @@ class is_optional_senior_or_disabled_asset_eligible(Variable): "https://www.law.cornell.edu/uscode/text/42/1396d#p", "https://revisor.mo.gov/main/OneSection.aspx?section=208.010", "https://www.law.cornell.edu/regulations/california/22-CCR-50420", + "https://dssmanuals.mo.gov/mo-healthnet-for-the-aged-blind-and-disabled/0805-000-00/0805-020-00/0805-020-05/", + "https://dssmanuals.mo.gov/mo-healthnet-for-the-aged-blind-and-disabled/0805-000-00/0805-020-00/0805-020-10/", + "https://dssmanuals.mo.gov/wp-content/uploads/2018/10/appendix_k.pdf#page=2", ) def formula(person, period, parameters): @@ -18,8 +28,6 @@ def formula(person, period, parameters): # SSI financial responsibility rules (42 CFR 435.602): the unit is # the individual or the married couple, not the tax filing unit. personal_assets = person("ssi_countable_resources", period) # $ - # Inputs are stored as float32, so compare whole cents with the limit. - assets = np.round(person.marital_unit.sum(personal_assets), 2) is_couple = person.marital_unit.nb_persons() == 2 state = person.household("state_code_str", period) @@ -28,6 +36,46 @@ def formula(person, period, parameters): period ).gov.hhs.medicaid.eligibility.categories.senior_or_disabled + # Missouri deems "the entire amount" of the available resources of a + # parent a child lives with, leaving out retirement accounts, which + # ssi_countable_resources does not count, and "resources owned solely + # by the stepparent" (MHABD 0805.020.10). The SSI pool also holds a + # parent's spouse, so count only parents. A child who is married, or in + # a facility or foster care, does not live with a parent (MHABD + # 0805.020.05). + # NOTE: The exception for a parent or parent's spouse on non-spend-down + # Medicaid is not modeled, because the parent's Medicaid eligibility + # depends on this variable. Parent ids may name a stepparent, and a + # stepparent with children of their own is a parent here. Resources + # held jointly with a stepparent count only if entered on the parent. + month = period.first_month + resources = person("ssi_resources_for_deeming", month) + is_parent = person("is_parent", month) + parent_resources, _, _ = _ssi_parental_resource_pool( + person, month, resources * is_parent + ) + parents, _, _ = _ssi_parental_resource_pool(person, month, is_parent) + # Without parent ids, a minor parent's pool holds their own row. Their + # resources are already the child's own, and they are not their own + # parent. + own_row = unlinked_parent(person, month) & ~has_parent_ids(person, month) + parental_resources = parent_resources - own_row * resources + parent_count = parents - own_row + deems_parents = ( + p.assets.deems_entire_parental_resources[state].astype(bool) + & person("is_ssi_aged_blind_disabled", period) + & person("is_child", period) + & (person.marital_unit.nb_persons() == 1) + & ~person("ssi_lives_in_medical_treatment_facility", month) + & ~person("is_in_foster_care", month) + ) + # Inputs are stored as float32, so compare whole cents with the limit. + assets = np.round( + person.marital_unit.sum(personal_assets) + + where(deems_parents, parental_resources, 0), + 2, + ) + # Maine excludes savings up to a set amount (22 M.R.S. ยง 3174-AA(2)). # Its savings include bank accounts, stocks and bonds, which make up # all of the SSI countable resources modeled here. @@ -37,8 +85,12 @@ def formula(person, period, parameters): assets = max_(assets - savings_exclusion, 0) # Asset limit + # Missouri's Appendix K sets the same amounts for a "Child living with + # 1 parent" and a "Child living with 2 parents" as for an individual + # and a couple. + uses_couple_limit = is_couple | (deems_parents & (parent_count > 1)) state_limit = where( - is_couple, + uses_couple_limit, p.assets.limit.couple[state], p.assets.limit.individual[state], ) @@ -56,7 +108,7 @@ def formula(person, period, parameters): # resources not to exceed" the couple amount. California resources may # not exceed the limit (22 CCR 50420(a); WIC 14005.40(c)(5)). inclusive = where( - is_couple, + uses_couple_limit, p.assets.limit.couple_limit_inclusive[state], p.assets.limit.individual_limit_inclusive[state], ).astype(bool) diff --git a/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_for_medicaid.py b/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_for_medicaid.py index ab805eea618..702ac9d5edd 100644 --- a/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_for_medicaid.py +++ b/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_for_medicaid.py @@ -14,6 +14,8 @@ class is_optional_senior_or_disabled_for_medicaid(Variable): "https://www.ecfr.gov/current/title-42/section-440.255#p-440.255(c)", "https://www.law.cornell.edu/cfr/text/42/435.121", "https://dssmanuals.mo.gov/wp-content/uploads/2022/07/mhabd-appendix-j.pdf#page=1", + "https://dssmanuals.mo.gov/mo-healthnet-for-the-aged-blind-and-disabled/0810-000-00/0810-010-00/", + "https://dssmanuals.mo.gov/mo-healthnet-for-the-aged-blind-and-disabled/0810-000-00/0810-010-00/0810-010-15/", ) def formula(person, period, parameters): @@ -52,19 +54,22 @@ def formula(person, period, parameters): person("is_ssi_aged_blind_disabled", period), person("is_ssi_aged", period), ) - # People on the SSI-group exception path pass with its income test: - # for a couple, the SSI couple rate is above 80% of the poverty - # guideline for two. This holds for aged people too, since 42 U.S.C. - # 1396b(v)(2)(B) waives only the receipt of SSI. # A 209(b) state with no medically needy program for aged, blind and # disabled people must let them deduct incurred medical expenses to # reach its income standard, whether or not they receive SSI # (42 CFR 435.121(e)(4)). Only Missouri fits this description; MHABD # Appendix J publishes its spend down standards. + # NOTE: The model tests annual expenses. Missouri tests monthly, with + # three-month carryover (MHABD 0810.010.15) and a pay-in option (MHABD + # 0810.010.00) that the model does not represent. classified = person("medicaid_ssi_recipient_state_classification", period) must_allow_spend_down = ( classified == classified.possible_values.SECTION_209B ) & ~person("is_in_medicaid_medically_needy_category", period) + # People on the SSI-group exception path pass with its income test: + # for a couple, the SSI couple rate is above 80% of the poverty + # guideline for two. This holds for aged people too, since 42 U.S.C. + # 1396b(v)(2)(B) waives only the receipt of SSI. income_eligible = ( on_exception_path | person("is_optional_senior_or_disabled_income_eligible", period) diff --git a/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/medically_needy/is_medically_needy_for_medicaid.py b/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/medically_needy/is_medically_needy_for_medicaid.py index 633c16213f9..459d75d6c5c 100644 --- a/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/medically_needy/is_medically_needy_for_medicaid.py +++ b/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/medically_needy/is_medically_needy_for_medicaid.py @@ -40,19 +40,8 @@ def formula(person, period, parameters): # the individual or the married couple, plus parents for a child, # not the tax filing unit. marital_unit = person.marital_unit - # 42 CFR 435.831(d) deducts expenses of financially responsible - # relatives. For a child these are the ineligible parents whose - # income SSI deems (20 CFR 416.1165); split their expenses among the - # eligible children as the deemed income is split, so that an - # expense is deducted once. - tax_unit = person.tax_unit - eligible_child = is_aged_blind_or_disabled & person("is_child", period) - parental_expenses = tax_unit.sum( - medical_expenses * person("is_ssi_ineligible_parent", period) - ) - eligible_children = tax_unit.sum(eligible_child) - parental_expense_share = where( - eligible_child, parental_expenses / max_(eligible_children, 1), 0 + parental_expense_share = person( + "medicaid_parental_medical_expense_share", period ) income = marital_unit.sum( personal_income - medical_expenses - parental_expense_share diff --git a/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/medically_needy/medicaid_parental_medical_expense_share.py b/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/medically_needy/medicaid_parental_medical_expense_share.py new file mode 100644 index 00000000000..02d0a27db77 --- /dev/null +++ b/policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/medically_needy/medicaid_parental_medical_expense_share.py @@ -0,0 +1,33 @@ +from policyengine_us.model_api import * + + +class medicaid_parental_medical_expense_share(Variable): + value_type = float + entity = Person + label = "Medicaid child's share of parents' medical expenses" + unit = USD + definition_period = YEAR + reference = ( + "https://www.ecfr.gov/current/title-42/section-435.121#p-435.121(f)(1)(iii)", + "https://www.ecfr.gov/current/title-42/section-435.831#p-435.831(d)", + "https://www.ecfr.gov/current/title-20/section-416.1165", + "https://dssmanuals.mo.gov/mo-healthnet-for-the-aged-blind-and-disabled/0805-000-00/0805-020-00/0805-020-15/", + ) + + def formula(person, period, parameters): + # 42 CFR 435.121(f)(1)(iii) and 435.831(d) deduct expenses of + # financially responsible relatives. For a child these are the + # ineligible parents whose income SSI deems (20 CFR 416.1165), and + # MHABD 0805.020.15 names the same parents in Missouri. Split their + # expenses among the eligible children as the deemed income is split, + # so that an expense is deducted once. + tax_unit = person.tax_unit + eligible_child = person("is_ssi_aged_blind_disabled", period) & person( + "is_child", period + ) + parental_expenses = tax_unit.sum( + person("medicaid_medically_needy_medical_expenses", period) + * person("is_ssi_ineligible_parent", period) + ) + eligible_children = tax_unit.sum(eligible_child) + return where(eligible_child, parental_expenses / max_(eligible_children, 1), 0) diff --git a/source_conflicts/candidates.yaml b/source_conflicts/candidates.yaml index 26868adc56d..25333ac4f1b 100644 --- a/source_conflicts/candidates.yaml +++ b/source_conflicts/candidates.yaml @@ -4814,34 +4814,41 @@ candidates: - id: us-mo:mhabd-nonblind-disabled-children program: medicaid years: - from: 2026 - to: 2026 + from: 2024 type: program note: program year as the program defines it - question: Does Missouri's aged, blind and disabled Medicaid group cover nonblind disabled children under 18, as - the spend down heading in MHABD Appendix J says, or leave them out, as POMS SI 01715.010 says of Missouri's - definition of disability? + question: Do Missouri's aged, blind and disabled Medicaid groups cover nonblind disabled children under 18, as + MHABD 0805.020.00 and Appendix K say, or leave them out, as POMS SI 01715.010 says of Missouri's definition of + disability? sources: - kind: guidance citation: POMS SI 01715.010 A.1, note on Connecticut, Missouri and New Hampshire url: https://secure.ssa.gov/apps10/poms.nsf/lnx/0501715010 - kind: manual - citation: MHABD Appendix J, "Spend Down (includes disabled child) - MHNS, MHSD, MHDC" - url: https://dssmanuals.mo.gov/wp-content/uploads/2022/07/mhabd-appendix-j.pdf#page=1 + citation: MHABD 0805.020.00, MO HealthNet for Disabled Children (MHDC) + url: https://dssmanuals.mo.gov/mo-healthnet-for-the-aged-blind-and-disabled/0805-000-00/0805-020-00/ + - kind: manual + citation: MHABD Appendix K (07/2026), MO HealthNet for Disabled Children (MHDC) row + url: https://dssmanuals.mo.gov/wp-content/uploads/2018/10/appendix_k.pdf#page=2 readings: - guidance: Missouri does not include nonblind individuals under 18 in its definition of disability. - other: Missouri's spend down standards include a disabled child. - example: A nonblind disabled eight-year-old in Missouri whose parent earns $40,000 falls outside the 209(b) SSI - route but inside the optional aged, blind and disabled pathway, which reads no such exclusion. + guidance: These States "do not include nonblind individuals under the age of 18 in their definition of disability." + other: '"[D]isabled children (under age 18) may receive MO HealthNet as spend down, non-spend down or vendor", and + the MHDC row covers a child who is "permanently and totally disabled, or blind".' + example: A nonblind disabled eight-year-old in Missouri whose parent earns $70,000, with $9,000 of the child's own + medical expenses, spends down to Medicaid under the Missouri manual and has no such route under POMS. pe_us: - follows: unknown + follows: gap-fill code: + - policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/ssi_recipient/section_209b/excludes_nonblind_disabled_children.yaml - policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_209b_ssi_recipient_for_medicaid.py - policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_for_medicaid.py - state: unreviewed - note: is_209b_ssi_recipient_for_medicaid excludes these children through excludes_nonblind_disabled_children, - and is_optional_senior_or_disabled_for_medicaid does not. Neither source has been checked against the Missouri - state plan. + prs: + - https://github.com/PolicyEngine/policyengine-us/pull/10629 + state: ruled + note: 'PE-US covers these children on both the 209(b) SSI route and the optional aged, blind and disabled pathway, + following Missouri''s own manual and Appendix K. POMS is secondhand on a state''s Medicaid rules, and 42 CFR + 435.121(d) lets a state take either position. The Missouri state plan was not read. Ruled by the project lead, + 2026-11-02: https://github.com/PolicyEngine/policyengine-us/pull/10629' - id: us-mo:mhabd-resource-limit-boundary program: medicaid years: @@ -4881,6 +4888,37 @@ candidates: 536.014(2) makes a rule that is in conflict with state law not valid. Missouri fiscal year 2018 began July 1, 2017. Before then, RSMo 208.010.2(4) (before August 28, 2016) and 13 CSR 40-2.030(12) set a strict single-person test and an inclusive couple test, and the sources did not disagree. +- id: us-mo:mhdc-child-resource-limit + program: medicaid + years: + from: 2026 + type: program + note: program year as the program defines it + question: Is a Missouri disabled child who lives with two parents tested against the individual resource limit, as + MHABD 0805.020.10 says, or the limit Appendix K lists for a child living with two parents? + sources: + - kind: manual + citation: MHABD 0805.020.10, Deeming Parental Resources + url: https://dssmanuals.mo.gov/mo-healthnet-for-the-aged-blind-and-disabled/0805-000-00/0805-020-00/0805-020-10/ + - kind: manual + citation: MHABD Appendix K (07/2026), MO HealthNet for Disabled Children (MHDC) row + url: https://dssmanuals.mo.gov/wp-content/uploads/2018/10/appendix_k.pdf#page=2 + readings: + manual: '"If the total exceeds the individual resource limit, the child is ineligible."' + other: '"Child living with 1 parent: $6,220.50"; "Child living with 2 parents: $12,441.00".' + example: Under the July 2026 amounts, a child whose two parents hold $10,000 in a bank account fails the $6,220.50 + individual limit and passes the $12,441 limit for a child living with two parents. + pe_us: + follows: gap-fill + code: + - policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_asset_eligible.py + prs: + - https://github.com/PolicyEngine/policyengine-us/pull/10629 + state: ruled + note: 'PE-US uses Appendix K''s limit, which is specific to this case and dated 07/2026, and reads it from the couple + limit, which holds the same amount. Both texts deem the parents'' entire resources, so PE-US does not use SSI''s + allocation in ssi_resources_deemed_from_ineligible_parent here. Ruled by the project lead, 2026-11-02: + https://github.com/PolicyEngine/policyengine-us/pull/10629' - id: us-mo:negative-federal-agi-combined-return program: income-tax years: