From d42beea383ea6965ba3e4fdc8c9a9667f73caf01 Mon Sep 17 00:00:00 2001 From: Ziming Date: Wed, 21 Oct 2026 17:06:58 -0400 Subject: [PATCH 1/9] Update Medicaid aged, blind and disabled pathway disregards and asset limits - California: $20 any-income deduction from 2020-12-01 (ACWDL 20-24). - Connecticut: $562 / $1,124 unearned income disregard from 2026-01-01. - South Carolina: $50 general income disregard. - Missouri: July 1 asset limits for 2023 through 2026. - Arkansas, Oklahoma and South Carolina: asset limit equals the Medicare Savings Program resource limit, read from that parameter. Closes #10356 Co-Authored-By: Claude Opus 5.5 --- .../medicaid-abd-pathway-values.fixed.md | 1 + .../assets/limit/couple.yaml | 28 ++-- .../assets/limit/individual.yaml | 28 ++-- .../assets/limit/uses_msp_limit.yaml | 123 ++++++++++++++++++ .../income/disregard/couple.yaml | 16 ++- .../income/disregard/individual.yaml | 16 ++- ...nal_senior_or_disabled_asset_eligible.yaml | 69 +++++++++- ...l_senior_or_disabled_countable_income.yaml | 33 +++++ ...ional_senior_or_disabled_asset_eligible.py | 6 +- 9 files changed, 288 insertions(+), 32 deletions(-) create mode 100644 changelog.d/medicaid-abd-pathway-values.fixed.md create mode 100644 policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/uses_msp_limit.yaml diff --git a/changelog.d/medicaid-abd-pathway-values.fixed.md b/changelog.d/medicaid-abd-pathway-values.fixed.md new file mode 100644 index 00000000000..8934c943208 --- /dev/null +++ b/changelog.d/medicaid-abd-pathway-values.fixed.md @@ -0,0 +1 @@ +Updated Medicaid's aged, blind and disabled pathway: California's $20 disregard from December 2020, Connecticut's 2026 disregard, South Carolina's $50 disregard, Missouri's July 1 asset limits for 2023-2026, and asset limits equal to the Medicare Savings Program resource limit in Arkansas, Oklahoma and South Carolina. diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple.yaml index d221c7a2ad5..27670222663 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple.yaml @@ -1,4 +1,4 @@ -description: Asset limit (of SSI countable assets) for a couple to qualify for Medicaid under the optional senior or disabled pathway. +description: Asset limit (of SSI countable assets) for a couple to qualify for Medicaid under the optional senior or disabled pathway. States whose limit is the Medicare Savings Program resource limit are listed in uses_msp_limit and omitted here. metadata: unit: currency-USD label: Medicaid senior or disabled asset limit (couple) @@ -12,6 +12,18 @@ metadata: href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/Pages/Asset-Limit-Changes-for-Non-MAGI-Medi-Cal.aspx - title: "California DHCS All County Welfare Directors Letter 25-14 (reinstatement of the non-MAGI Medi-Cal asset limit)" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/25-14.pdf + - title: Missouri DSS MO HealthNet for the Aged, Blind and Disabled Appendix J - Eligibility Standards for Non-MAGI Programs + href: https://dssmanuals.mo.gov/wp-content/uploads/2022/07/mhabd-appendix-j.pdf#page=1 + - title: Missouri Revised Statutes 208.010.2(7) + href: https://revisor.mo.gov/main/OneSection.aspx?section=208.010 + - title: 13 Missouri Code of State Regulations 40-8.020(4) + href: https://www.sos.mo.gov/CMSImages/AdRules/csr/current/13csr/13c40-8.pdf#page=1 + - title: Missouri DHSS, Medicaid Spend Down Limit Changes (effective July 1, 2023) + href: https://health.mo.gov/care-providing/long-term-care/medicaid-spend-down-limit-changes + - title: Missouri DHSS, Medicaid Resource Limit/Spenddown Amount (effective July 1, 2024) + href: https://health.mo.gov/care-providing/long-term-care/medicaid-resource-limitspenddown-amount + - title: Missouri DHSS, Resource Limit/Spenddown Amount (effective July 1, 2025) + href: https://health.mo.gov/care-providing/long-term-care/resource-limitspenddown-amount AL: 2015-01-01: 3_000 @@ -19,9 +31,6 @@ AK: 2015-01-01: 3_000 AZ: 2015-01-01: .inf -AR: - 2015-01-01: 11_340 - 2024-01-01: 14_130 CA: 2015-01-01: 3_000 2024-01-01: .inf @@ -71,7 +80,10 @@ MS: 2015-01-01: 3_000 MO: 2015-01-01: 6_000 - 2024-01-01: 11_452 + 2023-07-01: 11_452 + 2024-07-01: 11_818.45 + 2025-07-01: 12_137.55 + 2026-07-01: 12_441 MT: 2015-01-01: 3_000 NE: @@ -93,18 +105,12 @@ ND: 2015-01-01: 6_000 OH: 2015-01-01: 3_000 -OK: - 2015-01-01: 3_000 - 2024-01-01: 14_130 OR: 2015-01-01: 3_000 PA: 2015-01-01: 3_000 RI: 2015-01-01: 6_000 -SC: - 2015-01-01: 11_340 - 2024-01-01: 14_130 SD: 2015-01-01: 3_000 TN: diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual.yaml index 0e9ad620691..7e45621198a 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual.yaml @@ -1,4 +1,4 @@ -description: Asset limit (of SSI countable assets) for an individual to qualify for Medicaid under the optional senior or disabled pathway. +description: Asset limit (of SSI countable assets) for an individual to qualify for Medicaid under the optional senior or disabled pathway. States whose limit is the Medicare Savings Program resource limit are listed in uses_msp_limit and omitted here. metadata: unit: currency-USD period: month @@ -12,6 +12,18 @@ metadata: href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/Pages/Asset-Limit-Changes-for-Non-MAGI-Medi-Cal.aspx - title: "California DHCS All County Welfare Directors Letter 25-14 (reinstatement of the non-MAGI Medi-Cal asset limit)" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/25-14.pdf + - title: Missouri DSS MO HealthNet for the Aged, Blind and Disabled Appendix J - Eligibility Standards for Non-MAGI Programs + href: https://dssmanuals.mo.gov/wp-content/uploads/2022/07/mhabd-appendix-j.pdf#page=1 + - title: Missouri Revised Statutes 208.010.2(7) + href: https://revisor.mo.gov/main/OneSection.aspx?section=208.010 + - title: 13 Missouri Code of State Regulations 40-8.020(4) + href: https://www.sos.mo.gov/CMSImages/AdRules/csr/current/13csr/13c40-8.pdf#page=1 + - title: Missouri DHSS, Medicaid Spend Down Limit Changes (effective July 1, 2023) + href: https://health.mo.gov/care-providing/long-term-care/medicaid-spend-down-limit-changes + - title: Missouri DHSS, Medicaid Resource Limit/Spenddown Amount (effective July 1, 2024) + href: https://health.mo.gov/care-providing/long-term-care/medicaid-resource-limitspenddown-amount + - title: Missouri DHSS, Resource Limit/Spenddown Amount (effective July 1, 2025) + href: https://health.mo.gov/care-providing/long-term-care/resource-limitspenddown-amount AL: 2015-01-01: 2_000 @@ -19,9 +31,6 @@ AK: 2015-01-01: 2_000 AZ: 2015-01-01: .inf -AR: - 2015-01-01: 7_560 - 2024-01-01: 9_430 CA: 2015-01-01: 2_000 2024-01-01: .inf @@ -71,7 +80,10 @@ MS: 2015-01-01: 2_000 MO: 2015-01-01: 3_000 - 2024-01-01: 5_726 + 2023-07-01: 5_726 + 2024-07-01: 5_909.25 + 2025-07-01: 6_068.8 + 2026-07-01: 6_220.5 MT: 2015-01-01: 2_000 NE: @@ -93,18 +105,12 @@ ND: 2015-01-01: 3_000 OH: 2015-01-01: 2_000 -OK: - 2015-01-01: 2_000 - 2024-01-01: 9_430 OR: 2015-01-01: 2_000 PA: 2015-01-01: 2_000 RI: 2015-01-01: 4_000 -SC: - 2015-01-01: 7_560 - 2024-01-01: 9_430 SD: 2015-01-01: 2_000 TN: diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/uses_msp_limit.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/uses_msp_limit.yaml new file mode 100644 index 00000000000..f5f88838188 --- /dev/null +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/uses_msp_limit.yaml @@ -0,0 +1,123 @@ +description: The state sets the Medicaid asset limit for aged, blind, or disabled people who do not receive SSI at the Medicare Savings Program resource limit, if this is true. +metadata: + unit: bool + period: year + label: Medicaid senior or disabled asset limit is the Medicare Savings Program limit + breakdown: + - state_code + reference: + - title: Arkansas Code of Rules 016.20.10-001, Medical Services Policy MS 23110 - ARSeniors, QMB, SMB and QI-1 resources + href: https://www.law.cornell.edu/regulations/arkansas/016-20-10-Ark-Code-R-001 + - title: Arkansas DHS Division of County Operations, Medical Quick Reference Chart 2026 + href: https://humanservices.arkansas.gov/wp-content/uploads/Medical-Quick-Reference-Chart-2026-Final-without-BHSS.pdf#page=2 + - title: Oklahoma Human Services Appendix C-1, Maximum Income, Resource, and Payment Standards, Schedule VI (QMB Plus) + href: https://aem-prod.oklahoma.gov/content/dam/ok/en/okdhs/documents/searchcenter/okdhsformresults/c-1.pdf#page=2 + - title: Oklahoma Administrative Code 317:35-7-40 - Eligibility as Qualified Medicare Beneficiary Plus + href: https://oklahoma.gov/ohca/policies-and-rules/xpolicy/medical-assistance-for-adults-and-children-eligibility/medical-services/determination-of-eligibility-for-medical-services/eligibility-as-qualified-medicare-beneficiary-plus.html + - title: "South Carolina Medicaid State Plan, Attachment 2.6-A, pages 21a-22 (poverty-level aged and disabled resources are the QMB resource standard) #page 41-42" + href: https://scdhhs.gov/sites/dhhs/files/documents/stateplan/Attachment_2.6-A.pdf#page=41 + - title: South Carolina DHHS Medicaid Policy and Procedures Manual 103.14 - Program Resource Limits + href: https://img1.scdhhs.gov/mppm/SCMPPM/Section_100.docx + +AK: + 2015-01-01: false +AL: + 2015-01-01: false +AR: + 2015-01-01: true +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: + 2015-01-01: false +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: true +OR: + 2015-01-01: false +PA: + 2015-01-01: false +RI: + 2015-01-01: false +SC: + 2015-01-01: true +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/senior_or_disabled/income/disregard/couple.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/couple.yaml index b048655d3df..4bc8efd296c 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/couple.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/couple.yaml @@ -14,6 +14,18 @@ metadata: href: https://portal.ct.gov/-/media/aginganddisability/agingservices/choices/benefitsquickguide.pdf#page=2 - title: Connecticut CHOICES Benefits Quick Guide (Rev 04.04.2025) href: https://portal.ct.gov/ads/-/media/ads-beta/choices/choices-benefits-quick-guide.pdf?rev=3b8c59ca12224218bc4c4438649e7ac7#page=1 + - title: "California DHCS All County Welfare Directors Letter 20-24, Aged and Disabled Federal Poverty Level program #page 2-3" + href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/20-24.pdf#page=2 + - title: Connecticut DSS Program Standards Chart (as of January 1, 2026), AABD / MAABD disregards + href: https://portal.ct.gov/-/media/departments-and-agencies/dss/fact-sheets-and-issue-briefs/fact-sheets/dss-program-standards-chart-effective-010126.pdf + - title: Connecticut DSS Uniform Policy Manual 5030.15 - Unearned Income Disregards, AABD and MAABD + href: https://portal.ct.gov/dss/-/media/departments-and-agencies/dss/upms/upm5---treatment-of-income-income-eligibility/5030_15.doc + - title: Connecticut CHOICES Benefits Quick Guide (modified May 29, 2026), HUSKY C + href: https://portal.ct.gov/ads/-/media/ads-beta/choices/choices-benefits-quick-guide.pdf#page=3 + - title: South Carolina DHHS Medicaid Policy and Procedures Manual 303.02.01 and 303.06.03 - ABD general income disregard + href: https://img1.scdhhs.gov/mppm/SCMPPM/Section_300.docx + - title: South Carolina Medicaid State Plan, Supplement 8a to Attachment 2.6-A (effective January 1, 2009) + href: https://scdhhs.gov/sites/dhhs/files/documents/stateplan/Attachment_2.6-A.pdf#page=70 AL: 2015-01-01: 20 @@ -25,6 +37,7 @@ AR: 2015-01-01: 20 CA: 2015-01-01: 310 + 2020-12-01: 20 CO: 2015-01-01: 20 CT: @@ -32,6 +45,7 @@ CT: 2023-01-01: 818 2024-01-01: 1_022 2025-01-01: 1_070 + 2026-01-01: 1_124 DC: 2015-01-01: 20 DE: @@ -99,7 +113,7 @@ PA: RI: 2015-01-01: 20 SC: - 2015-01-01: 20 + 2015-01-01: 50 SD: 2015-01-01: 20 TN: diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/individual.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/individual.yaml index 9f608e3f4f7..cec736e8d35 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/individual.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/individual.yaml @@ -14,6 +14,18 @@ metadata: href: https://portal.ct.gov/-/media/aginganddisability/agingservices/choices/benefitsquickguide.pdf#page=2 - title: Connecticut CHOICES Benefits Quick Guide (Rev 04.04.2025) href: https://portal.ct.gov/ads/-/media/ads-beta/choices/choices-benefits-quick-guide.pdf?rev=3b8c59ca12224218bc4c4438649e7ac7#page=1 + - title: "California DHCS All County Welfare Directors Letter 20-24, Aged and Disabled Federal Poverty Level program #page 2-3" + href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/20-24.pdf#page=2 + - title: Connecticut DSS Program Standards Chart (as of January 1, 2026), AABD / MAABD disregards + href: https://portal.ct.gov/-/media/departments-and-agencies/dss/fact-sheets-and-issue-briefs/fact-sheets/dss-program-standards-chart-effective-010126.pdf + - title: Connecticut DSS Uniform Policy Manual 5030.15 - Unearned Income Disregards, AABD and MAABD + href: https://portal.ct.gov/dss/-/media/departments-and-agencies/dss/upms/upm5---treatment-of-income-income-eligibility/5030_15.doc + - title: Connecticut CHOICES Benefits Quick Guide (modified May 29, 2026), HUSKY C + href: https://portal.ct.gov/ads/-/media/ads-beta/choices/choices-benefits-quick-guide.pdf#page=3 + - title: South Carolina DHHS Medicaid Policy and Procedures Manual 303.02.01 and 303.06.03 - ABD general income disregard + href: https://img1.scdhhs.gov/mppm/SCMPPM/Section_300.docx + - title: South Carolina Medicaid State Plan, Supplement 8a to Attachment 2.6-A (effective January 1, 2009) + href: https://scdhhs.gov/sites/dhhs/files/documents/stateplan/Attachment_2.6-A.pdf#page=70 AL: 2015-01-01: 20 @@ -25,6 +37,7 @@ AR: 2015-01-01: 20 CA: 2015-01-01: 230 + 2020-12-01: 20 CO: 2015-01-01: 20 CT: @@ -32,6 +45,7 @@ CT: 2023-01-01: 482 2024-01-01: 511 2025-01-01: 535 + 2026-01-01: 562 DC: 2015-01-01: 20 DE: @@ -99,7 +113,7 @@ PA: RI: 2015-01-01: 20 SC: - 2015-01-01: 20 + 2015-01-01: 50 SD: 2015-01-01: 20 TN: 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 ac7e535b194..9c9b289db5d 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 @@ -93,16 +93,16 @@ output: is_optional_senior_or_disabled_asset_eligible: [false, false] -# Missouri's 2026 limits are 5,726 for one person and 11,452 for a couple. -# One spouse holds more than the individual limit, but the couple's -# combined resources are tested against the couple limit. +# Missouri's limits from July 1, 2025 are 6,068.80 for one person and +# 12,137.55 for a couple. One spouse holds more than the individual limit, +# but the couple's combined resources are tested against the couple limit. - name: Missouri spouse over the individual limit is eligible when combined resources are under the couple limit period: 2026 input: people: person1: age: 70 - ssi_countable_resources: 6_000 + ssi_countable_resources: 6_500 person2: age: 68 ssi_countable_resources: 5_000 @@ -118,7 +118,7 @@ members: [person1, person2] state_code: MO output: - # 11,000 combined is under 11,452. + # 11,500 combined is under 12,137.55. is_optional_senior_or_disabled_asset_eligible: [true, true] - name: Missouri couple at the couple resource limit is ineligible @@ -130,7 +130,7 @@ ssi_countable_resources: 6_000 person2: age: 68 - ssi_countable_resources: 5_452 + ssi_countable_resources: 6_137.55 tax_units: tax_unit: members: [person1, person2] @@ -143,5 +143,60 @@ members: [person1, person2] state_code: MO output: - # 11,452 combined is not under the 11,452 couple limit. + # 12,137.55 combined is not under the 12,137.55 couple limit. is_optional_senior_or_disabled_asset_eligible: [false, false] + +- name: Missouri's July 2026 individual limit applies from 2027. + period: 2027 + input: + age: 70 + ssi_countable_resources: 6_200 + state_code: MO + output: + # 6,200 is under the 6,220.50 limit effective July 1, 2026. + is_optional_senior_or_disabled_asset_eligible: true + +- name: Arkansas uses the Medicare Savings Program individual resource limit. + period: 2026 + input: + age: 70 + ssi_countable_resources: 9_900 + state_code: AR + output: + # 9,900 is under the 2026 limit of 9,950. + is_optional_senior_or_disabled_asset_eligible: true + +- name: Oklahoma uses the Medicare Savings Program couple resource limit. + period: 2026 + input: + people: + person1: + age: 70 + ssi_countable_resources: 7_450 + person2: + age: 68 + ssi_countable_resources: 7_450 + tax_units: + tax_unit: + members: [person1, person2] + tax_unit_is_joint: true + marital_units: + marital_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: OK + output: + # 14,900 combined is under the 2026 couple limit of 14,910. + is_optional_senior_or_disabled_asset_eligible: [true, true] + +- name: South Carolina uses the 2025 Medicare Savings Program individual resource limit. + period: 2025 + input: + age: 70 + ssi_countable_resources: 9_600 + state_code: SC + output: + # 9,600 is under the 2025 limit of 9,660. + is_optional_senior_or_disabled_asset_eligible: true diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.yaml index 883b6e7bed9..7d5761993c7 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.yaml @@ -105,3 +105,36 @@ # rounding, 1,131.75 would exceed the $1,131 standard. medicaid_optional_senior_or_disabled_countable_income: 13_572 is_optional_senior_or_disabled_income_eligible: true + +- name: California subtracts only the 20-dollar any-income deduction from December 2020. + period: 2026 + absolute_error_margin: 0.01 + input: + age: 70 + ssi_marital_unearned_income: 12_000 + state_code: CA + output: + # DHCS ACWDL 20-24: (1,000 - 20) x 12 = 11,760. + medicaid_optional_senior_or_disabled_countable_income: 11_760 + +- name: Connecticut subtracts its 2026 disregard from unearned income. + period: 2026 + absolute_error_margin: 0.01 + input: + age: 70 + ssi_marital_unearned_income: 12_000 + state_code: CT + output: + # (1,000 - 562) x 12 = 5,256. + medicaid_optional_senior_or_disabled_countable_income: 5_256 + +- name: South Carolina subtracts a 50-dollar general disregard. + period: 2026 + absolute_error_margin: 0.01 + input: + age: 70 + ssi_marital_unearned_income: 12_000 + state_code: SC + output: + # (1,000 - 50) x 12 = 11,400. + medicaid_optional_senior_or_disabled_countable_income: 11_400 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 6b400e8bebd..d297c9a63df 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 @@ -23,10 +23,14 @@ def formula(person, period, parameters): ).gov.hhs.medicaid.eligibility.categories.senior_or_disabled # Asset limit - asset_limit = where( + state_limit = where( is_couple, p.assets.limit.couple[state], p.assets.limit.individual[state], ) + msp = parameters(period).gov.hhs.medicare.savings_programs.eligibility.asset + msp_limit = where(is_couple, msp.couple, msp.individual) + uses_msp_limit = p.assets.limit.uses_msp_limit[state].astype(bool) + asset_limit = where(uses_msp_limit, msp_limit, state_limit) return assets < asset_limit From cd33ee1a4e7c0059a60a1213d4451e935b6e0edc Mon Sep 17 00:00:00 2001 From: Ziming Date: Fri, 23 Oct 2026 22:24:31 -0400 Subject: [PATCH 2/9] Fix issues from review: CA premium deduction, at-limit assets, MO history - California's aged, blind and disabled income test deducts the Medicare Part B premium and other health insurance premiums from December 2020 (ACWDL 20-24), through a new state flag. - Resources equal to the Medicare Savings Program limit qualify in AR, OK and SC; Missouri stays strict ("at or in excess of"). - Compare assets in whole cents so decimal limits are not affected by float32 storage (fixes the Missouri at-limit couple test). - Encode Missouri's asset limits from 2015 (13 CSR 40-8.020(4), IM-70, IM-77) and cite archived Missouri and Oklahoma editions. - Fix the 13 CSR page anchor, re-date CA's 138% FPL limit to 2020-12-01, and add comments on the January 1 read and the MSP-linked states. - Add at-limit, earlier-year MSP, couple disregard, CA Part B and CA date boundary tests. Co-Authored-By: Claude Opus 5.5 --- .../medicaid-abd-pathway-values.fixed.md | 2 +- .../assets/limit/couple.yaml | 35 +++- .../assets/limit/individual.yaml | 35 +++- .../assets/limit/uses_msp_limit.yaml | 6 + .../deducts_health_insurance_premiums.yaml | 115 ++++++++++++++ .../income/disregard/couple.yaml | 6 +- .../income/disregard/individual.yaml | 1 + .../income/limit/couple.yaml | 5 +- .../income/limit/individual.yaml | 5 +- ...nal_senior_or_disabled_asset_eligible.yaml | 126 ++++++++++++++- ...l_senior_or_disabled_countable_income.yaml | 149 +++++++++++++++++- ...ional_senior_or_disabled_asset_eligible.py | 17 +- ...nal_senior_or_disabled_countable_income.py | 26 ++- 13 files changed, 504 insertions(+), 24 deletions(-) create mode 100644 policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/deducts_health_insurance_premiums.yaml diff --git a/changelog.d/medicaid-abd-pathway-values.fixed.md b/changelog.d/medicaid-abd-pathway-values.fixed.md index 8934c943208..af2b459273a 100644 --- a/changelog.d/medicaid-abd-pathway-values.fixed.md +++ b/changelog.d/medicaid-abd-pathway-values.fixed.md @@ -1 +1 @@ -Updated Medicaid's aged, blind and disabled pathway: California's $20 disregard from December 2020, Connecticut's 2026 disregard, South Carolina's $50 disregard, Missouri's July 1 asset limits for 2023-2026, and asset limits equal to the Medicare Savings Program resource limit in Arkansas, Oklahoma and South Carolina. +Updated Medicaid's aged, blind and disabled pathway: California's $20 disregard and Medicare Part B and health insurance premium deductions from December 2020, Connecticut's 2026 disregard, South Carolina's $50 disregard, Missouri's 2015-2026 asset limits with July 1 updates, and asset limits equal to the Medicare Savings Program resource limit in Arkansas, Oklahoma and South Carolina, where resources equal to the limit qualify. diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple.yaml index 27670222663..eb41bebce81 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple.yaml @@ -1,4 +1,4 @@ -description: Asset limit (of SSI countable assets) for a couple to qualify for Medicaid under the optional senior or disabled pathway. States whose limit is the Medicare Savings Program resource limit are listed in uses_msp_limit and omitted here. +description: Asset limit (of SSI countable assets) for a couple to qualify for Medicaid under the optional senior or disabled pathway. metadata: unit: currency-USD label: Medicaid senior or disabled asset limit (couple) @@ -12,12 +12,24 @@ metadata: href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/Pages/Asset-Limit-Changes-for-Non-MAGI-Medi-Cal.aspx - title: "California DHCS All County Welfare Directors Letter 25-14 (reinstatement of the non-MAGI Medi-Cal asset limit)" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/25-14.pdf - - title: Missouri DSS MO HealthNet for the Aged, Blind and Disabled Appendix J - Eligibility Standards for Non-MAGI Programs + - title: Missouri DSS MO HealthNet for the Aged, Blind and Disabled Appendix J - Eligibility Standards for Non-MAGI Programs (10/2026 edition; spend down resource maximum effective July 1, 2026) href: https://dssmanuals.mo.gov/wp-content/uploads/2022/07/mhabd-appendix-j.pdf#page=1 - title: Missouri Revised Statutes 208.010.2(7) href: https://revisor.mo.gov/main/OneSection.aspx?section=208.010 - - title: 13 Missouri Code of State Regulations 40-8.020(4) - href: https://www.sos.mo.gov/CMSImages/AdRules/csr/current/13csr/13c40-8.pdf#page=1 + - title: 13 Missouri Code of State Regulations 40-8.020(4)(A)-(C) + href: https://www.sos.mo.gov/CMSImages/AdRules/csr/current/13csr/13c40-8.pdf#page=2 + - title: Missouri DSS Family Support Division, IM-70 Annual MO HealthNet for the Aged, Blind, and Disabled (MHABD) Asset Limit Increase (individual $5,035, couple $10,070 effective July 1, 2021) + href: https://web.archive.org/web/20210801111201/https://dssmanuals.mo.gov/2021/07/01/im-70-2/ + - title: Missouri DSS Family Support Division, IM-77 Annual MHABD Asset Limit Increase (individual $5,301.85, couple $10,603.70 effective July 1, 2022) + href: https://web.archive.org/web/20220705011659/https://dssmanuals.mo.gov/2022/06/14/im-77-3/ + - title: Missouri DSS MHABD Appendix J - Eligibility Standards for MHABD (10/2022 edition; spend down resource maximum effective July 1, 2022) + href: https://web.archive.org/web/20220927091025/https://dssmanuals.mo.gov/wp-content/uploads/2022/07/mhabd-appendix-j.pdf#page=1 + - title: Missouri DSS Family Support Division, IM-57 July 2023 Annual Non-MAGI Program Adjustments (individual $5,726, couple $11,452 effective July 1, 2023) + href: https://web.archive.org/web/20230925041524/https://dssmanuals.mo.gov/2023/06/08/im-57-4/ + - title: Missouri DSS MHABD Appendix J - Eligibility Standards for Non-MAGI Programs (07/2024 edition; spend down resource maximum effective July 1, 2024) + href: https://web.archive.org/web/20240612134513/https://dssmanuals.mo.gov/wp-content/uploads/2022/07/mhabd-appendix-j.pdf#page=1 + - title: Missouri DSS MHABD Appendix J - Eligibility Standards for Non-MAGI Programs (07-2025 edition; spend down resource maximum effective July 1, 2025) + href: https://web.archive.org/web/20250831223642/https://dssmanuals.mo.gov/wp-content/uploads/2022/07/mhabd-appendix-j.pdf#page=1 - title: Missouri DHSS, Medicaid Spend Down Limit Changes (effective July 1, 2023) href: https://health.mo.gov/care-providing/long-term-care/medicaid-spend-down-limit-changes - title: Missouri DHSS, Medicaid Resource Limit/Spenddown Amount (effective July 1, 2024) @@ -25,6 +37,9 @@ metadata: - title: Missouri DHSS, Resource Limit/Spenddown Amount (effective July 1, 2025) href: https://health.mo.gov/care-providing/long-term-care/resource-limitspenddown-amount +# AR, OK and SC are omitted: uses_msp_limit sets their limit at the +# Medicare Savings Program resource limit, so the formula ignores this +# parameter for them and their keys resolve to 0. AL: 2015-01-01: 3_000 AK: @@ -79,7 +94,17 @@ MN: MS: 2015-01-01: 3_000 MO: - 2015-01-01: 6_000 + # Annual calculations read parameters on January 1, so each July 1 value + # first applies in the next calendar year. + # Before July 1, 2017, the limit for blind applicants was 4,000; this + # parameter has no blind split. + 2015-01-01: 2_000 + 2017-07-01: 4_000 + 2018-07-01: 6_000 + 2019-07-01: 8_000 + 2020-07-01: 10_000 + 2021-07-01: 10_070 + 2022-07-01: 10_603.7 2023-07-01: 11_452 2024-07-01: 11_818.45 2025-07-01: 12_137.55 diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual.yaml index 7e45621198a..db840117e73 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual.yaml @@ -1,4 +1,4 @@ -description: Asset limit (of SSI countable assets) for an individual to qualify for Medicaid under the optional senior or disabled pathway. States whose limit is the Medicare Savings Program resource limit are listed in uses_msp_limit and omitted here. +description: Asset limit (of SSI countable assets) for an individual to qualify for Medicaid under the optional senior or disabled pathway. metadata: unit: currency-USD period: month @@ -12,12 +12,24 @@ metadata: href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/Pages/Asset-Limit-Changes-for-Non-MAGI-Medi-Cal.aspx - title: "California DHCS All County Welfare Directors Letter 25-14 (reinstatement of the non-MAGI Medi-Cal asset limit)" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/25-14.pdf - - title: Missouri DSS MO HealthNet for the Aged, Blind and Disabled Appendix J - Eligibility Standards for Non-MAGI Programs + - title: Missouri DSS MO HealthNet for the Aged, Blind and Disabled Appendix J - Eligibility Standards for Non-MAGI Programs (10/2026 edition; spend down resource maximum effective July 1, 2026) href: https://dssmanuals.mo.gov/wp-content/uploads/2022/07/mhabd-appendix-j.pdf#page=1 - title: Missouri Revised Statutes 208.010.2(7) href: https://revisor.mo.gov/main/OneSection.aspx?section=208.010 - - title: 13 Missouri Code of State Regulations 40-8.020(4) - href: https://www.sos.mo.gov/CMSImages/AdRules/csr/current/13csr/13c40-8.pdf#page=1 + - title: 13 Missouri Code of State Regulations 40-8.020(4)(A)-(C) + href: https://www.sos.mo.gov/CMSImages/AdRules/csr/current/13csr/13c40-8.pdf#page=2 + - title: Missouri DSS Family Support Division, IM-70 Annual MO HealthNet for the Aged, Blind, and Disabled (MHABD) Asset Limit Increase (individual $5,035, couple $10,070 effective July 1, 2021) + href: https://web.archive.org/web/20210801111201/https://dssmanuals.mo.gov/2021/07/01/im-70-2/ + - title: Missouri DSS Family Support Division, IM-77 Annual MHABD Asset Limit Increase (individual $5,301.85, couple $10,603.70 effective July 1, 2022) + href: https://web.archive.org/web/20220705011659/https://dssmanuals.mo.gov/2022/06/14/im-77-3/ + - title: Missouri DSS MHABD Appendix J - Eligibility Standards for MHABD (10/2022 edition; spend down resource maximum effective July 1, 2022) + href: https://web.archive.org/web/20220927091025/https://dssmanuals.mo.gov/wp-content/uploads/2022/07/mhabd-appendix-j.pdf#page=1 + - title: Missouri DSS Family Support Division, IM-57 July 2023 Annual Non-MAGI Program Adjustments (individual $5,726, couple $11,452 effective July 1, 2023) + href: https://web.archive.org/web/20230925041524/https://dssmanuals.mo.gov/2023/06/08/im-57-4/ + - title: Missouri DSS MHABD Appendix J - Eligibility Standards for Non-MAGI Programs (07/2024 edition; spend down resource maximum effective July 1, 2024) + href: https://web.archive.org/web/20240612134513/https://dssmanuals.mo.gov/wp-content/uploads/2022/07/mhabd-appendix-j.pdf#page=1 + - title: Missouri DSS MHABD Appendix J - Eligibility Standards for Non-MAGI Programs (07-2025 edition; spend down resource maximum effective July 1, 2025) + href: https://web.archive.org/web/20250831223642/https://dssmanuals.mo.gov/wp-content/uploads/2022/07/mhabd-appendix-j.pdf#page=1 - title: Missouri DHSS, Medicaid Spend Down Limit Changes (effective July 1, 2023) href: https://health.mo.gov/care-providing/long-term-care/medicaid-spend-down-limit-changes - title: Missouri DHSS, Medicaid Resource Limit/Spenddown Amount (effective July 1, 2024) @@ -25,6 +37,9 @@ metadata: - title: Missouri DHSS, Resource Limit/Spenddown Amount (effective July 1, 2025) href: https://health.mo.gov/care-providing/long-term-care/resource-limitspenddown-amount +# AR, OK and SC are omitted: uses_msp_limit sets their limit at the +# Medicare Savings Program resource limit, so the formula ignores this +# parameter for them and their keys resolve to 0. AL: 2015-01-01: 2_000 AK: @@ -79,7 +94,17 @@ MN: MS: 2015-01-01: 2_000 MO: - 2015-01-01: 3_000 + # Annual calculations read parameters on January 1, so each July 1 value + # first applies in the next calendar year. + # Before July 1, 2017, the limit for blind applicants was 2,000; this + # parameter has no blind split. + 2015-01-01: 1_000 + 2017-07-01: 2_000 + 2018-07-01: 3_000 + 2019-07-01: 4_000 + 2020-07-01: 5_000 + 2021-07-01: 5_035 + 2022-07-01: 5_301.85 2023-07-01: 5_726 2024-07-01: 5_909.25 2025-07-01: 6_068.8 diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/uses_msp_limit.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/uses_msp_limit.yaml index f5f88838188..d30455d823d 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/uses_msp_limit.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/uses_msp_limit.yaml @@ -14,6 +14,12 @@ metadata: href: https://aem-prod.oklahoma.gov/content/dam/ok/en/okdhs/documents/searchcenter/okdhsformresults/c-1.pdf#page=2 - title: Oklahoma Administrative Code 317:35-7-40 - Eligibility as Qualified Medicare Beneficiary Plus href: https://oklahoma.gov/ohca/policies-and-rules/xpolicy/medical-assistance-for-adults-and-children-eligibility/medical-services/determination-of-eligibility-for-medical-services/eligibility-as-qualified-medicare-beneficiary-plus.html + - title: Oklahoma Human Services Appendix C-1 (edition 12/1/2015), Schedule VI (QMB Plus) + href: https://web.archive.org/web/20151216003834/http://www.okdhs.org/okdhs%20form%20library/C-1.pdf + - title: Oklahoma Human Services Appendix C-1 (edition 4/1/2023), Schedule VI (QMB Plus) + href: https://web.archive.org/web/20230420231329/https://oklahoma.gov/content/dam/ok/en/okdhs/documents/searchcenter/okdhsformresults/c-1.pdf#page=2 + - title: Oklahoma Administrative Code 317:35-7-40(a)(1) (revised 05-11-01) + href: https://web.archive.org/web/20151029121301/http://www.okdhs.org/library/policy/oac317/035/07/0040000.htm - title: "South Carolina Medicaid State Plan, Attachment 2.6-A, pages 21a-22 (poverty-level aged and disabled resources are the QMB resource standard) #page 41-42" href: https://scdhhs.gov/sites/dhhs/files/documents/stateplan/Attachment_2.6-A.pdf#page=41 - title: South Carolina DHHS Medicaid Policy and Procedures Manual 103.14 - Program Resource Limits diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/deducts_health_insurance_premiums.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/deducts_health_insurance_premiums.yaml new file mode 100644 index 00000000000..4de75d7ada1 --- /dev/null +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/deducts_health_insurance_premiums.yaml @@ -0,0 +1,115 @@ +description: The state deducts Medicare Part B and other health insurance premiums from countable income under the optional Medicaid pathway for seniors or people with disabilities, if this is true. +metadata: + unit: bool + period: year + label: Medicaid senior or disabled pathway deducts health insurance premiums + breakdown: + - state_code + reference: + - title: "California DHCS All County Welfare Directors Letter 20-24, Aged and Disabled Federal Poverty Level program #page 2-5" + href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/20-24.pdf#page=2 + +AK: + 2015-01-01: false +AL: + 2015-01-01: false +AR: + 2015-01-01: false +AZ: + 2015-01-01: false +CA: + # The 2020-12-01 value first applies in 2021 annual calculations. + 2015-01-01: false + 2020-12-01: true +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: + 2015-01-01: false +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/senior_or_disabled/income/disregard/couple.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/couple.yaml index 4bc8efd296c..4a5883c8252 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/couple.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/couple.yaml @@ -14,7 +14,7 @@ metadata: href: https://portal.ct.gov/-/media/aginganddisability/agingservices/choices/benefitsquickguide.pdf#page=2 - title: Connecticut CHOICES Benefits Quick Guide (Rev 04.04.2025) href: https://portal.ct.gov/ads/-/media/ads-beta/choices/choices-benefits-quick-guide.pdf?rev=3b8c59ca12224218bc4c4438649e7ac7#page=1 - - title: "California DHCS All County Welfare Directors Letter 20-24, Aged and Disabled Federal Poverty Level program #page 2-3" + - title: "California DHCS All County Welfare Directors Letter 20-24, Aged and Disabled Federal Poverty Level program #page 2-3,5" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/20-24.pdf#page=2 - title: Connecticut DSS Program Standards Chart (as of January 1, 2026), AABD / MAABD disregards href: https://portal.ct.gov/-/media/departments-and-agencies/dss/fact-sheets-and-issue-briefs/fact-sheets/dss-program-standards-chart-effective-010126.pdf @@ -36,11 +36,15 @@ AZ: AR: 2015-01-01: 20 CA: + # The 2020-12-01 value first applies in 2021 annual calculations. 2015-01-01: 310 2020-12-01: 20 CO: 2015-01-01: 20 CT: + # UPM 5030.15 A subtracts the disregard from each unit member's unearned + # income, so from 2024 the couple value is twice the individual standard; + # it rises each January 1. 2015-01-01: 339 2023-01-01: 818 2024-01-01: 1_022 diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/individual.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/individual.yaml index cec736e8d35..129c6b674fd 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/individual.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/individual.yaml @@ -36,6 +36,7 @@ AZ: AR: 2015-01-01: 20 CA: + # The 2020-12-01 value first applies in 2021 annual calculations. 2015-01-01: 230 2020-12-01: 20 CO: diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/limit/couple.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/limit/couple.yaml index 0eb1c1e8aaa..7047cf50dbd 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/limit/couple.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/limit/couple.yaml @@ -16,6 +16,8 @@ metadata: href: https://portal.ct.gov/-/media/aginganddisability/agingservices/choices/benefitsquickguide.pdf#page=2 - title: Connecticut CHOICES Benefits Quick Guide (Rev 04.04.2025) href: https://portal.ct.gov/ads/-/media/ads-beta/choices/choices-benefits-quick-guide.pdf?rev=3b8c59ca12224218bc4c4438649e7ac7#page=1 + - title: California DHCS All County Welfare Directors Letter 20-24, Aged and Disabled Federal Poverty Level program (138 percent of the poverty level effective December 1, 2020) + href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/20-24.pdf#page=1 AK: 2018-01-01: 0.74 @@ -27,8 +29,9 @@ AZ: AR: 2018-01-01: 0.80 CA: + # The 2020-12-01 value first applies in 2021 annual calculations. 2018-01-01: 1.00 - 2021-01-01: 1.38 + 2020-12-01: 1.38 CT: 2018-01-01: 0.63 2021-01-01: 0.98 diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/limit/individual.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/limit/individual.yaml index 489de5e9165..5903668f50f 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/limit/individual.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/limit/individual.yaml @@ -16,6 +16,8 @@ metadata: href: https://portal.ct.gov/-/media/aginganddisability/agingservices/choices/benefitsquickguide.pdf#page=2 - title: Connecticut CHOICES Benefits Quick Guide (Rev 04.04.2025) href: https://portal.ct.gov/ads/-/media/ads-beta/choices/choices-benefits-quick-guide.pdf?rev=3b8c59ca12224218bc4c4438649e7ac7#page=1 + - title: California DHCS All County Welfare Directors Letter 20-24, Aged and Disabled Federal Poverty Level program (138 percent of the poverty level effective December 1, 2020) + href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/20-24.pdf#page=1 AK: 2018-01-01: 0.74 @@ -27,8 +29,9 @@ AZ: AR: 2018-01-01: 0.80 CA: + # The 2020-12-01 value first applies in 2021 annual calculations. 2018-01-01: 1.00 - 2021-01-01: 1.38 + 2020-12-01: 1.38 CT: 2018-01-01: 0.63 2021-01-01: 0.98 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 9c9b289db5d..44b5c6621bc 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 @@ -96,7 +96,7 @@ # Missouri's limits from July 1, 2025 are 6,068.80 for one person and # 12,137.55 for a couple. One spouse holds more than the individual limit, # but the couple's combined resources are tested against the couple limit. -- name: Missouri spouse over the individual limit is eligible when combined resources are under the couple limit +- name: Missouri spouse over the individual limit is eligible when combined resources are under the couple limit. period: 2026 input: people: @@ -121,7 +121,7 @@ # 11,500 combined is under 12,137.55. is_optional_senior_or_disabled_asset_eligible: [true, true] -- name: Missouri couple at the couple resource limit is ineligible +- name: Missouri couple at the couple resource limit is ineligible. period: 2026 input: people: @@ -200,3 +200,125 @@ output: # 9,600 is under the 2025 limit of 9,660. is_optional_senior_or_disabled_asset_eligible: true + +- name: Arkansas applicant at the 2026 Medicare Savings Program individual resource limit is eligible. + period: 2026 + input: + age: 70 + ssi_countable_resources: 9_950 + state_code: AR + output: + # MS 23110(6): resources "equal to but not exceeding" the MSP standard. + # 9,950 equals the 2026 limit of 9,950. + is_optional_senior_or_disabled_asset_eligible: true + +- name: Arkansas applicant one dollar over the 2026 Medicare Savings Program individual resource limit is ineligible. + period: 2026 + input: + age: 70 + ssi_countable_resources: 9_951 + state_code: AR + output: + # 9,951 exceeds the 2026 limit of 9,950. + is_optional_senior_or_disabled_asset_eligible: false + +- name: South Carolina applicant at the 2026 Medicare Savings Program individual resource limit is eligible. + period: 2026 + input: + age: 70 + ssi_countable_resources: 9_950 + state_code: SC + output: + # MPPM 303.06.02: countable resources "must be at or below" 9,950. + is_optional_senior_or_disabled_asset_eligible: true + +- name: Oklahoma couple at the 2026 Medicare Savings Program couple resource limit is eligible. + period: 2026 + input: + people: + person1: + age: 70 + ssi_countable_resources: 7_455 + person2: + age: 68 + ssi_countable_resources: 7_455 + tax_units: + tax_unit: + members: [person1, person2] + tax_unit_is_joint: true + marital_units: + marital_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: OK + output: + # C-1 Schedule VI: resources "equal to or less than" 14,910. + # 7,455 + 7,455 = 14,910 combined. + is_optional_senior_or_disabled_asset_eligible: [true, true] + +- name: Oklahoma uses the 2023 Medicare Savings Program individual resource limit. + period: 2023 + input: + age: 70 + ssi_countable_resources: 5_000 + state_code: OK + output: + # 5,000 is under the 2023 limit of 9,090. + is_optional_senior_or_disabled_asset_eligible: true + +- name: Oklahoma uses the 2015 Medicare Savings Program couple resource limit. + period: 2015 + input: + people: + person1: + age: 70 + ssi_countable_resources: 5_000 + person2: + age: 68 + ssi_countable_resources: 5_000 + tax_units: + tax_unit: + members: [person1, person2] + tax_unit_is_joint: true + marital_units: + marital_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: OK + output: + # 10,000 combined is under the 2015 couple limit of 10,930. + is_optional_senior_or_disabled_asset_eligible: [true, true] + +- name: Arkansas uses the 2016 Medicare Savings Program individual resource limit. + period: 2016 + input: + age: 70 + ssi_countable_resources: 7_400 + state_code: AR + output: + # 7,400 is over the 2016 limit of 7,280. + is_optional_senior_or_disabled_asset_eligible: false + +- name: South Carolina uses the 2023 Medicare Savings Program individual resource limit. + period: 2023 + input: + age: 70 + ssi_countable_resources: 9_000 + state_code: SC + output: + # 9,000 is under the 2023 limit of 9,090. + is_optional_senior_or_disabled_asset_eligible: true + +- name: South Carolina applies the 2025 Medicare Savings Program limit, not the 2026 limit, in 2025. + period: 2025 + input: + age: 70 + ssi_countable_resources: 9_700 + state_code: SC + output: + # 9,700 is over the 2025 limit of 9,660, though under the 2026 limit of 9,950. + is_optional_senior_or_disabled_asset_eligible: false diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.yaml index 7d5761993c7..c5fbb781fa4 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.yaml @@ -111,10 +111,11 @@ absolute_error_margin: 0.01 input: age: 70 + medicare_enrolled: false ssi_marital_unearned_income: 12_000 state_code: CA output: - # DHCS ACWDL 20-24: (1,000 - 20) x 12 = 11,760. + # DHCS ACWDL 20-24, no Part B or other premiums: (1,000 - 20) x 12 = 11,760. medicaid_optional_senior_or_disabled_countable_income: 11_760 - name: Connecticut subtracts its 2026 disregard from unearned income. @@ -138,3 +139,149 @@ output: # (1,000 - 50) x 12 = 11,400. medicaid_optional_senior_or_disabled_countable_income: 11_400 + +- name: California deducts the base Medicare Part B premium for a Medicare enrollee. + period: 2026 + absolute_error_margin: 0.01 + input: + age: 70 + medicare_enrolled: true + ssi_marital_unearned_income: 12_000 + state_code: CA + output: + # DHCS ACWDL 20-24 deducts Part B regardless of how it is paid; the + # 2026 base premium is 202.90 a month. + # (1,000 - 20 - 202.90) x 12 = 9,325.20. + medicaid_optional_senior_or_disabled_countable_income: 9_325.2 + +- name: California applies one 20-dollar deduction to a couple's combined unearned income. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 70 + is_tax_unit_head: true + medicare_enrolled: false + ssi_unearned_income: 15_600 + person2: + age: 68 + is_tax_unit_spouse: true + medicare_enrolled: false + ssi_unearned_income: 7_800 + marital_units: + marital_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: CA + output: + ssi_couple_computation_applies: [true, true] + # ACWDL 20-24 Example 3: (1,950 - 20) x 12 / 2 = 11,580 each. + medicaid_optional_senior_or_disabled_countable_income: [11_580, 11_580] + +- name: Connecticut subtracts its 2026 couple disregard from a couple's combined unearned income. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 70 + is_tax_unit_head: true + ssi_unearned_income: 15_600 + person2: + age: 68 + is_tax_unit_spouse: true + ssi_unearned_income: 7_800 + marital_units: + marital_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: CT + output: + # (1,950 - 1,124) x 12 / 2 = 4,956 each. + medicaid_optional_senior_or_disabled_countable_income: [4_956, 4_956] + +- name: South Carolina gives its 50-dollar disregard only once to a couple. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 70 + is_tax_unit_head: true + ssi_unearned_income: 15_600 + person2: + age: 68 + is_tax_unit_spouse: true + ssi_unearned_income: 7_800 + marital_units: + marital_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: SC + output: + # MPPM 303.06.03C: (1,950 - 50) x 12 / 2 = 11,400 each. A 50-dollar + # disregard for each spouse would give 11,100. + medicaid_optional_senior_or_disabled_countable_income: [11_400, 11_400] + +- name: California subtracts the 20-dollar deduction in 2021. + period: 2021 + absolute_error_margin: 0.01 + input: + age: 70 + medicare_enrolled: false + ssi_marital_unearned_income: 12_000 + state_code: CA + output: + # The December 2020 value first applies in 2021 annual calculations. + # (1,000 - 20) x 12 = 11,760. + medicaid_optional_senior_or_disabled_countable_income: 11_760 + +- name: California subtracts the 230-dollar disregard and no premiums in 2020. + period: 2020 + absolute_error_margin: 0.01 + input: + age: 70 + medicare_enrolled: true + ssi_marital_unearned_income: 12_000 + state_code: CA + output: + # 2020 annual calculations read January 1, 2020: the 230 disregard + # applies and the December 2020 premium deduction does not. + # (1,000 - 230) x 12 = 9,240. + medicaid_optional_senior_or_disabled_countable_income: 9_240 + +- name: California deducts both spouses' Part B premiums and other health insurance premiums from a couple's combined income. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 70 + is_tax_unit_head: true + medicare_enrolled: true + ssi_unearned_income: 15_600 + person2: + age: 68 + is_tax_unit_spouse: true + medicare_enrolled: true + ssi_unearned_income: 7_800 + health_insurance_premiums_without_medicare_part_b: 360 + marital_units: + marital_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: CA + output: + # ACWDL 20-24 Example 3: the couple's premiums are summed before the + # split. Monthly, 1,950 - 20 - 2 x 202.90 - 30 = 1,494.20. + # 1,494.20 x 12 / 2 = 8,965.20 each. + medicaid_optional_senior_or_disabled_countable_income: [8_965.2, 8_965.2] 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 d297c9a63df..e7b26e1afaa 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 @@ -6,14 +6,18 @@ class is_optional_senior_or_disabled_asset_eligible(Variable): entity = Person label = "Asset-eligibility for State’s optional Medicaid pathway for seniors or people with disabilities" definition_period = YEAR - reference = "https://www.law.cornell.edu/uscode/text/42/1396a#m" + reference = ( + "https://www.law.cornell.edu/uscode/text/42/1396a#m", + "https://www.law.cornell.edu/uscode/text/42/1396d#p", + ) def formula(person, period, parameters): # Assets # 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) # $ - assets = person.marital_unit.sum(personal_assets) + # 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,9 +32,14 @@ def formula(person, period, parameters): p.assets.limit.couple[state], p.assets.limit.individual[state], ) + # Flagged states use the QMB / Medicare Savings Program resource + # standard instead of a state dollar limit. msp = parameters(period).gov.hhs.medicare.savings_programs.eligibility.asset msp_limit = where(is_couple, msp.couple, msp.individual) uses_msp_limit = p.assets.limit.uses_msp_limit[state].astype(bool) - asset_limit = where(uses_msp_limit, msp_limit, state_limit) - return assets < asset_limit + # The MSP resource standard (42 USC 1396d(p)(1)(C)) and the AR, OK + # and SC rules allow resources equal to the limit. + within_msp_limit = assets <= msp_limit + below_state_limit = assets < state_limit + return where(uses_msp_limit, within_msp_limit, below_state_limit) diff --git a/policyengine_us/variables/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.py b/policyengine_us/variables/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.py index 044371e7419..43b9b0894b2 100644 --- a/policyengine_us/variables/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.py +++ b/policyengine_us/variables/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.py @@ -17,6 +17,8 @@ class medicaid_optional_senior_or_disabled_countable_income(Variable): "https://dssmanuals.mo.gov/mo-healthnet-for-the-aged-blind-and-disabled/0805-000-00/0805-015-00/", "https://dssmanuals.mo.gov/mo-healthnet-for-the-aged-blind-and-disabled/0805-000-00/0805-015-00/0805-015-25/", "https://dssmanuals.mo.gov/mo-healthnet-for-the-aged-blind-and-disabled/0805-000-00/0805-015-00/0805-015-40/", + # California ABD FPL Part B and health insurance premium deductions + "https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/20-24.pdf#page=3", ) def formula(person, period, parameters): @@ -43,11 +45,11 @@ def formula(person, period, parameters): state = person.household("state_code_str", period) p = parameters( period - ).gov.hhs.medicaid.eligibility.categories.senior_or_disabled.income.disregard + ).gov.hhs.medicaid.eligibility.categories.senior_or_disabled.income income_disregard = where( couple_computation, - p.couple[state], - p.individual[state], + p.disregard.couple[state], + p.disregard.individual[state], ) personal_countable = _apply_medicaid_optional_senior_or_disabled_exclusions( earned_income, @@ -58,6 +60,24 @@ def formula(person, period, parameters): period, ) + # ACWDL 20-24 deducts Part B "regardless of how the premium is paid", + # so use the base premium, not the premium net of MSP coverage. + medicare_enrolled = person("medicare_enrolled", period) + part_b_premium = person("base_part_b_premium", period) * medicare_enrolled + other_premiums = person( + "health_insurance_premiums_without_medicare_part_b", period + ) + own_premiums = part_b_premium + other_premiums + premiums = where( + couple_computation, + person.marital_unit.sum(own_premiums), + own_premiums, + ) + deducts_premiums = p.deducts_health_insurance_premiums[state].astype(bool) + personal_countable = max_( + personal_countable - where(deducts_premiums, premiums, 0), 0 + ) + spousal_deemed = person( "medicaid_optional_senior_or_disabled_income_deemed_from_ineligible_spouse", period, From d038f14d373c22cfe1d6eac10a9c34e95e70e8f6 Mon Sep 17 00:00:00 2001 From: Ziming Date: Mon, 26 Oct 2026 16:38:00 -0400 Subject: [PATCH 3/9] Apply round 2 review: CA premium flag split, floor after deeming, pre-2020 CA disregard, MO couple limit - Split the CA flag: person-paid health insurance premiums from 2015 (22 CCR 50555.2, MC 176 line 17); full Part B disregard from 2020-12-01 (ACWDL 20-18, 20-24), read from the shared premium aggregate. - Floor countable income after adding deemed spouse income. - Before 12/2020, CA applies the $20 deduction and then the $230/$310 disregard (ACWDL 00-57, MC 176 lines 8 and 16). - Missouri couples at the couple limit qualify (RSMo 208.010.2(7)); candidate us-mo:mhabd-couple-resource-limit-boundary, ruling pending. - Tests pinning MO 2017-2026, AR 2015, CA 2020/2021 dates, the floor, direct premium input and an NC no-deduction case. Co-Authored-By: Claude Opus 5.5 --- .../medicaid-abd-pathway-values.fixed.md | 2 +- .../assets/limit/couple_limit_inclusive.yaml | 115 +++++++++ .../assets/limit/uses_msp_limit.yaml | 4 +- .../income/additional_disregard/couple.yaml | 120 +++++++++ .../additional_disregard/individual.yaml | 120 +++++++++ .../deducts_health_insurance_premiums.yaml | 13 +- .../income/disregard/couple.yaml | 17 +- .../income/disregard/individual.yaml | 9 +- .../disregards_medicare_part_b_premium.yaml | 119 +++++++++ ...nal_senior_or_disabled_asset_eligible.yaml | 181 +++++++++++++- ...l_senior_or_disabled_countable_income.yaml | 234 +++++++++++++++++- ...ional_senior_or_disabled_asset_eligible.py | 12 +- ...nal_senior_or_disabled_countable_income.py | 61 +++-- source_conflicts/candidates.yaml | 29 +++ 14 files changed, 990 insertions(+), 46 deletions(-) create mode 100644 policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple_limit_inclusive.yaml create mode 100644 policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/additional_disregard/couple.yaml create mode 100644 policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/additional_disregard/individual.yaml create mode 100644 policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregards_medicare_part_b_premium.yaml diff --git a/changelog.d/medicaid-abd-pathway-values.fixed.md b/changelog.d/medicaid-abd-pathway-values.fixed.md index af2b459273a..08a82d613b2 100644 --- a/changelog.d/medicaid-abd-pathway-values.fixed.md +++ b/changelog.d/medicaid-abd-pathway-values.fixed.md @@ -1 +1 @@ -Updated Medicaid's aged, blind and disabled pathway: California's $20 disregard and Medicare Part B and health insurance premium deductions from December 2020, Connecticut's 2026 disregard, South Carolina's $50 disregard, Missouri's 2015-2026 asset limits with July 1 updates, and asset limits equal to the Medicare Savings Program resource limit in Arkansas, Oklahoma and South Carolina, where resources equal to the limit qualify. +Updated Medicaid's aged, blind and disabled pathway: California's $20 deduction followed by the $230/$310 disregard before December 2020, its health insurance premium deduction, and its Medicare Part B premium disregard from December 2020; Connecticut's 2026 disregard; South Carolina's $50 disregard; Missouri's 2015-2026 asset limits with July 1 updates, with a couple's resources equal to the couple limit qualifying under RSMo 208.010.2(7); and asset limits equal to the Medicare Savings Program resource limit in Arkansas, Oklahoma and South Carolina, where resources equal to the limit qualify. diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple_limit_inclusive.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple_limit_inclusive.yaml new file mode 100644 index 00000000000..bde731f544d --- /dev/null +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple_limit_inclusive.yaml @@ -0,0 +1,115 @@ +description: The state counts a couple's resources equal to the couple asset limit as within the limit under the Medicaid optional senior or disabled pathway, if this is true. +metadata: + unit: bool + period: year + label: Medicaid senior or disabled couple asset limit includes the limit amount + breakdown: + - state_code + reference: + - title: Missouri Revised Statutes 208.010.2(7) + href: https://revisor.mo.gov/main/OneSection.aspx?section=208.010 + +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: + # A married claimant living with a spouse "may own resources not to exceed" + # the couple amount (208.010.2(4) before fiscal year 2018). + 2015-01-01: 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/senior_or_disabled/assets/limit/uses_msp_limit.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/uses_msp_limit.yaml index d30455d823d..0af56ad0ffa 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/uses_msp_limit.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/uses_msp_limit.yaml @@ -10,8 +10,8 @@ metadata: href: https://www.law.cornell.edu/regulations/arkansas/016-20-10-Ark-Code-R-001 - title: Arkansas DHS Division of County Operations, Medical Quick Reference Chart 2026 href: https://humanservices.arkansas.gov/wp-content/uploads/Medical-Quick-Reference-Chart-2026-Final-without-BHSS.pdf#page=2 - - title: Oklahoma Human Services Appendix C-1, Maximum Income, Resource, and Payment Standards, Schedule VI (QMB Plus) - href: https://aem-prod.oklahoma.gov/content/dam/ok/en/okdhs/documents/searchcenter/okdhsformresults/c-1.pdf#page=2 + - title: Oklahoma Human Services Appendix C-1 (edition 7/1/2026), Maximum Income, Resource, and Payment Standards, Schedule VI (QMB Plus) + href: https://web.archive.org/web/20260903155011/https://oklahoma.gov/content/dam/ok/en/okdhs/documents/searchcenter/okdhsformresults/c-1.pdf#page=2 - title: Oklahoma Administrative Code 317:35-7-40 - Eligibility as Qualified Medicare Beneficiary Plus href: https://oklahoma.gov/ohca/policies-and-rules/xpolicy/medical-assistance-for-adults-and-children-eligibility/medical-services/determination-of-eligibility-for-medical-services/eligibility-as-qualified-medicare-beneficiary-plus.html - title: Oklahoma Human Services Appendix C-1 (edition 12/1/2015), Schedule VI (QMB Plus) diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/additional_disregard/couple.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/additional_disregard/couple.yaml new file mode 100644 index 00000000000..d982b0e1557 --- /dev/null +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/additional_disregard/couple.yaml @@ -0,0 +1,120 @@ +description: The state subtracts this disregard from countable income after the SSI income exclusions for couples applying for the optional pathway to Medicaid eligibility for seniors or people with disabilities. +metadata: + unit: currency-USD + period: month + label: Medicaid senior or disabled additional income disregard (couple) + breakdown: + - state_code + reference: + - title: "California DHCS All County Welfare Directors Letter 00-57, Aged and Disabled Federal Poverty Level program, MC 176 financial eligibility form, line 16 #page 1,3" + href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/c00-57.pdf#page=1 + - title: California DHCS All County Welfare Directors Letter 20-24, Aged and Disabled Federal Poverty Level program + href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/20-24.pdf#page=2 + +AK: + 2015-01-01: 0 +AL: + 2015-01-01: 0 +AR: + 2015-01-01: 0 +AZ: + 2015-01-01: 0 +CA: + # MC 176 subtracts this disregard (line 16) after the 20-dollar any-income + # deduction and the earned income deductions (lines 8-14). ACWDL 20-24 + # ended it on December 1, 2020; that date first applies in 2021 annual + # calculations. + 2015-01-01: 310 + 2020-12-01: 0 +CO: + 2015-01-01: 0 +CT: + 2015-01-01: 0 +DC: + 2015-01-01: 0 +DE: + 2015-01-01: 0 +FL: + 2015-01-01: 0 +GA: + 2015-01-01: 0 +HI: + 2015-01-01: 0 +IA: + 2015-01-01: 0 +ID: + 2015-01-01: 0 +IL: + 2015-01-01: 0 +IN: + 2015-01-01: 0 +KS: + 2015-01-01: 0 +KY: + 2015-01-01: 0 +LA: + 2015-01-01: 0 +MA: + 2015-01-01: 0 +MD: + 2015-01-01: 0 +ME: + 2015-01-01: 0 +MI: + 2015-01-01: 0 +MN: + 2015-01-01: 0 +MO: + 2015-01-01: 0 +MS: + 2015-01-01: 0 +MT: + 2015-01-01: 0 +NC: + 2015-01-01: 0 +ND: + 2015-01-01: 0 +NE: + 2015-01-01: 0 +NH: + 2015-01-01: 0 +NJ: + 2015-01-01: 0 +NM: + 2015-01-01: 0 +NV: + 2015-01-01: 0 +NY: + 2015-01-01: 0 +OH: + 2015-01-01: 0 +OK: + 2015-01-01: 0 +OR: + 2015-01-01: 0 +PA: + 2015-01-01: 0 +RI: + 2015-01-01: 0 +SC: + 2015-01-01: 0 +SD: + 2015-01-01: 0 +TN: + 2015-01-01: 0 +TX: + 2015-01-01: 0 +UT: + 2015-01-01: 0 +VA: + 2015-01-01: 0 +VT: + 2015-01-01: 0 +WA: + 2015-01-01: 0 +WI: + 2015-01-01: 0 +WV: + 2015-01-01: 0 +WY: + 2015-01-01: 0 diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/additional_disregard/individual.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/additional_disregard/individual.yaml new file mode 100644 index 00000000000..bdfed994ae5 --- /dev/null +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/additional_disregard/individual.yaml @@ -0,0 +1,120 @@ +description: The state subtracts this disregard from countable income after the SSI income exclusions for individuals applying for the optional pathway to Medicaid eligibility for seniors or people with disabilities. +metadata: + unit: currency-USD + period: month + label: Medicaid senior or disabled additional income disregard (individual) + breakdown: + - state_code + reference: + - title: "California DHCS All County Welfare Directors Letter 00-57, Aged and Disabled Federal Poverty Level program, MC 176 financial eligibility form, line 16 #page 1,3" + href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/c00-57.pdf#page=1 + - title: California DHCS All County Welfare Directors Letter 20-24, Aged and Disabled Federal Poverty Level program + href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/20-24.pdf#page=2 + +AK: + 2015-01-01: 0 +AL: + 2015-01-01: 0 +AR: + 2015-01-01: 0 +AZ: + 2015-01-01: 0 +CA: + # MC 176 subtracts this disregard (line 16) after the 20-dollar any-income + # deduction and the earned income deductions (lines 8-14). ACWDL 20-24 + # ended it on December 1, 2020; that date first applies in 2021 annual + # calculations. + 2015-01-01: 230 + 2020-12-01: 0 +CO: + 2015-01-01: 0 +CT: + 2015-01-01: 0 +DC: + 2015-01-01: 0 +DE: + 2015-01-01: 0 +FL: + 2015-01-01: 0 +GA: + 2015-01-01: 0 +HI: + 2015-01-01: 0 +IA: + 2015-01-01: 0 +ID: + 2015-01-01: 0 +IL: + 2015-01-01: 0 +IN: + 2015-01-01: 0 +KS: + 2015-01-01: 0 +KY: + 2015-01-01: 0 +LA: + 2015-01-01: 0 +MA: + 2015-01-01: 0 +MD: + 2015-01-01: 0 +ME: + 2015-01-01: 0 +MI: + 2015-01-01: 0 +MN: + 2015-01-01: 0 +MO: + 2015-01-01: 0 +MS: + 2015-01-01: 0 +MT: + 2015-01-01: 0 +NC: + 2015-01-01: 0 +ND: + 2015-01-01: 0 +NE: + 2015-01-01: 0 +NH: + 2015-01-01: 0 +NJ: + 2015-01-01: 0 +NM: + 2015-01-01: 0 +NV: + 2015-01-01: 0 +NY: + 2015-01-01: 0 +OH: + 2015-01-01: 0 +OK: + 2015-01-01: 0 +OR: + 2015-01-01: 0 +PA: + 2015-01-01: 0 +RI: + 2015-01-01: 0 +SC: + 2015-01-01: 0 +SD: + 2015-01-01: 0 +TN: + 2015-01-01: 0 +TX: + 2015-01-01: 0 +UT: + 2015-01-01: 0 +VA: + 2015-01-01: 0 +VT: + 2015-01-01: 0 +WA: + 2015-01-01: 0 +WI: + 2015-01-01: 0 +WV: + 2015-01-01: 0 +WY: + 2015-01-01: 0 diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/deducts_health_insurance_premiums.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/deducts_health_insurance_premiums.yaml index 4de75d7ada1..5de0c8d8c1c 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/deducts_health_insurance_premiums.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/deducts_health_insurance_premiums.yaml @@ -1,4 +1,4 @@ -description: The state deducts Medicare Part B and other health insurance premiums from countable income under the optional Medicaid pathway for seniors or people with disabilities, if this is true. +description: The state deducts health insurance premiums that the person pays from countable income under the optional Medicaid pathway for seniors or people with disabilities, if this is true. metadata: unit: bool period: year @@ -6,7 +6,11 @@ metadata: breakdown: - state_code reference: - - title: "California DHCS All County Welfare Directors Letter 20-24, Aged and Disabled Federal Poverty Level program #page 2-5" + - title: Cal. Code Regs. Tit. 22, § 50555.2 (a), (c) Health Insurance Premiums + href: https://www.law.cornell.edu/regulations/california/22-CCR-50555.2 + - title: California DHCS All County Welfare Directors Letter 00-57, MC 176 Aged and Disabled FPL Financial Eligibility Form, line 17 + href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/c00-57.pdf#page=3 + - title: "California DHCS All County Welfare Directors Letter 20-24, Aged and Disabled Federal Poverty Level program #page 2-3" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/20-24.pdf#page=2 AK: @@ -18,9 +22,8 @@ AR: AZ: 2015-01-01: false CA: - # The 2020-12-01 value first applies in 2021 annual calculations. - 2015-01-01: false - 2020-12-01: true + # The ABD FPL program deducted premiums from its start in 2001. + 2015-01-01: true CO: 2015-01-01: false CT: diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/couple.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/couple.yaml index 4a5883c8252..51c9e4dd105 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/couple.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/couple.yaml @@ -14,6 +14,8 @@ metadata: href: https://portal.ct.gov/-/media/aginganddisability/agingservices/choices/benefitsquickguide.pdf#page=2 - title: Connecticut CHOICES Benefits Quick Guide (Rev 04.04.2025) href: https://portal.ct.gov/ads/-/media/ads-beta/choices/choices-benefits-quick-guide.pdf?rev=3b8c59ca12224218bc4c4438649e7ac7#page=1 + - title: "California DHCS All County Welfare Directors Letter 00-57, Aged and Disabled Federal Poverty Level program, MC 176 financial eligibility form, line 8" + href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/c00-57.pdf#page=3 - title: "California DHCS All County Welfare Directors Letter 20-24, Aged and Disabled Federal Poverty Level program #page 2-3,5" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/20-24.pdf#page=2 - title: Connecticut DSS Program Standards Chart (as of January 1, 2026), AABD / MAABD disregards @@ -36,15 +38,18 @@ AZ: AR: 2015-01-01: 20 CA: - # The 2020-12-01 value first applies in 2021 annual calculations. - 2015-01-01: 310 - 2020-12-01: 20 + # The 20-dollar any-income deduction (MC 176 line 8), which ACWDL 20-24 keeps. + # Before December 2020 California also subtracted the disregard in + # additional_disregard after the SSI exclusions. + 2015-01-01: 20 CO: 2015-01-01: 20 CT: - # UPM 5030.15 A subtracts the disregard from each unit member's unearned - # income, so from 2024 the couple value is twice the individual standard; - # it rises each January 1. + # UPM 5030.15 A subtracts the individual disregard from each unit member's + # own unearned income. The model subtracts this couple value (2 x the + # individual standard from 2024) from the couple's combined unearned income, + # so it deducts too much when a spouse has less unearned income than the + # individual disregard (issue 10458). It rises each January 1. 2015-01-01: 339 2023-01-01: 818 2024-01-01: 1_022 diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/individual.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/individual.yaml index 129c6b674fd..6aa78ec25d9 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/individual.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/individual.yaml @@ -14,6 +14,8 @@ metadata: href: https://portal.ct.gov/-/media/aginganddisability/agingservices/choices/benefitsquickguide.pdf#page=2 - title: Connecticut CHOICES Benefits Quick Guide (Rev 04.04.2025) href: https://portal.ct.gov/ads/-/media/ads-beta/choices/choices-benefits-quick-guide.pdf?rev=3b8c59ca12224218bc4c4438649e7ac7#page=1 + - title: "California DHCS All County Welfare Directors Letter 00-57, Aged and Disabled Federal Poverty Level program, MC 176 financial eligibility form, line 8" + href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/c00-57.pdf#page=3 - title: "California DHCS All County Welfare Directors Letter 20-24, Aged and Disabled Federal Poverty Level program #page 2-3" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/20-24.pdf#page=2 - title: Connecticut DSS Program Standards Chart (as of January 1, 2026), AABD / MAABD disregards @@ -36,9 +38,10 @@ AZ: AR: 2015-01-01: 20 CA: - # The 2020-12-01 value first applies in 2021 annual calculations. - 2015-01-01: 230 - 2020-12-01: 20 + # The 20-dollar any-income deduction (MC 176 line 8), which ACWDL 20-24 keeps. + # Before December 2020 California also subtracted the disregard in + # additional_disregard after the SSI exclusions. + 2015-01-01: 20 CO: 2015-01-01: 20 CT: diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregards_medicare_part_b_premium.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregards_medicare_part_b_premium.yaml new file mode 100644 index 00000000000..13d42e87e76 --- /dev/null +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregards_medicare_part_b_premium.yaml @@ -0,0 +1,119 @@ +description: The state disregards the full Medicare Part B premium, regardless of who pays it, from countable income under the optional Medicaid pathway for seniors or people with disabilities, if this is true. +metadata: + unit: bool + period: year + label: Medicaid senior or disabled pathway Medicare Part B premium disregard + breakdown: + - state_code + reference: + - title: "California DHCS All County Welfare Directors Letter 20-18, Medicare Part B premium disregard #page 1-2" + href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/20-18.pdf#page=1 + - title: "California DHCS All County Welfare Directors Letter 20-24, Aged and Disabled Federal Poverty Level program #page 3-8" + href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/20-24.pdf#page=3 + +AK: + 2015-01-01: false +AL: + 2015-01-01: false +AR: + 2015-01-01: false +AZ: + 2015-01-01: false +CA: + # Before this date Part B counted only when the person paid it + # (22 CCR 50555.2(c)); deducts_health_insurance_premiums covers that. + # The 2020-12-01 value first applies in 2021 annual calculations. + 2015-01-01: false + 2020-12-01: true +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: + 2015-01-01: false +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/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 44b5c6621bc..6ac5710eb30 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 @@ -121,7 +121,7 @@ # 11,500 combined is under 12,137.55. is_optional_senior_or_disabled_asset_eligible: [true, true] -- name: Missouri couple at the couple resource limit is ineligible. +- name: Missouri couple at the couple resource limit is eligible. period: 2026 input: people: @@ -143,7 +143,33 @@ members: [person1, person2] state_code: MO output: - # 12,137.55 combined is not under the 12,137.55 couple limit. + # RSMo 208.010.2(7): a couple "may own resources not to exceed" the limit. + # 12,137.55 combined equals the 12,137.55 couple limit. + is_optional_senior_or_disabled_asset_eligible: [true, true] + +- name: Missouri couple one cent over the couple resource limit is ineligible. + period: 2026 + input: + people: + person1: + age: 70 + ssi_countable_resources: 6_000 + person2: + age: 68 + ssi_countable_resources: 6_137.56 + tax_units: + tax_unit: + members: [person1, person2] + tax_unit_is_joint: true + marital_units: + marital_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MO + output: + # 12,137.56 combined exceeds the 12,137.55 couple limit. is_optional_senior_or_disabled_asset_eligible: [false, false] - name: Missouri's July 2026 individual limit applies from 2027. @@ -322,3 +348,154 @@ output: # 9,700 is over the 2025 limit of 9,660, though under the 2026 limit of 9,950. is_optional_senior_or_disabled_asset_eligible: false + +- name: Missouri applies the 1,000-dollar individual resource limit in 2017. + period: 2017 + input: + age: 70 + ssi_countable_resources: 1_500 + state_code: MO + output: + # 13 CSR 40-8.020(4)(A): 1,000 before July 1, 2017. 1,500 is over it. + is_optional_senior_or_disabled_asset_eligible: false + +- name: Missouri couple at the July 2017 couple resource limit is eligible in 2018. + period: 2018 + input: + people: + person1: + age: 70 + ssi_countable_resources: 2_000 + person2: + age: 68 + ssi_countable_resources: 2_000 + tax_units: + tax_unit: + members: [person1, person2] + tax_unit_is_joint: true + marital_units: + marital_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MO + output: + # RSMo 208.010.2(7): resources "not to exceed" the couple amount qualify. + # 4,000 combined equals the 4,000 couple limit effective July 1, 2017. + is_optional_senior_or_disabled_asset_eligible: [true, true] + +- name: Missouri applies the July 2018 individual resource limit in 2019. + period: 2019 + input: + age: 70 + ssi_countable_resources: 2_500 + state_code: MO + output: + # 2,500 is under the 3,000 limit effective July 1, 2018. + is_optional_senior_or_disabled_asset_eligible: true + +- name: Missouri applies the July 2019 individual resource limit in 2020. + period: 2020 + input: + age: 70 + ssi_countable_resources: 3_500 + state_code: MO + output: + # 3,500 is under the 4,000 limit effective July 1, 2019. + is_optional_senior_or_disabled_asset_eligible: true + +- name: Missouri applies the July 2020 individual resource limit in 2021. + period: 2021 + input: + age: 70 + ssi_countable_resources: 4_500 + state_code: MO + output: + # 4,500 is under the 5,000 limit effective July 1, 2020. + is_optional_senior_or_disabled_asset_eligible: true + +- name: Missouri applies the July 2021 individual resource limit in 2022. + period: 2022 + input: + age: 70 + ssi_countable_resources: 5_020 + state_code: MO + output: + # 5,020 is under the 5,035 limit effective July 1, 2021 (IM-70). + is_optional_senior_or_disabled_asset_eligible: true + +- name: Missouri applies the July 2022 individual resource limit in 2023. + period: 2023 + input: + age: 70 + ssi_countable_resources: 5_200 + state_code: MO + output: + # 5,200 is under the 5,301.85 limit effective July 1, 2022 (IM-77). + is_optional_senior_or_disabled_asset_eligible: true + +- name: Missouri applies the July 2023 individual resource limit in 2024. + period: 2024 + input: + age: 70 + ssi_countable_resources: 5_500 + state_code: MO + output: + # 5,500 is under the 5,726 limit effective July 1, 2023 (IM-57). + is_optional_senior_or_disabled_asset_eligible: true + +- name: Missouri applies the July 2024 individual resource limit in 2025. + period: 2025 + input: + age: 70 + ssi_countable_resources: 5_800 + state_code: MO + output: + # 5,800 is under the 5,909.25 limit effective July 1, 2024. + is_optional_senior_or_disabled_asset_eligible: true + +- name: Missouri applies the July 2025 individual resource limit in 2026. + period: 2026 + input: + age: 70 + ssi_countable_resources: 6_000 + state_code: MO + output: + # 6,000 is under the 6,068.80 limit effective July 1, 2025. + is_optional_senior_or_disabled_asset_eligible: true + +- name: Arkansas applicant under the 2015 Medicare Savings Program individual resource limit is eligible. + period: 2015 + input: + age: 70 + ssi_countable_resources: 7_000 + state_code: AR + output: + # 7,000 is under the 2015 Medicare Savings Program limit of 7,280. + is_optional_senior_or_disabled_asset_eligible: true + +- name: South Carolina couple one dollar over the 2026 Medicare Savings Program couple resource limit is ineligible. + period: 2026 + input: + people: + person1: + age: 70 + ssi_countable_resources: 7_455 + person2: + age: 68 + ssi_countable_resources: 7_456 + tax_units: + tax_unit: + members: [person1, person2] + tax_unit_is_joint: true + marital_units: + marital_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: SC + output: + # 14,911 combined exceeds the 2026 couple limit of 14,910. + is_optional_senior_or_disabled_asset_eligible: [false, false] diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.yaml index c5fbb781fa4..1ef111bc9f8 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.yaml @@ -181,7 +181,7 @@ # ACWDL 20-24 Example 3: (1,950 - 20) x 12 / 2 = 11,580 each. medicaid_optional_senior_or_disabled_countable_income: [11_580, 11_580] -- name: Connecticut subtracts its 2026 couple disregard from a couple's combined unearned income. +- name: Connecticut couple with each spouse above the individual disregard gets the full 2026 couple disregard. period: 2026 absolute_error_margin: 0.01 input: @@ -239,11 +239,11 @@ ssi_marital_unearned_income: 12_000 state_code: CA output: - # The December 2020 value first applies in 2021 annual calculations. - # (1,000 - 20) x 12 = 11,760. + # ACWDL 20-24 ended the 230 disregard on December 1, 2020, which first + # applies in 2021 annual calculations. (1,000 - 20) x 12 = 11,760. medicaid_optional_senior_or_disabled_countable_income: 11_760 -- name: California subtracts the 230-dollar disregard and no premiums in 2020. +- name: California subtracts the 20-dollar deduction and then the 230-dollar disregard in 2020. period: 2020 absolute_error_margin: 0.01 input: @@ -252,10 +252,11 @@ ssi_marital_unearned_income: 12_000 state_code: CA output: - # 2020 annual calculations read January 1, 2020: the 230 disregard - # applies and the December 2020 premium deduction does not. - # (1,000 - 230) x 12 = 9,240. - medicaid_optional_senior_or_disabled_countable_income: 9_240 + # ACWDL 00-57 MC 176 lines 8 and 16. 2020 reads January 1, 2020: the 230 + # disregard applies, the Part B disregard does not, and the MSP pays Part + # B, so no person-paid premium is deducted. + # (1,000 - 20 - 230) x 12 = 9,000. + medicaid_optional_senior_or_disabled_countable_income: 9_000 - name: California deducts both spouses' Part B premiums and other health insurance premiums from a couple's combined income. period: 2026 @@ -285,3 +286,220 @@ # split. Monthly, 1,950 - 20 - 2 x 202.90 - 30 = 1,494.20. # 1,494.20 x 12 / 2 = 8,965.20 each. medicaid_optional_senior_or_disabled_countable_income: [8_965.2, 8_965.2] + +- name: California subtracts the 230-dollar disregard after the earned income deductions in 2020. + period: 2020 + absolute_error_margin: 0.01 + input: + age: 70 + medicare_enrolled: false + ssi_marital_earned_income: 12_000 + state_code: CA + output: + # ACWDL 00-57 MC 176 lines 10-16: the unused 20-dollar deduction joins the + # 65-dollar deduction, then half the rest counts, then the disregard. + # ((1,000 - 65 - 20) / 2 - 230) x 12 = 2,730. + medicaid_optional_senior_or_disabled_countable_income: 2_730 + +- name: California subtracts the 310-dollar couple disregard in 2020. + period: 2020 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 70 + is_tax_unit_head: true + medicare_enrolled: false + ssi_unearned_income: 15_600 + person2: + age: 68 + is_tax_unit_spouse: true + medicare_enrolled: false + ssi_unearned_income: 7_800 + marital_units: + marital_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: CA + output: + # ACWDL 00-57 MC 176 lines 8 and 16: (1,950 - 20 - 310) x 12 / 2 = 9,720 each. + medicaid_optional_senior_or_disabled_countable_income: [9_720, 9_720] + +- name: California deducted other health insurance premiums before 12/2020. + period: 2019 + absolute_error_margin: 0.01 + input: + age: 70 + medicare_enrolled: false + ssi_marital_unearned_income: 12_000 + health_insurance_premiums_without_medicare_part_b: 1_800 + state_code: CA + output: + # ACWDL 00-57 MC 176 lines 8, 16 and 17: (1,000 - 20 - 230 - 150) x 12 = 7,200. + medicaid_optional_senior_or_disabled_countable_income: 7_200 + +- name: California deducts the 2021 Medicare Part B premium. + period: 2021 + absolute_error_margin: 0.01 + input: + age: 70 + medicare_enrolled: true + ssi_marital_unearned_income: 12_000 + state_code: CA + output: + # The December 2020 Part B disregard first applies in 2021 annual + # calculations. The 2021 base premium is 148.50 a month. + # (1,000 - 20 - 148.50) x 12 = 9,978. + medicaid_optional_senior_or_disabled_countable_income: 9_978 + +- name: California deducts premiums entered as total health insurance premiums. + period: 2026 + absolute_error_margin: 0.01 + input: + age: 70 + medicare_enrolled: false + ssi_marital_unearned_income: 12_000 + health_insurance_premiums: 1_200 + state_code: CA + output: + # ACWDL 20-24: (1,000 - 20 - 100) x 12 = 10,560. + medicaid_optional_senior_or_disabled_countable_income: 10_560 + +- name: California keeps the Part B disregard when the MSP pays Part B and other premiums are entered as a total. + period: 2026 + absolute_error_margin: 0.01 + input: + age: 70 + medicare_enrolled: true + social_security_retirement: 12_000 + health_insurance_premiums: 1_200 + state_code: CA + output: + msp_part_b_premium_coverage: 2_434.8 + # ACWDL 20-24: (1,000 - 20 - 202.90 - 100) x 12 = 8,125.20. + medicaid_optional_senior_or_disabled_countable_income: 8_125.2 + +- name: California does not count a self-paid Part B premium twice when it is part of the total premium input. + period: 2026 + absolute_error_margin: 0.01 + input: + age: 70 + medicare_enrolled: true + social_security_retirement: 22_200 + health_insurance_premiums: 3_634.8 + state_code: CA + output: + medicare_part_b_premium: 2_434.8 + # ACWDL 20-24: (1,850 - 20 - 202.90 - 100) x 12 = 18,325.20. + medicaid_optional_senior_or_disabled_countable_income: 18_325.2 + +- name: California deducts the applicant's Part B premium from income that includes deemed spouse income. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 70 + is_tax_unit_head: true + medicare_enrolled: true + ssi_unearned_income: 1_200 + person2: + age: 60 + is_tax_unit_spouse: true + ssi_unearned_income: 30_240 + marital_units: + marital_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: CA + output: + # ACWDL 20-24 Examples 2 and 5 deduct premiums from the combined income. + # Monthly, 100 + 2,520 - 20 - 202.90 = 2,397.10, so 28,765.20 a year. + # Flooring the applicant's own income first would lose 122.90 a month + # and give 30,240. + medicaid_optional_senior_or_disabled_countable_income: [28_765.2, 0] + +- name: California applicant whose Part B premium offsets deemed spouse income is income eligible. + period: 2026 + input: + people: + person1: + age: 70 + is_tax_unit_head: true + medicare_enrolled: true + ssi_unearned_income: 1_200 + person2: + age: 60 + is_tax_unit_spouse: true + ssi_unearned_income: 30_240 + marital_units: + marital_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: CA + output: + # 28,765.20 of countable income is under the 29,863.20 limit. + is_optional_senior_or_disabled_income_eligible: [true, true] + +- name: California countable income does not go below zero when premiums exceed income. + period: 2026 + absolute_error_margin: 0.01 + input: + age: 70 + medicare_enrolled: true + health_insurance_premiums_without_medicare_part_b: 3_000 + ssi_marital_unearned_income: 1_200 + state_code: CA + output: + # (100 - 20) x 12 = 960, less 2,434.80 Part B and 3,000 premiums, floored at 0. + medicaid_optional_senior_or_disabled_countable_income: 0 + +- name: California does not deduct a non-applicant spouse's premiums, as in ACWDL 20-24 Example 5. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 70 + is_tax_unit_head: true + medicare_enrolled: true + ssi_unearned_income: 18_000 + person2: + age: 60 + is_tax_unit_spouse: true + ssi_unearned_income: 12_000 + employment_income: 8_400 + health_insurance_premiums_without_medicare_part_b: 1_200 + marital_units: + marital_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: CA + output: + # SSI deeming: the spouse's 1,000 unearned plus (700 - 65) / 2 = 317.50 + # earned, so 1,317.50 a month is deemed. Monthly countable income is + # 1,500 + 1,317.50 - 20 - 202.90 = 2,594.60, over the limit, which is + # the letter's result. + medicaid_optional_senior_or_disabled_income_deemed_from_ineligible_spouse: [15_810, 0] + medicaid_optional_senior_or_disabled_countable_income: [31_135.2, 0] + +- name: North Carolina does not deduct Medicare Part B or other health insurance premiums. + period: 2026 + absolute_error_margin: 0.01 + input: + age: 70 + medicare_enrolled: true + health_insurance_premiums_without_medicare_part_b: 1_200 + ssi_marital_unearned_income: 12_000 + state_code: NC + output: + # Only California deducts premiums: (1,000 - 20) x 12 = 11,760. + medicaid_optional_senior_or_disabled_countable_income: 11_760 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 e7b26e1afaa..17dcb5d5710 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 @@ -9,6 +9,7 @@ class is_optional_senior_or_disabled_asset_eligible(Variable): reference = ( "https://www.law.cornell.edu/uscode/text/42/1396a#m", "https://www.law.cornell.edu/uscode/text/42/1396d#p", + "https://revisor.mo.gov/main/OneSection.aspx?section=208.010", ) def formula(person, period, parameters): @@ -41,5 +42,12 @@ def formula(person, period, parameters): # The MSP resource standard (42 USC 1396d(p)(1)(C)) and the AR, OK # and SC rules allow resources equal to the limit. within_msp_limit = assets <= msp_limit - below_state_limit = assets < state_limit - return where(uses_msp_limit, within_msp_limit, below_state_limit) + # RSMo 208.010.2(7): a married couple "may own resources not to + # exceed" the couple amount. + couple_may_equal_limit = is_couple & p.assets.limit.couple_limit_inclusive[ + state + ].astype(bool) + within_state_limit = where( + couple_may_equal_limit, assets <= state_limit, assets < state_limit + ) + return where(uses_msp_limit, within_msp_limit, within_state_limit) diff --git a/policyengine_us/variables/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.py b/policyengine_us/variables/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.py index 43b9b0894b2..9a34c826896 100644 --- a/policyengine_us/variables/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.py +++ b/policyengine_us/variables/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.py @@ -17,8 +17,13 @@ class medicaid_optional_senior_or_disabled_countable_income(Variable): "https://dssmanuals.mo.gov/mo-healthnet-for-the-aged-blind-and-disabled/0805-000-00/0805-015-00/", "https://dssmanuals.mo.gov/mo-healthnet-for-the-aged-blind-and-disabled/0805-000-00/0805-015-00/0805-015-25/", "https://dssmanuals.mo.gov/mo-healthnet-for-the-aged-blind-and-disabled/0805-000-00/0805-015-00/0805-015-40/", - # California ABD FPL Part B and health insurance premium deductions + # California ABD FPL disregard and Part B and health insurance premium + # deductions + "https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/c00-57.pdf#page=3", "https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/20-24.pdf#page=3", + "https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/20-18.pdf#page=2", + "https://www.law.cornell.edu/regulations/california/22-CCR-50555.2", + "https://www.law.cornell.edu/cfr/text/20/416.1163", ) def formula(person, period, parameters): @@ -60,23 +65,44 @@ def formula(person, period, parameters): period, ) - # ACWDL 20-24 deducts Part B "regardless of how the premium is paid", - # so use the base premium, not the premium net of MSP coverage. + # 22 CCR 50555.2 deducts person-paid premiums, Part B only when the + # person pays it. From 12/2020 (ACWDL 20-18, 20-24) CA disregards Part B + # "regardless of how the premium is paid": swap the person-paid Part B + # in the shared aggregate for the full base premium. + # NOTE: medicare_enrolled (Part A and/or Part B) stands in for Part B + # enrollment, as in medical_expense_health_insurance_premiums. + # NOTE: gov.hhs.medicare.part_b.base_premium starts in 2021, so a + # person-paid Part B before 2021 reads the 2021 premium. + # NOTE: ACWDL 20-24 Example 5 also deducts a non-applicant spouse's + # premiums. Spousal income here follows SSI deeming (20 CFR 416.1163), + # so that premium is not modeled. medicare_enrolled = person("medicare_enrolled", period) - part_b_premium = person("base_part_b_premium", period) * medicare_enrolled - other_premiums = person( - "health_insurance_premiums_without_medicare_part_b", period + paid_premiums = person("medical_expense_health_insurance_premiums", period) + paid_part_b = person("medicare_part_b_premium", period) * medicare_enrolled + base_part_b = person("base_part_b_premium", period) * medicare_enrolled + disregards_part_b = p.disregards_medicare_part_b_premium[state].astype(bool) + own_premiums = where( + disregards_part_b, + max_(paid_premiums - paid_part_b, 0) + base_part_b, + paid_premiums, ) - own_premiums = part_b_premium + other_premiums premiums = where( couple_computation, person.marital_unit.sum(own_premiums), own_premiums, ) deducts_premiums = p.deducts_health_insurance_premiums[state].astype(bool) - personal_countable = max_( - personal_countable - where(deducts_premiums, premiums, 0), 0 + # MC 176 (ACWDL 00-57) lines 16-17 subtract the additional disregard + # and the premiums from income after the SSI exclusions. + additional_disregard = ( + where( + couple_computation, + p.additional_disregard.couple[state], + p.additional_disregard.individual[state], + ) + * MONTHS_IN_YEAR ) + deductions = where(deducts_premiums, premiums, 0) + additional_disregard spousal_deemed = person( "medicaid_optional_senior_or_disabled_income_deemed_from_ineligible_spouse", @@ -86,12 +112,13 @@ def formula(person, period, parameters): is_eligible_spouse = person("is_ssi_eligible_spouse", period) is_eligible = is_eligible_individual | is_eligible_spouse - return where( - ~is_eligible, - 0, - where( - couple_computation, - personal_countable / 2, - personal_countable + spousal_deemed, - ), + # ACWDL 20-24 Examples 2 and 5 combine the non-applicant spouse's + # income with the applicant's income before the deductions, as + # 20 CFR 416.1163(d)(2) does, so subtract the deductions from the + # combined income and floor the result. + countable = where( + couple_computation, + max_(personal_countable - deductions, 0) / 2, + max_(personal_countable + spousal_deemed - deductions, 0), ) + return where(is_eligible, countable, 0) diff --git a/source_conflicts/candidates.yaml b/source_conflicts/candidates.yaml index 843ddcbe21c..01d491fbbaa 100644 --- a/source_conflicts/candidates.yaml +++ b/source_conflicts/candidates.yaml @@ -3449,6 +3449,35 @@ candidates: state: unreviewed note: 'Verify the rounding gap-fill; the separate January-versus-April timing difference is a model approximation. Code not yet on main: medicaid_income_level, medicaid_optional_senior_or_disabled_income_limit.' +- id: us-mo:mhabd-couple-resource-limit-boundary + program: medicaid + years: + from: 2015 + type: calendar + question: Is a Missouri aged, blind or disabled couple whose countable resources equal the couple limit eligible, + as the statute's "not to exceed" says, or ineligible, as the rule's "at or in excess of" says? + sources: + - kind: statute + citation: RSMo 208.010.2(7) (208.010.2(4) before fiscal year 2018) + url: https://revisor.mo.gov/main/OneSection.aspx?section=208.010 + - kind: regulation + citation: 13 CSR 40-8.020(4)(A)1.B and (4)(B) + url: https://www.sos.mo.gov/CMSImages/AdRules/csr/current/13csr/13c40-8.pdf#page=2 + readings: + statute: A married couple living together "may own resources not to exceed" the couple amount, so resources + equal to the limit qualify. + other: A household with countable assets "at or in excess of" the limit is ineligible. + example: A 2026 Missouri couple with $12,137.55 of countable resources is eligible under the statute and ineligible + under the rule. + pe_us: + follows: statute + 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/10364 + state: open + note: PR 10364 follows the statute for couples, pending the project lead's ruling (RSMo 536.014 voids a rule in + conflict with state law). Individuals keep the strict test, the agency's reading of the individual clause. - id: us-mo:negative-federal-agi-combined-return program: income-tax years: From e3bc1ef97abc385910415850cd7c3be9e20f8707 Mon Sep 17 00:00:00 2001 From: Ziming Date: Mon, 26 Oct 2026 17:22:21 -0400 Subject: [PATCH 4/9] Let California ABD resources equal the limit; add the July 2022 CA limit - New by-state flag individual_limit_inclusive (CA) and CA true in couple_limit_inclusive: resources may not exceed the limit (22 CCR 50420(a), WIC 14005.40(c)(5), 42 USC 1396a(m)(1)(C)). - CA asset limit $130,000 / $195,000 from 2022-07-01 (ACWDL 21-31), which the ABD pathway lacked. - Tests: CA 2026 single at and one cent over the limit, a couple at $195,000, and 2023 at $130,000. Co-Authored-By: Claude Opus 5.5 --- .../medicaid-abd-pathway-values.fixed.md | 2 +- .../assets/limit/couple.yaml | 4 + .../assets/limit/couple_limit_inclusive.yaml | 9 +- .../assets/limit/individual.yaml | 4 + .../limit/individual_limit_inclusive.yaml | 118 ++++++++++++++++++ ...nal_senior_or_disabled_asset_eligible.yaml | 54 ++++++++ ...ional_senior_or_disabled_asset_eligible.py | 14 ++- 7 files changed, 198 insertions(+), 7 deletions(-) create mode 100644 policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual_limit_inclusive.yaml diff --git a/changelog.d/medicaid-abd-pathway-values.fixed.md b/changelog.d/medicaid-abd-pathway-values.fixed.md index 08a82d613b2..1bdeaff4068 100644 --- a/changelog.d/medicaid-abd-pathway-values.fixed.md +++ b/changelog.d/medicaid-abd-pathway-values.fixed.md @@ -1 +1 @@ -Updated Medicaid's aged, blind and disabled pathway: California's $20 deduction followed by the $230/$310 disregard before December 2020, its health insurance premium deduction, and its Medicare Part B premium disregard from December 2020; Connecticut's 2026 disregard; South Carolina's $50 disregard; Missouri's 2015-2026 asset limits with July 1 updates, with a couple's resources equal to the couple limit qualifying under RSMo 208.010.2(7); and asset limits equal to the Medicare Savings Program resource limit in Arkansas, Oklahoma and South Carolina, where resources equal to the limit qualify. +Updated Medicaid's aged, blind and disabled pathway: California's $20 deduction followed by the $230/$310 disregard before December 2020, its health insurance premium deduction, and its Medicare Part B premium disregard from December 2020; Connecticut's 2026 disregard; South Carolina's $50 disregard; Missouri's 2015-2026 asset limits with July 1 updates, with a couple's resources equal to the couple limit qualifying under RSMo 208.010.2(7); California's resources equal to the limit qualifying, with the $130,000 / $195,000 limit from July 2022; and asset limits equal to the Medicare Savings Program resource limit in Arkansas, Oklahoma and South Carolina, where resources equal to the limit qualify. diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple.yaml index eb41bebce81..c0c8f78d2cf 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple.yaml @@ -8,6 +8,8 @@ metadata: reference: - title: "Medicaid Eligibility and Enrollment Policies for Seniors and People with Disabilities (Non-MAGI) During the Unwinding | KFF (June 2024)" href: https://www.kff.org/report-section/medicaid-financial-eligibility-for-seniors-and-people-with-disabilities-findings-from-a-50-state-survey-appendix-tables/ + - title: "California DHCS All County Welfare Directors Letter 21-31, Asset Limit Changes for Non-MAGI Medi-Cal (Phase I) #page 2,4" + href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/21-31.pdf#page=2 - title: "Asset Limit Changes for Non-MAGI Medi-Cal | California DHCS (asset limit reinstated at $130,000 plus $65,000 per additional household member effective January 1, 2026)" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/Pages/Asset-Limit-Changes-for-Non-MAGI-Medi-Cal.aspx - title: "California DHCS All County Welfare Directors Letter 25-14 (reinstatement of the non-MAGI Medi-Cal asset limit)" @@ -48,6 +50,8 @@ AZ: 2015-01-01: .inf CA: 2015-01-01: 3_000 + # Annual calculations read January 1, so this first applies in 2023. + 2022-07-01: 195_000 2024-01-01: .inf 2026-01-01: 195_000 CO: diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple_limit_inclusive.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple_limit_inclusive.yaml index bde731f544d..20779980c04 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple_limit_inclusive.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple_limit_inclusive.yaml @@ -8,6 +8,12 @@ metadata: reference: - title: Missouri Revised Statutes 208.010.2(7) href: https://revisor.mo.gov/main/OneSection.aspx?section=208.010 + - title: California Welfare and Institutions Code 14005.40(c)(5) + href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=WIC§ionNum=14005.40 + - title: Cal. Code Regs. Tit. 22, § 50420(a) - Property Limit + href: https://www.law.cornell.edu/regulations/california/22-CCR-50420 + - title: 42 U.S.C. 1396a(m)(1)(C) + href: https://www.law.cornell.edu/uscode/text/42/1396a#m_1_C AK: 2015-01-01: false @@ -18,7 +24,8 @@ AR: AZ: 2015-01-01: false CA: - 2015-01-01: false + # Resources may not exceed the limit (22 CCR 50420(a); WIC 14005.40(c)(5)). + 2015-01-01: true CO: 2015-01-01: false CT: diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual.yaml index db840117e73..9766ef4696b 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual.yaml @@ -8,6 +8,8 @@ metadata: reference: - title: "Medicaid Eligibility and Enrollment Policies for Seniors and People with Disabilities (Non-MAGI) During the Unwinding | KFF (June 2024)" href: https://www.kff.org/report-section/medicaid-eligibility-and-enrollment-policies-for-seniors-and-people-with-disabilities-non-magi-during-the-unwinding-appendix/ + - title: "California DHCS All County Welfare Directors Letter 21-31, Asset Limit Changes for Non-MAGI Medi-Cal (Phase I) #page 2,4" + href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/21-31.pdf#page=2 - title: "Asset Limit Changes for Non-MAGI Medi-Cal | California DHCS (asset limit reinstated at $130,000 for an individual effective January 1, 2026)" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/Pages/Asset-Limit-Changes-for-Non-MAGI-Medi-Cal.aspx - title: "California DHCS All County Welfare Directors Letter 25-14 (reinstatement of the non-MAGI Medi-Cal asset limit)" @@ -48,6 +50,8 @@ AZ: 2015-01-01: .inf CA: 2015-01-01: 2_000 + # Annual calculations read January 1, so this first applies in 2023. + 2022-07-01: 130_000 2024-01-01: .inf 2026-01-01: 130_000 CO: diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual_limit_inclusive.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual_limit_inclusive.yaml new file mode 100644 index 00000000000..e90e1e92916 --- /dev/null +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual_limit_inclusive.yaml @@ -0,0 +1,118 @@ +description: The state counts an individual's resources equal to the individual asset limit as within the limit under the Medicaid optional senior or disabled pathway, if this is true. +metadata: + unit: bool + period: year + label: Medicaid senior or disabled individual asset limit includes the limit amount + breakdown: + - state_code + reference: + - title: California Welfare and Institutions Code 14005.40(c)(5) + href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=WIC§ionNum=14005.40 + - title: Cal. Code Regs. Tit. 22, § 50420(a) - Property Limit + href: https://www.law.cornell.edu/regulations/california/22-CCR-50420 + - title: 42 U.S.C. 1396a(m)(1)(C) + href: https://www.law.cornell.edu/uscode/text/42/1396a#m_1_C + +AK: + 2015-01-01: false +AL: + 2015-01-01: false +AR: + 2015-01-01: false +AZ: + 2015-01-01: false +CA: + # Resources may not exceed the limit (22 CCR 50420(a); WIC 14005.40(c)(5)). + 2015-01-01: true +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: + 2015-01-01: false +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/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 6ac5710eb30..8838c37176c 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 @@ -499,3 +499,57 @@ output: # 14,911 combined exceeds the 2026 couple limit of 14,910. is_optional_senior_or_disabled_asset_eligible: [false, false] + +- name: California applicant at the 2026 individual resource limit is eligible. + period: 2026 + input: + age: 70 + ssi_countable_resources: 130_000 + state_code: CA + output: + # WIC 14005.40(c)(5): resources that "do not exceed" the limit qualify. + is_optional_senior_or_disabled_asset_eligible: true + +- name: California applicant one cent over the 2026 individual resource limit is ineligible. + period: 2026 + input: + age: 70 + ssi_countable_resources: 130_000.01 + state_code: CA + output: + is_optional_senior_or_disabled_asset_eligible: false + +- name: California couple at the 2026 couple resource limit is eligible. + period: 2026 + input: + people: + person1: + age: 70 + ssi_countable_resources: 97_500 + person2: + age: 68 + ssi_countable_resources: 97_500 + tax_units: + tax_unit: + members: [person1, person2] + tax_unit_is_joint: true + marital_units: + marital_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: CA + output: + # 195,000 combined equals the two-person limit (ACWDL 25-14). + is_optional_senior_or_disabled_asset_eligible: [true, true] + +- name: California applies the July 2022 individual resource limit in 2023. + period: 2023 + input: + age: 70 + ssi_countable_resources: 130_000 + state_code: CA + output: + # ACWDL 21-31: 130,000 from July 1, 2022, read in 2023; 130,000 is at it. + is_optional_senior_or_disabled_asset_eligible: true 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 17dcb5d5710..aa0a6823964 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 @@ -10,6 +10,7 @@ class is_optional_senior_or_disabled_asset_eligible(Variable): "https://www.law.cornell.edu/uscode/text/42/1396a#m", "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", ) def formula(person, period, parameters): @@ -43,11 +44,14 @@ def formula(person, period, parameters): # and SC rules allow resources equal to the limit. within_msp_limit = assets <= msp_limit # RSMo 208.010.2(7): a married couple "may own resources not to - # exceed" the couple amount. - couple_may_equal_limit = is_couple & p.assets.limit.couple_limit_inclusive[ - state - ].astype(bool) + # exceed" the couple amount. California resources may not exceed the + # limit (22 CCR 50420(a); WIC 14005.40(c)(5)). + inclusive = where( + is_couple, + p.assets.limit.couple_limit_inclusive[state], + p.assets.limit.individual_limit_inclusive[state], + ).astype(bool) within_state_limit = where( - couple_may_equal_limit, assets <= state_limit, assets < state_limit + inclusive, assets <= state_limit, assets < state_limit ) return where(uses_msp_limit, within_msp_limit, within_state_limit) From d3314169a7df61b72accf5ba4a42523b9ce54049 Mon Sep 17 00:00:00 2001 From: Ziming Date: Mon, 26 Oct 2026 20:05:15 -0400 Subject: [PATCH 5/9] Cite ACWDL 21-31 pages 2-4 for the California asset limit Co-Authored-By: Claude Opus 5.5 --- .../categories/senior_or_disabled/assets/limit/couple.yaml | 2 +- .../categories/senior_or_disabled/assets/limit/individual.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple.yaml index c0c8f78d2cf..540ed66c7fb 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple.yaml @@ -8,7 +8,7 @@ metadata: reference: - title: "Medicaid Eligibility and Enrollment Policies for Seniors and People with Disabilities (Non-MAGI) During the Unwinding | KFF (June 2024)" href: https://www.kff.org/report-section/medicaid-financial-eligibility-for-seniors-and-people-with-disabilities-findings-from-a-50-state-survey-appendix-tables/ - - title: "California DHCS All County Welfare Directors Letter 21-31, Asset Limit Changes for Non-MAGI Medi-Cal (Phase I) #page 2,4" + - title: "California DHCS All County Welfare Directors Letter 21-31, Asset Limit Changes for Non-MAGI Medi-Cal (Phase I) #page 2-4" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/21-31.pdf#page=2 - title: "Asset Limit Changes for Non-MAGI Medi-Cal | California DHCS (asset limit reinstated at $130,000 plus $65,000 per additional household member effective January 1, 2026)" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/Pages/Asset-Limit-Changes-for-Non-MAGI-Medi-Cal.aspx diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual.yaml index 9766ef4696b..8b0ee61afb5 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual.yaml @@ -8,7 +8,7 @@ metadata: reference: - title: "Medicaid Eligibility and Enrollment Policies for Seniors and People with Disabilities (Non-MAGI) During the Unwinding | KFF (June 2024)" href: https://www.kff.org/report-section/medicaid-eligibility-and-enrollment-policies-for-seniors-and-people-with-disabilities-non-magi-during-the-unwinding-appendix/ - - title: "California DHCS All County Welfare Directors Letter 21-31, Asset Limit Changes for Non-MAGI Medi-Cal (Phase I) #page 2,4" + - title: "California DHCS All County Welfare Directors Letter 21-31, Asset Limit Changes for Non-MAGI Medi-Cal (Phase I) #page 2-4" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/21-31.pdf#page=2 - title: "Asset Limit Changes for Non-MAGI Medi-Cal | California DHCS (asset limit reinstated at $130,000 for an individual effective January 1, 2026)" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/Pages/Asset-Limit-Changes-for-Non-MAGI-Medi-Cal.aspx From 60ef70cb9ce093d88cdb052dfb7e3da8bb60b117 Mon Sep 17 00:00:00 2001 From: Ziming Date: Mon, 26 Oct 2026 21:13:02 -0400 Subject: [PATCH 6/9] Apply no $20 disregard to Minnesota's ABD pathway Minn. Stat. 256B.056, subd. 1b (since 2001): the SSI $20 general income disregard "is included in the standard and shall not be allowed as a deduction from income" for aged, blind and disabled people. MN disregard is 0 from 2015, so none moves to earned income; the $65 and one-half earned exclusions still apply. Tests at and $1 over the 2026 limit, and an earned-income case. Co-Authored-By: Claude Opus 5.5 --- .../medicaid-abd-pathway-values.fixed.md | 2 +- .../income/disregard/couple.yaml | 6 +++++- .../income/disregard/individual.yaml | 6 +++++- ...al_senior_or_disabled_income_eligible.yaml | 21 +++++++++++++++++++ ...l_senior_or_disabled_countable_income.yaml | 13 ++++++++++++ 5 files changed, 45 insertions(+), 3 deletions(-) diff --git a/changelog.d/medicaid-abd-pathway-values.fixed.md b/changelog.d/medicaid-abd-pathway-values.fixed.md index 1bdeaff4068..3d053195ac9 100644 --- a/changelog.d/medicaid-abd-pathway-values.fixed.md +++ b/changelog.d/medicaid-abd-pathway-values.fixed.md @@ -1 +1 @@ -Updated Medicaid's aged, blind and disabled pathway: California's $20 deduction followed by the $230/$310 disregard before December 2020, its health insurance premium deduction, and its Medicare Part B premium disregard from December 2020; Connecticut's 2026 disregard; South Carolina's $50 disregard; Missouri's 2015-2026 asset limits with July 1 updates, with a couple's resources equal to the couple limit qualifying under RSMo 208.010.2(7); California's resources equal to the limit qualifying, with the $130,000 / $195,000 limit from July 2022; and asset limits equal to the Medicare Savings Program resource limit in Arkansas, Oklahoma and South Carolina, where resources equal to the limit qualify. +Updated Medicaid's aged, blind and disabled pathway: California's $20 deduction followed by the $230/$310 disregard before December 2020, its health insurance premium deduction, and its Medicare Part B premium disregard from December 2020; Connecticut's 2026 disregard; South Carolina's $50 disregard; no SSI $20 disregard in Minnesota (Minn. Stat. 256B.056, subd. 1b); Missouri's 2015-2026 asset limits with July 1 updates, with a couple's resources equal to the couple limit qualifying under RSMo 208.010.2(7); California's resources equal to the limit qualifying, with the $130,000 / $195,000 limit from July 2022; and asset limits equal to the Medicare Savings Program resource limit in Arkansas, Oklahoma and South Carolina, where resources equal to the limit qualify. diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/couple.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/couple.yaml index 51c9e4dd105..d992fc2380b 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/couple.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/couple.yaml @@ -28,6 +28,8 @@ metadata: href: https://img1.scdhhs.gov/mppm/SCMPPM/Section_300.docx - title: South Carolina Medicaid State Plan, Supplement 8a to Attachment 2.6-A (effective January 1, 2009) href: https://scdhhs.gov/sites/dhhs/files/documents/stateplan/Attachment_2.6-A.pdf#page=70 + - title: Minnesota Statutes 256B.056, subdivision 1b - Aged, blind, and disabled income methodology + href: https://www.revisor.mn.gov/statutes/cite/256B.056#stat.256B.056.1b AL: 2015-01-01: 20 @@ -88,7 +90,9 @@ MA: MI: 2015-01-01: 20 MN: - 2015-01-01: 20 + # Minn. Stat. 256B.056, subd. 1b: the SSI $20 general disregard is included + # in the standard and not deducted from income. + 2015-01-01: 0 MS: 2015-01-01: 20 MO: diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/individual.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/individual.yaml index 6aa78ec25d9..160fd2ea76d 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/individual.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/individual.yaml @@ -28,6 +28,8 @@ metadata: href: https://img1.scdhhs.gov/mppm/SCMPPM/Section_300.docx - title: South Carolina Medicaid State Plan, Supplement 8a to Attachment 2.6-A (effective January 1, 2009) href: https://scdhhs.gov/sites/dhhs/files/documents/stateplan/Attachment_2.6-A.pdf#page=70 + - title: Minnesota Statutes 256B.056, subdivision 1b - Aged, blind, and disabled income methodology + href: https://www.revisor.mn.gov/statutes/cite/256B.056#stat.256B.056.1b AL: 2015-01-01: 20 @@ -83,7 +85,9 @@ MA: MI: 2015-01-01: 20 MN: - 2015-01-01: 20 + # Minn. Stat. 256B.056, subd. 1b: the SSI $20 general disregard is included + # in the standard and not deducted from income. + 2015-01-01: 0 MS: 2015-01-01: 20 MO: diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_income_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_income_eligible.yaml index dfa96b82c42..d79c0e939d1 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_income_eligible.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_income_eligible.yaml @@ -631,3 +631,24 @@ state_code: IA output: is_optional_senior_or_disabled_income_eligible: [true, true] + +- name: Minnesota senior with Social Security at 100 percent of the poverty guideline is income eligible. + period: 2026 + input: + age: 70 + social_security_retirement: 15_960 + state_code: MN + output: + # Minn. Stat. 256B.056, subd. 1b: no $20 deduction. 1,330 a month equals + # the 2026 limit of 15,960 / 12 = 1,330. + is_optional_senior_or_disabled_income_eligible: true + +- name: Minnesota senior with Social Security one dollar a month over the poverty guideline is not income eligible. + period: 2026 + input: + age: 70 + social_security_retirement: 15_972 + state_code: MN + output: + # 1,331 a month exceeds 1,330. A $20 deduction would have given 1,311. + is_optional_senior_or_disabled_income_eligible: false diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.yaml index 1ef111bc9f8..0da2b6f7602 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.yaml @@ -503,3 +503,16 @@ output: # Only California deducts premiums: (1,000 - 20) x 12 = 11,760. medicaid_optional_senior_or_disabled_countable_income: 11_760 + +- name: Minnesota applies no 20-dollar disregard, to unearned or earned income. + period: 2026 + absolute_error_margin: 0.01 + input: + age: 70 + ssi_marital_earned_income: 12_000 + state_code: MN + output: + # Minn. Stat. 256B.056, subd. 1b: no $20, so none moves to earned income. + # The SSI $65 and one-half earned income exclusions still apply: + # (1,000 - 65) / 2 x 12 = 5,610. With the $20 it would be 5,490. + medicaid_optional_senior_or_disabled_countable_income: 5_610 From 216aa268a162275e94b3722d1c26cf52d4c0fd8f Mon Sep 17 00:00:00 2001 From: Ziming Date: Tue, 27 Oct 2026 15:17:58 -0400 Subject: [PATCH 7/9] Record the Missouri couple resource limit ruling for the statute Co-Authored-By: Claude Opus 5.5 --- source_conflicts/candidates.yaml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/source_conflicts/candidates.yaml b/source_conflicts/candidates.yaml index 3d10dccceb7..c7f7ea066f8 100644 --- a/source_conflicts/candidates.yaml +++ b/source_conflicts/candidates.yaml @@ -3752,13 +3752,17 @@ candidates: pe_us: follows: statute code: + - policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple_limit_inclusive.yaml - policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_asset_eligible.py prs: - https://github.com/PolicyEngine/policyengine-us/pull/10364 - state: open - note: PR 10364 follows the statute for couples until Pavel Makarchuk signs off (sign-off requested on the PR; - RSMo 536.014 voids a rule in conflict with state law). Individuals keep the strict test, the agency's reading - of the individual clause. + state: ruled + note: 'Ruled 2026-10-27 for the statute by the project lead for these Medicaid fixes; the ruling record is + https://github.com/PolicyEngine/policyengine-us/pull/10364#issuecomment-6451309562. RSMo 208.010.2(7) ("not to + exceed") governs over 13 CSR 40-8.020(4)(B) ("at or in excess of"), and RSMo 536.014 voids a rule in conflict with + state law. PR 10364 already follows the statute for couples (couple_limit_inclusive.yaml, MO true from 2015), so + the model needs no change. Individuals keep the strict test, the agency''s reading of the individual clause. The + register entry and the code marker follow the merge.' - id: us-mo:negative-federal-agi-combined-return program: income-tax years: From c113aaff2d8fc92d94ce742ddfad5afb333a6a18 Mon Sep 17 00:00:00 2001 From: Ziming Date: Thu, 29 Oct 2026 13:46:48 -0400 Subject: [PATCH 8/9] Apply round-3 review: Missouri individuals, California IRMAA, review tests and references Co-Authored-By: Claude Opus 5.5 --- .../assets/limit/couple.yaml | 2 +- .../assets/limit/couple_limit_inclusive.yaml | 13 +- .../assets/limit/individual.yaml | 2 +- .../limit/individual_limit_inclusive.yaml | 19 +- .../income/additional_disregard/couple.yaml | 2 + .../additional_disregard/individual.yaml | 2 + .../income/disregard/couple.yaml | 2 + .../income/disregard/individual.yaml | 2 + .../disregards_medicare_part_b_premium.yaml | 2 + ...nal_senior_or_disabled_asset_eligible.yaml | 139 +++++++++++++- ...al_senior_or_disabled_income_eligible.yaml | 21 ++ ...l_senior_or_disabled_countable_income.yaml | 180 ++++++++++++++++++ ...ional_senior_or_disabled_asset_eligible.py | 7 +- ...nal_senior_or_disabled_countable_income.py | 13 +- source_conflicts/candidates.yaml | 41 ++-- 15 files changed, 415 insertions(+), 32 deletions(-) diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple.yaml index 540ed66c7fb..afea68f27d3 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple.yaml @@ -8,7 +8,7 @@ metadata: reference: - title: "Medicaid Eligibility and Enrollment Policies for Seniors and People with Disabilities (Non-MAGI) During the Unwinding | KFF (June 2024)" href: https://www.kff.org/report-section/medicaid-financial-eligibility-for-seniors-and-people-with-disabilities-findings-from-a-50-state-survey-appendix-tables/ - - title: "California DHCS All County Welfare Directors Letter 21-31, Asset Limit Changes for Non-MAGI Medi-Cal (Phase I) #page 2-4" + - title: "California DHCS All County Welfare Directors Letter 21-31, Increases to the Asset Limits for Non-Modified Adjusted Gross Income Medi-Cal Programs #page 2-4" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/21-31.pdf#page=2 - title: "Asset Limit Changes for Non-MAGI Medi-Cal | California DHCS (asset limit reinstated at $130,000 plus $65,000 per additional household member effective January 1, 2026)" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/Pages/Asset-Limit-Changes-for-Non-MAGI-Medi-Cal.aspx diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple_limit_inclusive.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple_limit_inclusive.yaml index 20779980c04..1f91f47ed1d 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple_limit_inclusive.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple_limit_inclusive.yaml @@ -8,7 +8,13 @@ metadata: reference: - title: Missouri Revised Statutes 208.010.2(7) href: https://revisor.mo.gov/main/OneSection.aspx?section=208.010 - - title: California Welfare and Institutions Code 14005.40(c)(5) + - title: Missouri Revised Statutes 208.010.2(4) (version effective October 11, 2013 to August 28, 2016) + href: https://revisor.mo.gov/main/OneSection.aspx?section=208.010&bid=10947 + - title: "Missouri H.B. 1565 (2016), truly agreed and finally passed, section 208.010.2(4) and (7) #page 3-4" + href: https://house.mo.gov/billtracking/bills161/billpdf/truly/HB1565T.PDF#page=3 + - title: "13 Missouri Code of State Regulations 40-2.030(12) (11/30/15 edition) #page 9-10" + href: https://web.archive.org/web/20170107023023/http://s1.sos.mo.gov/cmsimages/adrules/csr/current/13csr/13c40-2.pdf#page=9 + - title: California Welfare and Institutions Code 14005.40(c)(5) (version operative January 1, 2026; (c)(3) before July 9, 2019) href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=WIC§ionNum=14005.40 - title: Cal. Code Regs. Tit. 22, § 50420(a) - Property Limit href: https://www.law.cornell.edu/regulations/california/22-CCR-50420 @@ -66,7 +72,10 @@ MN: 2015-01-01: false MO: # A married claimant living with a spouse "may own resources not to exceed" - # the couple amount (208.010.2(4) before fiscal year 2018). + # the couple amount: RSMo 208.010.2(4) before August 28, 2016, and + # 208.010.2(7) from fiscal year 2018 (July 1, 2017). In between, + # 13 CSR 40-2.030(12) (11/30/15 edition) made a couple ineligible only when + # resources "exceed[] a value of two thousand dollars". 2015-01-01: true MS: 2015-01-01: false diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual.yaml index 8b0ee61afb5..5f2cd8074a8 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual.yaml @@ -8,7 +8,7 @@ metadata: reference: - title: "Medicaid Eligibility and Enrollment Policies for Seniors and People with Disabilities (Non-MAGI) During the Unwinding | KFF (June 2024)" href: https://www.kff.org/report-section/medicaid-eligibility-and-enrollment-policies-for-seniors-and-people-with-disabilities-non-magi-during-the-unwinding-appendix/ - - title: "California DHCS All County Welfare Directors Letter 21-31, Asset Limit Changes for Non-MAGI Medi-Cal (Phase I) #page 2-4" + - title: "California DHCS All County Welfare Directors Letter 21-31, Increases to the Asset Limits for Non-Modified Adjusted Gross Income Medi-Cal Programs #page 2-4" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/21-31.pdf#page=2 - title: "Asset Limit Changes for Non-MAGI Medi-Cal | California DHCS (asset limit reinstated at $130,000 for an individual effective January 1, 2026)" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/Pages/Asset-Limit-Changes-for-Non-MAGI-Medi-Cal.aspx diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual_limit_inclusive.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual_limit_inclusive.yaml index e90e1e92916..7d336aa88e1 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual_limit_inclusive.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual_limit_inclusive.yaml @@ -6,7 +6,15 @@ metadata: breakdown: - state_code reference: - - title: California Welfare and Institutions Code 14005.40(c)(5) + - title: Missouri Revised Statutes 208.010.2(7) + href: https://revisor.mo.gov/main/OneSection.aspx?section=208.010 + - title: Missouri Revised Statutes 208.010.2(4) (version effective October 11, 2013 to August 28, 2016) + href: https://revisor.mo.gov/main/OneSection.aspx?section=208.010&bid=10947 + - title: "Missouri H.B. 1565 (2016), truly agreed and finally passed, section 208.010.2(4) and (7) #page 3-4" + href: https://house.mo.gov/billtracking/bills161/billpdf/truly/HB1565T.PDF#page=3 + - title: "13 Missouri Code of State Regulations 40-2.030(12) (11/30/15 edition) #page 9-10" + href: https://web.archive.org/web/20170107023023/http://s1.sos.mo.gov/cmsimages/adrules/csr/current/13csr/13c40-2.pdf#page=9 + - title: California Welfare and Institutions Code 14005.40(c)(5) (version operative January 1, 2026; (c)(3) before July 9, 2019) href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=WIC§ionNum=14005.40 - title: Cal. Code Regs. Tit. 22, § 50420(a) - Property Limit href: https://www.law.cornell.edu/regulations/california/22-CCR-50420 @@ -63,7 +71,14 @@ MI: MN: 2015-01-01: false MO: - 2015-01-01: false + # Before fiscal year 2018, a single claimant with resources of 1,000 "or + # more" is ineligible: RSMo 208.010.2(4) before August 28, 2016, and + # 13 CSR 40-2.030(12) (11/30/15 edition) until June 30, 2017. + 2015-01-01: false + # From fiscal year 2018 (July 1, 2017), a claimant "owns or possesses + # resources not to exceed" the individual amount (RSMo 208.010.2(7)). + # Annual calculations read January 1, so this value first applies in 2018. + 2017-07-01: true MS: 2015-01-01: false MT: diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/additional_disregard/couple.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/additional_disregard/couple.yaml index d982b0e1557..b8dfc367f69 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/additional_disregard/couple.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/additional_disregard/couple.yaml @@ -6,6 +6,8 @@ metadata: breakdown: - state_code reference: + - title: California Welfare and Institutions Code 14005.40(c)(2)(A) + href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=WIC§ionNum=14005.40 - title: "California DHCS All County Welfare Directors Letter 00-57, Aged and Disabled Federal Poverty Level program, MC 176 financial eligibility form, line 16 #page 1,3" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/c00-57.pdf#page=1 - title: California DHCS All County Welfare Directors Letter 20-24, Aged and Disabled Federal Poverty Level program diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/additional_disregard/individual.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/additional_disregard/individual.yaml index bdfed994ae5..745b4dcc0ad 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/additional_disregard/individual.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/additional_disregard/individual.yaml @@ -6,6 +6,8 @@ metadata: breakdown: - state_code reference: + - title: California Welfare and Institutions Code 14005.40(c)(2)(A) + href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=WIC§ionNum=14005.40 - title: "California DHCS All County Welfare Directors Letter 00-57, Aged and Disabled Federal Poverty Level program, MC 176 financial eligibility form, line 16 #page 1,3" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/c00-57.pdf#page=1 - title: California DHCS All County Welfare Directors Letter 20-24, Aged and Disabled Federal Poverty Level program diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/couple.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/couple.yaml index d992fc2380b..e7b76a0f663 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/couple.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/couple.yaml @@ -30,6 +30,8 @@ metadata: href: https://scdhhs.gov/sites/dhhs/files/documents/stateplan/Attachment_2.6-A.pdf#page=70 - title: Minnesota Statutes 256B.056, subdivision 1b - Aged, blind, and disabled income methodology href: https://www.revisor.mn.gov/statutes/cite/256B.056#stat.256B.056.1b + - title: Minnesota DHS Health Care Programs Eligibility Policy Manual 2.3.3.3.2.2, MA-ABD Disregards and Deductions + href: https://hcopub.dhs.state.mn.us/epm/2_3_3_3_2_2.htm AL: 2015-01-01: 20 diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/individual.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/individual.yaml index 160fd2ea76d..39ff218f6a5 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/individual.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregard/individual.yaml @@ -30,6 +30,8 @@ metadata: href: https://scdhhs.gov/sites/dhhs/files/documents/stateplan/Attachment_2.6-A.pdf#page=70 - title: Minnesota Statutes 256B.056, subdivision 1b - Aged, blind, and disabled income methodology href: https://www.revisor.mn.gov/statutes/cite/256B.056#stat.256B.056.1b + - title: Minnesota DHS Health Care Programs Eligibility Policy Manual 2.3.3.3.2.2, MA-ABD Disregards and Deductions + href: https://hcopub.dhs.state.mn.us/epm/2_3_3_3_2_2.htm AL: 2015-01-01: 20 diff --git a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregards_medicare_part_b_premium.yaml b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregards_medicare_part_b_premium.yaml index 13d42e87e76..890542eda67 100644 --- a/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregards_medicare_part_b_premium.yaml +++ b/policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/income/disregards_medicare_part_b_premium.yaml @@ -6,6 +6,8 @@ metadata: breakdown: - state_code reference: + - title: California Welfare and Institutions Code 14005.401(a) + href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=WIC§ionNum=14005.401 - title: "California DHCS All County Welfare Directors Letter 20-18, Medicare Part B premium disregard #page 1-2" href: https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/20-18.pdf#page=1 - title: "California DHCS All County Welfare Directors Letter 20-24, Aged and Disabled Federal Poverty Level program #page 3-8" 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 8838c37176c..9324bba79fa 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 @@ -356,7 +356,8 @@ ssi_countable_resources: 1_500 state_code: MO output: - # 13 CSR 40-8.020(4)(A): 1,000 before July 1, 2017. 1,500 is over it. + # 13 CSR 40-2.030(12) (11/30/15 edition): 1,000 "or more" before + # July 1, 2017. 1,500 is over it. is_optional_senior_or_disabled_asset_eligible: false - name: Missouri couple at the July 2017 couple resource limit is eligible in 2018. @@ -553,3 +554,139 @@ output: # ACWDL 21-31: 130,000 from July 1, 2022, read in 2023; 130,000 is at it. is_optional_senior_or_disabled_asset_eligible: true + +- name: Missouri individual at the 1,000-dollar limit is ineligible in 2017. + period: 2017 + input: + age: 70 + ssi_countable_resources: 1_000 + state_code: MO + output: + # 13 CSR 40-2.030(12) (11/30/15 edition): resources of 1,000 "or more" + # make a single person ineligible before July 1, 2017. + is_optional_senior_or_disabled_asset_eligible: false + +- name: Missouri couple at the 2,000-dollar couple limit is eligible in 2017. + period: 2017 + input: + people: + person1: + age: 70 + ssi_countable_resources: 1_000 + person2: + age: 68 + ssi_countable_resources: 1_000 + marital_units: + marital_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MO + output: + # 13 CSR 40-2.030(12) (11/30/15 edition): a couple is ineligible only when + # resources "exceed[] a value of two thousand dollars". + is_optional_senior_or_disabled_asset_eligible: [true, true] + +- name: Missouri individual at the July 2017 individual resource limit is eligible in 2018. + period: 2018 + input: + age: 70 + ssi_countable_resources: 2_000 + state_code: MO + output: + # RSMo 208.010.2(7), from fiscal year 2018: resources "not to exceed" + # 2,000. + is_optional_senior_or_disabled_asset_eligible: true + +- name: Missouri individual at the 2026 individual resource limit is eligible. + period: 2026 + input: + age: 70 + ssi_countable_resources: 6_068.8 + state_code: MO + output: + # RSMo 208.010.2(7): resources "not to exceed" the individual amount. + is_optional_senior_or_disabled_asset_eligible: true + +- name: Missouri individual one cent over the 2026 individual resource limit is ineligible. + period: 2026 + input: + age: 70 + ssi_countable_resources: 6_068.81 + state_code: MO + output: + is_optional_senior_or_disabled_asset_eligible: false + +- name: Missouri couple whose split resources sum to the 2026 couple limit is eligible. + period: 2026 + input: + people: + person1: + age: 70 + ssi_countable_resources: 5_000.1 + person2: + age: 68 + ssi_countable_resources: 7_137.45 + tax_units: + tax_unit: + members: [person1, person2] + tax_unit_is_joint: true + marital_units: + marital_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MO + output: + # 5,000.10 + 7,137.45 = 12,137.55, the couple limit; RSMo 208.010.2(7) + # "not to exceed". The inputs are stored as float32, and their sum is + # 12,137.5503, so only the whole-cent rounding keeps the couple eligible. + is_optional_senior_or_disabled_asset_eligible: [true, true] + +- name: California applicant at the 2,000-dollar individual resource limit is eligible in 2019. + period: 2019 + input: + age: 70 + ssi_countable_resources: 2_000 + state_code: CA + output: + # 22 CCR 50420(a): the property reserve "shall not exceed" 2,000. + is_optional_senior_or_disabled_asset_eligible: true + +- name: California couple at the 3,000-dollar couple resource limit is eligible in 2019. + period: 2019 + input: + people: + person1: + age: 70 + ssi_countable_resources: 1_500 + person2: + age: 68 + ssi_countable_resources: 1_500 + tax_units: + tax_unit: + members: [person1, person2] + tax_unit_is_joint: true + marital_units: + marital_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: CA + output: + # 22 CCR 50420(a): 3,000 combined equals the two-person limit. + is_optional_senior_or_disabled_asset_eligible: [true, true] + +- name: California applicant one cent over the 2,000-dollar individual resource limit is ineligible in 2022. + period: 2022 + input: + age: 70 + ssi_countable_resources: 2_000.01 + state_code: CA + output: + # Annual calculations read January 1, so 2022 uses the 2,000 limit; the + # 130,000 limit of July 1, 2022 (ACWDL 21-31) first applies in 2023. + is_optional_senior_or_disabled_asset_eligible: false diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_income_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_income_eligible.yaml index 1706e9fea49..3a62b73d763 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_income_eligible.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_income_eligible.yaml @@ -738,3 +738,24 @@ output: # 1,331 a month exceeds 1,330. A $20 deduction would have given 1,311. is_optional_senior_or_disabled_income_eligible: false + +- name: California applicant who pays IRMAA is income eligible once the full Part B premium is disregarded in 2026. + period: 2026 + input: + people: + person1: + age: 70 + medicare_enrolled: true + social_security_retirement: 25_200 + tax_units: + tax_unit: + members: [person1] + medicare_irmaa_magi: 150_000 + households: + household: + members: [person1] + state_code: CA + output: + # 2,100 - 20 - 405.80 = 1,674.20 a month, under 138% FPL (1,835.40). + # With only the 202.90 base premium, 1,877.10 is over the limit. + is_optional_senior_or_disabled_income_eligible: true diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.yaml index 0da2b6f7602..27519017286 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.yaml @@ -516,3 +516,183 @@ # The SSI $65 and one-half earned income exclusions still apply: # (1,000 - 65) / 2 x 12 = 5,610. With the $20 it would be 5,490. medicaid_optional_senior_or_disabled_countable_income: 5_610 + +- name: California deducts the full Part B premium, IRMAA included, that the person pays in 2026. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 70 + medicare_enrolled: true + social_security_retirement: 22_200 + health_insurance_premiums_without_medicare_part_b: 1_200 + tax_units: + tax_unit: + members: [person1] + medicare_irmaa_magi: 150_000 + households: + household: + members: [person1] + state_code: CA + output: + # Part B is 202.90 base plus 202.90 IRMAA a month (42 USC 1395r(i)). + # ACWDL 20-18 p2 disregards "the amount of the individual's Medicare + # Part B premium": (1,850 - 20 - 100 - 405.80) x 12 = 15,890.40. + medicare_part_b_premium: 4_869.6 + medicaid_optional_senior_or_disabled_countable_income: 15_890.4 + +- name: California disregards the full Part B premium when an MSP pays the base and the person pays the IRMAA in 2026. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 70 + medicare_enrolled: true + social_security_retirement: 14_400 + tax_units: + tax_unit: + members: [person1] + medicare_irmaa_magi: 150_000 + households: + household: + members: [person1] + state_code: CA + output: + # The MSP pays the 202.90 base; the person pays the 202.90 IRMAA. + # The disregard applies "regardless of the state's payment" (ACWDL 20-18 + # p2): (1,200 - 20 - 405.80) x 12 = 9,290.40. + msp_part_b_premium_coverage: 2_434.8 + medicare_part_b_premium: 2_434.8 + medicaid_optional_senior_or_disabled_countable_income: 9_290.4 + +- name: California deducted a Part B premium that the person paid before 12/2020. + period: 2019 + absolute_error_margin: 0.01 + input: + age: 70 + medicare_enrolled: true + social_security_retirement: 17_400 + medicare_part_b_premium: 1_626 + health_insurance_premiums_without_medicare_part_b: 1_200 + state_code: CA + output: + # 22 CCR 50555.2(c) and MC 176 line 17: Part B counts in the months that + # the person pays it (135.50 a month in 2019). The person's income is over + # the QI limit, so no Medicare Savings Program pays it. + # (1,450 - 20 - 230 - 100 - 135.50) x 12 = 11,574, under the 12,490 limit. + # Without the Part B deduction, 13,200 would be over it. + medicaid_optional_senior_or_disabled_countable_income: 11_574 + +- name: California gives an applicant whose spouse is not aged or disabled the 230-dollar individual disregard in 2019. + period: 2019 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 70 + is_tax_unit_head: true + medicare_enrolled: false + ssi_unearned_income: 15_000 + person2: + age: 50 + is_tax_unit_spouse: true + ssi_earned_income: 6_000 + marital_units: + marital_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: CA + output: + # The spouse is not aged or disabled, so the applicant is a qualified + # individual, not part of a qualified couple (ACWDL 00-57 p1; MC 176 + # line 16): 230, not 310. The spouse's 500 a month is over the 2019 + # deeming threshold (1,157 - 771 = 386), so it counts. + # MC 176 lines 8-16: (1,250 - 20) + (500 - 65) / 2 = 1,447.50; less 230 + # = 1,217.50 a month. Lines 19 and 21 (the spouse's MNL, the 1-person + # FPL) are not modeled, so this case asserts no eligibility. + ssi_couple_computation_applies: [false, false] + medicaid_optional_senior_or_disabled_income_deemed_from_ineligible_spouse: [2_610, 0] + medicaid_optional_senior_or_disabled_countable_income: [14_610, 0] + +- name: Minnesota applies no 20-dollar disregard to a couple. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 70 + is_tax_unit_head: true + ssi_unearned_income: 15_600 + person2: + age: 68 + is_tax_unit_spouse: true + ssi_unearned_income: 7_800 + marital_units: + marital_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: MN + output: + ssi_couple_computation_applies: [true, true] + # Minn. Stat. 256B.056, subd. 1b: 1,950 x 12 / 2 = 11,700 each. + # A 20-dollar couple disregard would give 11,580. + medicaid_optional_senior_or_disabled_countable_income: [11_700, 11_700] + +- name: California couple countable income does not go below zero when premiums exceed income. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 70 + is_tax_unit_head: true + medicare_enrolled: true + ssi_unearned_income: 1_200 + person2: + age: 68 + is_tax_unit_spouse: true + medicare_enrolled: true + marital_units: + marital_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: CA + output: + ssi_couple_computation_applies: [true, true] + # (100 - 20) x 12 = 960, less 2 x 2,434.80 Part B, floored at 0. + medicaid_optional_senior_or_disabled_countable_income: [0, 0] + +- name: California applicant in ACWDL 20-24 Example 5 is not income eligible. + period: 2026 + input: + people: + person1: + age: 70 + is_tax_unit_head: true + medicare_enrolled: true + ssi_unearned_income: 18_000 + person2: + age: 60 + is_tax_unit_spouse: true + ssi_unearned_income: 12_000 + employment_income: 8_400 + health_insurance_premiums_without_medicare_part_b: 1_200 + marital_units: + marital_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: CA + output: + # Monthly countable income of 2,594.60 is over the limit, which is the + # letter's result. + is_optional_senior_or_disabled_income_eligible: [false, false] 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 aa0a6823964..81c18aa24e0 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 @@ -43,9 +43,10 @@ def formula(person, period, parameters): # The MSP resource standard (42 USC 1396d(p)(1)(C)) and the AR, OK # and SC rules allow resources equal to the limit. within_msp_limit = assets <= msp_limit - # RSMo 208.010.2(7): a married couple "may own resources not to - # exceed" the couple amount. California resources may not exceed the - # limit (22 CCR 50420(a); WIC 14005.40(c)(5)). + # RSMo 208.010.2(7): a Missouri claimant "owns or possesses resources + # not to exceed" the individual amount, and a married couple "may own + # 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, p.assets.limit.couple_limit_inclusive[state], diff --git a/policyengine_us/variables/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.py b/policyengine_us/variables/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.py index 9a34c826896..3bf485dfcba 100644 --- a/policyengine_us/variables/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.py +++ b/policyengine_us/variables/gov/hhs/medicaid/income/medicaid_optional_senior_or_disabled_countable_income.py @@ -23,6 +23,7 @@ class medicaid_optional_senior_or_disabled_countable_income(Variable): "https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/20-24.pdf#page=3", "https://www.dhcs.ca.gov/services/medi-cal/eligibility/letters/Documents/20-18.pdf#page=2", "https://www.law.cornell.edu/regulations/california/22-CCR-50555.2", + "https://www.law.cornell.edu/uscode/text/42/1395r#i", "https://www.law.cornell.edu/cfr/text/20/416.1163", ) @@ -68,22 +69,26 @@ def formula(person, period, parameters): # 22 CCR 50555.2 deducts person-paid premiums, Part B only when the # person pays it. From 12/2020 (ACWDL 20-18, 20-24) CA disregards Part B # "regardless of how the premium is paid": swap the person-paid Part B - # in the shared aggregate for the full base premium. + # in the shared aggregate for the individual's full Part B premium, the + # base premium plus any IRMAA (42 USC 1395r(i)), whoever pays it. # NOTE: medicare_enrolled (Part A and/or Part B) stands in for Part B # enrollment, as in medical_expense_health_insurance_premiums. # NOTE: gov.hhs.medicare.part_b.base_premium starts in 2021, so a # person-paid Part B before 2021 reads the 2021 premium. # NOTE: ACWDL 20-24 Example 5 also deducts a non-applicant spouse's # premiums. Spousal income here follows SSI deeming (20 CFR 416.1163), - # so that premium is not modeled. + # so that premium is not modeled, nor is MC 176's maintenance need + # deduction for the spouse (lines 19 and 21; issue 10543). medicare_enrolled = person("medicare_enrolled", period) paid_premiums = person("medical_expense_health_insurance_premiums", period) paid_part_b = person("medicare_part_b_premium", period) * medicare_enrolled - base_part_b = person("base_part_b_premium", period) * medicare_enrolled + full_part_b = ( + person("gross_medicare_part_b_premium", period) * medicare_enrolled + ) disregards_part_b = p.disregards_medicare_part_b_premium[state].astype(bool) own_premiums = where( disregards_part_b, - max_(paid_premiums - paid_part_b, 0) + base_part_b, + max_(paid_premiums - paid_part_b, 0) + full_part_b, paid_premiums, ) premiums = where( diff --git a/source_conflicts/candidates.yaml b/source_conflicts/candidates.yaml index dc12008b8c8..deafc3b0bfe 100644 --- a/source_conflicts/candidates.yaml +++ b/source_conflicts/candidates.yaml @@ -4271,40 +4271,45 @@ 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-couple-resource-limit-boundary +- id: us-mo:mhabd-resource-limit-boundary program: medicaid years: - from: 2015 - type: calendar - question: Is a Missouri aged, blind or disabled couple whose countable resources equal the couple limit eligible, - as the statute's "not to exceed" says, or ineligible, as the rule's "at or in excess of" says? + from: 2018 + type: state-fiscal + question: From fiscal year 2018, is a Missouri aged, blind or disabled claimant or couple whose countable resources + equal the limit eligible, as the statute's "not to exceed" says, or ineligible, as the rule's "at or in excess of" + says? sources: - kind: statute - citation: RSMo 208.010.2(7) (208.010.2(4) before fiscal year 2018) + citation: RSMo 208.010.2(7) url: https://revisor.mo.gov/main/OneSection.aspx?section=208.010 + - kind: statute + citation: RSMo 536.014(2) + url: https://revisor.mo.gov/main/OneSection.aspx?section=536.014 - kind: regulation - citation: 13 CSR 40-8.020(4)(A)1.B and (4)(B) + citation: 13 CSR 40-8.020(4)(B) url: https://www.sos.mo.gov/CMSImages/AdRules/csr/current/13csr/13c40-8.pdf#page=2 readings: - statute: A married couple living together "may own resources not to exceed" the couple amount, so resources - equal to the limit qualify. + statute: A claimant "owns or possesses resources not to exceed" the individual amount and a married couple "may + own resources not to exceed" the couple amount, so resources equal to either limit qualify. other: A household with countable assets "at or in excess of" the limit is ineligible. - example: A 2026 Missouri couple with $12,137.55 of countable resources is eligible under the statute and ineligible - under the rule. + example: In 2026, an individual with $6,068.80 or a couple with $12,137.55 of countable resources is eligible under + the statute and ineligible under the rule. pe_us: follows: statute code: + - policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/individual_limit_inclusive.yaml - policyengine_us/parameters/gov/hhs/medicaid/eligibility/categories/senior_or_disabled/assets/limit/couple_limit_inclusive.yaml - - policyengine_us/variables/gov/hhs/medicaid/eligibility/categories/is_optional_senior_or_disabled_asset_eligible.py prs: - https://github.com/PolicyEngine/policyengine-us/pull/10364 state: ruled - note: 'Ruled 2026-10-27 for the statute by the project lead for these Medicaid fixes; the ruling record is - https://github.com/PolicyEngine/policyengine-us/pull/10364#issuecomment-6451309562. RSMo 208.010.2(7) ("not to - exceed") governs over 13 CSR 40-8.020(4)(B) ("at or in excess of"), and RSMo 536.014 voids a rule in conflict with - state law. PR 10364 already follows the statute for couples (couple_limit_inclusive.yaml, MO true from 2015), so - the model needs no change. Individuals keep the strict test, the agency''s reading of the individual clause. The - register entry and the code marker follow the merge.' + note: Ruled on 2026-10-27 by the project lead for these Medicaid fixes to follow the statute, first for couples + (ruling record https://github.com/PolicyEngine/policyengine-us/pull/10364#issuecomment-6451309562). It was applied + to individuals from fiscal year 2018 on 2026-10-29, when the project lead directed that the round-3 review fixes + be applied (https://github.com/PolicyEngine/policyengine-us/pull/10364#pullrequestreview-5675190584). RSMo + 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:negative-federal-agi-combined-return program: income-tax years: From 7f8a8a1bcff052efe6d9f3eb221482a7369dcfc9 Mon Sep 17 00:00:00 2001 From: Ziming Date: Thu, 29 Oct 2026 13:46:55 -0400 Subject: [PATCH 9/9] Update changelog for Missouri individuals and California IRMAA Co-Authored-By: Claude Opus 5.5 --- changelog.d/medicaid-abd-pathway-values.fixed.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.d/medicaid-abd-pathway-values.fixed.md b/changelog.d/medicaid-abd-pathway-values.fixed.md index 3d053195ac9..32d74e3be39 100644 --- a/changelog.d/medicaid-abd-pathway-values.fixed.md +++ b/changelog.d/medicaid-abd-pathway-values.fixed.md @@ -1 +1 @@ -Updated Medicaid's aged, blind and disabled pathway: California's $20 deduction followed by the $230/$310 disregard before December 2020, its health insurance premium deduction, and its Medicare Part B premium disregard from December 2020; Connecticut's 2026 disregard; South Carolina's $50 disregard; no SSI $20 disregard in Minnesota (Minn. Stat. 256B.056, subd. 1b); Missouri's 2015-2026 asset limits with July 1 updates, with a couple's resources equal to the couple limit qualifying under RSMo 208.010.2(7); California's resources equal to the limit qualifying, with the $130,000 / $195,000 limit from July 2022; and asset limits equal to the Medicare Savings Program resource limit in Arkansas, Oklahoma and South Carolina, where resources equal to the limit qualify. +Updated Medicaid's aged, blind and disabled pathway: California's $20 deduction followed by the $230/$310 disregard before December 2020, its health insurance premium deduction, and its full Medicare Part B premium disregard, income-related amount included, from December 2020; Connecticut's 2026 disregard; South Carolina's $50 disregard; no SSI $20 disregard in Minnesota (Minn. Stat. 256B.056, subd. 1b); Missouri's 2015-2026 asset limits with July 1 updates, with a couple's resources equal to the couple limit qualifying, and from fiscal year 2018 an individual's resources equal to the individual limit, under RSMo 208.010.2(7); California's resources equal to the limit qualifying, with the $130,000 / $195,000 limit from July 2022; and asset limits equal to the Medicare Savings Program resource limit in Arkansas, Oklahoma and South Carolina, where resources equal to the limit qualify.