/********************************************************************************; VFQ-25 scoring algorithm. Program was adopted from Los Angeles Latino Eye Study (LALES) *********************************************************************************/ *==== SCALE 1: General Health (A1) ====*; v25_gh1=gh1; if v25_gh1=. then fgh_1=.; else if v25_gh1=1 then fgh_1=100; * Excellent *; else if v25_gh1=2 then fgh_1=75; * Very Good *; else if v25_gh1=3 then fgh_1=50; * Good *; else if v25_gh1=4 then fgh_1=25; * Fair *; else if v25_gh1=5 then fgh_1=0; * Poor *; *==== SCALE 2: General Vision (B1)====*; if v25_gv1=. then fgv_1=.; else if v25_gv1=1 then fgv_1=100; * Excellent *; else if v25_gv1=2 then fgv_1=80; * Good *; else if v25_gv1=3 then fgv_1=60; * Fair *; else if v25_gv1=4 then fgv_1=40; * Poor *; else if v25_gv1=5 then fgv_1=20; * Very Poor *; else if v25_gv1=6 then fgv_1=0; * Completely Blind *; *==== SCALE 3: Ocular Pain (B3,B18) ====*; if v25_op1=. then fop_1=.; else if v25_op1=1 then fop_1=100; * None *; else if v25_op1=2 then fop_1=75; * Mild *; else if v25_op1=3 then fop_1=50; * Moderate *; else if v25_op1=4 then fop_1=25; * Severe *; else if v25_op1=5 then fop_1=0; * Very Severe *; *==========================================================================* * NOTE: Question B18 has been "REVERSE CODED" in MDB file, the codes run * * from "None of the time" with a score of "1" to "All of the time" * * with a score of "5" * *==========================================================================*; if v25_op2=. then fop_2=.; else if v25_op2=1 then fop_2=100; * None of the time *; else if v25_op2=2 then fop_2=75; * A little of the time *; else if v25_op2=3 then fop_2=50; * Some of the time *; else if v25_op2=4 then fop_2=25; * Most of the time *; else if v25_op2=5 then fop_2=0; * All of the time *; *===== SCALE 4: Near Vision (B4,B5,B6) =====*; array nv{*} v25_nv1 v25_nv2 v25_nv3; array nvd{*} fnv_1 fnv_2 fnv_3; do i=1 to 3; if nv{i}=. then nvd{i}=.; else if nv{i}=1 then nvd{i}=100; else if nv{i}=2 then nvd{i}=75; else if nv{i}=3 then nvd{i}=50; else if nv{i}=4 then nvd{i}=25; else if nv{i}=5 then nvd{i}=0; * Stop due eyesight *; else if nv{i}=6 then nvd{i}=.; * non-vision related *; end; *==== SCALE 5: Distance Vision (B7,B8,B13) ====*; array dv{*} v25_dv1 v25_dv2 v25_dv3; array dvd{*} fdv_1 fdv_2 fdv_3; do i=1 to 3; if dv{i}=. then dvd{i}=.; else if dv{i}=1 then dvd{i}=100; else if dv{i}=2 then dvd{i}=75; else if dv{i}=3 then dvd{i}=50; else if dv{i}=4 then dvd{i}=25; else if dv{i}=5 then dvd{i}=0; * Stop due eyesight *; else if dv{i}=6 then dvd{i}=.; * non-vision related *; end; *==== SCALE 6: Vision Related Social Function ====*; array sf{*} v25_sf1 v25_sf2; array sfd{*} fsf_1 fsf_2; do i=1 to 2; if sf{i}=. then sfd{i}=.; else if sf{i}=1 then sfd{i}=100; else if sf{i}=2 then sfd{i}=75; else if sf{i}=3 then sfd{i}=50; else if sf{i}=4 then sfd{i}=25; else if sf{i}=5 then sfd{i}=0; * Stop due eyesight *; else if sf{i}=6 then sfd{i}=.; * non-vision related *; end; *==== SCALE 7: Vision Related Mental Health ====*; if v25_mh1=. then fmh_1=.; else if v25_mh1=1 then fmh_1=100; else if v25_mh1=2 then fmh_1=75; else if v25_mh1=3 then fmh_1=50; else if v25_mh1=4 then fmh_1=25; else if v25_mh1=5 then fmh_1=0; array mh{*} v25_mh2 v25_mh3 v25_mh4; array mhd{*} fmh_2 fmh_3 fmh_4; do i=1 to 3; if mh{i}=. then mhd{i}=.; else if mh{i}=1 then mhd{i}=0; else if mh{i}=2 then mhd{i}=25; else if mh{i}=3 then mhd{i}=50; else if mh{i}=4 then mhd{i}=75; else if mh{i}=5 then mhd{i}=100; end; *==== SCALE 8: Vision Related Role Function (B16,B17)====*; *============================================================================* * NOTE: Question B16,B17 has been "REVERSE CODED" in MDB file, the codes * * run from "None of the time" with a score of "1" to "All of the time" * * with a score of "5" * *============================================================================*; array rf{*} v25_rf1 v25_rf2; array rfd{*} frf_1 frf_2; do i=1 to 2; if rf{i}=. then rfd{i}=.; else if rf{i}=1 then rfd{i}=100; * None of the time *; else if rf{i}=2 then rfd{i}=75; * A little of the time *; else if rf{i}=3 then rfd{i}=50; * Some of the time *; else if rf{i}=4 then rfd{i}=25; * Most of the time *; else if rf{i}=5 then rfd{i}=0; * All of the time *; end; *==== SCALE 9: Vision Related Dependencies ====*; array dp{*} v25_dp1 v25_dp2 v25_dp3; array dpd{*} fdp_1 fdp_2 fdp_3; do i=1 to 3; if dp{i}=. then dpd{i}=.; else if dp{i}=1 then dpd{i}=0; else if dp{i}=2 then dpd{i}=25; else if dp{i}=3 then dpd{i}=50; else if dp{i}=4 then dpd{i}=75; else if dp{i}=5 then dpd{i}=100; end; *==== SCALE 10: Driving Difficulties ====*; *=========================================================================* * NOTE: CURDR(Current Driving) has been coded as 0=No, 1=Yes in MDB file * * Recode it as 1=Yes 2=No to math with Clinical Questionnaire * *=========================================================================*; if curdr=0 then curdr=2; *=========================================================================* ** NOTE: v25_dr1 (have 4 categories) will expend to 5 categories by using **; ** question B.14b "Reason for gave up driving". **; ** if B.14b=Mainly eyesight => v25_dr1=5 (will convert to "0" score) **; ** if B.14b=Mainly other reasons => v25_dr1=. **; *==========================================================================; if r_gvup=1 then v25_dr1=5; if v25_dr1=. then fdr_1=.; else if v25_dr1=1 then fdr_1=100; else if v25_dr1=2 then fdr_1=75; else if v25_dr1=3 then fdr_1=50; else if v25_dr1=4 then fdr_1=25; else if v25_dr1=5 then fdr_1=0; if v25_dr2=. then fdr_2=.; else if v25_dr2=1 then fdr_2=100; else if v25_dr2=2 then fdr_2=75; else if v25_dr2=3 then fdr_2=50; else if v25_dr2=4 then fdr_2=25; else if v25_dr2=5 then fdr_2=0; * Stop due eyesight *; else if v25_dr2=6 then fdr_2=.; * non-vision related *; *==== SCALE 11: Color Vision ====*; if v25_cv1=. then fcv_1=.; else if v25_cv1=1 then fcv_1=100; else if v25_cv1=2 then fcv_1=75; else if v25_cv1=3 then fcv_1=50; else if v25_cv1=4 then fcv_1=25; else if v25_cv1=5 then fcv_1=0; * Stop due eyesight *; else if v25_cv1=6 then fcv_1=.; * non-vision related *; *==== SCALE 12: Peripheral Vision ====*; if v25_pv1=. then fpv_1=.; else if v25_pv1=1 then fpv_1=100; else if v25_pv1=2 then fpv_1=75; else if v25_pv1=3 then fpv_1=50; else if v25_pv1=4 then fpv_1=25; else if v25_pv1=5 then fpv_1=0; * Stop due eyesight *; else if v25_pv1=6 then fpv_1=.; * non-vision related *; *** Mean Score of each Scale ***; v25gh=round(fgh_1, .01); v25gv=round(fgv_1, .01); v25op=round(mean (of fop_1 fop_2), .01); v25nv=round(mean (of fnv_1-fnv_3), .01); v25dv=round(mean (of fdv_1-fdv_3), .01); v25sf=round(mean (of fsf_1 fsf_2), .01); v25mh=round(mean (of fmh_1-fmh_4), .01); v25rf=round(mean (of frf_1 frf_2), .01); v25dp=round(mean (of fdp_1-fdp_3), .01); v25dr=round(mean (of fdr_1 fdr_2), .01); v25cv=round(fcv_1, .01); v25pv=round(fpv_1, .01); v25_cm=round(mean (of fgh_1 fgv_1 fop_1 fop_2 fnv_1-fnv_3 fdv_1-fdv_3 fsf_1-fsf_2 fmh_1-fmh_4 frf_1 frf_2 fdp_1-fdp_3 fdr_1 fdr_2 fcv_1 fpv_1), .01); v25_sm=round(mean (of v25gh v25gv v25op v25nv v25dv v25sf v25mh v25rf v25dp v25dr v25cv v25pv), .01); *** Count # non_missing itmes for each subject ***; array mm{*} fgh_1 fgv_1 fop_1 fop_2 fnv_1-fnv_3 fdv_1-fdv_3 fsf_1-fsf_2 fmh_1-fmh_4 frf_1 frf_2 fdp_1-fdp_3 fdr_1 fdr_2 fcv_1 fpv_1; array nn{*} i1-i25; do i=1 to 25; if mm{i} ne . then nn{i}=1; else nn{i}=0; end; n_v25=sum (of i1-i25); DROP i i1-i25; FORMAT v25_gv1 GV. v25_mh1 v25_rf1 v25_rf2 v25_op2 recobj MH. v25_op1 OP. v25_nv1 v25_nv2 v25_nv3 v25_dv1 v25_dv2 v25_pv1 v25_sf1 v25_cv1 v25_sf2 v25_dv3 v25_dr1 v25_dr2 NV. curdr BI12F. nondr NDR. r_gvup GUP. v25_dp1 v25_mh2 v25_mh3 v25_dp2 v25_dp3 v25_mh4 TF. drnight GH. v25gh v25gv v25op v25nv v25dv v25sf v25mh v25rf v25dp v25dr v25cv v25pv v25_cm v25_sm f6.2; LENGTH curdr nondr r_gvup recobj drnight v25_gh1 v25_gv1 v25_op1 v25_op2 v25_nv1 v25_nv2 v25_nv3 v25_dv1 v25_dv2 v25_dv3 v25_sf1 v25_sf2 v25_mh1 v25_mh2 v25_mh3 v25_mh4 v25_rf1 v25_rf2 v25_dp1 v25_dp2 v25_dp3 v25_dr1 v25_dr2 v25_cv1 v25_pv1 fgh_1 fgv_1 fop_1 fop_2 fnv_1-fnv_3 fdv_1-fdv_3 fsf_1-fsf_2 fmh_1-fmh_4 frf_1 frf_2 fdp_1-fdp_3 fdr_1 fdr_2 fcv_1 fpv_1 v25gh v25gv v25op v25nv v25dv v25sf v25mh v25rf v25dp v25dr v25cv v25pv v25_cm v25_sm n_v25 3; LABEL curdr ="Currently Driving?" nondr ="Not Current Driver" r_gvup ="Reason for gave up driving" recobj ="Limit in recognizing people/objects" drnight="Vision while driving at night" v25_gh1="V25-Rate your overall health on a scale" v25_gv1="V25-At present time, your eyesight is" v25_op1="V25-How much of pain/discomf in eyes?" v25_op2="V25-Pain in eyes keep you from doing you like?" v25_nv1="V25-Difficulty read ordinary print" v25_nv2="V25-Difficulty work needs see well up close" v25_nv3="V25-Difficulty find things on a crowded shelf" v25_dv1="V25-Difficulty read street signs/store names" v25_dv2="V25-Difficulty go down steps in dim light" v25_dv3="V25-Difficulty going out to see movies, plays" v25_sf1="V25-Difficulty see how people react to things" v25_sf2="V25-difficulty visit people unknown at parties" v25_mh1="V25-How much do you worry eyesight?" v25_mh2="V25-Feel frustrated a lot due eyesight" v25_mh3="V25-Have much less control due eyesight" v25_mh4="V25-Worry about doing things embarrass due eyesight" v25_rf1="V25-Accomplish less than you liked?" v25_rf2="V25-Limited in how long could work?" v25_dp1="V25-Stay home most of time due eyesight" v25_dp2="V25-Rely what others tell due eyesight" v25_dp3="V25-Need a lot of help due eyesight" v25_dr1="V25-Difficulty driving at daytime in familiar places" v25_dr2="V25-Difficulty driving at night" v25_cv1="V25-Difficulty picking out/matching own clothes" v25_pv1="V25-Difficulty noticing objects while walking" fgh_1 ="V25-Rate your overall health on a scale" fgv_1 ="V25-At present time, your eyesight is" fop_1 ="V25-How much of pain/discomf in eyes?" fop_2 ="V25-Pain in eyes keep you from doing you like?" fnv_1 ="V25-Difficulty read ordinary print" fnv_2 ="V25-Difficulty work needs see well up close" fnv_3 ="V25-Difficulty find things on a crowded shelf" fdv_1 ="V25-Difficulty read street signs/store names" fdv_2 ="V25-Difficulty go down steps in dim light" fdv_3 ="V25-Difficulty recognized people across a room" fsf_1 ="V25-Difficulty see how people react to things" fsf_2 ="V25-difficulty visit people unknown at parties" fmh_1 ="V25-How much do you worry eyesight?" fmh_2 ="V25-Feel frustrated a lot due eyesight" fmh_3 ="V25-Have much less control due eyesight" fmh_4 ="V25-Worry about doing things embarrass due eyesight" frf_1 ="V25-Accomplish less than you liked?" frf_2 ="V25-Limited in how long could work?" fdp_1 ="V25-Stay home most of time due eyesight" fdp_2 ="V25-Rely what others tell due eyesight" fdp_3 ="V25-Need a lot of help due eyesight" fdr_1 ="V25-Difficulty driving at daytime in familiar places" fdr_2 ="V25-Difficulty driving at night" fcv_1 ="V25-Difficulty picking out/matching own clothes" fpv_1 ="V25-Difficulty noticing objects while walking" v25gh ="V25-General Health" v25gv ="V25-General Vision" v25op ="V25-Ocular Pain" v25nv ="V25-Near Vision" v25dv ="V25-Distance Vision" v25sf ="V25-Vision Related Social Function" v25mh ="V25-Vision Related Mental Health" v25rf ="V25-Vision Related Role Funtion" v25dp ="V25-Vision Related Dependency" v25dr ="V25-Driving Difficulties" v25cv ="V25-Color Vision" v25pv ="V25-Peripheral Vision" v25_cm ="V25-Comppo: Mean of q1-q25" v25_sm ="V25-Scalepo: Mean of scale 1-12" n_v25 ="# of non missing items on VFQ25";