Skip to content
Draft
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/8255.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix Medicare enrollment defaults by modeling enrollment as eligibility-gated take-up.
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
age: 40
medicaid_enrolled: false
is_chip_eligible: false
medicare_enrolled: false
has_esi: false
has_marketplace_health_coverage_at_interview: true
output:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
age: 40
medicaid_enrolled: false
is_chip_eligible: false
medicare_enrolled: false
has_esi: false
has_indian_health_service_coverage_at_interview: true
output:
Expand All @@ -23,3 +22,34 @@
has_non_marketplace_direct_purchase_health_coverage_at_interview: true
output:
has_qualifying_non_marketplace_health_coverage_at_interview: true

- name: Case 4, Medicare enrollment counts as qualifying non-Marketplace coverage.
period: 2025
input:
age: 65
medicaid_enrolled: false
is_chip_eligible: false
has_esi: false
has_non_marketplace_direct_purchase_health_coverage_at_interview: false
has_other_means_tested_health_coverage_at_interview: false
has_tricare_health_coverage_at_interview: false
has_champva_health_coverage_at_interview: false
has_va_health_coverage_at_interview: false
output:
has_qualifying_non_marketplace_health_coverage_at_interview: true

- name: Case 5, Medicare eligibility without take-up does not count as qualifying non-Marketplace coverage.
period: 2025
input:
age: 65
takes_up_medicare_if_eligible: false
medicaid_enrolled: false
is_chip_eligible: false
has_esi: false
has_non_marketplace_direct_purchase_health_coverage_at_interview: false
has_other_means_tested_health_coverage_at_interview: false
has_tricare_health_coverage_at_interview: false
has_champva_health_coverage_at_interview: false
has_va_health_coverage_at_interview: false
output:
has_qualifying_non_marketplace_health_coverage_at_interview: false
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
input:
age: 65
is_medicare_eligible: true
medicare_enrolled: true
medicare_quarters_of_coverage: 40
adjusted_gross_income:
2023: 50_000 # IRMAA uses income from 2 years prior
Expand All @@ -17,7 +16,6 @@
input:
age: 65
is_medicare_eligible: true
medicare_enrolled: true
medicare_quarters_of_coverage: 20
adjusted_gross_income:
2023: 50_000 # IRMAA uses income from 2 years prior
Expand All @@ -31,7 +29,6 @@
input:
age: 65
is_medicare_eligible: true
medicare_enrolled: true
medicare_quarters_of_coverage: 40
adjusted_gross_income:
2023: 500_000 # IRMAA uses income from 2 years prior
Expand All @@ -46,7 +43,7 @@
input:
age: 65
is_medicare_eligible: true
medicare_enrolled: false
takes_up_medicare_if_eligible: false
output:
medicare_cost: 0

Expand All @@ -55,7 +52,6 @@
input:
age: 70
is_medicare_eligible: true
medicare_enrolled: true
medicare_quarters_of_coverage: 40
adjusted_gross_income:
2019: 50_000 # IRMAA uses income from 2 years prior
Expand All @@ -69,7 +65,6 @@
input:
age: 65
is_medicare_eligible: true
medicare_enrolled: true
medicare_quarters_of_coverage: 40
gross_medicare_part_b_premium: 3_000
output:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
- name: Non-eligible person is not enrolled when enrollment is omitted.
period: 2025
input:
age: 64
output:
medicare_enrolled: false

- name: Eligible person defaults to enrolled.
period: 2025
input:
age: 65
output:
medicare_enrolled: true

- name: Eligible person declining take-up is not enrolled.
period: 2025
input:
age: 65
takes_up_medicare_if_eligible: false
output:
medicare_enrolled: false
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
2023: 80_000
tax_exempt_interest_income:
2023: 0
medicare_enrolled: true
output:
income_adjusted_part_d_premium_surcharge: 0

Expand All @@ -20,7 +19,6 @@
2023: 266_001
tax_exempt_interest_income:
2023: 0
medicare_enrolled: true
output:
income_adjusted_part_d_premium_surcharge: 423.6

Expand All @@ -33,6 +31,18 @@
2022: 397_000
tax_exempt_interest_income:
2022: 0
medicare_enrolled: true
output:
income_adjusted_part_d_premium_surcharge: 972

- name: unit test 4 - eligible but not enrolled
period: 2025
input:
age: 65
filing_status: SINGLE
adjusted_gross_income:
2023: 500_000
tax_exempt_interest_income:
2023: 0
takes_up_medicare_if_eligible: false
output:
income_adjusted_part_d_premium_surcharge: 0
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@ class medicare_enrolled(Variable):
definition_period = YEAR
reference = "https://www.cms.gov/medicare"
defined_for = "is_medicare_eligible"
default_value = True # Most Medicare-eligible people are enrolled
adds = ["takes_up_medicare_if_eligible"]
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from policyengine_us.model_api import *


class takes_up_medicare_if_eligible(Variable):
value_type = bool
entity = Person
label = "Whether an eligible person takes up Medicare"
definition_period = YEAR
default_value = True
Loading