672
Views
0
CrossRef citations to date
0
Altmetric
Research article

A SAS macro to compute HUI summary and utility scores: An application to the Fit Blue study

, , ORCID Icon, & | (Reviewing editor)
Article: 1649788 | Received 21 Nov 2018, Accepted 24 Jul 2019, Published online: 12 Aug 2019

Abstract

The Health Utilities Index (HUI) questionnaire provides a mechanism to assess intervention effectiveness in multi-attribute health-related quality of life utilizing a set of health status classification systems. It is a comprehensive and valid questionnaire. The Dissemination of the Look AHEAD Weight Management Treatment in the Military (Fit Blue) study used the HUI system to assess the health status of its participants in US Military. HUI system assesses health status in 14 different domains (6 in HUI2 and 8 domains in HUI3) through a complicated utilization of a subset of 41 questions for each domain, and there is no readily available software that takes the raw data and computes the final scores of each domain as well as the corresponding multi-attribute utility function scores and single-attribute utility function scores to compare the health status of a given participant in a given health domain with healthy counterparts in the general population. In this study, we present a SAS ® Macro called %HUI that receives the raw HUI data and computes all domain scores as well as utility scores. We have tested the %HUI macro with the test data provided in the HUI manual and applied it to the HUI data from the Fit Blue study.

PUBLIC INTEREST STATEMENT

The Health Utilities Index (HUI) questionnaire is one of the research tools that the researchers use to assess the health-related quality of life (HRQL) of their study participants. This questionnaire assesses health status in 14 different domains, namely, Sensation, Mobility, Emotion, Cognition, Self-care, Pain, and Fertility, Vision, Hearing, Speech, Ambulation, Dexterity, Emotion, Cognition, and Pain. The overall scores for these domains are calculated through a complicated utilization of a subset of 41 questions for each domain, and there is no readily available software package that takes the raw data and computes the final scores of each domain, and calculating the domain score manually for each participant is practically impossible and highly prone to errors. Therefore, we developed a SAS ® Macro called %HUI that receives the raw HUI data and computes all domain scores automatically. We have tested the %HUI macro with the test data provided in the HUI manual and applied it to real-life research data.

1. Introduction

Health-related quality of life (HRQL) is defined by the Central for Disease Control as “an individual’s or group’s perceived physical and mental health over time”. Research on HRQL is increasing rapidly; there were only 794 publications in PubMed.Gov by year 2000 containing the keywords, “Health Related Quality of Life” while there have been 4865 publications between years 2001 and 2010, and 7948 between years 2011 and 2018, which show the exponential growth of literature on HRQL questionnaires in research (these PubMed searches have been conducted on 13 June 2018).

One commonly used measure is the Health Utilities Index (HUI) (Feeny et al., Citation1998; Boyle, Furlong, Feeny, Torrance, & Hatcher, Citation1995; Furlong, Feeny, Torrance, & Barr, Citation2001; Torrance, Boyle, & Horwood, Citation1982), which is a reliable and valid measure of HRQL (Horsman, Furlong, Feeny, & Torrance, Citation2003). The Look AHEAD study, which focused on reducing cardiovascular events by engaging in intensive dietary lifestyle intervention, is one of the largest clinical trials that utilized HUI as one of its instruments (Look AHEAD Research Group, Citation2010). HUI currently has two main parts, namely, the HUI2 and HUI3, where HUI2 provides health status domains for Sensation, Mobility, Emotion, Cognition, Self-care, Pain, and Fertility, while HUI3 provides health status domains for Vision, Hearing, Speech, Ambulation, Dexterity, Emotion, Cognition, and Pain. Each of these domains has three to six levels, and the ordinal levels in each domain start with a value of 1 representing “perfect” health, while the last level represents the poorest health possible under that domain. HUI contains a total of 41 multiple-choice questions, from which the final score for each domain is calculated through complicated combinations of responses from the relevant subset of questions. For example, the ambulation domain illustrates the complexity of final score computation (Figure ).

Currently, there is no readily available software that takes the raw HUI data and computes the final scores of each domain as well as the corresponding single- and multi-attribute utility function scores to compare the health status of study participants with their healthy counterparts in the general population. Manual calculations of the domain scores and utility function scores are practically impossible as there are 424 conditions to be considered for the domain scores and there are 76 possible coefficients for the utility scores to be dealt with for both multi-attribute and single-attribute function scores; moreover, this manual task has to be done for each participant individually and independently. Manually calculating the domains scores in this massive number of cross-checks is clearly prone to a high likelihood of errors and practically impossible as the number of participants in a study increases.

Figure 1. Algorithm to compute the final scores for ambulation in HUI3. (Y = Yes, N = No, LVL = Level).

Figure 1. Algorithm to compute the final scores for ambulation in HUI3. (Y = Yes, N = No, LVL = Level).

The Dissemination of the Look AHEAD Weight Management Treatment in the Military (Fit Blue) study (Krukowski et al., Citation2015) used the HUI system to assess the changes in health status of its study participants in US Military who were taking part in one of two weight management interventions based on the Look AHEAD intensive lifestyle intervention that differed on the amount of self-initiation required.

In this study, we present a SAS ® Macro program called %HUI that receives the raw HUI data and computes all domain scores as well as utility scores. In Section 2, we describe our SAS Macro program %HUI, followed by its testing with the test data provided in the HUI manual in Section 3. In Section 4, we apply %HUI to the Dissemination of the Look AHEAD Weight Management Treatment in the Military (Fit Blue) study (Look AHEAD Research Group, Citation2010) at the screening assessment time point (which included participants who did not complete the screening process and were not randomized).

2. SAS %HUI macro

We present the code for the SAS %HUI macro in Appendix I. Overall, the %HUI macro utilizes only two parameters, namely, INPUTDS (“input dataset”) and OUTPUTDS (“output dataset”). The macro program computes the final scores for each HUI domain in the order that the HUI manual presents them, followed by the single-attribution and multi-attribution utility function scores with necessary descriptive labels. In the next section, we present the results of testing the %HUI macro on the test data provided in the HUI manual.

3. Application of %HUI to the HUI test data

The HUI manual contains the following test data (Tables and ). To understand the data better, the reader is encouraged to review the HUI manual and its individual questions.

Table 1. HUI Test data. The first column represents participants and columns are their responses to the HUI questions (y = Yes, n = No).

Table 2. HUI Test data (continued). The first column represents participants and columns are their responses to the HUI questions (y = Yes, n = No, h = happy, u = unhappy).

Based on these test data, we computed the final scores for each domain under HUI2 and HUI3 as well as all single-attribute and multi-attribute utility scores. We then compared what we obtained through the %HUI macro program with what is given in the HUI manual, using SAS COMPARE procedure.

For all domains as well as the utility scores, our version and the HUI manual version of the summary scores are exactly the same, showing that the %HUI macro works with no error. We present a typical output from the COMPARE procedure in Table . The SAS code for the testing procedure of the %HUI macro program is provided in Appendix II.

Table 3. An example of the output from SAS COMPARE procedure: Here comparing the HUI version and our version of the HUI2 domains from the test data

4. Application of %HUI to the Fit Blue HUI data

We applied the %HUI macro program to the HUI data from the Fit Blue study, which is a clinical trial tailoring the evidence-based Look AHEAD weight loss intervention to the active duty military population, comparing outcomes from two arms: one receiving a phone-based intensive counselor-directed weight loss intervention, and the other arm receiving a phone-based self-directed weight loss intervention. The study enrolled 248 active duty military personnel stationed at Joint Base San Antonio – —Lackland, who wished to lose weight and met the following criteria: English speaking, generally in good health, 18 years or older, having a Bbody mass index of ≥25, and having access to a telephone and a computer. During their enrollment on the study for 1 year, their weight, eating, activity, and health status patterns including HUI were collected.

In processing the FitBlue HUI data, we renamed the variables to Q1 through Q40 from its original naming of HUIQ1 through HUIQ40, converted all values to lowercase, and when “[none]” was captured as a response in the database, we modified it as “n” in the final data. We have also generated a generic ID variable so that the resulting HUI data can be linked to the other study datasets through the study IDs in the raw HUI data, which is critical especially when there are multiple study visits and all HUI data from these visits are processed in one step. The above-suggested modifications are not exhaustive and each study may capture the HUI data slightly differently so that these and similar modifications are needed and critical for the %HUI macro to work without problems. We have provided all these presumed changes in the note section of the HUI macro; we have also provided a sample data preparation step at the end of the HUI macro program.

We present the resulting HUI summary scores for the 359 study participants screened for the Fit Blue study in Table .

Table 4. Fit Blue Screening visit HUI data processed through the %HUI macro

5. Discussions

In this paper, we presented an easy-to-use and validated SAS macro program, %HUI. The macro program requires only two input parameters, one to name the input dataset and the other to name the output dataset. The %HUI macro is validated through obtaining the same domain and utility scores for the test data provided in the HUI manual. Future researchers will be able to utilize this macro to quickly compute each domain scores as well as the corresponding single- and multi-attribute utility function scores. Similar SAS Macro programs were published previously in literature or freely available online (Caswell, Citation2018a, Citation2018b; Hardouin & Mesbah, Citation2007; Mei & Grummer-Strawn, Citation2007; CitationRasmussen et al.; Troxel, Fairclough, Curran, & Hahn, Citation1998).

It is important to note how missing data affect the total utility score. As the total utility scores require all domains to be present, it naturally has the most amount of missingness at the end (6.4% missing HUI2 total utility score and 5% missing HUI3 missing HUI3 total utility score in this application).

We have also produced two HUI formats, one detailing what each score means, and the other providing the disability level for each domain. We present the SAS code generating these formats in APPENDIX II with sample format application to a scored HUI data.

As our future work, we plan to generate an R version (https://www.R-project.org/) of the same HUI program.

Additional information

Funding

This work was supported by the U.S. Department of Defense [W81XWH-14-1-0367].

Notes on contributors

Mehmet Kocak

Mehmet Kocak, Associate Professor of Biostatistics, Preventive Medicine, The University of Tennessee Health Science Center

Mehmet earned his MSc degree in applied statistics from Michigan State University and a PhD in statistics from the University of Memphis. He has been a study biostatistician for numerous Phase I and Phase II clinical trials conducted by St. Jude Children’s Research Hospital from 2002 to 2011 and by Pediatric Brain Tumor Consortium (PBTC) from 2002 to present, and for clinical and observational studies conducted by University of Tennessee Health Science Center (UTHSC) since 2011. His areas of research have been time-course gene expression data analysis, meta-analysis of p-values, Phase I clinical trial design, survival analysis, and categorical data analysis. He is an expert in the SAS programming language as well as SAS/Graph.

References

  • Boyle, M. H., Furlong, W., Feeny, D., Torrance, G. W., & Hatcher, J. (1995). Reliability of the health utilities index—mark III used in the 1991 cycle 6 Canadian general social survey health questionnaire. Quality of Life Research, 4(3), 249–49.
  • Caswell, J. M. 2018a, November 2. Clinical descriptors for 2 × 2 tables with repeated or paired samples: A SAS macro to calculate probability, absolute risk reduction, number needed to treat, risk ratio, and their confidence intervals Published in LinkedIn.
  • Caswell, J. M. 2018b, December 5. A SAS macro for calculating standardized differences of means and proportions Published in LinkedIn
  • Feeny, D., Furlong, W., & Barr, R. D. (1998). Multiattribute approach to the assessment of health‐related quality of life: Health utilities index. Medical and Pediatric Oncology, 30(S1), 54–59.
  • Furlong, W. J., Feeny, D. H., Torrance, G. W., & Barr, R. D. (2001). The Health Utilities Index (HUI®) system for assessing health-related quality of life in clinical studies. Annals of Medicine, 33(5), 375–384.
  • Hardouin, J. B., & Mesbah, M. (2007). The SAS macro-program% AnaQol to estimate the parameters of item responses theory models. Communications in Statistics—Simulation and Computation®, 36(2), 437–453. doi:10.1080/03610910601158351
  • Horsman, J., Furlong, W., Feeny, D., & Torrance, G. (2003). The Health Utilities Index (HUI®): Concepts, measurement properties and applications. Health and Quality of Life Outcomes, 1(1), 54. doi:10.1186/1477-7525-1-54
  • Krukowski, R. A., Hare, M. E., Talcott, G. W., Johnson, K. C., Richey, P. A., Kocak, M., … Klesges, R. C. (2015). Dissemination of the Look AHEAD intensive lifestyle intervention in the United States Air Force: Study rationale, design and methods. Contemporary Clinical Trials, 40, 232–239. doi:10.1016/j.cct.2014.12.014
  • Look AHEAD Research Group. (2010). Long term effects of a lifestyle intervention on weight and cardiovascular risk factors in individuals with type 2 diabetes: Four year results of the Look AHEAD trial. Archives of Internal Medicine, 170(17), 1566. doi:10.1001/archinternmed.2010.328
  • Mei, Z., & Grummer-Strawn, L. M. (2007). Standard deviation of anthropometric Z-scores as a data quality assessment tool using the 2006 WHO growth standards: A cross country analysis. Bulletin of the World Health Organization, 85, 441–448. doi:10.2471/blt.06.034421
  • Rasmussen, P., Li, I., de Gil, P. R., Romano, J., Lanehart, R. E., Bellara, A. P., … Kromrey, J. D. DICHOTOMIZED_D: A SAS® Macro for Computing Effect Sizes for Artificially Dichotomized Variables. SAS Global Forum 2013.
  • Torrance, G. W., Boyle, M. H., & Horwood, S. P. (1982). Application of multi-attribute utility theory to measure social preferences for health states. Operations Research, 30(6), 1043–1069.
  • Troxel, A. B., Fairclough, D. L., Curran, D., & Hahn, E. A. (1998). Statistical analysis of quality of life with missing data in cancer clinical trials. Statistics in Medicine, 17(5‐7), 653–666.

APPENDIX I

Below, we present the %HUI macro programming codes.

*****************************************************************************************

*****************************************************************************************

*** Authors: Jiajing Wang, MS. Mehmet Kocak, Ph.D. ****

*** Date: 06/23/2018 ****

*** Version. 1.0 ****

*** Purpose: To compute the HUI domain and utility scores from an input HUI dataset. ****

*** Assumptions: 1- HUI Data has the field names Q1, Q2, up to Q40 ****

*** 2- All field values are modified to be lowercase ****

*** 3- Only Q35 is 2-character long with values {r, oc, of, aa} ****

*** 4- All other questions are 1-character long ****

*** IMPORTANT NOTE: Please make sure that the input dataset is preparared according to ****

*** the above assumptions before the macro program is used. We are ****

*** providing a sample data preparation code at the end of the macro. ****

*** Parameters: ****

*** INPUTDS: Input Dataset ****

*** OUTPUTDS: Output Dataset ****

*****************************************************************************************

****************************************************************************************;

%macro Hui(inputds = hui, outputds = hui_updated);

options nonotes;

data &outputds; set &inputds;

*****************************

*** HUI3 Vision (Table-1) ***

*****************************;

if q1 = “y” and q4 = “y” then hui3_vision = 1;

else if q1 = “y” and q4 = “n” and q5 = “y” then hui3_vision = 2;

else if q1 = “y” and q4 = “n” and q5 = “n” then hui3_vision = 3;

else if q1 = “n” and q2 = “y” and q4 = “y” then hui3_vision = 2;

else if q1 = “n” and q2 = “y” and q4 = “n” and q5 = “y” then hui3_vision = 2;

else if q1 = “n” and q2 = “y” and q4 = “n” and q5 = “n” then hui3_vision = 3;

else if q1 = “n” and q2 = “n” and q3 = “y” and q4 = “n” and q5 = “y” then hui3_vision = 4;

else if q1 = “n” and q2 = “n” and q3 = “y” and q4 = “y” then hui3_vision = 4;

else if q1 = “n” and q2 = “n” and q3 = “y” and q4 = “n” and q5 = “n” then hui3_vision = 5;

else if q1 = “n” and q2 = “n” and q3 = “n” then hui3_vision = 6;

*** Multi-Attribute Utility Function Scores ***;

if hui3_vision = 1 then hui3_vision_m_utility = 1;

if hui3_vision = 2 then hui3_vision_m_utility = 0.98;

if hui3_vision = 3 then hui3_vision_m_utility = 0.89;

if hui3_vision = 4 then hui3_vision_m_utility = 0.84;

if hui3_vision = 5 then hui3_vision_m_utility = 0.75;

if hui3_vision = 6 then hui3_vision_m_utility = 0.61;

*** Single-Attribute Utility Function Scores ***;

if hui3_vision = 1 then hui3_vision_s_utility = 1;

if hui3_vision = 2 then hui3_vision_s_utility = 0.95;

if hui3_vision = 3 then hui3_vision_s_utility = 0.73;

if hui3_vision = 4 then hui3_vision_s_utility = 0.59;

if hui3_vision = 5 then hui3_vision_s_utility = 0.38;

if hui3_vision = 6 then hui3_vision_s_utility = 0.00;

label hui3_vision = “HUI3 Vision Score” hui3_vision_m_utility = “HUI3 Vision Multi-Attribute Utility Score”

hui3_vision_s_utility = “HUI3 Vision Single-Attribute Utility Score”;

******************************

*** HUI3 Hearing (Table-2) ***

******************************;

if q6 = “y” then hui3_hearing = 1;

else if q6 = “n” and q7 = “y” and q9 = “y” then hui3_hearing = 2;

else if q6 = “n” and q7 = “y” and q9 = “n” and q10 = “y” then hui3_hearing = 3;

else if q6 = “n” and q7 = “y” and q9 = “n” and q10 = “n” then hui3_hearing = 3;

else if q6 = “n” and q7 = “n” and q8 = “y” and q9 = “y” then hui3_hearing = 4;

else if q6 = “n” and q7 = “n” and q8 = “y” and q9 = “n” and q10 = “y” then hui3_hearing = 5;

else if q6 = “n” and q7 = “n” and q8 = “y” and q9 = “n” and q10 = “n” then hui3_hearing = 6;

else if q6 = “n” and q7 = “n” and q8 = “n” then hui3_hearing = 6;

*** Multi-Attribute Utility Function Scores ***;

if hui3_hearing = 1 then hui3_hearing_m_utility = 1;

if hui3_hearing = 2 then hui3_hearing_m_utility = 0.95;

if hui3_hearing = 3 then hui3_hearing_m_utility = 0.89;

if hui3_hearing = 4 then hui3_hearing_m_utility = 0.80;

if hui3_hearing = 5 then hui3_hearing_m_utility = 0.74;

if hui3_hearing = 6 then hui3_hearing_m_utility = 0.61;

*** Single-Attribute Utility Function Scores ***;

if hui3_hearing = 1 then hui3_hearing_s_utility = 1;

if hui3_hearing = 2 then hui3_hearing_s_utility = 0.86;

if hui3_hearing = 3 then hui3_hearing_s_utility = 0.71;

if hui3_hearing = 4 then hui3_hearing_s_utility = 0.48;

if hui3_hearing = 5 then hui3_hearing_s_utility = 0.32;

if hui3_hearing = 6 then hui3_hearing_s_utility = 0.00;

label hui3_hearing = “HUI3 Hearing Score” hui3_hearing_m_utility = “HUI3 Hearing Multi-Attribute Utility Score”

hui3_hearing_s_utility = “HUI3 Hearing Single-Attribute Utility Score”;

******************************

*** HUI3 Speech (Table-3) ***

******************************;

if q11 = “y” then hui3_speech = 1;

else if q11 = “n” and q12 = “y” and q13 = “y” then hui3_speech = 2;

else if q11 = “n” and q12 = “y” and q13 = “n” and q14 = “y” then hui3_speech = 3;

else if q11 = “n” and q12 = “y” and q13 = “n” and q14 = “n” and q15 = “y” then hui3_speech = 5;

else if q11 = “n” and q12 = “y” and q13 = “n” and q14 = “n” and q15 = “n” then hui3_speech = 5;

else if q11 = “n” and q12 = “n” and q13 = “y” then hui3_speech = 4;

else if q11 = “n” and q12 = “n” and q13 = “n” and q14 = “y” then hui3_speech = 4;

else if q11 = “n” and q12 = “n” and q13 = “n” and q14 = “n” and q15 = “y” then hui3_speech = 5;

else if q11 = “n” and q12 = “n” and q13 = “n” and q14 = “n” and q15 = “n” then hui3_speech = 5;

*** Multi-Attribute Utility Function Scores ***;

if hui3_speech = 1 then hui3_speech_m_utility = 1;

if hui3_speech = 2 then hui3_speech_m_utility = 0.94;

if hui3_speech = 3 then hui3_speech_m_utility = 0.89;

if hui3_speech = 4 then hui3_speech_m_utility = 0.81;

if hui3_speech = 5 then hui3_speech_m_utility = 0.68;

*** Single-Attribute Utility Function Scores ***;

if hui3_speech = 1 then hui3_speech_s_utility = 1;

if hui3_speech = 2 then hui3_speech_s_utility = 0.82;

if hui3_speech = 3 then hui3_speech_s_utility = 0.67;

if hui3_speech = 4 then hui3_speech_s_utility = 0.41;

if hui3_speech = 5 then hui3_speech_s_utility = 0.00;

label hui3_speech = “HUI3 Speech Score” hui3_speech_m_utility = “HUI3 Speech Multi-Attribute Utility Score”

hui3_speech_s_utility = “HUI3 Speech Single-Attribute Utility Score”;

*********************************

*** HUI3 Ambulation (Table-4) ***

*********************************;

if q16 = “y” then hui3_ambulation = 1;

else if q16 = “n” and q17 = “y” then hui3_ambulation = 1;

else if q16 = “n” and q17 = “n” and q18 = “y” then hui3_ambulation = 2;

else if q16 = “n” and q17 = “n” and q18 = “n” then do;

if q19 = “y” and q20 = “y” and q21 = “y” and q22 = “y” then hui3_ambulation = 5;

else if q19 = “y” and q20 = “y” and q21 = “y” and q22 = “n” then hui3_ambulation = 5;

else if q19 = “y” and q20 = “y” and q21 = “n” and q22 = “y” then hui3_ambulation = 4;

else if q19 = “y” and q20 = “y” and q21 = “n” and q22 = “n” then hui3_ambulation = 3;

else if q19 = “y” and q20 = “n” and q21 = “y” and q22 = “y” then hui3_ambulation = 5;

else if q19 = “y” and q20 = “n” and q21 = “y” and q22 = “n” then hui3_ambulation = 5;

else if q19 = “y” and q20 = “n” and q21 = “n” and q22 = “y” then hui3_ambulation = 4;

else if q19 = “y” and q20 = “n” and q21 = “n” and q22 = “n” then hui3_ambulation = 3;

else if q19 = “n” and q22 = “y” then hui3_ambulation = 6;

else if q19 = “n” and q22 = “n” then hui3_ambulation = 6;

end;

*** Multi-Attribute Utility Function Scores ***;

if hui3_ambulation = 1 then hui3_ambulation_m_utility = 1;

if hui3_ambulation = 2 then hui3_ambulation_m_utility = 0.93;

if hui3_ambulation = 3 then hui3_ambulation_m_utility = 0.86;

if hui3_ambulation = 4 then hui3_ambulation_m_utility = 0.73;

if hui3_ambulation = 5 then hui3_ambulation_m_utility = 0.65;

if hui3_ambulation = 6 then hui3_ambulation_m_utility = 0.58;

*** Single-Attribute Utility Function Scores ***;

if hui3_ambulation = 1 then hui3_ambulation_s_utility = 1;

if hui3_ambulation = 2 then hui3_ambulation_s_utility = 0.83;

if hui3_ambulation = 3 then hui3_ambulation_s_utility = 0.67;

if hui3_ambulation = 4 then hui3_ambulation_s_utility = 0.36;

if hui3_ambulation = 5 then hui3_ambulation_s_utility = 0.16;

if hui3_ambulation = 6 then hui3_ambulation_s_utility = 0.00;

label hui3_ambulation = “HUI3 Ambulation Score” hui3_ambulation_m_utility = “HUI3 Ambulation Multi-Attribute Utility Score”

hui3_ambulation_s_utility = “HUI3 Ambulation Single-Attribute Utility Score”;

********************************

*** HUI3 Dexterity (Table-5) ***

********************************;

if q24 = “y” then hui3_dexterity = 1;

else if q24 = “n” then do;

if q25 = “y” then do;

if q26 = “s” and q27 = “y” then hui3_dexterity = 4;

else if q26 = “s” and q27 = “n” then hui3_dexterity = 4;

else if q26 = “m” and q27 = “y” then hui3_dexterity = 5;

else if q26 = “m” and q27 = “n” then hui3_dexterity = 5;

else if q26 = “a” and q27 = “y” then hui3_dexterity = 6;

else if q26 = “a” and q27 = “n” then hui3_dexterity = 6;

end;

if q25 = “n” and q27 = “y” then hui3_dexterity = 3;

if q25 = “n” and q27 = “n” then hui3_dexterity = 2;

end;

*** Multi-Attribute Utility Function Scores ***;

if hui3_dexterity = 1 then hui3_dexterity_m_utility = 1;

if hui3_dexterity = 2 then hui3_dexterity_m_utility = 0.95;

if hui3_dexterity = 3 then hui3_dexterity_m_utility = 0.88;

if hui3_dexterity = 4 then hui3_dexterity_m_utility = 0.76;

if hui3_dexterity = 5 then hui3_dexterity_m_utility = 0.65;

if hui3_dexterity = 6 then hui3_dexterity_m_utility = 0.56;

*** Single-Attribute Utility Function Scores ***;

if hui3_dexterity = 1 then hui3_dexterity_s_utility = 1;

if hui3_dexterity = 2 then hui3_dexterity_s_utility = 0.88;

if hui3_dexterity = 3 then hui3_dexterity_s_utility = 0.73;

if hui3_dexterity = 4 then hui3_dexterity_s_utility = 0.45;

if hui3_dexterity = 5 then hui3_dexterity_s_utility = 0.20;

if hui3_dexterity = 6 then hui3_dexterity_s_utility = 0.00;

label hui3_dexterity = “HUI3 Dexterity Score” hui3_dexterity_m_utility = “HUI3 Dexterity Multi-Attribute Utility Score”

hui3_dexterity_s_utility = “HUI3 Dexterity Single-Attribute Utility Score”;

******************************

*** HUI3 Emotion (Table-6) ***

******************************;

if q31 = “h” and q32 = “a” then hui3_emotion = 1;

if q31 = “h” and q32 = “b” then hui3_emotion = 2;

if q31 = “u” and q33 = “a” then hui3_emotion = 3;

if q31 = “u” and q33 = “b” then hui3_emotion = 4;

if q31 = “u” and q33 = “c” then hui3_emotion = 5;

*** Multi-Attribute Utility Function Scores ***;

if hui3_emotion = 1 then hui3_emotion_m_utility = 1;

if hui3_emotion = 2 then hui3_emotion_m_utility = 0.95;

if hui3_emotion = 3 then hui3_emotion_m_utility = 0.85;

if hui3_emotion = 4 then hui3_emotion_m_utility = 0.64;

if hui3_emotion = 5 then hui3_emotion_m_utility = 0.46;

*** Single-Attribute Utility Function Scores ***;

if hui3_emotion = 1 then hui3_emotion_s_utility = 1;

if hui3_emotion = 2 then hui3_emotion_s_utility = 0.91;

if hui3_emotion = 3 then hui3_emotion_s_utility = 0.73;

if hui3_emotion = 4 then hui3_emotion_s_utility = 0.33;

if hui3_emotion = 5 then hui3_emotion_s_utility = 0.00;

label hui3_emotion = “HUI3 Emotion Score” hui3_emotion_m_utility = “HUI3 Emotion Multi-Attribute Utility Score”

hui3_emotion_s_utility = “HUI3 Emotion Single-Attribute Utility Score”;

********************************

*** HUI3 Cognition (Table-7) ***

********************************;

if q37 = “a” then do;

if q38 in (“a”) then hui3_cognition = 1;

if q38 in (“b” “c”) then hui3_cognition = 2;

if q38 in (“d”) then hui3_cognition = 5;

if q38 in (“e”) then hui3_cognition = 6;

end;

if q37 = “b” then do;

if q38 in (“a”) then hui3_cognition = 3;

if q38 in (“b” “c”) then hui3_cognition = 4;

if q38 in (“d”) then hui3_cognition = 5;

if q38 in (“e”) then hui3_cognition = 6;

end;

if q37 = “c” then do;

if q38 in (“a” “b” “c” “d”) then hui3_cognition = 5;

if q38 in (“e”) then hui3_cognition = 6;

end;

if q37 = “d” and q38 in (“a” “b” “c” “d” “e”) then hui3_cognition = 6;

*** Multi-Attribute Utility Function Scores ***;

if hui3_cognition = 1 then hui3_cognition_m_utility = 1;

if hui3_cognition = 2 then hui3_cognition_m_utility = 0.92;

if hui3_cognition = 3 then hui3_cognition_m_utility = 0.95;

if hui3_cognition = 4 then hui3_cognition_m_utility = 0.83;

if hui3_cognition = 5 then hui3_cognition_m_utility = 0.60;

if hui3_cognition = 6 then hui3_cognition_m_utility = 0.42;

*** Single-Attribute Utility Function Scores ***;

if hui3_cognition = 1 then hui3_cognition_s_utility = 1;

if hui3_cognition = 2 then hui3_cognition_s_utility = 0.86;

if hui3_cognition = 3 then hui3_cognition_s_utility = 0.92;

if hui3_cognition = 4 then hui3_cognition_s_utility = 0.70;

if hui3_cognition = 5 then hui3_cognition_s_utility = 0.32;

if hui3_cognition = 6 then hui3_cognition_s_utility = 0.00;

label hui3_cognition = “HUI3 Cognition Score” hui3_cognition_m_utility = “HUI3 Cognition Multi-Attribute Utility Score”

hui3_cognition_s_utility = “HUI3 Cognition Single-Attribute Utility Score”;

***************************

*** HUI3 Pain (Table-8) ***

***************************;

if q39 = “y” then do;

if q40 = “n” then hui3_pain = 2;

if q40 = “f” then hui3_pain = 3;

if q40 = “s” then hui3_pain = 4;

if q40 in (“m” “a”) then hui3_pain = 5;

end;

if q39 = “n” then hui3_pain = 1;

*** Multi-Attribute Utility Function Scores ***;

if hui3_pain = 1 then hui3_pain_m_utility = 1;

if hui3_pain = 2 then hui3_pain_m_utility = 0.96;

if hui3_pain = 3 then hui3_pain_m_utility = 0.90;

if hui3_pain = 4 then hui3_pain_m_utility = 0.77;

if hui3_pain = 5 then hui3_pain_m_utility = 0.55;

*** Single-Attribute Utility Function Scores ***;

if hui3_pain = 1 then hui3_pain_s_utility = 1;

if hui3_pain = 2 then hui3_pain_s_utility = 0.92;

if hui3_pain = 3 then hui3_pain_s_utility = 0.77;

if hui3_pain = 4 then hui3_pain_s_utility = 0.48;

if hui3_pain = 5 then hui3_pain_s_utility = 0.00;

label hui3_pain = “HUI3 Pain Score” hui3_pain_m_utility = “HUI3 Pain Multi-Attribute Utility Score”

hui3_pain_s_utility = “HUI3 Pain Single-Attribute Utility Score”;

*** Total Utility Score calculation ****;

hui3_utility_score = 1.371*(hui3_vision_m_utility*hui3_hearing_m_utility*hui3_speech_m_utility*hui3_ambulation_m_utility*hui3_dexterity_m_utility*hui3_emotion_m_utility*hui3_cognition_m_utility*hui3_pain_m_utility)-0.371;

hui3_utility_score = round(hui3_utility_score,0.01);

label hui3_utility_score = “HUI3 Total Utility Score”;

********************************

*** HUI2 Sensation (Table-9) ***

********************************;

if hui3_vision = 6 or hui3_speech = 5 or hui3_hearing = 6 then hui2_sensation = 4;

else if hui3_vision in (3 4 5) or hui3_speech in (2 3 4) or hui3_hearing in (4 5) then hui2_sensation = 3;

else if hui3_vision in (2) and hui3_hearing in (1 2 3) and hui3_speech in (1) then hui2_sensation = 2;

else if hui3_vision in (1) and hui3_hearing in (2 3) and hui3_speech in (1) then hui2_sensation = 2;

else if hui3_vision in (1) and hui3_hearing in (1) and hui3_speech in (1) then hui2_sensation = 1;

*** Multi-Attribute Utility Function Scores ***;

if hui2_sensation = 1 then hui2_sensation_m_utility = 1;

if hui2_sensation = 2 then hui2_sensation_m_utility = 0.95;

if hui2_sensation = 3 then hui2_sensation_m_utility = 0.86;

if hui2_sensation = 4 then hui2_sensation_m_utility = 0.61;

*** Single-Attribute Utility Function Scores ***;

if hui2_sensation = 1 then hui2_sensation_s_utility = 1;

if hui2_sensation = 2 then hui2_sensation_s_utility = 0.87;

if hui2_sensation = 3 then hui2_sensation_s_utility = 0.65;

if hui2_sensation = 4 then hui2_sensation_s_utility = 0.00;

label hui2_sensation = “HUI2 Sensation Score” hui2_sensation_m_utility = “HUI2 Sensation Multi-Attribute Utility Score”

hui2_sensation_s_utility = “HUI2 Sensation Single-Attribute Utility Score”;

********************************

*** HUI2 Mobility (Table-10) ***

********************************;

if q16 = “y” then do;

if q24 = “y” then hui2_mobility = 1;

if q24 = “n” then do;

if q25 = “y” and q26 = “s” then hui2_mobility = 1;

if q25 = “y” and q26 = “m” then hui2_mobility = 1;

if q25 = “y” and q26 = “a” then hui2_mobility = 1;

if q25 = “n” then hui2_mobility = 1;

end;

end;

if q16 = “n” and q17 = “y” then do;

if q24 = “y” then hui2_mobility = 2;

if q24 = “n” then do;

if q25 = “y” and q26 = “s” then hui2_mobility = 2;

if q25 = “y” and q26 = “m” then hui2_mobility = 2;

if q25 = “y” and q26 = “a” then hui2_mobility = 2;

if q25 = “n” then hui2_mobility = 2;

end;

end;

if q16 = “n” and q17 = “n” and q18 = “y” then do;

if q24 = “y” then hui2_mobility = 2;

if q24 = “n” then do;

if q25 = “y” and q26 = “s” then hui2_mobility = 2;

if q25 = “y” and q26 = “m” then hui2_mobility = 2;

if q25 = “y” and q26 = “a” then hui2_mobility = 2;

if q25 = “n” then hui2_mobility = 2;

end;

end;

*Table 10.1*;

if q16 = “n” and q17 = “n” and q18 = “n” and q19 = “y” and q20 = “y” and q21 = “y” and q22 = “y” and q23 = “y” then do;

if q24 = “y” then hui2_mobility = 4;

if q24 = “n” then do;

if q25 = “y” and q26 = “s” then hui2_mobility = 4;

if q25 = “y” and q26 = “m” then hui2_mobility = 4;

if q25 = “y” and q26 = “a” then hui2_mobility = 4;

if q25 = “n” then hui2_mobility = 4;

end;

end;

if q16 = “n” and q17 = “n” and q18 = “n” and q19 = “y” and q20 = “y” and q21 = “y” and q22 = “y” and q23 = “n” then do;

if q24 = “y” then hui2_mobility = 4;

if q24 = “n” then do;

if q25 = “y” and q26 = “s” then hui2_mobility = 4;

if q25 = “y” and q26 = “m” then hui2_mobility = 4;

if q25 = “y” and q26 = “a” then hui2_mobility = 4;

if q25 = “n” then hui2_mobility = 4;

end;

end;

if q16 = “n” and q17 = “n” and q18 = “n” and q19 = “y” and q20 = “y” and q21 = “y” and q22 = “n” and q23 = “y” then do;

if q24 = “y” then hui2_mobility = 4;

if q24 = “n” then do;

if q25 = “y” and q26 = “s” then hui2_mobility = 4;

if q25 = “y” and q26 = “m” then hui2_mobility = 4;

if q25 = “y” and q26 = “a” then hui2_mobility = 4;

if q25 = “n” then hui2_mobility = 4;

end;

end;

if q16 = “n” and q17 = “n” and q18 = “n” and q19 = “y” and q20 = “y” and q21 = “y” and q22 = “n” and q23 = “n” then do;

if q24 = “y” then hui2_mobility = 4;

if q24 = “n” then do;

if q25 = “y” and q26 = “s” then hui2_mobility = 4;

if q25 = “y” and q26 = “m” then hui2_mobility = 4;

if q25 = “y” and q26 = “a” then hui2_mobility = 4;

if q25 = “n” then hui2_mobility = 4;

end;

end;

*Table 10.2 *;

if q16 = “n” and q17 = “n” and q18 = “n” and q19 = “y” and q20 = “y” and q21 = “n” and q22 = “y” and q23 = “y” then do;

if q24 = “y” then hui2_mobility = 4;

if q24 = “n” then do;

if q25 = “y” and q26 = “s” then hui2_mobility = 4;

if q25 = “y” and q26 = “m” then hui2_mobility = 4;

if q25 = “y” and q26 = “a” then hui2_mobility = 4;

if q25 = “n” then hui2_mobility = 4;

end;

end;

if q16 = “n” and q17 = “n” and q18 = “n” and q19 = “y” and q20 = “y” and q21 = “n” and q22 = “y” and q23 = “n” then do;

if q24 = “y” then hui2_mobility = 3;

if q24 = “n” then do;

if q25 = “y” and q26 = “s” then hui2_mobility = 3;

if q25 = “y” and q26 = “m” then hui2_mobility = 3;

if q25 = “y” and q26 = “a” then hui2_mobility = 3;

if q25 = “n” then hui2_mobility = 3;

end;

end;

if q16 = “n” and q17 = “n” and q18 = “n” and q19 = “y” and q20 = “y” and q21 = “n” and q22 = “n” and q23 = “y” then do;

if q24 = “y” then hui2_mobility = 3;

if q24 = “n” then do;

if q25 = “y” and q26 = “s” then hui2_mobility = 3;

if q25 = “y” and q26 = “m” then hui2_mobility = 3;

if q25 = “y” and q26 = “a” then hui2_mobility = 3;

if q25 = “n” then hui2_mobility = 3;

end;

end;

if q16 = “n” and q17 = “n” and q18 = “n” and q19 = “y” and q20 = “y” and q21 = “n” and q22 = “n” and q23 = “n” then do;

if q24 = “y” then hui2_mobility = 3;

if q24 = “n” then do;

if q25 = “y” and q26 = “s” then hui2_mobility = 3;

if q25 = “y” and q26 = “m” then hui2_mobility = 3;

if q25 = “y” and q26 = “a” then hui2_mobility = 3;

if q25 = “n” then hui2_mobility = 3;

end;

end;

*Table 10.3 *;

if q16 = “n” and q17 = “n” and q18 = “n” and q19 = “y” and q20 = “n” and q21 = “y” and q22 = “y” and q23 = “y” then do;

if q24 = “y” then hui2_mobility = 4;

if q24 = “n” then do;

if q25 = “y” and q26 = “s” then hui2_mobility = 4;

if q25 = “y” and q26 = “m” then hui2_mobility = 4;

if q25 = “y” and q26 = “a” then hui2_mobility = 4;

if q25 = “n” then hui2_mobility = 4;

end;

end;

if q16 = “n” and q17 = “n” and q18 = “n” and q19 = “y” and q20 = “n” and q21 = “y” and q22 = “y” and q23 = “n” then do;

if q24 = “y” then hui2_mobility = 4;

if q24 = “n” then do;

if q25 = “y” and q26 = “s” then hui2_mobility = 4;

if q25 = “y” and q26 = “m” then hui2_mobility = 4;

if q25 = “y” and q26 = “a” then hui2_mobility = 4;

if q25 = “n” then hui2_mobility = 4;

end;

end;

if q16 = “n” and q17 = “n” and q18 = “n” and q19 = “y” and q20 = “n” and q21 = “y” and q22 = “n” and q23 = “y” then do;

if q24 = “y” then hui2_mobility = 4;

if q24 = “n” then do;

if q25 = “y” and q26 = “s” then hui2_mobility = 4;

if q25 = “y” and q26 = “m” then hui2_mobility = 4;

if q25 = “y” and q26 = “a” then hui2_mobility = 4;

if q25 = “n” then hui2_mobility = 4;

end;

end;

if q16 = “n” and q17 = “n” and q18 = “n” and q19 = “y” and q20 = “n” and q21 = “y” and q22 = “n” and q23 = “n” then do;

if q24 = “y” then hui2_mobility = 4;

if q24 = “n” then do;

if q25 = “y” and q26 = “s” then hui2_mobility = 4;

if q25 = “y” and q26 = “m” then hui2_mobility = 4;

if q25 = “y” and q26 = “a” then hui2_mobility = 4;

if q25 = “n” then hui2_mobility = 4;

end;

end;

*Table 10.4*;

if q16 = “n” and q17 = “n” and q18 = “n” and q19 = “y” and q20 = “n” and q21 = “n” and q22 = “y” and q23 = “y” then do;

if q24 = “y” then hui2_mobility = 4;

if q24 = “n” then do;

if q25 = “y” and q26 = “s” then hui2_mobility = 4;

if q25 = “y” and q26 = “m” then hui2_mobility = 4;

if q25 = “y” and q26 = “a” then hui2_mobility = 4;

if q25 = “n” then hui2_mobility = 4;

end;

end;

if q16 = “n” and q17 = “n” and q18 = “n” and q19 = “y” and q20 = “n” and q21 = “n” and q22 = “y” and q23 = “n” then do;

if q24 = “y” then hui2_mobility = 3;

if q24 = “n” then do;

if q25 = “y” and q26 = “s” then hui2_mobility = 3;

if q25 = “y” and q26 = “m” then hui2_mobility = 3;

if q25 = “y” and q26 = “a” then hui2_mobility = 3;

if q25 = “n” then hui2_mobility = 3;

end;

end;

if q16 = “n” and q17 = “n” and q18 = “n” and q19 = “y” and q20 = “n” and q21 = “n” and q22 = “n” and q23 = “y” then do;

if q24 = “y” then hui2_mobility = 2;

if q24 = “n” then do;

if q25 = “y” and q26 = “s” then hui2_mobility = 2;

if q25 = “y” and q26 = “m” then hui2_mobility = 2;

if q25 = “y” and q26 = “a” then hui2_mobility = 2;

if q25 = “n” then hui2_mobility = 2;

end;

end;

if q16 = “n” and q17 = “n” and q18 = “n” and q19 = “y” and q20 = “n” and q21 = “n” and q22 = “n” and q23 = “n” then do;

if q24 = “y” then hui2_mobility = 2;

if q24 = “n” then do;

if q25 = “y” and q26 = “s” then hui2_mobility = 2;

if q25 = “y” and q26 = “m” then hui2_mobility = 2;

if q25 = “y” and q26 = “a” then hui2_mobility = 2;

if q25 = “n” then hui2_mobility = 2;

end;

end;

*Table 10.5*;

if q16 = “n” and q17 = “n” and q18 = “n” and q19 = “n” and q22 = “y” and q23 = “y” then do;

if q24 = “y” then hui2_mobility = 4;

if q24 = “n” then do;

if q25 = “y” and q26 = “s” then hui2_mobility = 4;

if q25 = “y” and q26 = “m” then hui2_mobility = 4;

if q25 = “y” and q26 = “a” then hui2_mobility = 5;

if q25 = “n” then hui2_mobility = 4;

end;

end;

if q16 = “n” and q17 = “n” and q18 = “n” and q19 = “n” and q22 = “y” and q23 = “n” then do;

if q24 = “y” then hui2_mobility = 3;

if q24 = “n” then do;

if q25 = “y” and q26 = “s” then hui2_mobility = 3;

if q25 = “y” and q26 = “m” then hui2_mobility = 3;

if q25 = “y” and q26 = “a” then hui2_mobility = 5;

if q25 = “n” then hui2_mobility = 3;

end;

end;

if q16 = “n” and q17 = “n” and q18 = “n” and q19 = “n” and q22 = “n” and q23 = “y” then do;

if q24 = “y” then hui2_mobility = 4;

if q24 = “n” then do;

if q25 = “y” and q26 = “s” then hui2_mobility = 4;

if q25 = “y” and q26 = “m” then hui2_mobility = 4;

if q25 = “y” and q26 = “a” then hui2_mobility = 5;

if q25 = “n” then hui2_mobility = 4;

end;

end;

if q16 = “n” and q17 = “n” and q18 = “n” and q19 = “n” and q22 = “n” and q23 = “n” then do;

if q24 = “y” then hui2_mobility = 3;

if q24 = “n” then do;

if q25 = “y” and q26 = “s” then hui2_mobility = 3;

if q25 = “y” and q26 = “m” then hui2_mobility = 3;

if q25 = “y” and q26 = “a” then hui2_mobility = 5;

if q25 = “n” then hui2_mobility = 3;

end;

end;

*** Multi-Attribute Utility Function Scores ***;

if hui2_mobility = 1 then hui2_mobility_m_utility = 1;

if hui2_mobility = 2 then hui2_mobility_m_utility = 0.97;

if hui2_mobility = 3 then hui2_mobility_m_utility = 0.84;

if hui2_mobility = 4 then hui2_mobility_m_utility = 0.73;

if hui2_mobility = 5 then hui2_mobility_m_utility = 0.58;

*** Single-Attribute Utility Function Scores ***;

if hui2_mobility = 1 then hui2_mobility_s_utility = 1;

if hui2_mobility = 2 then hui2_mobility_s_utility = 0.92;

if hui2_mobility = 3 then hui2_mobility_s_utility = 0.61;

if hui2_mobility = 4 then hui2_mobility_s_utility = 0.34;

if hui2_mobility = 5 then hui2_mobility_s_utility = 0.00;

label hui2_mobility = “HUI2 Mobility Score” hui2_mobility_m_utility = “HUI2 Mobility Multi-Attribute Utility Score”

hui2_mobility_s_utility = “HUI2 Mobility Single-Attribute Utility Score”;

********************************

*** HUI2 Emotion (Table-11) ***

********************************;

if q31 = “h” then do;

if q34 = “y” then do;

if q35 in (“ra” “oc” “of” “aa”) and q36 = “y” then hui2_emotion = 5;

if q35 in (“ra”) and q36 = “n” then hui2_emotion = 1;

if q35 in (“oc”) and q36 = “n” then hui2_emotion = 2;

if q35 in (“of”) and q36 = “n” then hui2_emotion = 3;

if q35 in (“aa”) and q36 = “n” then hui2_emotion = 4;

end;

if q34 = “n” then hui2_emotion = 1;

end;

if q31 = “u” then do;

if q34 = “y” then do;

if q35 in (“ra” “oc” “of” “aa”) and q36 = “y” then hui2_emotion = 5;

if q35 in (“ra”) and q36 = “n” then hui2_emotion = 2;

if q35 in (“oc”) and q36 = “n” then hui2_emotion = 2;

if q35 in (“of”) and q36 = “n” then hui2_emotion = 3;

if q35 in (“aa”) and q36 = “n” then hui2_emotion = 4;

end;

if q34 = “n” then hui2_emotion = 2;

end;

*** Multi-Attribute Utility Function Scores ***;

if hui2_emotion = 1 then hui2_emotion_m_utility = 1;

if hui2_emotion = 2 then hui2_emotion_m_utility = 0.93;

if hui2_emotion = 3 then hui2_emotion_m_utility = 0.81;

if hui2_emotion = 4 then hui2_emotion_m_utility = 0.70;

if hui2_emotion = 5 then hui2_emotion_m_utility = 0.53;

*** Single-Attribute Utility Function Scores ***;

if hui2_emotion = 1 then hui2_emotion_s_utility = 1;

if hui2_emotion = 2 then hui2_emotion_s_utility = 0.86;

if hui2_emotion = 3 then hui2_emotion_s_utility = 0.60;

if hui2_emotion = 4 then hui2_emotion_s_utility = 0.37;

if hui2_emotion = 5 then hui2_emotion_s_utility = 0.00;

label hui2_emotion = “HUI2 Emotion Score” hui2_emotion_m_utility = “HUI2 Emotion Multi-Attribute Utility Score”

hui2_emotion_s_utility = “HUI2 Emotion Single-Attribute Utility Score”;

********************************

*** HUI2 Cognition (Table-12) ***

********************************;

if q37 = “a” then do;

if q38 in (“a”) then hui2_cognition = 1;

if q38 in (“b” “c”) then hui2_cognition = 2;

if q38 in (“d”) then hui2_cognition = 3;

if q38 in (“e”) then hui2_cognition = 4;

end;

if q37 = “b” then do;

if q38 in (“a” “b” “c”) then hui2_cognition = 2;

if q38 in (“d”) then hui2_cognition = 3;

if q38 in (“e”) then hui2_cognition = 4;

end;

if q37 = “c” then do;

if q38 in (“a”) then hui2_cognition = 2;

if q38 in (“b” “c” “d”) then hui2_cognition = 3;

if q38 in (“e”) then hui2_cognition = 4;

end;

if q37 = “d” then do;

if q38 in (“a” “b” “c” “d” “e”) then hui2_cognition = 4;

end;

*** Multi-Attribute Utility Function Scores ***;

if hui2_cognition = 1 then hui2_cognition_m_utility = 1;

if hui2_cognition = 2 then hui2_cognition_m_utility = 0.95;

if hui2_cognition = 3 then hui2_cognition_m_utility = 0.88;

if hui2_cognition = 4 then hui2_cognition_m_utility = 0.65;

*** Single-Attribute Utility Function Scores ***;

if hui2_cognition = 1 then hui2_cognition_s_utility = 1;

if hui2_cognition = 2 then hui2_cognition_s_utility = 0.86;

if hui2_cognition = 3 then hui2_cognition_s_utility = 0.66;

if hui2_cognition = 4 then hui2_cognition_s_utility = 0.00;

label hui2_cognition = “HUI2 Cognition Score” hui2_cognition_m_utility = “HUI2 Cognition Multi-Attribute Utility Score”

hui2_cognition_s_utility = “HUI2 Cognition Single-Attribute Utility Score”;

********************************

*** HUI2 SELF-CARE (Table-13) ***

********************************;

if q28 = “y” then hui2_selfcare = 1;

if q28 = “n” then do;

if q29 = “y” and q30 = “y” then hui2_selfcare = 4;

if q29 = “y” and q30 = “n” then hui2_selfcare = 4;

if q29 = “n” and q30 = “y” then hui2_selfcare = 3;

if q29 = “n” and q30 = “n” then hui2_selfcare = 2;

end;

*** Multi-Attribute Utility Function Scores ***;

if hui2_selfcare = 1 then hui2_selfcare_m_utility = 1;

if hui2_selfcare = 2 then hui2_selfcare_m_utility = 0.97;

if hui2_selfcare = 3 then hui2_selfcare_m_utility = 0.91;

if hui2_selfcare = 4 then hui2_selfcare_m_utility = 0.80;

*** Single-Attribute Utility Function Scores ***;

if hui2_selfcare = 1 then hui2_selfcare_s_utility = 1;

if hui2_selfcare = 2 then hui2_selfcare_s_utility = 0.85;

if hui2_selfcare = 3 then hui2_selfcare_s_utility = 0.55;

if hui2_selfcare = 4 then hui2_selfcare_s_utility = 0.00;

label hui2_selfcare = “HUI2 Self-Care Score” hui2_selfcare_m_utility = “HUI2 Self-Care Multi-Attribute Utility Score”

hui2_selfcare_s_utility = “HUI2 Self-Care Single-Attribute Utility Score”;

********************************

*** HUI2 PAIN (Table-14) ***

********************************;

if q39 = “n” then hui2_pain = 1;

if q39 = “y” and q40 = “n” then hui2_pain = 2;

if q39 = “y” and q40 in (“f” “s”) then hui2_pain = 3;

if q39 = “y” and q40 = “m” then hui2_pain = 4;

if q39 = “y” and q40 = “a” then hui2_pain = 5;

*** Multi-Attribute Utility Function Scores ***;

if hui2_pain = 1 then hui2_pain_m_utility = 1;

if hui2_pain = 2 then hui2_pain_m_utility = 0.97;

if hui2_pain = 3 then hui2_pain_m_utility = 0.85;

if hui2_pain = 4 then hui2_pain_m_utility = 0.64;

if hui2_pain = 5 then hui2_pain_m_utility = 0.38;

*** Single-Attribute Utility Function Scores ***;

if hui2_pain = 1 then hui2_pain_s_utility = 1;

if hui2_pain = 2 then hui2_pain_s_utility = 0.95;

if hui2_pain = 3 then hui2_pain_s_utility = 0.75;

if hui2_pain = 4 then hui2_pain_s_utility = 0.42;

if hui2_pain = 5 then hui2_pain_s_utility = 0.00;

label hui2_pain = “HUI2 Pain Score” hui2_pain_m_utility = “HUI2 Pain Multi-Attribute Utility Score”

hui2_pain_s_utility = “HUI2 Pain Single-Attribute Utility Score”;

********************************

*** HUI2 FERTILITY ***

********************************;

hui2_fertility = 1; *** If the fertility is not assessed, then it is assumed to be equal to 1.;

*** Multi-Attribute Utility Function Scores ***;

if hui2_fertility = 1 then hui2_fertility_m_utility = 1;

if hui2_fertility = 2 then hui2_fertility_m_utility = 0.97;

if hui2_fertility = 3 then hui2_fertility_m_utility = 0.88;

*** Single-Attribute Utility Function Scores ***;

if hui2_fertility = 1 then hui2_fertility_s_utility = 1;

if hui2_fertility = 2 then hui2_fertility_s_utility = 0.75;

if hui2_fertility = 3 then hui2_fertility_s_utility = 0.00;

label hui2_fertility = “HUI2 Fertility Score” hui2_fertility_m_utility = “HUI2 Fertility Multi-Attribute Utility Score”

hui2_fertility_s_utility = “HUI2 Fertility Single-Attribute Utility Score”;

*** Total Utility Score calculation ****;

hui2_utility_score = 1.06*(hui2_sensation_m_utility*hui2_mobility_m_utility*hui2_emotion_m_utility*hui2_cognition_m_utility*hui2_selfcare_m_utility*hui2_pain_m_utility*hui2_fertility_m_utility)-0.06;

hui2_utility_score = round(hui2_utility_score,0.01);

label hui2_utility_score = “HUI2 Total Utility Score”;

run;

options notes;

%mend;

**************************************

*** A Sample data preparation step ***

**************************************;

/*

*** Reading the data in its original form with the original primary key variables [i.e., ID variables] ***;

proc sql; create table hui_raw as select distinct _SCRN_ID as sid, _rz_id as rid, * from fitblue.F_hui_fmtd

where sid^ = ‘‘; quit;

*** With the following macro, we are creating variables Q1 through Q40 with all lower-case values ***;

%macro variablerename(indata = hui, outdata = hui);

data &outdata; set &indata;

format Q1 $1. Q2 $1. Q3 $1. Q4 $1. Q5 $1. Q6 $1. Q7 $1. Q8 $1. Q9 $1. Q10 $1. Q11 $1. Q12 $1. Q13 $1. Q14 $1. Q15 $1. Q16 $1.

Q17 $1. Q18 $1. Q19 $1. Q20 $1. Q21 $1. Q22 $1. Q23 $1. Q24 $1. Q25 $1. Q26 $1. Q27 $1. Q28 $1. Q29 $1. Q30 $1. Q31 $1. Q32 $1.

Q33 $1. Q34 $1. Q35 $2. Q36 $1. Q37 $1. Q38 $1. Q39 $1. Q40 $1.;

%do i = 1 %to 41;

Q&i = lowcase(HUIQ&i); *** We are renaming the HUI variables as Q1 through Q40 ***;

if substr(Q&i,1,1) = ‘[‘ then Q&i = “n”; *** We are converting the “[none]” cases to “n” ***;

%end; run;

%mend;%variablerename(indata = hui_raw, outdata = hui_1);

*** We are creating a generic ID variable for all HUI records for easy processing. This is helpful if you have multiple visits ***;

proc sort data = hui_1; by sid date; run; data hui_1; set hui_1; id = _n_; run;

*** Finalizing a input dataset by removing all other variables ****;

data hui; set hui_1; id = _n_; keep id q1-q40; run;

*/

********************

*** A sample run ***

********************;

*%Hui(inputds = hui, outputds = hui_updated);

APPENDIX II

Here, we present the SAS code that generates the test data, true domain, and utility scores and compares the results of the HUI macro with the true scores.

***********************************************************************

*** The following code generates the test data from HUI manual ***

*** and applies the %HUI macro program. Then it compares the ***

*** resulting scores with those in the manual. ***

***********************************************************************;

%include “Y:\DataAndAnalysis\MKocak\HUI Paper\HUI.sas”;

***********************

**** HUI TEST DATA ****

***********************;

data HUI_Test_Data0;

input origid $3. Q1 $1. Q2 $1. Q3 $1. Q4 $1. Q5 $1. Q6 $1. Q7 $1. Q8 $1. Q9 $1. Q10 $1. Q11 $1. Q12 $1. Q13 $1. Q14 $1. Q15 $1. Q16 $1. Q17 $1. Q18 $1. Q19 $1. Q20 $1. Q21 $1. Q22 $1. Q23 $1. Q24 $1. Q25 $1. Q26 $1. Q27 $1. Q28 $1. Q29 $1. Q30 $1. Q31 $2. Q32 $2. Q33 $2. Q34 $2. Q35 $2. Q36 $2. Q37 $1. Q38 $1. Q39 $1. Q40 $1.;

DATALINES;

run;

data HUI_Test_Data0; set HUI_Test_Data0; id = _n_; drop origid; run;

proc sql; create table hui_test_data as select distinct id, * from HUI_Test_Data0; quit;

**** Test datasets to compare ****;

/* test hui3_attribute level */

data test_hui3_scores;

input id hui3_test_vision hui3_test_hearing hui3_test_speech hui3_test_ambulation hui3_test_dexterity hui3_test_emotion hui3_test_cognition hui3_test_pain;

datalines;

run;

data test_hui3_utility;

input id hui3_test_util_vision hui3_test_util_hearing hui3_test_util_speech hui3_test_util_ambulation hui3_test_util_dexterity hui3_test_util_emotion hui3_test_util_cognition hui3_test_util_pain hui3_test_overall_utility;

datalines;

run;

/* test hui2_attribute level */

data test_hui2_scores;

input id hui2_test_sensation hui2_test_mobility hui2_test_emotion hui2_test_cognition hui2_test_selfcare hui2_test_pain hui2_test_fertility;

datalines;

run;

/* test hui2_utility_score*/

data test_hui2_utility;

input id hui2_test_util_sensation hui2_test_util_mobility hui2_test_util_emotion hui2_test_util_cognition hui2_test_util_selfcare hui2_test_util_pain hui2_test_util_fertility hui2_test_overall_utility;

datalines;

run;

data allhuitestdata; merge HUI_Test_Data test_hui3_scores test_hui3_utility test_hui2_scores test_hui2_utility; by id; run;

%HUI(inputds = allhuitestdata, outputds = allhuitestdata_scored);

proc compare base = test_hui2_scores comp = allhuitestdata_scored;

var hui2_test_sensation hui2_test_mobility hui2_test_emotion hui2_test_cognition hui2_test_selfcare hui2_test_pain hui2_test_fertility;

with hui2_sensation hui2_mobility hui2_emotion hui2_cognition hui2_selfcare hui2_pain hui2_fertility;

run;

proc compare base = test_hui3_scores comp = allhuitestdata_scored;

var hui3_test_vision hui3_test_hearing hui3_test_speech hui3_test_ambulation hui3_test_dexterity hui3_test_emotion hui3_test_cognition hui3_test_pain;

with hui3_vision hui3_hearing hui3_speech hui3_ambulation hui3_dexterity hui3_emotion hui3_cognition hui3_pain;

run;

proc compare base = test_hui2_utility comp = allhuitestdata_scored;

var hui2_test_util_sensation hui2_test_util_mobility hui2_test_util_emotion hui2_test_util_cognition hui2_test_util_selfcare hui2_test_util_pain hui2_test_util_fertility hui2_test_overall_utility;

with hui2_sensation_s_utility hui2_mobility_s_utility hui2_emotion_s_utility hui2_cognition_s_utility hui2_selfcare_s_utility hui2_pain_s_utility hui2_fertility_s_utility hui2_utility_score;

run;

proc compare base = test_hui3_utility comp = allhuitestdata_scored;

var hui3_test_util_vision hui3_test_util_hearing hui3_test_util_speech hui3_test_util_ambulation hui3_test_util_dexterity hui3_test_util_emotion hui3_test_util_cognition hui3_test_util_pain hui3_test_overall_utility;

with hui3_vision_s_utility hui3_hearing_s_utility hui3_speech_s_utility hui3_ambulation_s_utility hui3_dexterity_s_utility hui3_emotion_s_utility hui3_cognition_s_utility hui3_pain_s_utility hui3_utility_score;

run;

APPENDIX III

HUI formats for the resulting scores with a sample format application.

*** Formats detailing the scores of each domain ***;

proc format;

value sensation

1= “1: Able to see, hear and speak normally for age”

2= “2: Requires equipment fo see or heai or speak”

3= “3: Sees, hears, or speaks with limitations even with equipment”

4= “4: Blind, deaf or mute”;

value mobility

1= “1: Able to walk, bend, lift, jump, and run normally for age.”

2= “2: Walks, bends, lifts, jumps, or runs with some limitations but does not require help.”

3= “3: Requires mechanical equipment (such as canes, crutches, braces or wheelchair) to walk or get around independently.”

4= “4: Requires the help of another person to walk or get around and requires mechanical equipment as well.”

5= “5: Unable to control or use arms and legs.”;

value hui2emotion

1= “1: Generally happy and free from worry.”

2= ‘2: Occasionally fretful, angry, irritable, anxious, depressed or suffering “night terrors”‘.

3= “3: Often fretful, angry, irritable, anxious, depressed or suffering ‘night terrors’.”

4= “4: Almost always fretful, angry, irritable, anxious, depressed.”

5= “5: Extremely fretful, angry, irritable, anxious, or depressed usually requiring hospitalisation or psychiatric institutional care.”;

value hui2cognition

1= “1: Learns and remembers school work normally for age.”

2= “2: Learns and remembers school work more slowly than classmates as judged by parents and/or teachers.”

3= “3: Learns and remembers very slowly and usually requires special educational assistance.”

4= “4: Unable to learn and remember.”;

value selfcare

1= “1: Eats, bathes, dresses, and uses the toilet normally for age.”

2= “2: Eats, bathes, dresses, or uses the toilet independently with difficulty.”

3= “3: Requires mechanical equipment to eat, bathe, dress, or use the toilet independently.”

4= “4: Requires the help of another person to eat, bathe, dress, or use the toilet.”;

value hui2pain

1= “1: Free of pain and discomfort.”

2= “2: Occasional pam. D1scomfortreheved by 11on-prescnpt1on drugs or self-control activity without disruption of normal activities.”

3= “3: Frequent pain. Discomfort relieved by oral medicines with occasional disruption of normal activities.”

4= “4: Frequent pain; frequent disruption of normal activities. Discomfort requires prescription narcotics for relief.”

5= “5: Severe pain. Pain not relieved by drugs and constantly disrupts normal activities.”;

value fertility

1= “1: Able to have children with a fertile spouse.”

2= “2: Difficulty in having children with a fertile spouse.”

3= “3: Unable to have children with a fertile spouse.”;

value vision

1= “1: Able fo see well enough to read ordinary newsprintarid recognize a friend on the other side of the street, without glasses or contact lenses.”

2= “2: Able to see well enough to read ordinary newsprint and recognize a friend on the other side of the street, but with glasses.”

3= “3: Able to read ordinary newsprint with or without glasses but unable to recognize a friend on the other side of the street, even with glasses.”

4= “4: Able to recognize a friend on the other side of the street with or without glasses but unable to read ordinary newsprint, even with glasses.”

5= “5: Unable to read ordinary newsprint and unable to recognize a friend on the other side of the street, even with glasses.”

6= “6: Unable to see at all.”;

value hearing

1= “1: Able to hear what is said in a group conversation with at least three other people, without a hearing aid.”

2= “2: Able to hear what is said in a conversation with one other person in a quiet room without a hearing aid, but requires a hearing aid to hear what is said in a group conversation with at least three other people.”

3= “3: Able to hear what is said in a conversation with one other person in a quiet room with a hearing aid, and able to hear what is said in a group conversation with at least three other people with a hearing aid.”

4= “4: Able to hear what is said in a conversation with one other person in a quiet room without a hearing aid, but unable to hear what is said in a group conversation with at least three other people even with a hearing aid.”

5= “5: Able to hear what is said in a conversation with one other person in a quiet room with a hearing aid, but unable to hear what is said in a group conversation with at least three other people even with a hearing aid.”

6= “6: Unable to hear at all.”;

value speech

1= “1: Able to be understood completely when speaking with strangers or friends.”

2= “2: Able to be understood partially when speaking with strangers but able to be understood completely when speaking with people who know me well.”

3= “3: Able to be understood partially when speaking with strangers or people who know me well.”

4= “4: Unable to be understood when speaking with strangers but able to be understood partially by people who know me well.”

5= “5: Unable to be understood when speaking to other people (or unable to speak at all).”;

value ambulation

1= “1: Able to walk around_ thenejghbourhoo_d without difficulty and without walking equipment.”

2= “2: Able to walk around the neighbourhood with difficulty, but does not require walking equipment or the help of another person.”

3= “3: Able to walk around the neighbourhood with walking equipment, but without the help of another person.”

4= “4: Able to walk only short distances with walking equipment, and requires a wheelchair to get around the neighbourhood.”

5= “5: Unable to walk alone, even with walking equipment. Able to walk short distances with the help of another person, and requires a wheelchair to get around the neighbourhood.”

6= “6: Cannot walk at all.”;

value dexterity

1= “1: Full use of two hands and ten fingers.”

2= “2: Limitations in the use of hands or fingers, but does not require special tools or help of another person.”

3= “3: Limitations in the use of hands or fingers, is independent with use of special tools (does not require the help of another person).”

4= “4: Limitations in the use of hands or fingers, requires the help of another person for some tasks (not independent even with the use of special tools).”

5= “5: Limitations in the use of hands or fingers, requires the help of another person for most tasks (not independent even with the use of special tools).”

6= “6: Limitations in the use of hands or fingers, requires the help of another person for all tasks (not independent even with the use of special tools).”;

value hui3emotion

1= “1: Happy and interested in life.”

2= “2: Somewhat happy.”

3= “3: Somewhat unhappy.”

4= “4: Very unhappy.”

5= “5: So unhappy that life is not worthwhile.”;

value hui3cognition

1= “1: Able to remember most things, think clearly and solve day to day problems.”

2= “2: Able to remember most things, but have a little difficulty when trying to think and solve day to day problems.”

3= “3: Somewhat forgetful, but able to think clearly and solve day to day problems.”

4= “4: Somewhat forgetful, and have a little difficulty when trying to think or solve day to day problems.”

5= “5: Very forgetful, and have great difficulty when trying to think or solve day to day problems.”

6= “6: Unable to remember anything at all, and unable to think or solve day to day problems.”;

value hui3pain

1= “1: Free of pain and discomfort.”

2= “2: Mild to moderate pain that prevents no activities.”

3= “3: Moderate pain that prevents a few activities.”

4= “4: Moderate to severe pain that prevents some activities.”

5= “5: Severe pain that prevents most activities.”;

run;

*** Formats classifying each domain in terms of disability level ***;

proc format;

value sensation_disability

1= “1: (Disability) None”

2= “2: (Disability) Mild”

3= “3: (Disability) Moderate”

4= “4: (Disability) Severe”;

value mobility_disability

1= “1: (Disability) None”

2= “2: (Disability) Mild”

3= “3: (Disability) Moderate”

4= “4: (Disability) Severe”

5= “5: (Disability) Severe”;

value hui2emotion_disability

1= “1: (Disability) None”

2= “2: (Disability) Mild”

3= “3: (Disability) Moderate”

4= “4: (Disability) Severe”

5= “5: (Disability) Severe”;

value hui2cognition_disability

1= “1: (Disability) None”

2= “2: (Disability) Mild”

3= “3: (Disability) Moderate”

4= “4: (Disability) Severe”;

value selfcare_disability

1= “1: (Disability) None”

2= “2: (Disability) Mild”

3= “3: (Disability) Moderate”

4= “4: (Disability) Severe”;

value hui2pain_disability

1= “1: (Disability) None”

2= “2: (Disability) Mild”

3= “3: (Disability) Moderate”

4= “4: (Disability) Severe”

5= “5: (Disability) Severe”;

value fertility_disability

1= “1: (Disability) None”

2= “2: (Disability) Mild”

3= “3: (Disability) Moderate”;

value vision_disability

1= “1: (Disability) None”

2= “2: (Disability) Mild”

3= “3: (Disability) Moderate”

4= “4: (Disability) Moderate”

5= “5: (Disability) Severe”

6= “6: (Disability) Severe”;

value hearing_disability

1= “1: (Disability) None”

2= “2: (Disability) Mild”

3= “3: (Disability) Moderate”

4= “4: (Disability) Moderate”

5= “5: (Disability) Severe”

6= “6: (Disability) Severe”;

value speech_disability

1= “1: (Disability) None”

2= “2: (Disability) Mild”

3= “3: (Disability) Moderate”

4= “4: (Disability) Moderate”

5= “5: (Disability) Severe”;

value ambulation_disability

1= “1: (Disability) None”

2= “2: (Disability) Mild”

3= “3: (Disability) Moderate”

4= “4: (Disability) Severe”

5= “5: (Disability) Severe”

6= “6: (Disability) Severe”;

value dexterity_disability

1= “1: (Disability) None”

2= “2: (Disability) Mild”

3= “3: (Disability) Moderate”

4= “4: (Disability) Severe”

5= “5: (Disability) Severe”

6= “6: (Disability) Severe”;

value hui3emotion_disability

1= “1: (Disability) None”

2= “2: (Disability) Mild”

3= “3: (Disability) Moderate”

4= “4: (Disability) Severe”

5= “5: (Disability) Severe”;

value hui3cognition_disability

1= “1: (Disability) None”

2= “2: (Disability) Mild”

3= “3: (Disability) Mild”

4= “4: (Disability) Moderate”

5= “5: (Disability) Severe”

6= “6: (Disability) Severe”;

value hui3pain_disability

1= “1: (Disability) None”

2= “2: (Disability) Mild”

3= “3: (Disability) Moderate”

4= “4: (Disability) Severe”

5= “5: (Disability) Severe”;

run;

*** Applications to the scored HUI data ***;

data hui_scored_formated; set hui_scored;

format hui2_sensation sensation. hui2_mobility mobility. hui2_emotion hui2emotion. hui2_cognition hui2cognition. hui2_selfcare selfcare. hui2_pain hui2pain.

hui2_fertility fertility.

hui3_vision vision. hui3_hearing hearing. hui3_speech speech. hui3_ambulation ambulation. hui3_dexterity dexterity. hui3_emotion hui3emotion. hui3_cognition hui3cognition. hui3_pain hui3pain.;

run;

data hui_scored_diability; set hui_scored;

format hui2_sensation sensation_disability. hui2_mobility mobility_disability. hui2_emotion hui2emotion_disability. hui2_cognition hui2cognition_disability. hui2_selfcare selfcare_disability. hui2_pain hui2pain_disability.

hui2_fertility fertility_disability.

hui3_vision vision_disability. hui3_hearing hearing_disability. hui3_speech speech_disability. hui3_ambulation ambulation_disability. hui3_dexterity dexterity_disability. hui3_emotion hui3emotion_disability. hui3_cognition hui3cognition_disability. hui3_pain hui3pain_disability.;

run;