Skip to content
Merged
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/ca-ssp-eligible-person-minor-children.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Make ca_state_supplement_eligible_person true for blind or disabled dependents under 18, whom the model pays California's dependent supplement amount.
Original file line number Diff line number Diff line change
Expand Up @@ -177,3 +177,31 @@
# ca_state_supplement is an ungated computed entitlement; with take-up
# declined no SSP check arrives, so the bar lifts like the ssi arm.
ca_sbd_general_relief_receives_other_cash_assistance: false

- name: Case 9, a disabled child with an SSP-only payment is barred, but the parent is not.
period: 2026-01
input:
people:
person1:
age: 40
ssi: 0
person2:
age: 10
is_disabled: true
meets_ssi_disability_criteria: true
ssi: 0
spm_units:
spm_unit:
members: [person1, person2]
# An SSP-only case: a positive state supplement with no federal SSI.
ca_state_supplement: 200
tanf: 0
households:
household:
members: [person1, person2]
in_sbd: true
state_code: CA
output:
# The child is eligible for the state supplement as a disabled dependent
# under 18; the parent is not aged, blind or disabled.
ca_sbd_general_relief_receives_other_cash_assistance: [false, true]
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,57 @@
state_code: CA
output:
ca_state_supplement_eligible_person: false

- name: Disabled dependent child below the age limit
period: 2026
input:
people:
person1:
age: 33
meets_ssi_resource_test: true
is_ssi_aged_blind_disabled: false
immigration_status: CITIZEN
person2:
age: 17
meets_ssi_resource_test: true
is_ssi_aged_blind_disabled: true
immigration_status: CITIZEN
tax_units:
tax_unit:
members: [person1, person2]
households:
household:
members: [person1, person2]
state_code: CA
output:
is_tax_unit_dependent: [false, true]
ca_state_supplement_eligible_person: [false, true]

- name: Disabled dependent at the age limit
period: 2026
input:
people:
person1:
age: 45
meets_ssi_resource_test: true
is_ssi_aged_blind_disabled: false
immigration_status: CITIZEN
person2:
age: 18
# Input so the age-ordered fallback does not make them the spouse.
is_tax_unit_dependent: true
meets_ssi_resource_test: true
is_ssi_aged_blind_disabled: true
immigration_status: CITIZEN
tax_units:
tax_unit:
members: [person1, person2]
households:
household:
members: [person1, person2]
state_code: CA
output:
# Known limitation: POMS SI 01415.058 pays a disabled dependent aged 18 or
# older the adult rate, but the model pays them nothing and leaves the
# flag false (issue 10557).
ca_state_supplement_eligible_person: [false, false]
Original file line number Diff line number Diff line change
Expand Up @@ -77,3 +77,25 @@
state_code: CA
output:
ca_state_supplement_medical_care_facility_amount: 62

- name: Dependent child in medical care facility gets no facility allowance
period: 2026-01
input:
people:
person1:
ca_in_medical_care_facility: false
ca_state_supplement_eligible_person: true
person2:
age: 10
ca_in_medical_care_facility: true
ca_state_supplement_eligible_person: true
spm_units:
spm_unit:
members: [person1, person2]
households:
household:
members: [person1, person2]
state_code: CA
output:
# The model pays a dependent child the dependent amount instead.
ca_state_supplement_medical_care_facility_amount: 0
Original file line number Diff line number Diff line change
Expand Up @@ -77,3 +77,25 @@
state_code: CA
output:
ca_state_supplement_out_of_home_care_facility_amount: 1_153.31 # 3,252.14 - 2,098.83

- name: Dependent child in out of home care facility gets no facility allowance
period: 2026-01
input:
people:
person1:
in_out_of_home_care_facility: false
ca_state_supplement_eligible_person: true
person2:
age: 10
in_out_of_home_care_facility: true
ca_state_supplement_eligible_person: true
spm_units:
spm_unit:
members: [person1, person2]
households:
household:
members: [person1, person2]
state_code: CA
output:
# The model pays a dependent child the dependent amount instead.
ca_state_supplement_out_of_home_care_facility_amount: 0
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,14 @@ def ca_capi_spouse_ssi_ssp(person, period):

Only a spouse who is not CAPI-eligible counts. ca_state_supplement is an
SPM-unit amount, so as a simplification the spouse's share is pro rata
among the unit's members eligible for it; a citizen disabled child's
supplement in the unit is then attributed to the spouse.
among the unit's heads and spouses eligible for it; a citizen disabled
child's supplement in the unit is then attributed to the spouse.
"""
spouse = ~person("ca_capi_eligible_person", period.this_year)
spouse_ssi = person.marital_unit.sum(person("ssi", period) * spouse)
ssp_eligible = person("ca_state_supplement_eligible_person", period)
ssp_eligible = person("ca_state_supplement_eligible_person", period) & person(
"is_tax_unit_head_or_spouse", period
)
spouse_ssp_share = person.marital_unit.sum(ssp_eligible * spouse) / max_(
person.spm_unit.sum(ssp_eligible), 1
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,30 @@ class ca_state_supplement_eligible_person(Variable):
label = "California SSI state supplement eligible person"
definition_period = MONTH
defined_for = StateCode.CA
reference = "https://law.justia.com/codes/california/code-wic/division-9/part-3/chapter-3/article-4/"
reference = (
"https://law.justia.com/codes/california/code-wic/division-9/part-3/chapter-3/article-4/",
"https://secure.ssa.gov/apps10/poms.nsf/lnx/0501415058",
)

def formula(person, period, parameters):
p = parameters(period).gov.states.ca.cdss.state_supplement.payment_standard
meets_resource_test = person("meets_ssi_resource_test", period)
aged_blind_disabled = person("is_ssi_aged_blind_disabled", period)
is_qualified_noncitizen = person("is_ssi_qualified_noncitizen", period)
immigration_status = person("immigration_status", period.this_year)
is_citizen = immigration_status == immigration_status.possible_values.CITIZEN
# Heads and spouses get the individual, couple and facility amounts.
# The model pays blind or disabled dependents below the age limit the
# dependent amount instead. This simplifies POMS SI 01415.058, which
# pays blind children the blind amount, children in care facilities
# the facility amount and adult dependents an individual amount
# (issue 10557).
is_head_or_spouse = person("is_tax_unit_head_or_spouse", period)
dependent = person("is_tax_unit_dependent", period)
minor = person("monthly_age", period) < p.dependent.age_limit
return (
meets_resource_test
& aged_blind_disabled
& (is_qualified_noncitizen | is_citizen)
& is_head_or_spouse
& (is_head_or_spouse | (dependent & minor))
)
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,6 @@ def formula(spm_unit, period, parameters):
is_aged = age >= p.aged_or_disabled.age_threshold
aged_or_disabled = is_aged | is_ssi_disabled
eligible = person("ca_state_supplement_eligible_person", period)
return spm_unit.sum(aged_or_disabled * eligible)
# The model pays dependent children the dependent amount instead.
head_or_spouse = person("is_tax_unit_head_or_spouse", period)
return spm_unit.sum(aged_or_disabled * eligible * head_or_spouse)
Original file line number Diff line number Diff line change
Expand Up @@ -13,24 +13,12 @@ class ca_state_supplement_dependent_amount(Variable):
def formula(spm_unit, period, parameters):
p = parameters(period).gov.states.ca.cdss.state_supplement.payment_standard
person = spm_unit.members
# Blind amount
blind = person("is_blind", period)
is_ssi_disabled = person("is_ssi_disabled", period.this_year)
age = person("monthly_age", period)
# Dependent amount
dependent = person("is_tax_unit_dependent", period)
dependent_age_eligible = age < p.dependent.age_limit
# The child must meet the SSI/SSP conditions that
# ca_state_supplement_eligible_person applies to adults; a child who
# fails SSI's noncitizen test gets CAPI instead (WIC 18938, 18941).
immigration_status = person("immigration_status", period.this_year)
is_citizen = immigration_status == immigration_status.possible_values.CITIZEN
is_qualified_noncitizen = person(
"is_ssi_qualified_noncitizen", period.this_year
)
meets_resource_test = person("meets_ssi_resource_test", period)
eligible = meets_resource_test & (is_citizen | is_qualified_noncitizen)
dependent_count = spm_unit.sum(
dependent & dependent_age_eligible & (is_ssi_disabled | blind) & eligible
)
# The eligible person flag applies the SSI/SSP conditions, including
# being blind or disabled; a child who fails SSI's noncitizen test
# gets CAPI instead (WIC 18938, 18941).
eligible = person("ca_state_supplement_eligible_person", period)
dependent_count = spm_unit.sum(dependent & dependent_age_eligible & eligible)
return dependent_count * p.dependent.amount
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ def formula(spm_unit, period, parameters):
# Medical care facility amount
person = spm_unit.members
eligible = person("ca_state_supplement_eligible_person", period)
# The model pays dependent children the dependent amount instead.
head_or_spouse = person("is_tax_unit_head_or_spouse", period)
in_medical_care_facility = person("ca_in_medical_care_facility", period)
medical_care_facility_count = spm_unit.sum(in_medical_care_facility * eligible)
medical_care_facility_count = spm_unit.sum(
in_medical_care_facility * eligible * head_or_spouse
)
return medical_care_facility_count * p.allowance.medical_care_facility
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,10 @@ def formula(spm_unit, period, parameters):
p = parameters(period).gov.states.ca.cdss.state_supplement.payment_standard
person = spm_unit.members
eligible = person("ca_state_supplement_eligible_person", period)
# The model pays dependent children the dependent amount instead.
head_or_spouse = person("is_tax_unit_head_or_spouse", period)
in_out_of_home_care_facility = person("in_out_of_home_care_facility", period)
out_of_home_care_facility_count = spm_unit.sum(
in_out_of_home_care_facility * eligible
in_out_of_home_care_facility * eligible * head_or_spouse
)
return out_of_home_care_facility_count * p.allowance.out_of_home_care
Loading