From 30ebd92ad984574a49948fc32023342e30879c93 Mon Sep 17 00:00:00 2001 From: Daphne Hansell <128793799+daphnehanse11@users.noreply.github.com> Date: Tue, 12 May 2026 14:52:55 -0400 Subject: [PATCH 1/3] Model historical Arkansas Medicaid work requirements --- .../medicaid/work_requirements/age_range.yaml | 33 +++++++++ .../medicaid/work_requirements/applies.yaml | 22 ++++++ .../dependent_age_limit.yaml | 14 ++++ .../work_requirements/income_limit.yaml | 15 +++++ .../monthly_hours_threshold.yaml | 14 ++++ .../eligibility/is_medicaid_eligible.yaml | 36 ++++++++++ ...ar_medicaid_work_requirement_eligible.yaml | 67 +++++++++++++++++++ .../ar_medicaid_work_requirement_subject.yaml | 49 ++++++++++++++ .../eligibility/is_medicaid_eligible.py | 26 ++++--- .../ar_medicaid_work_requirement_eligible.py | 60 +++++++++++++++++ .../ar_medicaid_work_requirement_subject.py | 29 ++++++++ 11 files changed, 354 insertions(+), 11 deletions(-) create mode 100644 policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/age_range.yaml create mode 100644 policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/applies.yaml create mode 100644 policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/dependent_age_limit.yaml create mode 100644 policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/income_limit.yaml create mode 100644 policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/monthly_hours_threshold.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_eligible.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_subject.yaml create mode 100644 policyengine_us/variables/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_eligible.py create mode 100644 policyengine_us/variables/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_subject.py diff --git a/policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/age_range.yaml b/policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/age_range.yaml new file mode 100644 index 00000000000..5beb3f9b077 --- /dev/null +++ b/policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/age_range.yaml @@ -0,0 +1,33 @@ +description: Arkansas requires adults within these age brackets to meet this Medicaid work requirement approximation under the Arkansas Works program. + +metadata: + threshold_unit: year + amount_unit: bool + period: year + type: single_amount + label: Arkansas Medicaid work requirement age threshold + reference: + - title: State Data for Medicaid Work Requirements in Arkansas | KFF + href: https://www.kff.org/medicaid/issue-brief/state-data-for-medicaid-work-requirements-in-arkansas/ + - title: State Annual Report January-December 2018 | Arkansas Works Section 1115 + href: https://www.medicaid.gov/Medicaid-CHIP-Program-Information/By-Topics/Waivers/1115/downloads/ar/Health-Care-Independence-Program-Private-Option/ar-works-annl-rpt-jan-dec-2018.pdf#page=11 + +brackets: + - threshold: + 2018-01-01: 0 + amount: + 2018-01-01: false + - threshold: + 2018-01-01: 30 + amount: + 2018-01-01: true + - threshold: + 2018-01-01: 50 + amount: + 2018-01-01: false + +# Annual approximation note: +# - The 2018 phase-in covered ages 30-49. +# - The 2019 19-29 phase-in is intentionally not modeled here because it was only +# partially rolled out before the court halted enforcement, which would overstate +# annual effects in default yearly data. diff --git a/policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/applies.yaml b/policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/applies.yaml new file mode 100644 index 00000000000..51bc07fe0af --- /dev/null +++ b/policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/applies.yaml @@ -0,0 +1,22 @@ +description: Arkansas limits Medicaid expansion coverage to adults who meet this work requirement approximation under the Arkansas Works program. + +values: + 0000-01-01: false + 2018-01-01: true + 2020-01-01: false + +metadata: + unit: bool + period: year + label: Arkansas Medicaid work requirement applies + reference: + - title: Arkansas Works | Medicaid + href: https://www.medicaid.gov/medicaid/section-1115-demo/demonstration-and-waiver-list/81021 + - title: State Annual Report January-December 2018 | Arkansas Works Section 1115 + href: https://www.medicaid.gov/Medicaid-CHIP-Program-Information/By-Topics/Waivers/1115/downloads/ar/Health-Care-Independence-Program-Private-Option/ar-works-annl-rpt-jan-dec-2018.pdf#page=11 + +# Annual approximation note: +# - The underlying waiver operated monthly starting June 1, 2018 and was set aside +# by a court in March 2019. +# - PolicyEngine's default microdata are annual, so this parameter turns the rule on +# for calendar years 2018 and 2019 and documents the approximation in code/tests. diff --git a/policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/dependent_age_limit.yaml b/policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/dependent_age_limit.yaml new file mode 100644 index 00000000000..c57958ae11a --- /dev/null +++ b/policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/dependent_age_limit.yaml @@ -0,0 +1,14 @@ +description: Arkansas exempts adults caring for a dependent child at or below this age from the Medicaid work requirement approximation under the Arkansas Works program. + +values: + 2018-01-01: 17 + +metadata: + unit: year + period: year + label: Arkansas Medicaid work requirement dependent child age limit + reference: + - title: Arkansas Works Program Updates | Arkansas Code Rule 016.20.18 Ark. Code R. 003 + href: https://www.law.cornell.edu/regulations/arkansas/016-20-18-Ark-Code-R-003 + - title: State Data for Medicaid Work Requirements in Arkansas | KFF + href: https://www.kff.org/medicaid/issue-brief/state-data-for-medicaid-work-requirements-in-arkansas/ diff --git a/policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/income_limit.yaml b/policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/income_limit.yaml new file mode 100644 index 00000000000..493f0f77347 --- /dev/null +++ b/policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/income_limit.yaml @@ -0,0 +1,15 @@ +description: Arkansas limits the Medicaid work requirement approximation to adults below this share of the poverty line under the Arkansas Works program. + +values: + 2018-01-01: 1 + 2019-01-01: 1.38 + +metadata: + unit: /1 + period: year + label: Arkansas Medicaid work requirement income limit + reference: + - title: State Data for Medicaid Work Requirements in Arkansas | KFF + href: https://www.kff.org/medicaid/issue-brief/state-data-for-medicaid-work-requirements-in-arkansas/ + - title: State Annual Report January-December 2018 | Arkansas Works Section 1115 + href: https://www.medicaid.gov/Medicaid-CHIP-Program-Information/By-Topics/Waivers/1115/downloads/ar/Health-Care-Independence-Program-Private-Option/ar-works-annl-rpt-jan-dec-2018.pdf#page=11 diff --git a/policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/monthly_hours_threshold.yaml b/policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/monthly_hours_threshold.yaml new file mode 100644 index 00000000000..92bb62f484e --- /dev/null +++ b/policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/monthly_hours_threshold.yaml @@ -0,0 +1,14 @@ +description: Arkansas limits Medicaid expansion coverage to adults completing more than this number of monthly work or community engagement hours under the Arkansas Works program. + +values: + 2018-01-01: 80 + +metadata: + unit: hour + period: month + label: Arkansas Medicaid work requirement monthly hours threshold + reference: + - title: State Annual Report January-December 2018 | Arkansas Works Section 1115 + href: https://www.medicaid.gov/Medicaid-CHIP-Program-Information/By-Topics/Waivers/1115/downloads/ar/Health-Care-Independence-Program-Private-Option/ar-works-annl-rpt-jan-dec-2018.pdf#page=11 + - title: An Early Look at Implementation of Medicaid Work Requirements in Arkansas | KFF + href: https://www.kff.org/medicaid/issue-brief/an-early-look-at-implementation-of-medicaid-work-requirements-in-arkansas/ diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/is_medicaid_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/is_medicaid_eligible.yaml index 765bfdf2a00..d68ad97b8f6 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/is_medicaid_eligible.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/eligibility/is_medicaid_eligible.yaml @@ -170,3 +170,39 @@ output: medicaid_category: SENIOR_OR_DISABLED is_medicaid_eligible: true + +- name: Case 4, Arkansas 2018 subject adult is ineligible when the historical work requirement approximation is unmet. + period: 2018 + input: + age: 40 + medicaid_category: ADULT + immigration_status: CITIZEN + medicaid_income_level: 0.9 + monthly_hours_worked: 0 + state_code: AR + output: + is_medicaid_eligible: false + +- name: Case 5, Arkansas 2018 adult above 100 percent FPL remains eligible because the annual approximation does not subject that cohort. + period: 2018 + input: + age: 40 + medicaid_category: ADULT + immigration_status: CITIZEN + medicaid_income_level: 1.1 + monthly_hours_worked: 0 + state_code: AR + output: + is_medicaid_eligible: true + +- name: Case 6, Arkansas 2019 adults ages 19 to 29 remain eligible because the brief phase-in is not modeled annually. + period: 2019 + input: + age: 25 + medicaid_category: ADULT + immigration_status: CITIZEN + medicaid_income_level: 0.8 + monthly_hours_worked: 0 + state_code: AR + output: + is_medicaid_eligible: true diff --git a/policyengine_us/tests/policy/baseline/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_eligible.yaml new file mode 100644 index 00000000000..ad01b01365c --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_eligible.yaml @@ -0,0 +1,67 @@ +- name: Case 1, Arkansas 2018 subject adult without hours or exemptions is ineligible under the approximation. + period: 2018 + input: + age: 40 + medicaid_category: ADULT + medicaid_income_level: 0.9 + monthly_hours_worked: 0 + state_code: AR + output: + ar_medicaid_work_requirement_eligible: false + +- name: Case 2, Arkansas 2018 subject adult meeting 80 monthly hours is eligible. + period: 2018 + input: + age: 40 + medicaid_category: ADULT + medicaid_income_level: 0.9 + monthly_hours_worked: 80 + state_code: AR + output: + ar_medicaid_work_requirement_eligible: true + +- name: Case 3, Arkansas 2018 caregiver of a dependent child under 18 is exempt. + period: 2018 + input: + people: + person1: + age: 40 + medicaid_category: ADULT + medicaid_income_level: 0.9 + monthly_hours_worked: 0 + is_tax_unit_head_or_spouse: true + person2: + age: 17 + is_tax_unit_dependent: true + tax_units: + tax_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: AR + output: + ar_medicaid_work_requirement_eligible: [true, true] + +- name: Case 4, Arkansas 2018 subject adult receiving unemployment compensation is exempt. + period: 2018 + input: + age: 40 + medicaid_category: ADULT + medicaid_income_level: 0.9 + monthly_hours_worked: 0 + unemployment_compensation: 1_000 + state_code: AR + output: + ar_medicaid_work_requirement_eligible: true + +- name: Case 5, Arkansas 2019 adults ages 19 to 29 remain eligible because the brief phase-in is not modeled annually. + period: 2019 + input: + age: 25 + medicaid_category: ADULT + medicaid_income_level: 0.8 + monthly_hours_worked: 0 + state_code: AR + output: + ar_medicaid_work_requirement_eligible: true diff --git a/policyengine_us/tests/policy/baseline/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_subject.yaml b/policyengine_us/tests/policy/baseline/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_subject.yaml new file mode 100644 index 00000000000..3047a58eb31 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_subject.yaml @@ -0,0 +1,49 @@ +- name: Case 1, Arkansas 2018 adults ages 30 to 49 below 100 percent FPL are subject. + period: 2018 + input: + age: 40 + medicaid_category: ADULT + medicaid_income_level: 0.9 + state_code: AR + output: + ar_medicaid_work_requirement_subject: true + +- name: Case 2, Arkansas 2018 adults above 100 percent FPL are not subject in the annual approximation. + period: 2018 + input: + age: 40 + medicaid_category: ADULT + medicaid_income_level: 1.1 + state_code: AR + output: + ar_medicaid_work_requirement_subject: false + +- name: Case 3, Arkansas 2019 adults ages 30 to 49 below 138 percent FPL are subject. + period: 2019 + input: + age: 40 + medicaid_category: ADULT + medicaid_income_level: 1.2 + state_code: AR + output: + ar_medicaid_work_requirement_subject: true + +- name: Case 4, Arkansas 2019 adults ages 19 to 29 are excluded from the annual approximation. + period: 2019 + input: + age: 25 + medicaid_category: ADULT + medicaid_income_level: 0.8 + state_code: AR + output: + ar_medicaid_work_requirement_subject: false + +- name: Case 5, Arkansas 2020 adults are not subject after the court halted enforcement. + period: 2020 + input: + age: 40 + medicaid_category: ADULT + medicaid_income_level: 0.8 + state_code: AR + output: + ar_medicaid_work_requirement_subject: false diff --git a/policyengine_us/variables/gov/hhs/medicaid/eligibility/is_medicaid_eligible.py b/policyengine_us/variables/gov/hhs/medicaid/eligibility/is_medicaid_eligible.py index d3ff8be4292..5c344cc7706 100644 --- a/policyengine_us/variables/gov/hhs/medicaid/eligibility/is_medicaid_eligible.py +++ b/policyengine_us/variables/gov/hhs/medicaid/eligibility/is_medicaid_eligible.py @@ -7,35 +7,39 @@ class is_medicaid_eligible(Variable): label = "Eligible for Medicaid" definition_period = YEAR reference = ( - "https://www.law.cornell.edu/uscode/text/42/1396a#a_10" - "https://www.kff.org/racial-equity-and-health-policy/fact-sheet/key-facts-on-health-coverage-of-immigrants" + "https://www.law.cornell.edu/uscode/text/42/1396a#a_10", + "https://www.kff.org/racial-equity-and-health-policy/fact-sheet/key-facts-on-health-coverage-of-immigrants", ) def formula(person, period, parameters): category = person("medicaid_category", period) categorically_eligible = category != category.possible_values.NONE + adult_group = category == category.possible_values.ADULT immigration_status_eligible = person( "is_medicaid_immigration_status_eligible", period ) ca_ffyp_eligible = person("ca_ffyp_eligible", period) il_hbi_eligible = person("il_hbi_eligible", period) + ar_work_requirement_eligible = person( + "ar_medicaid_work_requirement_eligible", period + ) p = parameters(period).gov.hhs.medicaid.eligibility + federal_work_requirement_eligible = True if p.work_requirements.applies: work_requirement_eligible = person( "medicaid_work_requirement_eligible", period ) - return ( - ( - categorically_eligible - & immigration_status_eligible - & work_requirement_eligible - ) - | ca_ffyp_eligible - | il_hbi_eligible + federal_work_requirement_eligible = where( + adult_group, work_requirement_eligible, True ) return ( - (categorically_eligible & immigration_status_eligible) + ( + categorically_eligible + & immigration_status_eligible + & federal_work_requirement_eligible + & ar_work_requirement_eligible + ) | ca_ffyp_eligible | il_hbi_eligible ) diff --git a/policyengine_us/variables/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_eligible.py b/policyengine_us/variables/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_eligible.py new file mode 100644 index 00000000000..6678437e0d4 --- /dev/null +++ b/policyengine_us/variables/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_eligible.py @@ -0,0 +1,60 @@ +from policyengine_us.model_api import * + + +class ar_medicaid_work_requirement_eligible(Variable): + value_type = bool + entity = Person + label = "Eligible under the Arkansas historical Medicaid work requirement approximation" + definition_period = YEAR + reference = ( + "https://www.medicaid.gov/medicaid/section-1115-demo/demonstration-and-waiver-list/81021", + "https://www.kff.org/medicaid/issue-brief/state-data-for-medicaid-work-requirements-in-arkansas/", + "https://www.law.cornell.edu/regulations/arkansas/016-20-18-Ark-Code-R-003", + ) + + def formula(person, period, parameters): + p = parameters(period).gov.states.ar.dhs.medicaid.work_requirements + subject = person("ar_medicaid_work_requirement_subject", period) + + # Arkansas' waiver operated with monthly reporting and three-month lockout + # rules, but the default microdata are annual. This approximation only uses + # the parts of the waiver that are observable in yearly data. Reporting + # compliance, good-cause months, treatment-program participation, and + # other administrative exemptions are therefore left out. + monthly_hours_worked = person("monthly_hours_worked", period) + meets_monthly_work_hours = ( + monthly_hours_worked >= p.monthly_hours_threshold + ) + + age = person("age", period) + is_dependent = person("is_tax_unit_dependent", period) + is_pregnant = person("is_pregnant", period) + is_full_time_student = person("is_full_time_student", period) + is_disabled = person("is_disabled", period) + is_blind = person("is_blind", period) + is_incapable_of_self_care = person("is_incapable_of_self_care", period) + + has_eligible_dependent_child = person.tax_unit.any( + is_dependent & (age <= p.dependent_age_limit) + ) + has_disabled_dependent = person.tax_unit.any( + is_dependent + & (is_disabled | is_blind | is_incapable_of_self_care) + ) + receives_unemployment_compensation = ( + person("unemployment_compensation", period) > 0 + ) + eligible_disabled = ( + is_disabled | is_blind | is_incapable_of_self_care + ) + + observable_exemption = ( + is_pregnant + | is_full_time_student + | eligible_disabled + | has_eligible_dependent_child + | has_disabled_dependent + | receives_unemployment_compensation + ) + + return ~subject | observable_exemption | meets_monthly_work_hours diff --git a/policyengine_us/variables/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_subject.py b/policyengine_us/variables/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_subject.py new file mode 100644 index 00000000000..99f786ed360 --- /dev/null +++ b/policyengine_us/variables/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_subject.py @@ -0,0 +1,29 @@ +from policyengine_us.model_api import * + + +class ar_medicaid_work_requirement_subject(Variable): + value_type = bool + entity = Person + label = "Subject to the Arkansas historical Medicaid work requirement approximation" + definition_period = YEAR + reference = ( + "https://www.medicaid.gov/medicaid/section-1115-demo/demonstration-and-waiver-list/81021", + "https://www.kff.org/medicaid/issue-brief/state-data-for-medicaid-work-requirements-in-arkansas/", + ) + + def formula(person, period, parameters): + p = parameters(period).gov.states.ar.dhs.medicaid.work_requirements + category = person("medicaid_category", period) + adult_group = category == category.possible_values.ADULT + state = person.household("state_code_str", period) + age = person("age", period) + income_level = person("medicaid_income_level", period) + age_subject = p.age_range.calc(age) + income_subject = income_level <= p.income_limit + return ( + (state == "AR") + & p.applies + & adult_group + & age_subject + & income_subject + ) From c2cf7649a3c5a92b0c9a56acf2469101843acbe4 Mon Sep 17 00:00:00 2001 From: Daphne Hansell <128793799+daphnehanse11@users.noreply.github.com> Date: Tue, 12 May 2026 15:22:16 -0400 Subject: [PATCH 2/3] Address review feedback and fix CI - run ruff format on Arkansas Medicaid work-requirement variables - add the missing changelog fragment - tighten the monthly_hours_threshold description (the formula uses >=, so "at least" rather than "more than") - clarify the applies parameter description with the standard "if this is true" suffix Co-Authored-By: Claude Opus 4.7 (1M context) --- ...sue-8272-ar-medicaid-work-requirement.added.md | 1 + .../dhs/medicaid/work_requirements/applies.yaml | 2 +- .../monthly_hours_threshold.yaml | 2 +- .../ar_medicaid_work_requirement_eligible.py | 15 ++++++--------- .../ar_medicaid_work_requirement_subject.py | 8 +------- 5 files changed, 10 insertions(+), 18 deletions(-) create mode 100644 changelog.d/codex-issue-8272-ar-medicaid-work-requirement.added.md diff --git a/changelog.d/codex-issue-8272-ar-medicaid-work-requirement.added.md b/changelog.d/codex-issue-8272-ar-medicaid-work-requirement.added.md new file mode 100644 index 00000000000..0d6bb9f06fe --- /dev/null +++ b/changelog.d/codex-issue-8272-ar-medicaid-work-requirement.added.md @@ -0,0 +1 @@ +Add an annual approximation of the 2018-2019 Arkansas Works Medicaid work requirement. diff --git a/policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/applies.yaml b/policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/applies.yaml index 51bc07fe0af..132a36ab97c 100644 --- a/policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/applies.yaml +++ b/policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/applies.yaml @@ -1,4 +1,4 @@ -description: Arkansas limits Medicaid expansion coverage to adults who meet this work requirement approximation under the Arkansas Works program. +description: Arkansas limits Medicaid expansion coverage to adults who meet a work requirement under the Arkansas Works program, if this is true. values: 0000-01-01: false diff --git a/policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/monthly_hours_threshold.yaml b/policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/monthly_hours_threshold.yaml index 92bb62f484e..99eaa2e63d7 100644 --- a/policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/monthly_hours_threshold.yaml +++ b/policyengine_us/parameters/gov/states/ar/dhs/medicaid/work_requirements/monthly_hours_threshold.yaml @@ -1,4 +1,4 @@ -description: Arkansas limits Medicaid expansion coverage to adults completing more than this number of monthly work or community engagement hours under the Arkansas Works program. +description: Arkansas limits Medicaid expansion coverage to adults completing at least this number of monthly work or community engagement hours under the Arkansas Works program. values: 2018-01-01: 80 diff --git a/policyengine_us/variables/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_eligible.py b/policyengine_us/variables/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_eligible.py index 6678437e0d4..e59a173b5bd 100644 --- a/policyengine_us/variables/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_eligible.py +++ b/policyengine_us/variables/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_eligible.py @@ -4,7 +4,9 @@ class ar_medicaid_work_requirement_eligible(Variable): value_type = bool entity = Person - label = "Eligible under the Arkansas historical Medicaid work requirement approximation" + label = ( + "Eligible under the Arkansas historical Medicaid work requirement approximation" + ) definition_period = YEAR reference = ( "https://www.medicaid.gov/medicaid/section-1115-demo/demonstration-and-waiver-list/81021", @@ -22,9 +24,7 @@ def formula(person, period, parameters): # compliance, good-cause months, treatment-program participation, and # other administrative exemptions are therefore left out. monthly_hours_worked = person("monthly_hours_worked", period) - meets_monthly_work_hours = ( - monthly_hours_worked >= p.monthly_hours_threshold - ) + meets_monthly_work_hours = monthly_hours_worked >= p.monthly_hours_threshold age = person("age", period) is_dependent = person("is_tax_unit_dependent", period) @@ -38,15 +38,12 @@ def formula(person, period, parameters): is_dependent & (age <= p.dependent_age_limit) ) has_disabled_dependent = person.tax_unit.any( - is_dependent - & (is_disabled | is_blind | is_incapable_of_self_care) + is_dependent & (is_disabled | is_blind | is_incapable_of_self_care) ) receives_unemployment_compensation = ( person("unemployment_compensation", period) > 0 ) - eligible_disabled = ( - is_disabled | is_blind | is_incapable_of_self_care - ) + eligible_disabled = is_disabled | is_blind | is_incapable_of_self_care observable_exemption = ( is_pregnant diff --git a/policyengine_us/variables/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_subject.py b/policyengine_us/variables/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_subject.py index 99f786ed360..ad96d8f497e 100644 --- a/policyengine_us/variables/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_subject.py +++ b/policyengine_us/variables/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_subject.py @@ -20,10 +20,4 @@ def formula(person, period, parameters): income_level = person("medicaid_income_level", period) age_subject = p.age_range.calc(age) income_subject = income_level <= p.income_limit - return ( - (state == "AR") - & p.applies - & adult_group - & age_subject - & income_subject - ) + return (state == "AR") & p.applies & adult_group & age_subject & income_subject From 80007a2dfce89ed733e38827e6760c95b66d6668 Mon Sep 17 00:00:00 2001 From: Daphne Hansell <128793799+daphnehanse11@users.noreply.github.com> Date: Tue, 12 May 2026 16:44:19 -0400 Subject: [PATCH 3/3] Restrict Arkansas Medicaid work-requirement variables to Arkansas Use defined_for = StateCode.AR on ar_medicaid_work_requirement_subject and ar_medicaid_work_requirement_eligible so they only compute for Arkansas residents. Drop the inline state == "AR" check from the subject formula (now redundant), and wrap the eligibility variable in is_medicaid_eligible with a where clause so non-AR residents are treated as passing the check rather than getting the bool default of False. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../medicaid/eligibility/is_medicaid_eligible.py | 13 ++++++++++--- .../ar_medicaid_work_requirement_eligible.py | 1 + .../ar_medicaid_work_requirement_subject.py | 4 ++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/policyengine_us/variables/gov/hhs/medicaid/eligibility/is_medicaid_eligible.py b/policyengine_us/variables/gov/hhs/medicaid/eligibility/is_medicaid_eligible.py index 5c344cc7706..dcf85e089b5 100644 --- a/policyengine_us/variables/gov/hhs/medicaid/eligibility/is_medicaid_eligible.py +++ b/policyengine_us/variables/gov/hhs/medicaid/eligibility/is_medicaid_eligible.py @@ -20,9 +20,6 @@ def formula(person, period, parameters): ) ca_ffyp_eligible = person("ca_ffyp_eligible", period) il_hbi_eligible = person("il_hbi_eligible", period) - ar_work_requirement_eligible = person( - "ar_medicaid_work_requirement_eligible", period - ) p = parameters(period).gov.hhs.medicaid.eligibility federal_work_requirement_eligible = True @@ -33,6 +30,16 @@ def formula(person, period, parameters): federal_work_requirement_eligible = where( adult_group, work_requirement_eligible, True ) + + ar_p = parameters(period).gov.states.ar.dhs.medicaid.work_requirements + ar_work_requirement_eligible = True + if ar_p.applies: + state = person.household("state_code_str", period) + ar_work_requirement_eligible = where( + state == "AR", + person("ar_medicaid_work_requirement_eligible", period), + True, + ) return ( ( categorically_eligible diff --git a/policyengine_us/variables/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_eligible.py b/policyengine_us/variables/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_eligible.py index e59a173b5bd..c19d822191b 100644 --- a/policyengine_us/variables/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_eligible.py +++ b/policyengine_us/variables/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_eligible.py @@ -13,6 +13,7 @@ class ar_medicaid_work_requirement_eligible(Variable): "https://www.kff.org/medicaid/issue-brief/state-data-for-medicaid-work-requirements-in-arkansas/", "https://www.law.cornell.edu/regulations/arkansas/016-20-18-Ark-Code-R-003", ) + defined_for = StateCode.AR def formula(person, period, parameters): p = parameters(period).gov.states.ar.dhs.medicaid.work_requirements diff --git a/policyengine_us/variables/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_subject.py b/policyengine_us/variables/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_subject.py index ad96d8f497e..829c70197a4 100644 --- a/policyengine_us/variables/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_subject.py +++ b/policyengine_us/variables/gov/states/ar/dhs/medicaid/eligibility/ar_medicaid_work_requirement_subject.py @@ -10,14 +10,14 @@ class ar_medicaid_work_requirement_subject(Variable): "https://www.medicaid.gov/medicaid/section-1115-demo/demonstration-and-waiver-list/81021", "https://www.kff.org/medicaid/issue-brief/state-data-for-medicaid-work-requirements-in-arkansas/", ) + defined_for = StateCode.AR def formula(person, period, parameters): p = parameters(period).gov.states.ar.dhs.medicaid.work_requirements category = person("medicaid_category", period) adult_group = category == category.possible_values.ADULT - state = person.household("state_code_str", period) age = person("age", period) income_level = person("medicaid_income_level", period) age_subject = p.age_range.calc(age) income_subject = income_level <= p.income_limit - return (state == "AR") & p.applies & adult_group & age_subject & income_subject + return p.applies & adult_group & age_subject & income_subject