diff --git a/Zim_parameters.sas b/Zim_parameters.sas index c11a414b..c0006c1f 100644 --- a/Zim_parameters.sas +++ b/Zim_parameters.sas @@ -8,49 +8,26 @@ caldate1=1984; caldate_never_dot=1984; startyr = 1991 + 0.25; -* inc_cat; inc_cat = 1 ; - - -* SEXUAL BEHAVIOUR; - -* ych_risk_beh_newp; %sample(ych_risk_beh_newp, 0.5 0.6 0.7 , 0.4 0.3 0.3); -* ych_risk_beh_ep; %sample_uniform(ych_risk_beh_ep, 0.8 0.9 0.95); -* p_rred_p; %sample_uniform(p_rred_p, 0.4 0.5 0.6); -* p_hsb_p; %sample(p_hsb_p, 0.05 0.08 0.15 0.25, 0.25 0.25 0.25 0.25); -* newp_factor; %sample_uniform(newp_factor, 1 2 3 5 ); -* ych2_risk_beh_newp; %sample(ych2_risk_beh_newp, - 0.95 0.99 1 , - 0.3 0.3 4 ); +* inc_cat; inc_cat = 4 ; * HIV TESTING; * date_start_testing; date_start_testing = 2005 ; -* test_targeting; *%sample(test_targeting, 1.1 1.3 1.5, 0.4 0.4 0.2); *Vale - 20211026, not specific to Zim before; - *%sample(test_targeting, 1 1.25 1.5, 0.6 0.3 0.1); *Vale - 20211123; - %sample(test_targeting, 1 1.1 1.3, 0.7 0.2 0.1);*Vale - 20220105; -* an_lin_incr_test; *%sample(an_lin_incr_test, - 0.0100 0.015 0.0200 , - 0.50 0.50 0.00 ); - *%sample(an_lin_incr_test, - 0.0100 0.015 0.0200 , - 0.70 0.30 0.00 ); - %sample(an_lin_incr_test, +* test_targeting; %sample(test_targeting, 1 1.1 1.3, 0.7 0.2 0.1);*Vale - 20220105; +* an_lin_incr_test; %sample(an_lin_incr_test, 0.005 0.01 0.015, 0.6 0.3 0.1);*Vale - 20220105; * date_test_rate_plateau; date_test_rate_plateau = 2019 ; -* fold_rate_decr_test_future;*%sample_uniform(fold_rate_decr_test_future, 0.1 0.2 0.33); - %sample_uniform(fold_rate_decr_test_future, 0.00125 0.00165 0.0025 0.00375); +* fold_rate_decr_test_future;%sample_uniform(fold_rate_decr_test_future, 0.25 0.33 0.5 0.75); -* rate_anc_inc; *%sample_uniform(rate_anc_inc, 0.005 0.01 0.03 0.05 0.10); *Mar2023; - %sample(rate_anc_inc, 0.005 0.01 0.03 0.05 0.10, 0.15 0.15 0.3 0.2 0.2); +* rate_anc_inc; %sample_uniform(rate_anc_inc, 0.025 0.03 0.035); * prob_test_2ndtrim; %sample_uniform(prob_test_2ndtrim, 0.7 0.75 0.8 0.85 0.0 0.95 1.00); -* prob_test_postdel; prob_test_postdel=0.95; +* prob_test_postdel; %sample_uniform(prob_test_postdel, 0.25 0.5 0.75); * NATURAL PROGRESSION AND RISK OF HIV RELATED CONDITIONS; *Vale - 20211026: all the changes in the section "NATURAL PROGRESSION...." are taken from SA; * fold_change_in_risk_base_rate; - *%sample_uniform(fold_change_in_risk_base_rate, 0.7 0.8 0.9); %sample_uniform(fold_change_in_risk_base_rate, 0.85 1.0); *Vale - 20211123; * it is 0.85 rather than 1 in south africa parameter sets, and 1 in Malawi as there is no evidence that this lower rate holds in malawi ; @@ -69,43 +46,60 @@ rate_ch_art_init_str_9 = 0.1 ; * rate_int_choice; %sample_uniform(rate_int_choice, 0.0020 0.0030 0.0040);*Vale - 20220105; -* SEX WORKERS; -* base_rate_sw; *%sample(base_rate_sw, 0.0015 0.0020 0.0025, 0.2 0.2 0.6);*Vale - 20211026, not specific to Zim before; - *Vale - 20211123, removed; -* base_rate_stop_sexwork; *%sample_uniform(base_rate_stop_sexwork, 0.015 0.030 0.045);*Vale - 20211026, not specific to Zim before; - *Vale - 20211123, removed; +* SEX WORKERS; + +* base_rate_sw; %sample(base_rate_sw, 0.0014 0.0018, 0.7 0.3);*20231002; +* base_rate_stop_sexwork; %sample(base_rate_stop_sexwork, 0.010 0.015 0.020, 0.25 0.25 0.5); + +* rr_sw_age_3549; rr_sw_age_3549 = 0.25; +* age_effect_stop_sexwork; *No need to specify as it was hard coded and the output was ok; + +* sw_trans_matrix; %sample(sw_trans_matrix, 1 2 3, 0.10 0.45 0.45); +* sw_art_disadv; %sample(sw_art_disadv, 0 1, 0.10 0.90); + if sw_art_disadv=1 then do; + %sample_uniform(sw_higher_int, 2 5 10 20); + %sample_uniform(rel_sw_lower_adh, 0.8 0.9); + %sample_uniform(sw_higher_prob_loss_at_diag, 2 5 10); + end; + +* rate_engage_sw_program; %sample_uniform(rate_engage_sw_program, 0.10 0.20 0.30); +* rate_disengage_sw_program; %sample_uniform(rate_disengage_sw_program, 0.01 0.03); + +* date_sw_prog_intro; date_sw_prog_intro=2010; +* sw_program; %sample(sw_program, 0 1, 0.2 0.8);sw_program=1;*Discuss; + if sw_program = 1 then do; + %sample_uniform(rate_engage_sw_program, 0.10 0.20); + %sample_uniform(rate_disengage_sw_program, 0.02 0.05); + end; + +***Change these parameters as are assuming higher attendance than in core and Zim has Sisters program in place; +* effect_sw_prog_newp; %sample_uniform(effect_sw_prog_newp, 0.05 0.10); +* effect_sw_prog_6mtest; %sample_uniform(effect_sw_prog_6mtest, 0.20 0.35 0.50); +* effect_sw_prog_int; %sample_uniform(effect_sw_prog_int, 0.30 0.50 0.70); +* effect_sw_prog_adh; %sample_uniform(effect_sw_prog_adh, 0.10 0.15 0.25); +* effect_sw_prog_lossdiag; %sample_uniform(effect_sw_prog_lossdiag, 0.30 0.50 0.70); +* effect_sw_prog_prep_any; %sample_uniform(effect_sw_prog_prep_any, 0.50 0.75); +* effect_sw_prog_pers_sti; %sample_uniform(effect_sw_prog_pers_sti, 0.50 0.75); * CIRCUMCISION; -* circ_inc_rate; *circ_inc_rate = 0.001; - *%sample(circ_inc_rate, - 0.001 0.003 0.01 0.1, - 0.1 0.6 0.2 0.1);*Vale - 20211026; - *%sample(circ_inc_rate, 0.001 0.002 0.003, - 0.25 0.5 0.25);*Vale - 20211104; - %sample(circ_inc_rate, 0.0001 0.001 0.002, +* circ_inc_rate; %sample(circ_inc_rate, 0.0001 0.001 0.002, 0.25 0.5 0.25); -* prob_birth_circ; *prob_birth_circ = 0.2 ; - %sample(prob_birth_circ, +* prob_birth_circ; %sample(prob_birth_circ, 0.05 0.1 0.15, 0.25 0.5 0.25); *Vale - 20211026; -* rel_incr_circ_post_2013; *%sample(rel_incr_circ_post_2013, - 0.8 1 3 7, - 0.10 0.25 0.25 0.40); - *if circ_inc_rate=0.1 then rel_incr_circ_post_2013=min(rel_incr_circ_post_2013, 1); - *%sample(rel_incr_circ_post_2013, - 1 3 5, - 0.25 0.5 0.25); - %sample(rel_incr_circ_post_2013, - 4 5 6, - 0.25 0.5 0.25); - -***Higher circ post 2015 - adding this here as if we increase the above, we will miss the DHS data point in 2015 on circ prev; -* rel_incr_circ_post_2015; %sample(rel_incr_circ_post_2015, - 7 8 9, - 0.35 0.5 0.20); +*abs_decr_birth_circ; %sample(abs_decr_birth_circ, + 0 0.002 0.004, + 0.20 0.20 0.60 ); + +* rel_incr_circ_post_2013; %sample(rel_incr_circ_post_2013, + 2 3 4, + 0.25 0.5 0.25); *Vale - 20230823; +* rel_incr_circ_post_2023; %sample(rel_incr_circ_post_2023, + 2 3 4, + 0.25 0.5 0.25); *Vale - 20231010; ***Too many people on PrEP; diff --git a/hiv_synthesis.sas b/hiv_synthesis.sas index 805152c2..1360b22f 100644 --- a/hiv_synthesis.sas +++ b/hiv_synthesis.sas @@ -617,6 +617,7 @@ newp_seed = 7; 0.0001 0.001 0.003 0.01 0.1, 0.1 0.3 0.4 0.1 0.1); +* circ_red_10_14; %sample_uniform(circ_red_10_14, 0.1 0.2 0.3); * circ_inc_15_19; %sample_uniform(circ_inc_15_19, 1.5 2.0 3.0); * circ_red_20_30; %sample_uniform(circ_red_20_30, 0.3 0.4 0.5); * circ_red_30_50; %sample_uniform(circ_red_30_50, 0.15 0.25 0.35); @@ -624,12 +625,12 @@ newp_seed = 7; 0.8 1 3 7, 0.10 0.25 0.25 0.40); if circ_inc_rate=0.1 then rel_incr_circ_post_2013=min(rel_incr_circ_post_2013, 1); -* rel_incr_circ_post_2015; rel_incr_circ_post_2015=1; *This is overwritten in the Zimbabwe file to account for higher circ rates post 2015; +* rel_incr_circ_post_2023; rel_incr_circ_post_2023=0; * prob_birth_circ; %sample(prob_birth_circ, 0.05 0.1 0.40 0.9, 0.30 0.40 0.20 0.10); - +*abs_decr_birth_circ; abs_decr_birth_circ=0; * ALL PREP ; @@ -873,12 +874,13 @@ non_hiv_tb_prob_diag_e = 0.5 ; * OVERWRITES country specific parameters; * %include "/home/rmjlaph/SA_parameters.sas"; -* %include "/home/rmjlvca/Zim_parameters_07.sas"; - *%include "C:\Users\ValentinaCambiano\Projects\Modelling Consortium\MIHPSA\Zimbabwe\Phase 2 - Synthesis\PGM\Zim_parameters_07.sas"; +* %include "/home/rmjlvca/Zim_parameters_08_f.sas"; + *%include "C:\Users\ValentinaCambiano\Projects\Modelling Consortium\MIHPSA\Zimbabwe\Phase 2 - Synthesis\PGM\Zim_parameters_08_f.sas"; * inc_cat is defined in the include statement so these lines have been moved downwards from the main parameter section JAS Nov23; if inc_cat = 1 then prob_pregnancy_base = prob_pregnancy_base * 1.75 ; if inc_cat = 3 then prob_pregnancy_base = prob_pregnancy_base / 1.75 ; +if inc_cat = 4 then prob_pregnancy_base = prob_pregnancy_base / 1.25 ; prob_pregnancy_base = round(prob_pregnancy_base,0.001); * dependent_on_time_step_length ; @@ -1246,27 +1248,6 @@ inc12=0.016; inc13=0.012; end; -*Vale 20230808; -*This is used for Zimbabwe; - -if inc_cat=1 and caldate1=1984 then do; -*Inc1 is obtained as 0.18 (inc1 for inc_Cat)/14*19=0.2443; -*1.0643 = 1 + (0.2443-0.18); -inc1=0.2443/1.0643;*19 years instead of 14, so a total of 139 years; -inc2=0.1650/1.0643; -inc3=0.1440/1.0643; -inc4=0.1140/1.0643; -inc5=0.0900/1.0643; -inc6=0.0800/1.0643; -inc7=0.0680/1.0643; -inc8=0.0470/1.0643; -inc9 =0.036/1.0643; -inc10=0.027/1.0643; -inc11=0.021/1.0643; -inc12=0.016/1.0643; -inc13=0.012/1.0643; -end; - if inc_cat=2 then do; inc1=0.1500; *-65 to -55; inc2=0.1300; *-55 to -45; @@ -1299,13 +1280,28 @@ inc12=0.026; inc13=0.020; end; - +*2nd October 2023; +if inc_cat=4 and caldate1=1984 then do; +inc1 =0.15004;*-75 to -65, 9 years ; +inc2 =0.15071;*-65 to -55, 10 years ; +inc3 =0.13471;*-55 to -45; +inc4 =0.11871;*-45 to -35; +inc5 =0.10271;*-35 to -25; +inc6 =0.08671;*-25 to -15; +inc7 =0.07071;*-15 to -5; +inc8 =0.05471;*-5 to 5; +inc9 =0.03871;*5 to 15; +inc10=0.02965;*15 to 25; +inc11=0.02224;*25 to 35; +inc12=0.01730;*35 to 45; +inc13=0.01318;*45 to 55; +inc14=0.00988;*55 to 65; +end; cum2=inc1+inc2; cum3=cum2+inc3;cum4=cum3+inc4;cum5=cum4+inc5;cum6=cum5+inc6;cum7=cum6+inc7;cum8=cum7+inc8; -cum9=cum8+inc9;cum10=cum9+inc10; cum11=cum10+inc11; cum12=cum11+inc12; +cum9=cum8+inc9;cum10=cum9+inc10; cum11=cum10+inc11; cum12=cum11+inc12; cum13=cum12+inc13; e=rand('uniform'); if 0.0 <= e < inc1 then age=-69+rand('uniform')*14; -if caldate1=1984 then do;if 0.0 <= e < inc1 then age=-74+rand('uniform')*19;end; if inc1 <= e < cum2 then age=-55+rand('uniform')*10; if cum2 <= e < cum3 then age=-45+rand('uniform')*10; if cum3 <= e < cum4 then age=-35+rand('uniform')*10; @@ -1319,6 +1315,23 @@ if cum10 <= e < cum11 then age= 35+rand('uniform')*10; if cum11 <= e < cum12 then age= 45+rand('uniform')*10; if cum12 <= e then age= 55+rand('uniform')*10; +if caldate1=1984 and inc_cat=4 then do; +e=rand('uniform'); +if 0.0 <= e < inc1 then age=-74+rand('uniform')*9; +if inc1 <= e < cum2 then age=-65+rand('uniform')*10; +if cum2 <= e < cum3 then age=-55+rand('uniform')*10; +if cum3 <= e < cum4 then age=-45+rand('uniform')*10; +if cum4 <= e < cum5 then age=-35+rand('uniform')*10; +if cum5 <= e < cum6 then age=-25+rand('uniform')*10; +if cum6 <= e < cum7 then age=-15+rand('uniform')*10; +if cum7 <= e < cum8 then age=-5+rand('uniform')*10; +if cum8 <= e < cum9 then age= 5+rand('uniform')*10; +if cum9 <= e < cum10 then age= 15+rand('uniform')*10; +if cum10<= e < cum11 then age= 25+rand('uniform')*10; +if cum11 <= e < cum12 then age= 35+rand('uniform')*10; +if cum12 <= e < cum13 then age= 45+rand('uniform')*10; +if cum13 <= e then age= 55+rand('uniform')*10; +end; age =round(age ,.25); @@ -1717,6 +1730,9 @@ eff_prob_return_adc = prob_return_adc ; eff_test_targeting = test_targeting; +* define eff_prob_birth_circ; +eff_prob_birth_circ=prob_birth_circ; + keep_going_1999=.; keep_going_2004=.; keep_going_2016=.; keep_going_2020=.; * eff sex worker program variables; @@ -1919,11 +1935,11 @@ dead_tm1=0; ***LBM21 Assume a proportion of men were circumcised at birth prior to 1989; -mcirc =0;birth_circ=0; +mcirc =0;birth_circ=0;new_birth_circ=0; if gender=1 and age gt 0.25 then do; h = rand('uniform'); -if h < prob_birth_circ then do;mcirc =1;birth_circ=1;end; +if h < prob_birth_circ then do;mcirc =1;birth_circ=1;new_birth_circ=1;end; if mcirc =1 then date_mcirc=0; end; @@ -3089,32 +3105,48 @@ end; if 10 le age lt 20 then do; -if 2013 < caldate{t} le 2019 then prob_circ = ((2013-mc_int)*circ_inc_rate) + ((caldate{t}-2013)*circ_inc_rate*rel_incr_circ_post_2013*rel_incr_circ_post_2015); +if 2013 < caldate{t} le 2019 then prob_circ = ((2013-mc_int)*circ_inc_rate) + ((caldate{t}-2013)*circ_inc_rate*rel_incr_circ_post_2013); end; if 20 le age lt 30 then do; -if 2013 < caldate{t} le 2019 then prob_circ = (((2013-mc_int)*circ_inc_rate)*circ_red_20_30) + ((caldate{t}-2013)*circ_inc_rate*rel_incr_circ_post_2013*rel_incr_circ_post_2015)*circ_red_20_30; +if 2013 < caldate{t} le 2019 then prob_circ = (((2013-mc_int)*circ_inc_rate)*circ_red_20_30) + ((caldate{t}-2013)*circ_inc_rate*rel_incr_circ_post_2013)*circ_red_20_30; end; if 30 le age lt 50 then do; -if 2013 < caldate{t} le 2019 then prob_circ = (((2013-mc_int)*circ_inc_rate) * circ_red_30_50) + ((caldate{t}-2013)*circ_inc_rate*rel_incr_circ_post_2013*rel_incr_circ_post_2015) * circ_red_30_50; +if 2013 < caldate{t} le 2019 then prob_circ = (((2013-mc_int)*circ_inc_rate) * circ_red_30_50) + ((caldate{t}-2013)*circ_inc_rate*rel_incr_circ_post_2013) * circ_red_30_50; end; end; + * this is the default if note circ_inc_rate_year_i = . - no change in circ policy ; -if t ge 2 and 2019 < caldate{t} and circ_inc_rate_year_i=0 then do; -if 10 le age lt 20 then prob_circ = (((2013-mc_int)*circ_inc_rate)) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013*rel_incr_circ_post_2015); -if 20 le age lt 30 then prob_circ = (((2013-mc_int)*circ_inc_rate) * circ_red_20_30) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013*rel_incr_circ_post_2015) * circ_red_20_30; -if 30 le age lt 50 then prob_circ = (((2013-mc_int)*circ_inc_rate) * circ_red_30_50) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013*rel_incr_circ_post_2015) * circ_red_30_50; +if t ge 2 and 2019 < caldate{t} <=2023 and circ_inc_rate_year_i=0 then do; +if 10 le age lt 20 then prob_circ = (((2013-mc_int)*circ_inc_rate)) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013); +if 20 le age lt 30 then prob_circ = (((2013-mc_int)*circ_inc_rate) * circ_red_20_30) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013) * circ_red_20_30; +if 30 le age lt 50 then prob_circ = (((2013-mc_int)*circ_inc_rate) * circ_red_30_50) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013) * circ_red_30_50; +end; + +**change years to year_interv once happy with runs; +if t ge 2 and 2023 < caldate{t} < 2030 and circ_inc_rate_year_i=0 then do; +if 10 le age lt 14 then prob_circ = (((2013-mc_int)*circ_inc_rate) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013) + ((caldate{t}-2023)*circ_inc_rate*rel_incr_circ_post_2023)) * circ_red_10_14; +if 15 le age lt 20 then prob_circ = (((2013-mc_int)*circ_inc_rate) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013) + ((caldate{t}-2023)*circ_inc_rate*rel_incr_circ_post_2023)) * circ_inc_15_19; +if 20 le age lt 30 then prob_circ = (((2013-mc_int)*circ_inc_rate) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013) + ((caldate{t}-2023)*circ_inc_rate*rel_incr_circ_post_2023)) * circ_red_20_30; +if 30 le age lt 50 then prob_circ = (((2013-mc_int)*circ_inc_rate) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013) + ((caldate{t}-2023)*circ_inc_rate*rel_incr_circ_post_2023)) * circ_red_30_50; +end; + +if t ge 2 and caldate{t} >= 2030 and circ_inc_rate_year_i=0 then do; +if 10 le age lt 14 then prob_circ = (((2013-mc_int)*circ_inc_rate) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013) + ((2030-2023)*circ_inc_rate*rel_incr_circ_post_2023)) * circ_red_10_14; +if 15 le age lt 20 then prob_circ = (((2013-mc_int)*circ_inc_rate) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013) + ((2030-2023)*circ_inc_rate*rel_incr_circ_post_2023)) * circ_inc_15_19; +if 20 le age lt 30 then prob_circ = (((2013-mc_int)*circ_inc_rate) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013) + ((2030-2023)*circ_inc_rate*rel_incr_circ_post_2023)) * circ_red_20_30; +if 30 le age lt 50 then prob_circ = (((2013-mc_int)*circ_inc_rate) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013) + ((2030-2023)*circ_inc_rate*rel_incr_circ_post_2023)) * circ_red_30_50; end; * note circ_inc_rate_year_i = 1 means circ stops in 10-15 year olds; if t ge 2 and &year_interv <= caldate{t} and circ_inc_rate_year_i = 1 then do;*option=1 - no circ in under 15s and increased rate in 15-19 year olds; if age lt 15 then prob_circ =0; -if 15 le age lt 20 then prob_circ = (((2013-mc_int)*circ_inc_rate)) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013*rel_incr_circ_post_2015)*circ_inc_15_19; -if 20 le age lt 30 then prob_circ = (((2013-mc_int)*circ_inc_rate) * circ_red_20_30) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013*rel_incr_circ_post_2015) * circ_red_20_30; -if 30 le age lt 50 then prob_circ = (((2013-mc_int)*circ_inc_rate) * circ_red_30_50) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013*rel_incr_circ_post_2015) * circ_red_30_50; +if 15 le age lt 20 then prob_circ = (((2013-mc_int)*circ_inc_rate)) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013)*circ_inc_15_19; +if 20 le age lt 30 then prob_circ = (((2013-mc_int)*circ_inc_rate) * circ_red_20_30) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013) * circ_red_20_30; +if 30 le age lt 50 then prob_circ = (((2013-mc_int)*circ_inc_rate) * circ_red_30_50) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013) * circ_red_30_50; end; if t ge 2 and &year_interv <= caldate{t} and circ_inc_rate_year_i = 2 then do; *option=2 - no further circ; @@ -3123,17 +3155,17 @@ end; if t ge 2 and &year_interv <= caldate{t} and circ_inc_rate_year_i = 3 then do; *option=3- no circ in under 15s and NO increased rate in 15-19 year olds; if age lt 15 then prob_circ =0; -if 15 le age lt 20 then prob_circ = (((2013-mc_int)*circ_inc_rate)) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013*rel_incr_circ_post_2015); -if 20 le age lt 30 then prob_circ = (((2013-mc_int)*circ_inc_rate) * circ_red_20_30) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013*rel_incr_circ_post_2015) * circ_red_20_30; -if 30 le age lt 50 then prob_circ = (((2013-mc_int)*circ_inc_rate) * circ_red_30_50) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013*rel_incr_circ_post_2015) * circ_red_30_50; +if 15 le age lt 20 then prob_circ = (((2013-mc_int)*circ_inc_rate)) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013); +if 20 le age lt 30 then prob_circ = (((2013-mc_int)*circ_inc_rate) * circ_red_20_30) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013) * circ_red_20_30; +if 30 le age lt 50 then prob_circ = (((2013-mc_int)*circ_inc_rate) * circ_red_30_50) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013) * circ_red_30_50; end; if t ge 2 and &year_interv <= caldate{t} and circ_inc_rate_year_i = 4 then do;*option=4 - no circ in under 15s, no increased rate in 15-19yo, stop VMMC after 5 years; if caldate{t} <= 2026.5 then do; if age lt 15 then prob_circ =0; - if 15 le age lt 20 then prob_circ = (((2013-mc_int)*circ_inc_rate)) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013*rel_incr_circ_post_2015); - if 20 le age lt 30 then prob_circ = (((2013-mc_int)*circ_inc_rate) * circ_red_20_30) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013*rel_incr_circ_post_2015) * circ_red_20_30; - if 30 le age lt 50 then prob_circ = (((2013-mc_int)*circ_inc_rate) * circ_red_30_50) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013*rel_incr_circ_post_2015) * circ_red_30_50; + if 15 le age lt 20 then prob_circ = (((2013-mc_int)*circ_inc_rate)) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013); + if 20 le age lt 30 then prob_circ = (((2013-mc_int)*circ_inc_rate) * circ_red_20_30) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013) * circ_red_20_30; + if 30 le age lt 50 then prob_circ = (((2013-mc_int)*circ_inc_rate) * circ_red_30_50) + ((2019-2013)*circ_inc_rate*rel_incr_circ_post_2013) * circ_red_30_50; end; if caldate{t} > 2026.5 then do; @@ -3150,13 +3182,16 @@ if prob_circ ne . then prob_circ = min(prob_circ,1); ***Circumcision at birth; -new_mcirc=0; +if 2012 < caldate{t} < 2023 then eff_prob_birth_circ = (prob_birth_circ-((caldate{t}-2012)*abs_decr_birth_circ)); + +new_mcirc=0; new_birth_circ=0; u=rand('uniform'); if t ge 2 and age = 0.25 and gender=1 then do; - if vmmc_disrup_covid =1 and covid_disrup_affected = 1 then prob_birth_circ = 0; - if u < prob_birth_circ then do; + if vmmc_disrup_covid =1 and covid_disrup_affected = 1 then eff_prob_birth_circ = 0; + if u < eff_prob_birth_circ then do; mcirc=1; birth_circ=1; + new_birth_circ=1; new_mcirc=1; age_circ=age; date_mcirc=caldate{t}; end; @@ -12331,6 +12366,8 @@ if 35 <= age < 45 then ageg=3; if 45 <= age < 55 then ageg=4; if 55 <= age < 65 then ageg=5; +alive0_=0; if age=0 then alive0_=1; + if gender=1 then do; if 15 <= age < 25 then ageg1m=1;else ageg1m=0; if 25 <= age < 35 then ageg2m=1;else ageg2m=0; @@ -12401,6 +12438,7 @@ if 15 <= age < 65 then alive1564=1;else alive1564=0; if 15 <= age < 65 and gender=1 then alive1564_m=1;else alive1564_m=0; if 15 <= age < 65 and gender=2 then alive1564_w=1;else alive1564_w=0; +ageg014_=0;if 0 <= age < 15 then ageg014_=1; age_1849w=0;if 18 <= age < 50 and gender=2 then age_1849w=1; age_1844m=0;if 18 <= age < 45 and gender=1 then age_1844m=1; age_1844w=0;if 18 <= age < 45 and gender=2 then age_1844w=1; @@ -17393,11 +17431,16 @@ end; if 0 <= age and (death = . or caldate&j = death ) then do; - s_birth_circ + birth_circ ; s_mcirc_1014m + mcirc_1014m ; s_new_mcirc_1014m + new_mcirc_1014m ; - s_vmmc1014m + vmmc1014m ; s_new_vmmc1014m + new_vmmc1014m ; s_ageg1014m + ageg1014m; + s_birth_circ + birth_circ ; s_new_birth_circ + new_birth_circ; + s_mcirc_1014m + mcirc_1014m ; + s_new_mcirc + new_mcirc ; s_new_mcirc_1014m + new_mcirc_1014m ; + s_vmmc1014m + vmmc1014m ; + s_new_vmmc + new_vmmc ; s_new_vmmc1014m + new_vmmc1014m ; + s_ageg1014m + ageg1014m; + s_ageg014_ + ageg014_; end; - +if age=0 and (death = . or caldate&j = death ) then s_alive0_ + alive0_; * Note - all costs and DALYs now calculated to default age 80 (23Nov21); @@ -18342,9 +18385,10 @@ keep s_n cald run option /*number alive and in each age group*/ +s_alive0_ s_alive1549 s_alive1549_w s_alive1549_m s_alive1564 s_alive1564_w s_alive1564_m s_ageg1517m s_ageg1819m s_ageg1519m s_ageg2024m s_ageg2529m s_ageg3034m s_ageg3539m s_ageg4044m -s_ageg4549m s_ageg5054m s_ageg5559m s_ageg6064m s_ageg1564m s_ageg1549m s_age_1844m s_ageg1014m +s_ageg4549m s_ageg5054m s_ageg5559m s_ageg6064m s_ageg1564m s_ageg1549m s_age_1844m s_ageg1014m s_ageg014_ s_ageg1517w s_ageg1819w s_ageg1519w s_ageg2024w s_ageg2529w s_ageg3034w s_ageg3539w s_ageg4044w s_ageg4549w s_ageg5054w s_ageg5559w s_ageg6064w s_ageg1564w s_ageg1549w s_age_1844w s_ageg1m s_ageg2m s_ageg3m s_ageg4m s_ageg5m s_ageg1w s_ageg2w s_ageg3w s_ageg4w s_ageg5w @@ -18913,10 +18957,10 @@ s_mcirc_50plm s_mcirc_5054m s_mcirc_5559m s_mcirc_6064m s_mcirc_6569m s_mc s_vmmc s_vmmc1519m s_vmmc2024m s_vmmc2529m s_vmmc3034m s_vmmc3539m s_vmmc4044m s_vmmc4549m s_vmmc50plm s_new_mcirc s_new_mcirc_1519m s_new_mcirc_2024m s_new_mcirc_2529m s_new_mcirc_3034m s_new_mcirc_3539m s_new_mcirc_4044m s_new_mcirc_4549m -s_new_vmmc1519m s_new_vmmc2024m s_new_vmmc2529m s_new_vmmc3034m s_new_vmmc3539m s_new_vmmc4044m +s_new_vmmc s_new_vmmc1519m s_new_vmmc2024m s_new_vmmc2529m s_new_vmmc3034m s_new_vmmc3539m s_new_vmmc4044m s_new_vmmc4549m -s_birth_circ s_mcirc_1014m s_new_mcirc_1014m s_vmmc1014m s_new_vmmc1014m +s_birth_circ s_new_birth_circ s_mcirc_1014m s_new_mcirc_1014m s_vmmc1014m s_new_vmmc1014m /* blood pressure */ @@ -18956,7 +19000,7 @@ res_trans_factor_nn res_trans_factor_ii rate_loss_persistence incr_rate_int_lo poorer_cd4rise_fail_ii rate_res_ten fold_change_mut_risk adh_effect_of_meas_alert pr_switch_line prob_vl_meas_done red_adh_tb_adc red_adh_tox_pop red_adh_multi_pill_pop add_eff_adh_nnrti altered_adh_sec_line_pop prob_return_adc prob_lossdiag_adctb prob_lossdiag_non_tb_who3e higher_newp_less_engagement fold_tr switch_for_tox -rate_test_startprep_any rate_choose_stop_prep_oral prob_prep_oral_b circ_inc_rate circ_inc_15_19 circ_red_20_30 circ_red_30_50 +rate_test_startprep_any rate_choose_stop_prep_oral prob_prep_oral_b circ_inc_rate circ_red_10_14 circ_inc_15_19 circ_red_20_30 circ_red_30_50 p_hard_reach_w hard_reach_higher_in_men p_hard_reach_m inc_cat base_rate_sw prob_prep_any_restart_choice add_prep_any_uptake_sw cd4_monitoring base_rate_stop_sexwork rred_a_p higher_newp_with_lower_adhav rr_int_tox rate_birth_with_infected_child incr_mort_risk_dol_weightg @@ -19289,9 +19333,10 @@ drop s_n cald /*number alive and in each age group*/ +s_alive0_ s_alive1549 s_alive1549_w s_alive1549_m s_alive1564 s_alive1564_w s_alive1564_m s_ageg1517m s_ageg1819m s_ageg1519m s_ageg2024m s_ageg2529m s_ageg3034m s_ageg3539m s_ageg4044m -s_ageg4549m s_ageg5054m s_ageg5559m s_ageg6064m s_ageg1564m s_ageg1549m s_age_1844m s_ageg1014m +s_ageg4549m s_ageg5054m s_ageg5559m s_ageg6064m s_ageg1564m s_ageg1549m s_age_1844m s_ageg1014m s_ageg014_ s_ageg1517w s_ageg1819w s_ageg1519w s_ageg2024w s_ageg2529w s_ageg3034w s_ageg3539w s_ageg4044w s_ageg4549w s_ageg5054w s_ageg5559w s_ageg6064w s_ageg1564w s_ageg1549w s_age_1844w s_ageg1m s_ageg2m s_ageg3m s_ageg4m s_ageg5m s_ageg1w s_ageg2w s_ageg3w s_ageg4w s_ageg5w @@ -19854,10 +19899,10 @@ s_mcirc_50plm s_vmmc s_vmmc1519m s_vmmc2024m s_vmmc2529m s_vmmc3034m s_vmmc3539m s_vmmc4044m s_vmmc4549m s_vmmc50plm s_new_mcirc s_new_mcirc_1519m s_new_mcirc_2024m s_new_mcirc_2529m s_new_mcirc_3034m s_new_mcirc_3539m s_new_mcirc_4044m s_new_mcirc_4549m -s_new_vmmc1519m s_new_vmmc2024m s_new_vmmc2529m s_new_vmmc3034m s_new_vmmc3539m s_new_vmmc4044m +s_new_vmmc s_new_vmmc1519m s_new_vmmc2024m s_new_vmmc2529m s_new_vmmc3034m s_new_vmmc3539m s_new_vmmc4044m s_new_vmmc4549m -s_birth_circ s_mcirc_1014m s_new_mcirc_1014m s_vmmc1014m s_new_vmmc1014m +s_birth_circ s_new_birth_circ s_mcirc_1014m s_new_mcirc_1014m s_vmmc1014m s_new_vmmc1014m /* blood pressure */ @@ -21090,9 +21135,10 @@ keep run cald option /*number alive and in each age group*/ +s_alive0_ s_alive1549 s_alive1549_w s_alive1549_m s_alive1564 s_alive1564_w s_alive1564_m s_ageg1517m s_ageg1819m s_ageg1519m s_ageg2024m s_ageg2529m s_ageg3034m s_ageg3539m s_ageg4044m -s_ageg4549m s_ageg5054m s_ageg5559m s_ageg6064m s_ageg1564m s_ageg1549m s_age_1844m s_ageg1014m +s_ageg4549m s_ageg5054m s_ageg5559m s_ageg6064m s_ageg1564m s_ageg1549m s_age_1844m s_ageg1014m s_ageg014_ s_ageg1517w s_ageg1819w s_ageg1519w s_ageg2024w s_ageg2529w s_ageg3034w s_ageg3539w s_ageg4044w s_ageg4549w s_ageg5054w s_ageg5559w s_ageg6064w s_ageg1564w s_ageg1549w s_age_1844w s_ageg1m s_ageg2m s_ageg3m s_ageg4m s_ageg5m s_ageg1w s_ageg2w s_ageg3w s_ageg4w s_ageg5w @@ -21656,10 +21702,10 @@ s_mcirc_50plm s_vmmc s_vmmc1519m s_vmmc2024m s_vmmc2529m s_vmmc3034m s_vmmc3539m s_vmmc4044m s_vmmc4549m s_vmmc50plm s_new_mcirc s_new_mcirc_1519m s_new_mcirc_2024m s_new_mcirc_2529m s_new_mcirc_3034m s_new_mcirc_3539m s_new_mcirc_4044m s_new_mcirc_4549m -s_new_vmmc1519m s_new_vmmc2024m s_new_vmmc2529m s_new_vmmc3034m s_new_vmmc3539m s_new_vmmc4044m +s_new_vmmc s_new_vmmc1519m s_new_vmmc2024m s_new_vmmc2529m s_new_vmmc3034m s_new_vmmc3539m s_new_vmmc4044m s_new_vmmc4549m -s_birth_circ s_mcirc_1014m s_new_mcirc_1014m s_vmmc1014m s_new_vmmc1014m +s_birth_circ s_new_birth_circ s_mcirc_1014m s_new_mcirc_1014m s_vmmc1014m s_new_vmmc1014m /* blood pressure */ @@ -21700,7 +21746,7 @@ res_trans_factor_nn res_trans_factor_ii rate_loss_persistence incr_rate_int_low poorer_cd4rise_fail_ii rate_res_ten fold_change_mut_risk adh_effect_of_meas_alert pr_switch_line prob_vl_meas_done red_adh_tb_adc red_adh_tox_pop red_adh_multi_pill_pop add_eff_adh_nnrti altered_adh_sec_line_pop prob_return_adc prob_lossdiag_adctb prob_lossdiag_non_tb_who3e higher_newp_less_engagement fold_tr switch_for_tox -rate_test_startprep_any rate_choose_stop_prep_oral prob_prep_oral_b circ_inc_rate circ_inc_15_19 circ_red_20_30 circ_red_30_50 +rate_test_startprep_any rate_choose_stop_prep_oral prob_prep_oral_b circ_inc_rate circ_red_10_14 circ_inc_15_19 circ_red_20_30 circ_red_30_50 p_hard_reach_w hard_reach_higher_in_men p_hard_reach_m inc_cat base_rate_sw prob_prep_any_restart_choice add_prep_any_uptake_sw cd4_monitoring base_rate_stop_sexwork rred_a_p higher_newp_with_lower_adhav rr_int_tox rate_birth_with_infected_child nnrti_res_no_effect double_rate_gas_tox_taz incr_mort_risk_dol_weightg