Skip to content

Route chip_premium through spm_unit_medical_out_of_pocket_expenses#8103

Merged
MaxGhenis merged 1 commit intomainfrom
spm-moop-wrapper
Apr 19, 2026
Merged

Route chip_premium through spm_unit_medical_out_of_pocket_expenses#8103
MaxGhenis merged 1 commit intomainfrom
spm-moop-wrapper

Conversation

@MaxGhenis
Copy link
Copy Markdown
Contributor

Addresses #8100.

Summary

Introduces spm_unit_medical_out_of_pocket_expenses — an SPM-unit-level MOOP variable that combines person-level imputed medical_out_of_pocket_expenses with TaxUnit-level rules-based premium variables (currently just chip_premium from #8086; Marketplace / Medicare Part B / Medicaid-expansion premiums will slot in as #8095 and #8102 land).

spm_unit_spm_expenses refactored to read the wrapper rather than listing MOOP and premiums side-by-side.

Why

#8090 added chip_premium as a sibling of medical_out_of_pocket_expenses inside spm_unit_spm_expenses. Functionally correct for SPM net income. Conceptually off — a CHIP premium IS a medical out-of-pocket expense. This PR puts it where it belongs. See #8100 for fuller rationale.

Person-level medical_out_of_pocket_expenses stays untouched, so state medical-expense deductions (AL, AR, HI, MT, NJ, NM, NY, MO, PR) and SNAP excess medical deduction are unaffected.

Testing

  • 2 new tests for the wrapper (TX tax unit owing an enrollment fee, VA tax unit owing nothing)
  • Existing spm_unit_spm_expenses_chip_premium tests pass unchanged
  • 4/4 passing locally, `make format` / `ruff check` clean

Test plan

  • Tests pass locally
  • Format / lint clean
  • CI passes

Introduces a new SPM-unit-level MOOP variable that combines the
person-level imputed `medical_out_of_pocket_expenses` with TaxUnit-level
rules-based premium variables. `chip_premium` (from #8086) is the first
such premium; Marketplace and Medicare Part B (#8095) and Medicaid
expansion premiums (#8102) will slot in here as they land.

`spm_unit_spm_expenses` now reads the wrapper rather than listing the
premium variables individually. This keeps person-level MOOP stable for
existing consumers (SNAP excess medical deduction, state itemized
medical deductions) while SPM resources correctly reflect computed
premium costs.

Addresses #8100.
@MaxGhenis MaxGhenis merged commit e9a4ebf into main Apr 19, 2026
9 of 13 checks passed
@MaxGhenis MaxGhenis deleted the spm-moop-wrapper branch April 19, 2026 20:11
@codecov
Copy link
Copy Markdown

codecov bot commented Apr 19, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (05d5d97) to head (bbc883f).
⚠️ Report is 34 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##              main     #8103    +/-   ##
==========================================
  Coverage   100.00%   100.00%            
==========================================
  Files           18         2    -16     
  Lines          353        19   -334     
  Branches         4         0     -4     
==========================================
- Hits           353        19   -334     
Flag Coverage Δ
unittests 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant