Skip to content

Fix CHIP FCEP immigration and entity handling #8530

@daphnehanse11

Description

@daphnehanse11

Problem

PolicyEngine-US currently models CHIP FCEP as a pregnant-person eligibility category and applies an immigration-status screen to the pregnant person. That appears inconsistent with the federal FCEP / unborn-child CHIP option.

CMS describes the From-Conception-to-End-of-Pregnancy (FCEP) option as CHIP coverage for targeted low-income children from conception to end of pregnancy, and says states can provide prenatal care and pregnancy-related benefits "regardless of their parent's citizenship or immigration status":

https://www.medicaid.gov/chip/chip-eligibility-enrollment

42 CFR 457.10 also defines "child" for CHIP purposes as an individual under age 19, including the period from conception to birth:

https://www.law.cornell.edu/cfr/text/42/457.10

This is distinct from #8521, which concerns Alabama county/geographic limits for FCEP. This issue is about the entity and immigration treatment.

Evidence in the code

policyengine_us/variables/gov/hhs/chip/is_chip_fcep_eligible_person.py:

  • labels the variable "Pregnant person eligible for CHIP through FCEP"
  • documents FCEP as the "Family Coverage Extension Program"
  • requires is_pregnant
  • checks the pregnant person's immigration_status
  • excludes UNDOCUMENTED people with immigration_eligible = ~undocumented
istatus = person("immigration_status", period)
undocumented = istatus == istatus.possible_values.UNDOCUMENTED
immigration_eligible = ~undocumented

return (
    is_pregnant
    & state_has_fcep
    & immigration_eligible
    & ~medicaid_eligible
    & income_eligible
)

policyengine_us/variables/gov/hhs/chip/chip_category.py also represents the category as PREGNANT_FCEP, and generic is_chip_eligible then feeds into ACA eligibility blocking through policyengine_us/variables/gov/aca/eligibility/pays_aca_premium.py.

Reproduction

Same Alabama 2026 pregnant household, around 194% FPL, not Medicaid eligible. The only difference is immigration status.

from policyengine_us import Simulation

for status in ["CITIZEN", "UNDOCUMENTED"]:
    situation = {
        "people": {
            "p": {
                "age": {"2026": 25},
                "employment_income": {"2026": 42_000},
                "is_tax_unit_head": {"2026": True},
                "is_pregnant": {"2026": True},
                "immigration_status": {"2026": status},
            }
        },
        "tax_units": {"tu": {"members": ["p"]}},
        "families": {"f": {"members": ["p"]}},
        "spm_units": {"spm": {"members": ["p"]}},
        "marital_units": {"mu": {"members": ["p"]}},
        "households": {"h": {"members": ["p"], "state_name": {"2026": "AL"}}},
    }
    sim = Simulation(situation=situation)
    print(status)
    print("medicaid_income_level", sim.calculate("medicaid_income_level", 2026))
    print("is_medicaid_eligible", sim.calculate("is_medicaid_eligible", 2026))
    print("is_chip_fcep_eligible_person", sim.calculate("is_chip_fcep_eligible_person", 2026))
    print("chip_category", sim.calculate("chip_category", 2026))
    print("is_chip_eligible", sim.calculate("is_chip_eligible", 2026))

Current output:

CITIZEN
medicaid_income_level [1.9408503]
is_medicaid_eligible [False]
is_chip_fcep_eligible_person [ True]
chip_category ['PREGNANT_FCEP']
is_chip_eligible [ True]

UNDOCUMENTED
medicaid_income_level [1.9408503]
is_medicaid_eligible [False]
is_chip_fcep_eligible_person [False]
chip_category ['NONE']
is_chip_eligible [False]

Expected behavior

For states with an active FCEP income limit, FCEP eligibility should not be denied solely because the pregnant parent is undocumented. The non-financial test should follow CMS's FCEP framing:

  • pregnant woman is uninsured
  • pregnant woman is ineligible for other Medicaid/CHIP coverage
  • pregnant woman is a state resident
  • household income is at or below the state's FCEP standard
  • any additional state-specific FCEP criteria

But the parent's immigration status should not be a disqualifier for the FCEP unborn-child option.

Possible implementation approach

  • Rename/clean up FCEP labels and documentation from "Family Coverage Extension Program" to "From-Conception-to-End-of-Pregnancy".
  • Remove the pregnant person's immigration-status exclusion from the FCEP formula.
  • Consider whether the FCEP variable/category should be renamed away from *_person / PREGNANT_FCEP, or at least document that it is a proxy for unborn-child CHIP coverage because the model has no unborn-child entity.
  • Re-check the ACA interaction: current is_chip_eligible can make FCEP block ACA marketplace eligibility for the pregnant person as though she herself has full CHIP coverage. If FCEP is only unborn-child / pregnancy-related coverage, this may need separate handling from ordinary child CHIP.
  • Add regression tests for at least one FCEP state showing that undocumented-parent and citizen-parent cases with otherwise identical facts get the same FCEP result.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions