Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/8257.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Update Medicaid work requirement eligibility to reflect CMS community engagement guidance.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
description: The Department of Health and Human Services limits Medicaid to filers who meet work requirements, if this is true.
description: The Department of Health and Human Services limits Medicaid adult group eligibility to applicable individuals who meet work requirements, if this is true.

values:
0000-01-01: false
Expand All @@ -11,3 +11,5 @@ metadata:
reference:
- title: H.R.1 - One Big Beautiful Bill Act
href: https://www.congress.gov/bill/119th-congress/house-bill/1/text
- title: CMCS Informational Bulletin, Dec. 8, 2025
href: https://www.medicaid.gov/federal-policy-guidance/downloads/cib12082025.pdf
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
description: The Department of Health and Human Services excludes individuals below this age who are in the former foster care Medicaid eligibility group from Medicaid work requirements.

values:
2027-01-01: 26

metadata:
unit: year
label: Medicaid work requirement former foster care age limit
period: year
reference:
- title: H.R.1 - One Big Beautiful Bill Act
href: https://www.congress.gov/bill/119th-congress/house-bill/1/text
- title: CMCS Informational Bulletin, Dec. 8, 2025
href: https://www.medicaid.gov/federal-policy-guidance/downloads/cib12082025.pdf#page=5
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
description: The Department of Health and Human Services limits Medicaid to individuals working more than this number of monthly hours.
description: The Department of Health and Human Services allows applicable individuals to meet Medicaid work requirements by working at least this number of monthly hours.

values:
2027-01-01: 80
Expand All @@ -10,3 +10,5 @@ metadata:
reference:
- title: H.R.1 - One Big Beautiful Bill Act
href: https://www.congress.gov/bill/119th-congress/house-bill/1/text
- title: CMCS Informational Bulletin, Dec. 8, 2025
href: https://www.medicaid.gov/federal-policy-guidance/downloads/cib12082025.pdf#page=5
Original file line number Diff line number Diff line change
Expand Up @@ -170,3 +170,28 @@
output:
medicaid_category: SENIOR_OR_DISABLED
is_medicaid_eligible: true

- name: Case 4, adult group enrollee is ineligible when work requirements apply and are unmet.
period: 2027
input:
medicaid_category: ADULT
immigration_status: CITIZEN
output:
is_medicaid_eligible: false

- name: Case 5, parent category remains eligible when adult group work requirements apply.
period: 2027
input:
medicaid_category: PARENT
immigration_status: CITIZEN
output:
is_medicaid_eligible: true

- name: Case 6, adult group enrollee meets work requirements through the income safe harbor.
period: 2027
input:
medicaid_category: ADULT
immigration_status: CITIZEN
employment_income: 6_960
output:
is_medicaid_eligible: true
Original file line number Diff line number Diff line change
Expand Up @@ -86,3 +86,52 @@
is_tax_unit_dependent: true
output:
medicaid_work_requirement_eligible: [false, true]

- name: Case 10, half-time college student meets the work requirement.
period: 2027
input:
age: 30
is_part_time_college_student: true
output:
medicaid_work_requirement_eligible: true

- name: Case 11, monthly income at the federal minimum wage safe harbor meets the work requirement.
period: 2027
input:
age: 30
employment_income: 6_960
output:
medicaid_work_requirement_eligible: true

- name: Case 12, former foster care youth is excluded from the work requirement.
period: 2027
input:
age: 25
was_in_foster_care: true
output:
medicaid_work_requirement_eligible: true

- name: Case 13, Medicare-eligible adult is excepted from the work requirement.
period: 2027
input:
age: 30
social_security_disability: 1_000
months_receiving_social_security_disability: 24
output:
medicaid_work_requirement_eligible: true

- name: Case 14, incarcerated adult is excluded from the work requirement.
period: 2027
input:
age: 30
is_incarcerated: true
output:
medicaid_work_requirement_eligible: true

- name: Case 15, person with Indian Health Service coverage is excluded from the work requirement.
period: 2027
input:
age: 30
has_indian_health_service_coverage_at_interview: true
output:
medicaid_work_requirement_eligible: true
Original file line number Diff line number Diff line change
Expand Up @@ -21,21 +21,15 @@ def formula(person, period, parameters):
il_hbi_eligible = person("il_hbi_eligible", period)

p = parameters(period).gov.hhs.medicaid.eligibility
federal_medicaid_eligible = categorically_eligible & immigration_status_eligible
if p.work_requirements.applies:
work_requirement_eligible = person(
"medicaid_work_requirement_eligible", period
)
adult_group = category == category.possible_values.ADULT
return (
(
categorically_eligible
& immigration_status_eligible
& work_requirement_eligible
)
federal_medicaid_eligible & (~adult_group | work_requirement_eligible)
| ca_ffyp_eligible
| il_hbi_eligible
)
return (
(categorically_eligible & immigration_status_eligible)
| ca_ffyp_eligible
| il_hbi_eligible
)
return federal_medicaid_eligible | ca_ffyp_eligible | il_hbi_eligible
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,43 @@ class medicaid_work_requirement_eligible(Variable):
entity = Person
label = "Eligible person for Medicaid via work requirement"
definition_period = YEAR
reference = "https://www.congress.gov/bill/119th-congress/house-bill/1/text"
reference = (
"https://www.congress.gov/bill/119th-congress/house-bill/1/text",
"https://www.medicaid.gov/federal-policy-guidance/downloads/cib12082025.pdf",
)

def formula(person, period, parameters):
p = parameters(period).gov.hhs.medicaid.eligibility.work_requirements
# Works no less than 80 hours p.680 (2)(A)
monthly_hours_worked = person("monthly_hours_worked", period)
meets_monthly_work_hours = monthly_hours_worked >= p.monthly_hours_threshold
# The individual is enrolled in an educational program at least half-time. p.680 (2)(D)
is_full_time_student = person("is_full_time_student", period)
# pregnant or postpartum medical assistance p.681 (3)(A)(i)(II)(bb)
is_pregnant = person("is_pregnant", period)
# Monthly income of at least federal minimum wage times 80 hours.
monthly_income_threshold = (
parameters(period).gov.dol.minimum_wage * p.monthly_hours_threshold
)
meets_monthly_income = person("earned_income", period) >= (
monthly_income_threshold * MONTHS_IN_YEAR
)
# The individual is enrolled in an educational program at least half-time.
is_enrolled_at_least_half_time = person(
"is_full_time_student", period
) | person("is_part_time_college_student", period)
# Pregnant or postpartum medical assistance.
is_pregnant_or_postpartum = person("is_pregnant_for_medicaid_nfc", period)
# Has attained age of 19 and is under 65 is require to work p.693 (bb)
age = person("age", period)
work_required_age = p.age_range.calc(age)
# Former foster care Medicaid eligibility group.
was_in_foster_care = person("was_in_foster_care", period)
former_foster_care_youth = was_in_foster_care & (
age < p.former_foster_care_age_limit
)
# American Indian or Alaska Native / IHS eligibility exclusion.
has_ihs_coverage = person(
"has_indian_health_service_coverage_at_interview", period
)
# Entitled to or enrolled in Medicare Part A or B.
medicare_eligible = person("is_medicare_eligible", period)
# parent, guardian, caretaker of a disabled person
is_dependent = person("is_tax_unit_dependent", period)
is_disabled = person("is_disabled", period)
Expand All @@ -34,18 +57,25 @@ def formula(person, period, parameters):
is_blind = person("is_blind", period)
is_incapable_of_self_care = person("is_incapable_of_self_care", period)
eligible_disabled = is_blind | is_disabled | is_incapable_of_self_care
is_incarcerated = person("is_incarcerated", period)
# parent, guardian, caretaker of a dependent child 13 years of age or under p.694 (III)
child_age_eligible = age <= p.dependent_age_limit
has_eligible_dependent_child = person.tax_unit.any(
is_dependent & child_age_eligible
)
exempted_from_work = (
is_full_time_student
| is_pregnant
is_enrolled_at_least_half_time
| is_pregnant_or_postpartum
| former_foster_care_youth
| has_ihs_coverage
| medicare_eligible
| has_disabled
| eligible_veteran
| eligible_disabled
| is_incarcerated
)
meets_base_requirement = (
meets_monthly_work_hours | meets_monthly_income | exempted_from_work
)
meets_base_requirement = meets_monthly_work_hours | exempted_from_work
meets_conditions = meets_base_requirement | has_eligible_dependent_child
return where(work_required_age, meets_conditions, True)
Loading