From b1a417622b365d2d1f3d6a6901742820ccfb6647 Mon Sep 17 00:00:00 2001 From: Caleb Date: Thu, 17 Oct 2024 16:48:18 -0600 Subject: [PATCH 01/10] change medicaid fpg percent to count pregnant people as 2 for purposes of household size --- .../tax_unit_medicaid_income_level.yaml | 44 +++++++++++++++++++ .../income/tax_unit_medicaid_income_level.py | 12 ++++- .../variables/gov/hhs/tax_unit_fpg.py | 12 +++-- 3 files changed, 62 insertions(+), 6 deletions(-) create mode 100644 policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.yaml diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.yaml new file mode 100644 index 00000000000..7f0d4ff28b8 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.yaml @@ -0,0 +1,44 @@ +- name: Multiple people with income + period: 2024 + input: + people: + head: + is_pregnant: false + spouse: + is_pregnant: false + tax_units: + tax_unit: + medicaid_magi: 20_440 + members: [head, spouse] + output: + tax_unit_medicaid_income_level: 1 + +- name: Multiple people with no income + period: 2024 + input: + people: + head: + is_pregnant: false + spouse: + is_pregnant: false + tax_units: + tax_unit: + medicaid_magi: 0 + members: [head, spouse] + output: + tax_unit_medicaid_income_level: 0 + +- name: Multiple people with income and a pregnant person + period: 2024 + input: + people: + head: + is_pregnant: true + spouse: + is_pregnant: false + tax_units: + tax_unit: + medicaid_magi: 25_820 + members: [head, spouse] + output: + tax_unit_medicaid_income_level: 1 diff --git a/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py b/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py index 93aa23d8d87..15f22c6a8c6 100644 --- a/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py +++ b/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py @@ -1,4 +1,5 @@ from policyengine_us.model_api import * +from policyengine_us.variables.gov.hhs.tax_unit_fpg import fpg class tax_unit_medicaid_income_level(Variable): @@ -15,5 +16,12 @@ class tax_unit_medicaid_income_level(Variable): def formula(tax_unit, period, parameters): income = tax_unit("medicaid_magi", period) - fpg = tax_unit("tax_unit_fpg", period) - return income / fpg + + members = tax_unit.members + pregnant_count = tax_unit.sum(members("is_pregnant", period)) + tax_unit_size = tax_unit("tax_unit_size", period) + state_group = tax_unit.household("state_group_str", period) + + medicaid_fpg = fpg(pregnant_count + tax_unit_size, state_group, period, parameters) + + return income / medicaid_fpg diff --git a/policyengine_us/variables/gov/hhs/tax_unit_fpg.py b/policyengine_us/variables/gov/hhs/tax_unit_fpg.py index d6de9691d90..91c57f8c9c4 100644 --- a/policyengine_us/variables/gov/hhs/tax_unit_fpg.py +++ b/policyengine_us/variables/gov/hhs/tax_unit_fpg.py @@ -1,6 +1,13 @@ from policyengine_us.model_api import * +def fpg(unit_size, state_group, period, parameters): + p_fpg = parameters(period).gov.hhs.fpg + p1 = p_fpg.first_person[state_group] + pn = p_fpg.additional_person[state_group] + return p1 + pn * (unit_size - 1) + + class tax_unit_fpg(Variable): value_type = float entity = TaxUnit @@ -11,7 +18,4 @@ class tax_unit_fpg(Variable): def formula(tax_unit, period, parameters): n = tax_unit("tax_unit_size", period) state_group = tax_unit.household("state_group_str", period) - p_fpg = parameters(period).gov.hhs.fpg - p1 = p_fpg.first_person[state_group] - pn = p_fpg.additional_person[state_group] - return p1 + pn * (n - 1) + return fpg(n, state_group, parameters, period) From ad4fdc46c1e75d26e6f41e1b9ec1924dbf1f7e1c Mon Sep 17 00:00:00 2001 From: Caleb Date: Thu, 17 Oct 2024 16:49:19 -0600 Subject: [PATCH 02/10] changelog --- changelog_entry.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb2d..cc4eeb1a6ca 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: patch + changes: + fixed: + - Pregnant people counted as 2 for Medicaid FPG percent From c581f2ad6bb024f11e7809bf787779dc9759663b Mon Sep 17 00:00:00 2001 From: Caleb Date: Thu, 17 Oct 2024 16:49:54 -0600 Subject: [PATCH 03/10] format --- .../gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py b/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py index 15f22c6a8c6..855bd1412d4 100644 --- a/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py +++ b/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py @@ -22,6 +22,8 @@ def formula(tax_unit, period, parameters): tax_unit_size = tax_unit("tax_unit_size", period) state_group = tax_unit.household("state_group_str", period) - medicaid_fpg = fpg(pregnant_count + tax_unit_size, state_group, period, parameters) + medicaid_fpg = fpg( + pregnant_count + tax_unit_size, state_group, period, parameters + ) return income / medicaid_fpg From e3ddd5289c9156615d19c752427acd1dd75d92dc Mon Sep 17 00:00:00 2001 From: Caleb Date: Fri, 18 Oct 2024 13:16:17 -0600 Subject: [PATCH 04/10] add documentation for pregant women and medicaid --- .../medicaid/income/tax_unit_medicaid_income_level.py | 11 ++++++++--- policyengine_us/variables/gov/hhs/tax_unit_fpg.py | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py b/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py index 855bd1412d4..350ff0300bd 100644 --- a/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py +++ b/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py @@ -11,6 +11,12 @@ class tax_unit_medicaid_income_level(Variable): "Medicaid/CHIP-related MAGI as fraction of federal poverty line." "Documentation: 'Federal poverty level (FPL)' at the following URL:" "URL: https://www.healthcare.gov/glossary/federal-poverty-level-fpl/" + "**Pregnant Women:**" + " * Pregnant women are counted as 2 individuals when determining" + " household size for Medicaid eligibility." + " * Sources:" + " URL: https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=11618&fileName=10%20CCR%25202505-10%208.100" + " URL: https://www.cms.gov/marketplace/technical-assistance-resources/special-populations-pregnant-women.pdf" ) definition_period = YEAR @@ -18,12 +24,11 @@ def formula(tax_unit, period, parameters): income = tax_unit("medicaid_magi", period) members = tax_unit.members + # pregnant people count as 2 people pregnant_count = tax_unit.sum(members("is_pregnant", period)) tax_unit_size = tax_unit("tax_unit_size", period) state_group = tax_unit.household("state_group_str", period) - medicaid_fpg = fpg( - pregnant_count + tax_unit_size, state_group, period, parameters - ) + medicaid_fpg = fpg(pregnant_count + tax_unit_size, state_group, period, parameters) return income / medicaid_fpg diff --git a/policyengine_us/variables/gov/hhs/tax_unit_fpg.py b/policyengine_us/variables/gov/hhs/tax_unit_fpg.py index 91c57f8c9c4..f492918fcbb 100644 --- a/policyengine_us/variables/gov/hhs/tax_unit_fpg.py +++ b/policyengine_us/variables/gov/hhs/tax_unit_fpg.py @@ -18,4 +18,4 @@ class tax_unit_fpg(Variable): def formula(tax_unit, period, parameters): n = tax_unit("tax_unit_size", period) state_group = tax_unit.household("state_group_str", period) - return fpg(n, state_group, parameters, period) + return fpg(n, state_group, period, parameters) From 42b17949dbeccb7977987dfe0db9d25b267e331a Mon Sep 17 00:00:00 2001 From: Caleb Date: Fri, 18 Oct 2024 13:19:42 -0600 Subject: [PATCH 05/10] format --- .../gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py b/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py index 350ff0300bd..93f8ac2ffb3 100644 --- a/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py +++ b/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py @@ -29,6 +29,8 @@ def formula(tax_unit, period, parameters): tax_unit_size = tax_unit("tax_unit_size", period) state_group = tax_unit.household("state_group_str", period) - medicaid_fpg = fpg(pregnant_count + tax_unit_size, state_group, period, parameters) + medicaid_fpg = fpg( + pregnant_count + tax_unit_size, state_group, period, parameters + ) return income / medicaid_fpg From 551996c174154ad6c41fde5682dfe66e7bc6fb4c Mon Sep 17 00:00:00 2001 From: Caleb Date: Fri, 18 Oct 2024 13:39:48 -0600 Subject: [PATCH 06/10] add expected children do be delivered variable --- .../income/tax_unit_medicaid_income_level.yaml | 15 +++++++++++++++ .../income/tax_unit_medicaid_income_level.py | 11 ++++------- .../household/demographic/person/pregnancies.py | 9 +++++++++ 3 files changed, 28 insertions(+), 7 deletions(-) create mode 100644 policyengine_us/variables/household/demographic/person/pregnancies.py diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.yaml index 7f0d4ff28b8..f1081e5cad9 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.yaml @@ -42,3 +42,18 @@ members: [head, spouse] output: tax_unit_medicaid_income_level: 1 + +- name: Multiple people with income and a pregnant person expecting twins + period: 2024 + input: + people: + head: + preganant_expected_children: 2 + spouse: + preganant_expected_children: 0 + tax_units: + tax_unit: + medicaid_magi: 31_200 + members: [head, spouse] + output: + tax_unit_medicaid_income_level: 1 diff --git a/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py b/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py index 93f8ac2ffb3..92c5eaf8bed 100644 --- a/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py +++ b/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py @@ -12,8 +12,8 @@ class tax_unit_medicaid_income_level(Variable): "Documentation: 'Federal poverty level (FPL)' at the following URL:" "URL: https://www.healthcare.gov/glossary/federal-poverty-level-fpl/" "**Pregnant Women:**" - " * Pregnant women are counted as 2 individuals when determining" - " household size for Medicaid eligibility." + " * Pregnant women are counted as themselves plus the number of children they are expecting to deliver" + " when determining household size for Medicaid eligibility." " * Sources:" " URL: https://www.sos.state.co.us/CCR/GenerateRulePdf.do?ruleVersionId=11618&fileName=10%20CCR%25202505-10%208.100" " URL: https://www.cms.gov/marketplace/technical-assistance-resources/special-populations-pregnant-women.pdf" @@ -24,13 +24,10 @@ def formula(tax_unit, period, parameters): income = tax_unit("medicaid_magi", period) members = tax_unit.members - # pregnant people count as 2 people - pregnant_count = tax_unit.sum(members("is_pregnant", period)) + pregnant_count = tax_unit.sum(members("preganant_expected_children", period)) tax_unit_size = tax_unit("tax_unit_size", period) state_group = tax_unit.household("state_group_str", period) - medicaid_fpg = fpg( - pregnant_count + tax_unit_size, state_group, period, parameters - ) + medicaid_fpg = fpg(pregnant_count + tax_unit_size, state_group, period, parameters) return income / medicaid_fpg diff --git a/policyengine_us/variables/household/demographic/person/pregnancies.py b/policyengine_us/variables/household/demographic/person/pregnancies.py new file mode 100644 index 00000000000..9b93d962de8 --- /dev/null +++ b/policyengine_us/variables/household/demographic/person/pregnancies.py @@ -0,0 +1,9 @@ +from policyengine_us.model_api import * + + +class preganant_expected_children(Variable): + value_type = int + entity = Person + definition_period = YEAR + label = "The number of children a pregnant person is expecting" + adds = ["is_pregnant"] From 50ca23dbfe28ee00226f88e3be0a2ba31382a024 Mon Sep 17 00:00:00 2001 From: Caleb Date: Fri, 18 Oct 2024 13:42:26 -0600 Subject: [PATCH 07/10] format --- .../hhs/medicaid/income/tax_unit_medicaid_income_level.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py b/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py index 92c5eaf8bed..6e0b68384a3 100644 --- a/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py +++ b/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py @@ -24,10 +24,14 @@ def formula(tax_unit, period, parameters): income = tax_unit("medicaid_magi", period) members = tax_unit.members - pregnant_count = tax_unit.sum(members("preganant_expected_children", period)) + pregnant_count = tax_unit.sum( + members("preganant_expected_children", period) + ) tax_unit_size = tax_unit("tax_unit_size", period) state_group = tax_unit.household("state_group_str", period) - medicaid_fpg = fpg(pregnant_count + tax_unit_size, state_group, period, parameters) + medicaid_fpg = fpg( + pregnant_count + tax_unit_size, state_group, period, parameters + ) return income / medicaid_fpg From 32e072ad2c8c0d83a0ee33a04d045ec004de28fe Mon Sep 17 00:00:00 2001 From: Caleb Date: Fri, 18 Oct 2024 16:27:17 -0600 Subject: [PATCH 08/10] current_pregnancies --- .../income/tax_unit_medicaid_income_level.yaml | 16 ++++++++-------- .../income/tax_unit_medicaid_income_level.py | 9 ++------- .../{pregnancies.py => current_pregnancies.py} | 3 +-- .../household/demographic/person/is_pregnant.py | 1 + 4 files changed, 12 insertions(+), 17 deletions(-) rename policyengine_us/variables/household/demographic/person/{pregnancies.py => current_pregnancies.py} (71%) diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.yaml index f1081e5cad9..17890ab1b4e 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.yaml @@ -3,9 +3,9 @@ input: people: head: - is_pregnant: false + current_pregnancies: 0 spouse: - is_pregnant: false + current_pregnancies: 0 tax_units: tax_unit: medicaid_magi: 20_440 @@ -18,9 +18,9 @@ input: people: head: - is_pregnant: false + current_pregnancies: 0 spouse: - is_pregnant: false + current_pregnancies: 0 tax_units: tax_unit: medicaid_magi: 0 @@ -33,9 +33,9 @@ input: people: head: - is_pregnant: true + current_pregnancies: 1 spouse: - is_pregnant: false + current_pregnancies: 0 tax_units: tax_unit: medicaid_magi: 25_820 @@ -48,9 +48,9 @@ input: people: head: - preganant_expected_children: 2 + current_pregnancies: 2 spouse: - preganant_expected_children: 0 + current_pregnancies: 0 tax_units: tax_unit: medicaid_magi: 31_200 diff --git a/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py b/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py index 6e0b68384a3..d11c4cb2196 100644 --- a/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py +++ b/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py @@ -23,15 +23,10 @@ class tax_unit_medicaid_income_level(Variable): def formula(tax_unit, period, parameters): income = tax_unit("medicaid_magi", period) - members = tax_unit.members - pregnant_count = tax_unit.sum( - members("preganant_expected_children", period) - ) + pregnant_count = add(tax_unit, period, ["current_pregnancies"]) tax_unit_size = tax_unit("tax_unit_size", period) state_group = tax_unit.household("state_group_str", period) - medicaid_fpg = fpg( - pregnant_count + tax_unit_size, state_group, period, parameters - ) + medicaid_fpg = fpg(pregnant_count + tax_unit_size, state_group, period, parameters) return income / medicaid_fpg diff --git a/policyengine_us/variables/household/demographic/person/pregnancies.py b/policyengine_us/variables/household/demographic/person/current_pregnancies.py similarity index 71% rename from policyengine_us/variables/household/demographic/person/pregnancies.py rename to policyengine_us/variables/household/demographic/person/current_pregnancies.py index 9b93d962de8..9af6fa64ce8 100644 --- a/policyengine_us/variables/household/demographic/person/pregnancies.py +++ b/policyengine_us/variables/household/demographic/person/current_pregnancies.py @@ -1,9 +1,8 @@ from policyengine_us.model_api import * -class preganant_expected_children(Variable): +class current_pregnancies(Variable): value_type = int entity = Person definition_period = YEAR label = "The number of children a pregnant person is expecting" - adds = ["is_pregnant"] diff --git a/policyengine_us/variables/household/demographic/person/is_pregnant.py b/policyengine_us/variables/household/demographic/person/is_pregnant.py index 7d9142f84c6..cb58b94b742 100644 --- a/policyengine_us/variables/household/demographic/person/is_pregnant.py +++ b/policyengine_us/variables/household/demographic/person/is_pregnant.py @@ -6,3 +6,4 @@ class is_pregnant(Variable): entity = Person label = "Is pregnant" definition_period = YEAR + adds = ["current_pregnancies"] From 4bfa8f8f721607cdc3bda359ef14ae4bbce8c51e Mon Sep 17 00:00:00 2001 From: Caleb Date: Fri, 18 Oct 2024 16:35:43 -0600 Subject: [PATCH 09/10] fomat --- .../gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py b/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py index d11c4cb2196..1aa7af031a4 100644 --- a/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py +++ b/policyengine_us/variables/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.py @@ -27,6 +27,8 @@ def formula(tax_unit, period, parameters): tax_unit_size = tax_unit("tax_unit_size", period) state_group = tax_unit.household("state_group_str", period) - medicaid_fpg = fpg(pregnant_count + tax_unit_size, state_group, period, parameters) + medicaid_fpg = fpg( + pregnant_count + tax_unit_size, state_group, period, parameters + ) return income / medicaid_fpg From aeff776eb18159fcf1968acabc32fe3d25d88116 Mon Sep 17 00:00:00 2001 From: Caleb Date: Mon, 21 Oct 2024 13:13:00 -0600 Subject: [PATCH 10/10] add all parameters to test --- .../income/tax_unit_medicaid_income_level.yaml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.yaml index 17890ab1b4e..7c603549934 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/medicaid/income/tax_unit_medicaid_income_level.yaml @@ -9,7 +9,11 @@ tax_units: tax_unit: medicaid_magi: 20_440 + tax_unit_size: 2 members: [head, spouse] + households: + household: + state_group_str: CONTIGUOUS_US output: tax_unit_medicaid_income_level: 1 @@ -24,7 +28,11 @@ tax_units: tax_unit: medicaid_magi: 0 + tax_unit_size: 2 members: [head, spouse] + households: + household: + state_group_str: CONTIGUOUS_US output: tax_unit_medicaid_income_level: 0 @@ -39,7 +47,11 @@ tax_units: tax_unit: medicaid_magi: 25_820 + tax_unit_size: 2 members: [head, spouse] + households: + household: + state_group_str: CONTIGUOUS_US output: tax_unit_medicaid_income_level: 1 @@ -54,6 +66,10 @@ tax_units: tax_unit: medicaid_magi: 31_200 + tax_unit_size: 2 members: [head, spouse] + households: + household: + state_group_str: CONTIGUOUS_US output: tax_unit_medicaid_income_level: 1