PolicyEngine / PolicyEngine/policyengine-us

Implement pre-2022 New Mexico CCAP copayment formula (8.15.2.13.B NMAC)

Open
#8,729 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
162
Forks
212
Avg merge
3d 3h
Merged PRs (30d)
97

Description

## Summary

The New Mexico CCAP implementation (PR #8707, closes #8706) models the family copayment as **$0 for all periods**, because ECECD has waived all copayments since 2022-05-01. The **pre-2022 copayment formula (8.15.2.13.B NMAC)** was deferred and should be implemented in a future PR so that historical (pre-2022-05-01) analysis reflects real copays.

## Current state

- `nm_ccap_copay` returns `0` for all periods. The `copay/waived.yaml` toggle is `false` before 2022-05-01 and `true` after, but the formula has an inert branch (`if p.waived: return 0` / else `return 0`) because the pre-2022 formula is not modeled.
- This is locked in by `nm_ccap_copay.yaml` Case 3 (period `2021-01`), which asserts `$0` in the pre-waiver era.

## What to implement (pre-2022-05-01 periods)

Per 8.15.2.13 NMAC:
- **Base copay (first full-time child)** = (low end of the monthly income bracket on the copay schedule − 200% of annual FPL for the household size) × (low end of the monthly income bracket) × **1.1**.
- ⚠️ The middle "× (low end of bracket)" term is **dimensionally suspect** as written. The annually-published copay schedule (**8.15.2.24 NMAC**) is the operational source of truth — prefer transcribing that schedule over the raw formula.
- **Each additional child**: ½ of the previous child's copay, ranked by hours of care (first child = most hours).
- **Service-unit adjustment** (8.15.2.13.C): FT 100% / PT1 75% / PT2 50% / PT3 25% of the base copay.
- **Waivers**: Priority 5 (at-risk child care) and qualified grandparents / legal guardians pay $0.

## Recommended approach

1. Obtain a historical (pre-2022) published copay schedule under 8.15.2.24 rather than relying on the suspect formula.
2. Gate the formula on the existing `copay/waived.yaml` toggle: when `waived` is `false`, compute the copay; when `true`, return $0 (current behavior).
3. Subtract the copay in `nm_ccap` (the `min(rate, charge) − copay` term already exists; it's just always 0 today).

## Priority

**Low.** Copays are $0 from 2022-05-01 onward and remain $0 under Universal Child Care, so this only affects pre-2022 historical analysis.

## References

- 8.15.2.13.B / .C and 8.15.2.24 NMAC: https://www.srca.nm.gov/parts/title08/08.015.0002.html
- ECECD Co-payments Waived flyer (Effective May 1, 2022): https://www.nmececd.org/wp-content/uploads/2024/09/CCA-Co-payments-waived_rev1l.pdf#page=1
- Implemented in: #8707 (deferred item)

Contributor guide

Open the contributing guide

Research direction

Start with nm_ccap_copay and the copay/waived.yaml toggle, then inspect nm_ccap_copay.yaml Case 3 and the existing nm_ccap subtraction path. Obtain a historical 8.15.2.24 copay schedule rather than relying on the suspect formula, and use the cited 8.15.2.13.B/.C rules to understand the required cases. Done means pre-2022 tests reflect the schedule while waived periods, specified waivers, and current post-2022 behavior remain $0.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.