/* rtrendi.dlg *! VERSION 1.3.4 15dec2022 */ VERSION 12.0 SYNCHRONOUS_ONLY INCLUDE _std_medium DEFINE _dlght 340 DEFINE _dlgwd 535 INCLUDE header HELP hlp1, view("help rtrend") RESET res1 DEFINE _x _lft DEFINE _y _top DEFINE _cx 100 DEFINE wid 30 SCRIPT PREINIT BEGIN create STRING cmd create STRING dlgName dlgName.setvalue class _dlg_rsrcname END **# DIALOG main DIALOG main, label("rtrendi - Trend Test") tabtitle("Main") BEGIN GROUPBOX gb_data _lft _top 160 90, label("Data type") RADIO rb_freq _ilft _ss 110 ., label("Frequency") first default(1) option(data(freq)) onclickon(program type_freq) RADIO rb_pt _ilft _ss 110 ., label("Person-time") last option(data(pt)) onclickon(program type_pt) GROUPBOX gb_st 180 _top 160 90, label("Study type") RADIO rb_co +10 _ss 110 ., label("Cohort") first default(1) onclickon(program st_co) RADIO rb_cs @ _ss 110 ., label("Cross-Sectional") middle onclickon(program st_co) RADIO rb_cc @ _ss 110 ., label("Case-Control") last onclickon(program st_cc) GROUPBOX gb_stat 350 _top 165 90, label("Required statistic") RADIO rb_rr +10 _ss 140 ., label("Risk/Prevalence ratio") first default(1) RADIO rb_or @ _ss 140 ., label("Odds ratio") last CHECKBOX cb_ord _lft +50 280 ., label("Ordinal variable is the response variable") /* */ option(ordinal(resp)) onclickon(program ord_on) onclickoff(program ord_off) GROUPBOX gb_nst _lft 260 500 60, label("Name of the study") EDIT ed_nst _ilft _ss 470 ., option(nst) END **# DIALOG data DIALOG data, tabtitle("Data") BEGIN TEXT tx_c1 10 75 25 ., label("1") center TEXT tx_c2 @ _ms @ ., label("2") center TEXT tx_c3 @ _ms @ ., label("3") center TEXT tx_c4 @ _ms @ ., label("4") center TEXT tx_c5 @ _ms @ ., label("5") center TEXT tx_c6 @ _ms @ ., label("6") center TEXT tx_c7 @ _ms @ ., label("7") center TEXT tx_c8 @ _ms @ ., label("8") center TEXT tx_c9 @ _ms @ ., label("9") center TEXT tx_exp 40 30 40 ., label("Expo") center TEXT tx_met 40 50 40 ., label("Metric") EDIT ed_m1 @ _ms @ ., numonly EDIT ed_m2 @ _ms @ ., numonly EDIT ed_m3 @ _ms @ ., numonly EDIT ed_m4 @ _ms @ ., numonly EDIT ed_m5 @ _ms @ ., numonly EDIT ed_m6 @ _ms @ ., numonly EDIT ed_m7 @ _ms @ ., numonly EDIT ed_m8 @ _ms @ ., numonly EDIT ed_m9 @ _ms @ ., numonly GROUPBOX gb1 85 _top 145 300, label("Stratum 1") TEXT tx_c11 95 50 50 ., label("Cases") center EDIT ed_r1c1 @ _ms @ ., numonly EDIT ed_r2c1 @ _ms @ ., numonly EDIT ed_r3c1 @ _ms @ ., numonly EDIT ed_r4c1 @ _ms @ ., numonly EDIT ed_r5c1 @ _ms @ ., numonly EDIT ed_r6c1 @ _ms @ ., numonly EDIT ed_r7c1 @ _ms @ ., numonly EDIT ed_r8c1 @ _ms @ ., numonly EDIT ed_r9c1 @ _ms @ ., numonly TEXT tx_c10 150 30 65 ., label("") center TEXT tx_c12 150 50 65 ., label("Totals") center EDIT ed_r1c2 @ _ms @ ., numonly EDIT ed_r2c2 @ _ms @ ., numonly EDIT ed_r3c2 @ _ms @ ., numonly EDIT ed_r4c2 @ _ms @ ., numonly EDIT ed_r5c2 @ _ms @ ., numonly EDIT ed_r6c2 @ _ms @ ., numonly EDIT ed_r7c2 @ _ms @ ., numonly EDIT ed_r8c2 @ _ms @ ., numonly EDIT ed_r9c2 @ _ms @ ., numonly GROUPBOX gb2 235 _top 145 300, label("Stratum 2") TEXT tx_c21 245 50 50 ., label("Cases") center EDIT ed_r1c3 @ _ms @ ., numonly EDIT ed_r2c3 @ _ms @ ., numonly EDIT ed_r3c3 @ _ms @ ., numonly EDIT ed_r4c3 @ _ms @ ., numonly EDIT ed_r5c3 @ _ms @ ., numonly EDIT ed_r6c3 @ _ms @ ., numonly EDIT ed_r7c3 @ _ms @ ., numonly EDIT ed_r8c3 @ _ms @ ., numonly EDIT ed_r9c3 @ _ms @ ., numonly TEXT tx_c20 300 30 65 ., label("") center TEXT tx_c22 305 50 65 ., label("Totals") center EDIT ed_r1c4 @ _ms @ ., numonly EDIT ed_r2c4 @ _ms @ ., numonly EDIT ed_r3c4 @ _ms @ ., numonly EDIT ed_r4c4 @ _ms @ ., numonly EDIT ed_r5c4 @ _ms @ ., numonly EDIT ed_r6c4 @ _ms @ ., numonly EDIT ed_r7c4 @ _ms @ ., numonly EDIT ed_r8c4 @ _ms @ ., numonly EDIT ed_r9c4 @ _ms @ ., numonly GROUPBOX gb3 385 _top 145 300, label("Stratum 3") TEXT tx_c31 395 50 50 ., label("Cases") center EDIT ed_r1c5 @ _ms @ ., numonly EDIT ed_r2c5 @ _ms @ ., numonly EDIT ed_r3c5 @ _ms @ ., numonly EDIT ed_r4c5 @ _ms @ ., numonly EDIT ed_r5c5 @ _ms @ ., numonly EDIT ed_r6c5 @ _ms @ ., numonly EDIT ed_r7c5 @ _ms @ ., numonly EDIT ed_r8c5 @ _ms @ ., numonly EDIT ed_r9c5 @ _ms @ ., numonly TEXT tx_c30 450 30 65 ., label("") center TEXT tx_c32 450 50 65 ., label("Totals") center EDIT ed_r1c6 @ _ms @ ., numonly EDIT ed_r2c6 @ _ms @ ., numonly EDIT ed_r3c6 @ _ms @ ., numonly EDIT ed_r4c6 @ _ms @ ., numonly EDIT ed_r5c6 @ _ms @ ., numonly EDIT ed_r6c6 @ _ms @ ., numonly EDIT ed_r7c6 @ _ms @ ., numonly EDIT ed_r8c6 @ _ms @ ., numonly EDIT ed_r9c6 @ _ms @ ., numonly CHECKBOX cb_str _lft _xls 100 ., default(0) onclickon(program stratify_on) onclickoff(program stratify_off) /* */ label("Stratified data") TEXT tx_note +110 @ 400 ., label("(more than 9 categories and 3 strata can be defined using syntax)") END **# DIALOG opt DIALOG opt, tabtitle("Options") BEGIN INCLUDE _sp_level GROUPBOX gb_rc _lft 40 120 110, label("Reference category") RADIO rb_rcf _ilft _ss 110 ., label("First") first default(1) option(rc(f)) RADIO rb_rcl _ilft _ss 110 ., label("Last") middle option(rc(l)) RADIO rb_rcp _ilft _ss 110 ., label("Previous") middle option(rc(p)) RADIO rb_rcs _ilft _ss 110 ., label("Subsequent") last option(rc(s)) GROUPBOX gb_ci 140 40 235 110, label("Confidence interval type for proportions") RADIO rb_none +10 _ss 170 ., label("None") first default(1) option(none) RADIO rb_wils @ _ss 170 ., label("Wilson") middle option(wilson) RADIO rb_wald @ _ss 170 ., label("Wald") middle option(wald) RADIO rb_exac @ _ss 170 ., label("Exact") last option(exact) GROUPBOX gb_zero 385 40 125 110, label("Zero-cell correction") RADIO rb_zn +10 _ss 110 ., label("None") first default(1) option(zero(n)) RADIO rb_zc @ _ss 110 ., label("Constant") middle option(zero(c)) RADIO rb_zp @ _ss 110 ., label("Proportional") middle option(zero(p)) RADIO rb_zr @ _ss 110 ., label("Reciprocal") last option(zero(r)) END **# PROGRAM type_freq PROGRAM type_freq BEGIN // show study type call main.gb_st.show call main.rb_co.show call main.rb_cs.show call main.rb_cc.show call main.rb_co.seton // show required statistic call main.gb_stat.show call main.rb_rr.show call main.rb_or.show call main.rb_rr.seton // show zero correction call opt.gb_zero.show call opt.rb_zn.show call opt.rb_zc.show call opt.rb_zp.show call opt.rb_zr.show call opt.rb_zn.seton // ci for frequency data (4 opt) call opt.rb_wils.show call opt.rb_wald.show call opt.rb_exac.setposition . 120 . . call opt.rb_none.seton call data.tx_c10.setlabel "" call data.tx_c20.setlabel "" call data.tx_c30.setlabel "" END **# PROGRAM type_pt PROGRAM type_pt BEGIN // hide study type call main.rb_co.seton call main.gb_st.hide call main.rb_co.hide call main.rb_cs.hide call main.rb_cc.hide // hide required statistic call main.rb_rr.seton call main.gb_stat.hide call main.rb_rr.hide call main.rb_or.hide // hide zero correction call opt.rb_zn.seton call opt.gb_zero.hide call opt.rb_zn.hide call opt.rb_zc.hide call opt.rb_zp.hide call opt.rb_zr.hide // ci for person-time (2 opt) call opt.rb_none.seton call opt.rb_wils.hide call opt.rb_wald.hide call opt.rb_exac.setposition . 80 . . call data.tx_c10.setlabel "Person-" call data.tx_c20.setlabel "Person-" call data.tx_c30.setlabel "Person-" call data.tx_c12.setlabel "Time" call data.tx_c22.setlabel "Time" call data.tx_c32.setlabel "Time" END **# PROGRAM st_co PROGRAM st_co BEGIN // enable required statistic call main.gb_stat.enable call main.rb_rr.enable call main.rb_or.enable // default for cohort is rr call main.rb_rr.seton call data.tx_c12.setlabel "Totals" call data.tx_c22.setlabel "Totals" call data.tx_c32.setlabel "Totals" END **# PROGRAM st_cc PROGRAM st_cc BEGIN // default for case-control is or call main.rb_or.seton // disable required statistic call main.gb_stat.disable call main.rb_rr.disable call main.rb_or.disable call data.tx_c12.setlabel "Controls" call data.tx_c22.setlabel "Controls" call data.tx_c32.setlabel "Controls" END **# PROGRAM stratify_on PROGRAM stratify_on BEGIN call data.gb1.setlabel "Stratum 1" call data.gb2.setlabel "Stratum 2" call data.gb2.show call data.tx_c21.show call data.ed_r1c3.show call data.ed_r2c3.show call data.ed_r3c3.show call data.ed_r4c3.show call data.ed_r5c3.show call data.ed_r6c3.show call data.ed_r7c3.show call data.ed_r8c3.show call data.ed_r9c3.show call data.tx_c20.show call data.tx_c22.show call data.ed_r1c4.show call data.ed_r2c4.show call data.ed_r3c4.show call data.ed_r4c4.show call data.ed_r5c4.show call data.ed_r6c4.show call data.ed_r7c4.show call data.ed_r8c4.show call data.ed_r9c4.show call data.gb3.setlabel "Stratum 3" call data.gb3.show call data.tx_c31.show call data.ed_r1c5.show call data.ed_r2c5.show call data.ed_r3c5.show call data.ed_r4c5.show call data.ed_r5c5.show call data.ed_r6c5.show call data.ed_r7c5.show call data.ed_r8c5.show call data.ed_r9c5.show call data.tx_c30.show call data.tx_c32.show call data.ed_r1c6.show call data.ed_r2c6.show call data.ed_r3c6.show call data.ed_r4c6.show call data.ed_r5c6.show call data.ed_r6c6.show call data.ed_r7c6.show call data.ed_r8c6.show call data.ed_r9c6.show call data.tx_note.setlabel "(more than 9 categories and 3 strata can be defined using syntax)" END **# PROGRAM stratify_off PROGRAM stratify_off BEGIN call data.gb1.setlabel "" call data.gb2.setlabel "" call data.gb2.hide call data.tx_c21.hide call data.ed_r1c3.hide call data.ed_r2c3.hide call data.ed_r3c3.hide call data.ed_r4c3.hide call data.ed_r5c3.hide call data.ed_r6c3.hide call data.ed_r7c3.hide call data.ed_r8c3.hide call data.ed_r9c3.hide call data.tx_c20.hide call data.tx_c22.hide call data.ed_r1c4.hide call data.ed_r2c4.hide call data.ed_r3c4.hide call data.ed_r4c4.hide call data.ed_r5c4.hide call data.ed_r6c4.hide call data.ed_r7c4.hide call data.ed_r8c4.hide call data.ed_r9c4.hide call data.gb3.setlabel "" call data.gb3.hide call data.tx_c31.hide call data.ed_r1c5.hide call data.ed_r2c5.hide call data.ed_r3c5.hide call data.ed_r4c5.hide call data.ed_r5c5.hide call data.ed_r6c5.hide call data.ed_r7c5.hide call data.ed_r8c5.hide call data.ed_r9c5.hide call data.tx_c30.hide call data.tx_c32.hide call data.ed_r1c6.hide call data.ed_r2c6.hide call data.ed_r3c6.hide call data.ed_r4c6.hide call data.ed_r5c6.hide call data.ed_r6c6.hide call data.ed_r7c6.hide call data.ed_r8c6.hide call data.ed_r9c6.hide call data.tx_note.setlabel "(more than 9 categories can be defined using syntax)" END **# PROGRAM ord_on PROGRAM ord_on BEGIN // disable data type call main.rb_freq.seton call main.rb_freq.disable call main.rb_pt.disable // disable cc type call main.rb_co.seton call main.rb_cc.disable // disable strata call data.cb_str.setoff call data.cb_str.disable // change labels call data.tx_exp.setlabel "Respon." call data.tx_c11.setlabel "Expo." call data.tx_c12.setlabel "Totals" // disable options call opt.rb_rcp.disable call opt.rb_rcs.disable call opt.rb_none.disable call opt.rb_wils.disable call opt.rb_wald.disable call opt.rb_exac.disable call opt.rb_zn.disable call opt.rb_zc.disable call opt.rb_zp.disable call opt.rb_zr.disable END **# PROGRAM ord_off PROGRAM ord_off BEGIN // enable data type call main.rb_freq.seton call main.rb_freq.enable call main.rb_pt.enable // enable study type call main.rb_cc.enable // enable strata call data.cb_str.enable // change labels call data.tx_exp.setlabel "Expo" call data.tx_c11.setlabel "Cases" // enable options call opt.rb_rcp.enable call opt.rb_rcs.enable call opt.rb_none.enable call opt.rb_wils.enable call opt.rb_wald.enable call opt.rb_exac.enable call opt.rb_zn.enable call opt.rb_zc.enable call opt.rb_zp.enable call opt.rb_zr.enable END **# PROGRAM command PROGRAM command BEGIN put "rtrend__utils genCommand, " put "clsname(" dlgName ") " stata hidden immediate put "rtrendi " put cmd beginoptions option radio(main rb_freq rb_pt) // data option radio(opt rb_rcf rb_rcl rb_rcp rb_rcs) // rc if main.rb_freq { // build the st() parameter if main.rb_co & main.rb_rr { put " st(co rr)" } if main.rb_co & main.rb_or { put " st(co or)" } if main.rb_cs & main.rb_rr { put " st(cs pr)" } if main.rb_cs & main.rb_or { put " st(cs or)" } if main.rb_cc { put " st(cc)" } if main.cb_ord { option main.cb_ord } else { option radio(opt rb_zn rb_zc rb_zp rb_zr) // zero } } if !main.cb_ord { // ci type if (main.rb_pt | !main.rb_cc) { option radio(opt rb_none rb_wils rb_wald rb_exac) } INCLUDE _level_opt_pr // ci level } optionarg main.ed_nst // nst endoptions END