/******************************************* * Macro to score the EPIC questionnaire * * Version 1.0 * * * * Last modified 6 October 2000 * ******************************************** * * * Instructions for use: * * * * 1) Create a SAS dataset containing the * * responses to each of the EPIC * * questions. Make sure that the * * variable names for each question use * * the notation of q#, where # is the * * question number found in the right * * margin of the instrument (e.g., the * * first question should be called q11). * * * * 2) Either include the following code in * * your SAS program or save it to a * * drive and refer to it using the * * %include statement * * (e.g., %include scoring.sas;) * * * * 3) Submit the macro call after * * submitting the code or %include * * statement from Step 2. * * (e.g., %score(input,output), where * * INPUT and OUTPUT are the names of * * your original dataset and your * * to-be-created scored dataset, * * respectively. * ******************************************** * * * Example of use, assuming: * * Input dataset is in c:\epic folder * * Output dataset should go in c:\epic * * Scoring macro file is called scoring.sas * * and is located in c:\epic * * * * libname epic 'c:\epic'; * * %include 'c:\epic\scoring.sas'; * * %score(epic.qdata,epic.scoredata); * *******************************************/ %macro score(input,output); data &output; set &input; * EPIC questions; array q15u{19} q23-q25 q42 q43 q48 q56-q58 q60-q64 q69-q72 q80; array q14u{2} q26 q59; array q04d{21} q28-q33 q49-q54 q65-q67 q74-q79; array q15d{6} q34 q44-q46 q55 q68; * EPIC standardized scores; array r15u{19} r23-r25 r42 r43 r48 r56-r58 r60-r64 r69-r72 r80; array r14u{2} r26 r59; array r04d{21} r28-r33 r49-r54 r65-r67 r74-r79; array r15d{6} r34 r44-r46 r55 r68; * SF-12 questions and arrays; array sc2{4} q14 q15 q16 q17; array sc3{2} q12 q13; array pf02_{2}; array pf04_{2}; array gh1_{4}; array bp2_{4}; array sf2_{4}; array vt2_{5}; array mh3_{5}; array mh4_{5}; array sc2ind{4} rp2_1 rp3_1 re2_1 re3_1; array sc3ind{2,2} pf02_1--pf04_2; * Create EPIC standardized scores; do i=1 to 19; r15u[i]=(q15u[i]-1)*25; end; do i=1 to 2; r14u[i]=round((q14u[i]-1)*100/3); end; do i=1 to 21; r04d[i]=(q04d[i]-4)*-25; end; do i=1 to 6; r15d[i]=(q15d[i]-5)*-25; end; r27=round((q27-3)*-100/3); r47=(q47-3)*-50; r73=(abs(q73-3)-2)*-50; * Create EPIC domain scores; if n (of r23-r27) >= 4 then uf=mean (of r23-r27); if n (of r42-r48) >= 6 then bf=mean (of r42-r48); if n (of r56-r64) >= 8 then sf=mean (of r56-r64); if n (of r69-r73) >= 4 then hf=mean (of r69-r73); if n (of r28-r34) >= 6 then ub=mean (of r28-r34); if n (of r49-r55) >= 6 then bb=mean (of r49-r55); if n (of r65-r68) >= 4 then sb=mean (of r65-r68); if n (of r74-r79) >= 5 then hb=mean (of r74-r79); if n (r24,r25,of r29-r33) >= 6 then uir=mean (r24,r25,of r29-r33); if n (r23,of r26-r28) >= 4 then uin=mean (r23,of r26-r28); if n (of r23-r34) >= 10 then u=mean (of r23-r34); if n (of r42-r55) >= 12 then b=mean (of r42-r55); if n (of r56-r68) >= 11 then s=mean (of r56-r68); if n (of r69-r79) >= 9 then h=mean (of r69-r79); satis=r80; * Create AUA Symptom Score; auascore=sum (of q35-q41); * Create SF-12 MCS and PCS scores; do i=1 to 4; sc2ind[i]=(2-sc2[i]); end; do i=1 to 2; if sc3[i] ne . then do j=1 to 2; sc3ind[i,j]=(sc3[i]=j); end; end; if q22 ne . then do j=1 to 4; sf2_[j]=(q22=j); end; if q21 ne . then do j=1 to 5; mh4_[j]=(q21=j); end; if q18 ne . then do j=1 to 4; bp2_[j]=(q18=6-j); end; if q11 ne . then do j=1 to 4; gh1_[j]=(q11=6-j); end; if q20 ne . then do j=1 to 5; vt2_[j]=(q20=7-j); end; if q19 ne . then do j=1 to 5; mh3_[j]=(q19=7-j); end; rawpcs12 = (-7.23216*pf02_1) + (-3.45555*pf02_2) + (-6.24397*pf04_1) + (-2.73557*pf04_2) + (-4.61617*rp2_1) + (-5.51747*rp3_1) + (-11.25544*bp2_1) + (-8.38063*bp2_2) + (-6.50522*bp2_3) + (-3.80130*bp2_4) + (-8.37399*gh1_1) + (-5.56461*gh1_2) + (-3.02396*gh1_3) + (-1.31872*gh1_4) + (-2.44706*vt2_1) + (-2.02168*vt2_2) + (-1.6185*vt2_3) + (-1.14387*vt2_4) + (-0.42251*vt2_5) + (-0.33682*sf2_1) + (-0.94342*sf2_2) + (-0.18043*sf2_3) + (0.11038*sf2_4) + (3.04365*re2_1) + (2.32091*re3_1) + (3.46638*mh3_1) + (2.90426*mh3_2) + (2.37241*mh3_3) + (1.36689*mh3_4) + (0.66514*mh3_5) + (4.61446*mh4_1) + (3.41593*mh4_2) + (2.34247*mh4_3) + (1.28044*mh4_4) + (0.41188*mh4_5); rawmcs12 = (3.93115*pf02_1) + (1.8684*pf02_2) + (2.68282*pf04_1) + (1.43103*pf04_2) + (1.4406*rp2_1) + (1.66968*rp3_1) + (1.48619*bp2_1) + (1.76691*bp2_2) + (1.49384*bp2_3) + (0.90384*bp2_4) + (-1.71175*gh1_1) + (-0.16891*gh1_2) + (0.03482*gh1_3) + (-0.06064*gh1_4) + (-6.02409*vt2_1) + (-4.88962*vt2_2) + (-3.29805*vt2_3) + (-1.65178*vt2_4) + (-0.92057*vt2_5) + (-6.29724*sf2_1) + (-8.26066*sf2_2) + (-5.63286*sf2_3) + (-3.13896*sf2_4) + (-6.82672*re2_1) + (-5.69921*re3_1) + (-10.19085*mh3_1) + (-7.92717*mh3_2) + (-6.31121*mh3_3) + (-4.09842*mh3_4) + (-1.94949*mh3_5) + (-16.15395*mh4_1) + (-10.77911*mh4_2) + (-8.09914*mh4_3) + (-4.59055*mh4_4) + (-1.95934*mh4_5); pcs12 = rawpcs12 + 56.57706; mcs12 = rawmcs12 + 60.75781; drop r23-r34 r42-r80 i j rawpcs12 rawmcs12 pf02_1--re3_1; label u='Urinary' uf='Urinary Function' ub='Urinary Bother' uir='Urinary Irritative' uin='Urinary Incontinence' b='Bowel' bf='Bowel Function' bb='Bowel Bother' s='Sexual' sf='Sexual Function' sb='Sexual Bother' h='Hormonal' hf='Hormonal Function' hb='Hormonal Bother' satis='Satisfaction' auascore='AUA Symptom Score' pcs12='SF-12 PCS' mcs12='SF-12 MCS'; run; %mend score;