Spaces:
Sleeping
Sleeping
| from openfisca_core.variables import Variable | |
| from openfisca_core.periods import ETERNITY, YEAR | |
| import numpy as np | |
| from .entities import Person | |
| # Input variables | |
| class annual_income(Variable): | |
| value_type = float | |
| entity = Person | |
| definition_period = YEAR | |
| label = "Annual household income in INR" | |
| default_value = 0 | |
| class age(Variable): | |
| value_type = int | |
| entity = Person | |
| definition_period = ETERNITY | |
| label = "Age of person" | |
| default_value = 0 | |
| class is_farmer(Variable): | |
| value_type = bool | |
| entity = Person | |
| definition_period = ETERNITY | |
| label = "Is the person a farmer" | |
| default_value = False | |
| class state(Variable): | |
| value_type = str | |
| entity = Person | |
| definition_period = ETERNITY | |
| label = "State of residence" | |
| default_value = "" | |
| class caste_category(Variable): | |
| value_type = str | |
| entity = Person | |
| definition_period = ETERNITY | |
| label = "SC/ST/OBC/General" | |
| default_value = "General" | |
| class gender(Variable): | |
| value_type = str | |
| entity = Person | |
| definition_period = ETERNITY | |
| label = "Gender (Male/Female/Other)" | |
| default_value = "Unknown" | |
| class is_bpl(Variable): | |
| """Below Poverty Line status — used by PMJAY and other welfare schemes.""" | |
| value_type = bool | |
| entity = Person | |
| definition_period = ETERNITY | |
| label = "Is the person below poverty line" | |
| default_value = False | |
| class land_size_hectares(Variable): | |
| """Agricultural land holding in hectares — used by PM-KISAN.""" | |
| value_type = float | |
| entity = Person | |
| definition_period = ETERNITY | |
| label = "Agricultural land size in hectares" | |
| default_value = 0.0 | |
| class is_disabled(Variable): | |
| value_type = bool | |
| entity = Person | |
| definition_period = ETERNITY | |
| label = "Person with disability status" | |
| default_value = False | |
| class occupation(Variable): | |
| value_type = str | |
| entity = Person | |
| definition_period = ETERNITY | |
| label = "Primary occupation" | |
| default_value = "Unknown" | |
| # Eligibility output variables | |
| class eligible_pm_kisan(Variable): | |
| value_type = bool | |
| entity = Person | |
| definition_period = YEAR | |
| label = "Eligible for PM-KISAN scheme" | |
| def formula(person, period, parameters): | |
| return ( | |
| person("is_farmer", period) * | |
| (person("annual_income", period) <= 200000) | |
| ) | |
| class eligible_chiranjeevi(Variable): | |
| value_type = bool | |
| entity = Person | |
| definition_period = YEAR | |
| label = "Eligible for Chiranjeevi Health Insurance (Rajasthan)" | |
| def formula(person, period, parameters): | |
| income = person("annual_income", period) | |
| state_val = person("state", period) | |
| return ( | |
| (state_val == "Rajasthan") * | |
| (income <= 800000) | |
| ) | |
| class eligible_palanhar(Variable): | |
| value_type = bool | |
| entity = Person | |
| definition_period = YEAR | |
| label = "Eligible for Palanhar Yojana (Rajasthan)" | |
| def formula(person, period, parameters): | |
| return ( | |
| (person("state", period) == "Rajasthan") * | |
| (person("caste_category", period) == "SC") | |
| ) | |
| # --- SPRINT 8: NEW SCHEMES EXPANSION --- | |
| class eligible_ekal_nari(Variable): | |
| value_type = bool | |
| entity = Person | |
| definition_period = YEAR | |
| label = "Chief Minister Ekal Nari Samman Pension Yojana" | |
| def formula(person, period, parameters): | |
| # Approximated: Adult women in Rajasthan with low income | |
| return (person("state", period) == "Rajasthan") * (person("age", period) >= 18) * (person("annual_income", period) <= 500000) | |
| class eligible_devnarayan_scholarship(Variable): | |
| value_type = bool | |
| entity = Person | |
| definition_period = YEAR | |
| label = "Devnarayan Pre-Matric Scholarship Scheme" | |
| def formula(person, period, parameters): | |
| # Approximated: OBC students under 18 | |
| return (person("state", period) == "Rajasthan") * (person("caste_category", period) == "OBC") * (person("age", period) <= 18) | |
| class eligible_incentive_to_girls(Variable): | |
| value_type = bool | |
| entity = Person | |
| definition_period = YEAR | |
| label = "Incentive To Girls" | |
| def formula(person, period, parameters): | |
| # Approximated: Young females (using age as proxy) | |
| return (person("state", period) == "Rajasthan") * (person("age", period) <= 18) | |
| class eligible_widow_bed_scheme(Variable): | |
| value_type = bool | |
| entity = Person | |
| definition_period = YEAR | |
| label = "Widow B.Ed Scheme-Rajasthan" | |
| def formula(person, period, parameters): | |
| # Approximated: Adult women seeking education | |
| return (person("state", period) == "Rajasthan") * (person("age", period) >= 21) | |
| class eligible_nirman_shramik_auzaar(Variable): | |
| value_type = bool | |
| entity = Person | |
| definition_period = YEAR | |
| label = "Nirman Shramik Auzaar Toolkit Sahayata Yojana" | |
| def formula(person, period, parameters): | |
| # Approximated: Working age adults with low income | |
| return (person("state", period) == "Rajasthan") * (person("age", period) >= 18) * (person("annual_income", period) <= 300000) | |
| class eligible_indira_mahila_shakti(Variable): | |
| value_type = bool | |
| entity = Person | |
| definition_period = YEAR | |
| label = "Indira Mahila Shakti Udyam Protsahan Yojana" | |
| def formula(person, period, parameters): | |
| # Approximated: Adult women empowerment | |
| return (person("state", period) == "Rajasthan") * (person("age", period) >= 18) | |
| class eligible_ayushman_arogya(Variable): | |
| value_type = bool | |
| entity = Person | |
| definition_period = YEAR | |
| label = "Mukhyamantree Ayushman Arogya Yojana" | |
| def formula(person, period, parameters): | |
| # Approximated: Healthcare for residents under income threshold | |
| return (person("state", period) == "Rajasthan") * (person("annual_income", period) <= 800000) | |
| # --- SPRINT 19: NATIONAL SCHEME EXPANSION --- | |
| class eligible_pmjay(Variable): | |
| """ | |
| Pradhan Mantri Jan Arogya Yojana (Ayushman Bharat) | |
| National Health Protection Scheme - up to ₹5 lakh/family/year | |
| Eligibility (simplified from SECC deprivation criteria): | |
| - Annual income below ₹5 lakh | |
| - OR BPL status | |
| - Available nationwide | |
| """ | |
| value_type = bool | |
| entity = Person | |
| definition_period = YEAR | |
| label = "Eligible for Ayushman Bharat PMJAY" | |
| def formula(person, period, parameters): | |
| income = person("annual_income", period) | |
| bpl = person("is_bpl", period) | |
| return (income <= 500000) | bpl # bitwise OR for vectorized logic | |
| class eligible_pmay_gramin(Variable): | |
| """ | |
| Pradhan Mantri Awas Yojana - Gramin (Rural Housing) | |
| Eligibility: | |
| - Annual income below ₹3 lakh | |
| - Must be from rural area (approximated by BPL or low income) | |
| """ | |
| value_type = bool | |
| entity = Person | |
| definition_period = YEAR | |
| label = "Eligible for PMAY Gramin (Rural Housing)" | |
| def formula(person, period, parameters): | |
| income = person("annual_income", period) | |
| return income <= 300000 | |
| class eligible_ujjwala(Variable): | |
| """ | |
| Pradhan Mantri Ujjwala Yojana (Free LPG connection) | |
| Eligibility: | |
| - BPL household | |
| - Adult woman (age >= 18) | |
| """ | |
| value_type = bool | |
| entity = Person | |
| definition_period = YEAR | |
| label = "Eligible for Ujjwala Yojana (Free LPG)" | |
| def formula(person, period, parameters): | |
| bpl = person("is_bpl", period) | |
| age_val = person("age", period) | |
| gender_val = person("gender", period) | |
| return bpl & (age_val >= 18) & (gender_val == "Female") # bitwise AND for vectorized logic | |
| class eligible_scholarship_sc_st(Variable): | |
| """ | |
| Post-Matric Scholarship for SC/ST Students (National) | |
| Eligibility: | |
| - SC or ST category | |
| - Age 16-35 (post-matric) | |
| - Annual income below ₹2.5 lakh | |
| """ | |
| value_type = bool | |
| entity = Person | |
| definition_period = YEAR | |
| label = "Eligible for SC/ST Post-Matric Scholarship" | |
| def formula(person, period, parameters): | |
| caste = person("caste_category", period) | |
| age_val = person("age", period) | |
| income = person("annual_income", period) | |
| is_sc_st = (caste == "SC") | (caste == "ST") # bitwise OR for vectorized logic | |
| return is_sc_st & (age_val >= 16) & (age_val <= 35) & (income <= 250000) # bitwise AND |