diff --git a/changelog.d/8572.added.md b/changelog.d/8572.added.md new file mode 100644 index 00000000000..bdd8f908c16 --- /dev/null +++ b/changelog.d/8572.added.md @@ -0,0 +1 @@ +Added a seasonal-worker six-month average income pathway for Medicaid community engagement. diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/medicaid_work_requirement_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/medicaid_work_requirement_eligible.yaml index 26fa290a5b3..89b63354d03 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/medicaid_work_requirement_eligible.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/medicaid_work_requirement_eligible.yaml @@ -244,3 +244,39 @@ medicaid_community_engagement_pass_through_eligible: false output: medicaid_work_requirement_eligible: false + +- name: Case 27, seasonal worker with qualifying six-month average income meets the requirement. + period: 2027 + input: + age: 30 + employment_income: 0 + monthly_hours_worked: 0 + is_medicaid_community_engagement_seasonal_worker: true + medicaid_community_engagement_six_month_average_income: 580 + medicaid_community_engagement_pass_through_eligible: false + output: + medicaid_work_requirement_eligible: true + +- name: Case 28, seasonal worker below the six-month average income threshold fails. + period: 2027 + input: + age: 30 + employment_income: 0 + monthly_hours_worked: 0 + is_medicaid_community_engagement_seasonal_worker: true + medicaid_community_engagement_six_month_average_income: 579 + medicaid_community_engagement_pass_through_eligible: false + output: + medicaid_work_requirement_eligible: false + +- name: Case 29, non-seasonal worker does not qualify through six-month average income. + period: 2027 + input: + age: 30 + employment_income: 0 + monthly_hours_worked: 0 + is_medicaid_community_engagement_seasonal_worker: false + medicaid_community_engagement_six_month_average_income: 580 + medicaid_community_engagement_pass_through_eligible: false + output: + medicaid_work_requirement_eligible: false diff --git a/policyengine_us/variables/gov/hhs/medicaid/eligibility/is_medicaid_community_engagement_seasonal_worker.py b/policyengine_us/variables/gov/hhs/medicaid/eligibility/is_medicaid_community_engagement_seasonal_worker.py new file mode 100644 index 00000000000..809edc24e5b --- /dev/null +++ b/policyengine_us/variables/gov/hhs/medicaid/eligibility/is_medicaid_community_engagement_seasonal_worker.py @@ -0,0 +1,13 @@ +from policyengine_us.model_api import * + + +class is_medicaid_community_engagement_seasonal_worker(Variable): + value_type = bool + entity = Person + label = "Seasonal worker for Medicaid community engagement" + definition_period = YEAR + default_value = False + documentation = ( + "Whether the person is a seasonal worker for the Medicaid community " + "engagement six-month average income pathway." + ) diff --git a/policyengine_us/variables/gov/hhs/medicaid/eligibility/medicaid_community_engagement_six_month_average_income.py b/policyengine_us/variables/gov/hhs/medicaid/eligibility/medicaid_community_engagement_six_month_average_income.py new file mode 100644 index 00000000000..fd3be7f7645 --- /dev/null +++ b/policyengine_us/variables/gov/hhs/medicaid/eligibility/medicaid_community_engagement_six_month_average_income.py @@ -0,0 +1,14 @@ +from policyengine_us.model_api import * + + +class medicaid_community_engagement_six_month_average_income(Variable): + value_type = float + entity = Person + label = "Medicaid community engagement preceding six-month average monthly income" + unit = USD + definition_period = YEAR + default_value = 0 + documentation = ( + "Average monthly Medicaid MAGI household income over the preceding six " + "months for the seasonal-worker community engagement pathway." + ) diff --git a/policyengine_us/variables/gov/hhs/medicaid/eligibility/medicaid_work_requirement_eligible.py b/policyengine_us/variables/gov/hhs/medicaid/eligibility/medicaid_work_requirement_eligible.py index b787dcbeaac..6b9cb9bf003 100644 --- a/policyengine_us/variables/gov/hhs/medicaid/eligibility/medicaid_work_requirement_eligible.py +++ b/policyengine_us/variables/gov/hhs/medicaid/eligibility/medicaid_work_requirement_eligible.py @@ -23,6 +23,15 @@ def formula(person, period, parameters): meets_monthly_income = person("earned_income", period) >= ( monthly_income_threshold * MONTHS_IN_YEAR ) + seasonal_worker = person( + "is_medicaid_community_engagement_seasonal_worker", period + ) + six_month_average_income = person( + "medicaid_community_engagement_six_month_average_income", period + ) + meets_seasonal_worker_income = seasonal_worker & ( + six_month_average_income >= monthly_income_threshold + ) # The individual is enrolled in an educational program at least half-time. is_enrolled_at_least_half_time = person( "is_full_time_student", period @@ -94,7 +103,10 @@ def formula(person, period, parameters): | was_recently_incarcerated ) meets_base_requirement = ( - meets_monthly_work_hours | meets_monthly_income | exempted_from_work + meets_monthly_work_hours + | meets_monthly_income + | meets_seasonal_worker_income + | exempted_from_work ) meets_conditions = meets_base_requirement | has_eligible_dependent_child return where(work_required_age, meets_conditions, True)