Implement Iowa State Supplementary Payment (SSP)#8017
Draft
hua7450 wants to merge 6 commits intoPolicyEngine:mainfrom
Draft
Implement Iowa State Supplementary Payment (SSP)#8017hua7450 wants to merge 6 commits intoPolicyEngine:mainfrom
hua7450 wants to merge 6 commits intoPolicyEngine:mainfrom
Conversation
Adds Iowa SSA (Iowa Code Ch 249; IAC 441 Chs 50-52, 54, 177) covering: - Blind supplement (flat $22/month) - Dependent Person (DP) supplement (5 household configurations) - Family-Life Home (FLH) supplement (max $142/month) - In-Home Health-Related Care (IHHRC) supplement (cost-based, max $480.55/$961.10) - Residential Care Facility (RCF) supplement (cost-related per diem) - Supplement for Medicare and Medicaid Eligibles (SMME) (flat $1/month) Closes PolicyEngine#7733
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #8017 +/- ##
==========================================
+ Coverage 91.75% 98.11% +6.36%
==========================================
Files 42 23 -19
Lines 837 319 -518
Branches 22 2 -20
==========================================
- Hits 768 313 -455
+ Misses 67 6 -61
+ Partials 2 0 -2
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
- Verified $3,031 DP BLIND_WITH_AGED configuration against Iowa HHS; replaced typo comment with verification note - Fixed 4 broken PDF page anchors (blind.yaml, SMME + DP docstrings) - Added formulas to ia_ssa_has_full_medicaid / ia_ssa_has_medicare_part_b delegating to federal medicaid_enrolled / medicare_enrolled, making SMME reachable in microsim - Added IAC 441-177.4(1)(c) own-home eligibility check to IHHRC category - Extracted ia_ssa_ihhrc_both_need_care variable; removed hard-coded 2 duplicated in two files - Reworked 5 non-functional ineligible tests to exercise ia_ssa_resources_eligible via ssi_countable_resources - Added ia_ssa_resources_eligible.yaml with boundary coverage (single/couple x below/at/above) - Added couple IHHRC test cases (at cap, above cap, one-spouse fallback) - Expanded category priority from 4 to 11 cases (IHHRC/DP/BLIND/SMME pairings) - Locked in blind combinability: blind RCF resident -> $0 blind supplement - Documented IAC 441-52.1(4) mutual exclusivity in ia_ssa_blind_supplement docstring - Consolidated test files to one-per-variable: merged integration_* and test_2025_to_2026_transition cases into variable-specific files with ssi + ia_ssa outputs side-by-side Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The prior formulas used `max(0, -uncapped_ssi) + ssi` as a proxy for total monthly income. That expression equals `|FBR − countable_income|`, not actual income, which caused material errors: - RCF eligibility and client participation understated income for anyone with outside income below the FBR, overpaying the supplement by hundreds and classifying high-income residents as eligible. - IHHRC cap (IAC 441—177.4(1)(f)) was compared against excess-over-FBR instead of monthly countable income, letting recipients with countable income far above the $480.55 cap qualify whenever they were below the FBR. - DP and FLH phase-out (federally-administered per POMS SI 01415.050.F) did not use the federal SSP formula, paying the full cap in income bands where the supplement should phase down dollar-for-dollar. Fixes: - RCF and IHHRC (state-administered) use monthly SSI countable income + federal SSI payment as total income, matching IAC 441—52.1 rules. - DP and FLH (federally-administered) use `max(0, total_standard − max(countable, FBR))`, matching POMS SSP rules. - Delete unused flh.personal_needs_allowance parameter (dead code — FLH assistance standard is a lumped sum that already includes the allowance). - Add regression tests for each bug. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements Iowa's State Supplementary Assistance (SSA) — a state SSI supplement program administered by Iowa Department of Health and Human Services (HHS) under Iowa Code Chapter 249. SSA provides six modeled supplement categories (Blind, Dependent Person, Family-Life Home, In-Home Health-Related Care, Residential Care Facility, and Supplement for Medicare and Medicaid Eligibles) for low-income aged, blind, and disabled Iowans who receive or would receive federal SSI.
Closes #7733
Regulatory Authority
Program Overview
ia_ssa(SSA = State Supplementary Assistance per Iowa Code Ch 249 title; "SSP" is colloquial only).Six Modeled Supplement Categories
Category priority (highest to lowest, enforced in
ia_ssa_category): RCF → IHHRC → FLH → DP → Blind → SMME → NONE.Eligibility
is_ssi_eligibleuncapped_ssidefined_for = StateCode.IAresources/limit(identical limits)Benefit Amounts (Iowa HHS SSA page + 6-B manual)
Blind — IAC 441—52.1(4)
Dependent Person — IAC 441—52.1(2), 6-B manual p.16–26, Iowa HHS 2026 page
Family-Life Home — IAC 441—52.1(1), 6-B manual p.26
In-Home Health-Related Care — IAC 441—177.4(1)(f) (frozen)
Residential Care Facility — IAC 441—52.1(3), IL 2024-12-30
SMME — IAC 441—52.1(7) (frozen)
Couple treatment: DP and FLH use per-couple configurations with both spouses eligible; RCF/IHHRC use per-person cost caps; Blind/SMME use individual flat amounts.
COLA: Annual, effective January 1, per IAC 441—52.1 introductory text and Iowa Code §249.9A (for RCF PNA, new in 2024). Blind ($22), IHHRC caps ($480.55/$961.10), and SMME ($1) are frozen in IAC rule text (no COLA).
Not Modeled (by design)
uncapped_ssi > 0proxy covers federal SSI disregards; state-specific unmet-medical disregards require inputs not in PolicyEngineFiles
Historical Coverage
Parameters start at 2017-07-01 — the statutory effective date when IAC 441—52.1(3) removed the RCF flat-per-diem option and moved to cost-related-only reimbursement, aligning the entire program implementation with the post-2017 regulatory regime.
The 2017-07-01 entry uses the earliest-verified Iowa HHS rates (the 2024-published values preserved in the 6-B manual and Wayback snapshots). PolicyEngine date-carry applies these values to 2017-2023 simulations. Updates are added at 2025-01-01 and 2026-01-01 where rates change. This approach follows agent-lessons guidance against encoding unverified historical values.
2012-2016 and pre-2017 rates are not encoded — Wayback snapshots of the Iowa DHS SSA page return 404 for those years, and SSA stopped publishing state-by-state SSP reports after 2011. Future PRs may backdate if Iowa HHS provides historical records.
2026 DP Value Verification
The 2026 DP configuration (d) "Blind Client + Aged/Disabled Spouse + Dependent Relative" shows $3,031 on the Iowa HHS SSA page — a 53% jump from 2025's $1,975, while all other 2026 DP values reflect a ~2.8% COLA (expected ~$2,031). Verified against Iowa HHS SSA page (https://hhs.iowa.gov/assistance-programs/state-supplementary-assistance): the anomalous value is what Iowa publishes. YAML comment documents the anomaly.
/review-program Critical Fixes Applied
A follow-up commit applied all 13 critical issues surfaced by
/review-program:Parameters & references:
Variables:
ia_ssa_has_full_medicaidandia_ssa_has_medicare_part_bnow delegate to federalmedicaid_enrolled/medicare_enrolled— SMME is reachable in microsim (previously defaulted to False, leaving SMME unreachable). Docstrings document the full-vs-partial Medicaid and Part-A-vs-B gaps for future refinement.in_own_home = ~in_rcf & ~in_flh. IHHRC no longer claims category precedence over FLH for FLH residents.ia_ssa_ihhrc_both_need_carevariable extractsmarital_unit.sum(needs_ihhrc) == 2, deduplicating the hard-coded2fromia_ssa_category.pyandia_ssa_ihhrc_supplement.py.ia_ssa_blind_supplementdocstring documents IAC 441—52.1(4) mutual exclusivity: blind recipient receives $22 only if no higher-priority category applies.Tests:
is_ssi_eligible: false(short-circuiting the logic); now usessi_countable_resources: 5000to exerciseia_ssa_resources_eligible→ia_ssa_eligiblecomposition.ia_ssa_resources_eligible.yamlwith 5 boundary cases (single/couple × below/at/above limit).$961.10couple cap andboth_need_careswitch are now exercised.Test file consolidation:
test_2025_to_2026_transition.yamlremoved (all cases duplicated supplement-file cases).ssi: [x]andia_ssa: [y]side-by-side so the federal-plus-state total is explicit from outputs.Verification TODO
Test plan
social_security/employment_incomeinputs assertingssi+ia_ssaside-by-side, resource-eligibility boundary tests, category priority pairings including own-home rule, 2025→2026 transition boundaries, 2017-07-01 effective-date testKey Citations