/* coded by Janel Hanmer, July 2005 Updated 2007 after personal communication with John Brazier and Quality Metric about imputing level location Incorporated some code from Jenny Beuchner*/ /* This version of the SF-6D uses 11 questions from the SF-36 version 1. This code presumes the fields are numbered and coded as follows: sf3 = vigorous activities where 1="limited a lot" to 3="not limited at all" sf4 = moderate activities where 1="limited a lot" to 3="not limited at all" sf12 = bathing and dressing where 1="limited a lot" to 3="not limited at all" sf15 = physical limited work where 1="yes" and 2="no" sf18 = emotional accomplish less where 1="yes" and 2="no" sf21 = bodily pain where 1="none" to 6="very severe" sf22 = pain interferes with work where 1="not at all" to 5="extremely" sf24 = nervous where 1="all the time" to 6="none of the time" sf27 = energy where 1="all the time" to 6="none of the time" sf28 = downhearted and blue where 1="all the time" to 6="none of the time" sf32 = social activities where 1="all the time" to 5="none of the time" This code presumes that all missing, "don't know", and "refused" responses are coded as "." This code uses the Consistent model (Column 2, Table 4) from Brazier JE, Roberts J. The estimation of a preference-based measure of health from the SF-12. Medical Care. 2004; 42: 851-859. Model 2 from Table 4. */ /* insert the location of your dataset below */ clear use "C:\" /* first, recode questions 24, 27, and 28 to have 5 response categories instead of 6 */ gen rand=uniform() gen sf24r=sf24 replace sf24r=2 if sf24==2 replace sf24r=2 if sf24==3 & rand<.5 replace sf24r=3 if sf24==3 & rand>=.5 replace sf24r=3 if sf24==4 replace sf24r=4 if sf24==5 replace sf24r=5 if sf24==6 replace rand=uniform() gen sf27r=sf27 replace sf27r=2 if sf27==2 replace sf27r=2 if sf27==3 & rand<.5 replace sf27r=3 if sf27==3 & rand>=.5 replace sf27r=3 if sf27==4 replace sf27r=4 if sf27==5 replace sf27r=5 if sf27==6 replace rand=uniform() gen sf28r=sf28 replace sf28r=2 if sf28==2 replace sf28r=2 if sf28==3 & rand<.5 replace sf28r=3 if sf28==3 & rand>=.5 replace sf28r=3 if sf28==4 replace sf28r=4 if sf28==5 replace sf28r=5 if sf28==6 /*form the dimentions from Table 1 */ gen SFPhys=. replace SFPhys=1 if sf3==3 & sf4==3 & sf12==3 replace SFPhys=2 if sf3==2 & sf4==3 & sf12==3 replace SFPhys=2 if sf3==1 & sf4==3 & sf12==3 replace SFPhys=3 if sf4==2 & sf12==3 replace SFPhys=4 if sf4==1 & sf12==3 replace SFPhys=5 if sf12==2 replace SFPhys=6 if sf12==1 gen SFRole=. replace SFRole=1 if sf15==2 & sf18==2 replace SFRole=2 if sf15==1 & sf18==2 replace SFRole=3 if sf18==1 /* if sf18=1, then same SF-6D score will be assigned regardless of the response to sf-15, so I have collapsed Role levels 3 and 4 */ gen SFSocial=. replace SFSocial=1 if sf32==5 replace SFSocial=2 if sf32==4 replace SFSocial=3 if sf32==3 replace SFSocial=4 if sf32==2 replace SFSocial=5 if sf32==1 gen SFPain=. replace SFPain=1 if sf21==1 & sf22==1 replace SFPain=2 if sf21>1 & sf22=1 replace SFPain=3 if sf22==2 replace SFPain=4 if sf22==3 replace SFPain=5 if sf22==4 replace SFPain=6 if sf22==5 gen SFMental=. replace SFMental=1 if sf24r==5 | sf28r==5 replace SFMental=2 if sf24r==4 | sf28r==4 replace SFMental=3 if sf24r==3 | sf28r==3 replace SFMental=4 if sf24r==2 | sf28r==2 replace SFMental=5 if sf24r==1 | sf28r==1 replace SFMental=. if sf24<1 | sf24>5 replace SFMental=. if sf28<1 | sf28>5 gen SFVital=. replace SFVital=1 if sf27r==1 replace SFVital=2 if sf27r==2 replace SFVital=3 if sf27r==3 replace SFVital=4 if sf27r==4 replace SFVital=5 if sf27r==5 /*create MOST category if any dimention is at its worst state */ gen most=0 replace most=1 if SFPhys==4 | SFPhys==5 | SFPhys==6 | SFRole==3 | SFRole==4 | SFSocial==4 | SFSocial==5 | SFPain==5 | SFPain==6 | SFMental==4 | SFMental==5 | SFVital==4 | SFVital==5 /*assign decriments based on level from consistent in table 4 and calcuate score*/ gen pf1=. replace pf1=0 if SFPhys==1 replace pf1=-.035 if SFPhys==2 replace pf1=-.035 if SFPhys==3 replace pf1=-.044 if SFPhys==4 replace pf1=-.056 if SFPhys== 5 replace pf1=-.117 if SFPhys==6 gen rl1=. replace rl1=0 if SFRole==1 replace rl1=-.053 if SFRole>1 gen sc1=. replace sc1=0 if SFSocial==1 replace sc1=-.057 if SFSocial==2 replace sc1=-.059 if SFSocial==3 replace sc1=-.072 if SFSocial==4 replace sc1=-.087 if SFSocial==5 gen pn1=. replace pn1=0 if SFPain==1 replace pn1=-.042 if SFPain==2 replace pn1=-.042 if SFPain==3 replace pn1=-.065 if SFPain==4 replace pn1=-.102 if SFPain==5 replace pn1=-.171 if SFPain==6 gen mh1=. replace mh1=0 if SFMental==1 replace mh1=-.042 if SFMental==2 replace mh1=-.042 if SFMental==3 replace mh1=-.100 if SFMental==4 replace mh1=-.118 if SFMental==5 gen v1=. replace v1=0 if SFVital==1 replace v1=-.071 if SFVital==2 replace v1=-.071 if SFVital==3 replace v1=-.071 if SFVital==4 replace v1=-.092 if SFVital==5 gen mst1=. replace mst1=0 if most==0 replace mst1=-.061 if most==1 gen SF6D = 1 + pf1+rl1+sc1+pn1+mh1+v1+mst1 replace SF6D=. if pf1==. | rl1==. | sc1==. | pn1==. | mh1==. | v1==. | mst1==.