@@ -83,6 +83,15 @@ def get_data(
8383 data_keys .PRETERM_BIRTH .CSMR : load_standard_data ,
8484 data_keys .NEONATAL_SEPSIS .CSMR : load_standard_data ,
8585 data_keys .NEONATAL_ENCEPHALOPATHY .CSMR : load_standard_data ,
86+ data_keys .NO_CPAP_INTERVENTION .P_RDS : load_p_rds ,
87+ data_keys .NO_CPAP_INTERVENTION .P_HOME : load_probability_birth_facility_type ,
88+ data_keys .NO_CPAP_INTERVENTION .P_BEmONC : load_probability_birth_facility_type ,
89+ data_keys .NO_CPAP_INTERVENTION .P_CEmONC : load_probability_birth_facility_type ,
90+ data_keys .NO_CPAP_INTERVENTION .P_CPAP_HOME : load_cpap_facility_access_probability ,
91+ data_keys .NO_CPAP_INTERVENTION .P_CPAP_BEmONC : load_cpap_facility_access_probability ,
92+ data_keys .NO_CPAP_INTERVENTION .P_CPAP_CEmONC : load_cpap_facility_access_probability ,
93+ data_keys .NO_CPAP_INTERVENTION .RELATIVE_RISK : load_no_cpap_relative_risk ,
94+ data_keys .NO_CPAP_INTERVENTION .PAF : load_no_cpap_paf ,
8695 }
8796 return mapping [lookup_key ](lookup_key , location , years )
8897
@@ -413,6 +422,90 @@ def load_lbwsg_paf(
413422 return df .sort_index ()
414423
415424
425+ def load_p_rds (
426+ lookup_key : str , location : str , years : Optional [Union [int , str , List [int ]]] = None
427+ ) -> float :
428+ csmr = get_data (data_keys .PRETERM_BIRTH .CSMR , location , years )
429+ p_rds = csmr * data_values .PRETERM_DEATHS_DUE_TO_RDS_PROBABILITY
430+ return p_rds
431+
432+
433+ def load_probability_birth_facility_type (
434+ lookup_key : str , location : str , years : Optional [Union [int , str , List [int ]]] = None
435+ ) -> float :
436+ return data_values .DELIVERY_FACILITY_TYPE_PROBABILITIES [location ][lookup_key ]
437+
438+
439+ def load_cpap_facility_access_probability (
440+ lookup_key : str , location : str , years : Optional [Union [int , str , List [int ]]] = None
441+ ) -> float :
442+ return data_values .CPAP_ACCESS_PROBABILITIES [location ][lookup_key ]
443+
444+
445+ def load_no_cpap_relative_risk (
446+ lookup_key : str , location : str , years : Optional [Union [int , str , List [int ]]] = None
447+ ) -> float :
448+ return 1 / 0.53
449+
450+
451+ def load_no_cpap_paf (
452+ lookup_key : str , location : str , years : Optional [Union [int , str , List [int ]]] = None
453+ ) -> float :
454+
455+ # Get all no_cpap data for calculations
456+ p_rds = get_data (data_keys .NO_CPAP_INTERVENTION .P_RDS , location , years )
457+ p_home = get_data (data_keys .NO_CPAP_INTERVENTION .P_HOME , location , years )
458+ p_BEmONC = get_data (data_keys .NO_CPAP_INTERVENTION .P_BEmONC , location , years )
459+ p_CEmONC = get_data (data_keys .NO_CPAP_INTERVENTION .P_CEmONC , location , years )
460+ p_CPAP_home = get_data (data_keys .NO_CPAP_INTERVENTION .P_CPAP_HOME , location , years )
461+ p_CPAP_BEmONC = get_data (data_keys .NO_CPAP_INTERVENTION .P_CPAP_BEmONC , location , years )
462+ p_CPAP_CEmONC = get_data (data_keys .NO_CPAP_INTERVENTION .P_CPAP_CEmONC , location , years )
463+ relative_risk = get_data (data_keys .NO_CPAP_INTERVENTION .RELATIVE_RISK , location , years )
464+ # rr_cpap = 1 / relative_risk)
465+ # p_rds_cpap = (1 / relative_risk) * p_rds_no_cpap
466+ # p_rds_no_cpap = p_rds_cpap * relative_risk
467+
468+ # Get death probability of each path
469+ # p_home_no_cpap = p_home * p_rds_no_cpap
470+ # p_BEmONC_no_cpap = p_BEmONC * 1 - p_CPAP_BEmONC * p_rds_no_cpap
471+ # p_CEmONC_no_cpap = p_CEmONC * 1 - p_CPAP_CEmONC * p_rds_no_cpap
472+ # p_BEmONC_cpap = p_BEmONC * p_CPAP_BEmONC * p_rds_cpap
473+ # p_CEmONC_cpap = p_CEmONC * p_CPAP_CEmONC * p_rds_cpap
474+
475+ # p_rds = (
476+ # p_home * p_rds_cpap * relative_risk
477+ # + p_BEmONC * (1 - p_CPAP_CEmONC) * p_rds_cpap * relative_risk
478+ # + p_CEmONC * (1 - p_CPAP_CEmONC) * p_rds_cpap * relative_risk
479+ # + p_BEmONC * p_CPAP_BEmONC * p_rds_cpap
480+ # + p_CEmONC * p_CPAP_CEmONC * p_rds_cpap
481+ # )
482+ # p_rds = (
483+ # 0.5 * 1.0 * p_rds_cpap * (1 / 0.53)
484+ # + 0.1 * (1 - 0.075) * p_rds_cpap * (1 / 0.53)
485+ # + 0.4 * (1 - 0.393) * p_rds_cpap * (1 / 0.53)
486+ # + 0.1 * 0.075 * p_rds_cpap
487+ # + 0.4 * 0.393 * p_rds_cpap
488+ # )
489+ # p_rds_cpap(
490+ # (0.5 * 1 * (1 / 0.53))
491+ # + (0.1 * (1 - 0.075) * (1 / 0.53))
492+ # + (0.4 * (1 / 0.393) * (1 / 0.53))
493+ # + (0.1 * 0.075)
494+ # + (0.4 * 0.393)
495+ # ) = p_rds
496+
497+ p_rds_cpap = p_rds / (
498+ (p_home * relative_risk )
499+ + (p_BEmONC * (1 - p_CPAP_BEmONC ) * relative_risk )
500+ + (p_CEmONC * (1 - p_CPAP_CEmONC ) * relative_risk )
501+ + (p_BEmONC * p_CPAP_BEmONC )
502+ + (p_CEmONC * p_CPAP_CEmONC )
503+ )
504+ paf_no_cpap = 1 - (p_rds_cpap / p_rds )
505+ paf_no_cpap = paf_no_cpap .fillna (0.0 )
506+ return paf_no_cpap
507+
508+
416509def load_lbwsg_exposure (
417510 key : str , location : str , years : Optional [Union [int , str , List [int ]]] = None
418511) -> pd .DataFrame :
0 commit comments