# Scale ID: 			HAD-S
# Scale Name: 		HAD-S Anxiety Scale
# TILDA Variables: 	MHhadsa; MHhadsa_capi
# Dataset:      		TILDA Waves 1
# Author:
# Institution:  		The Irish Longitudinal Study on Ageing (TILDA)
# 
# Description:
# Cleans and codes up summed score from the Anxiety subscale of the Hospital Anxiety and Depression Scale.
# 
# Version:      1.0
# Date:         2026-09-01
# Language:     R

# Assumption: the working data frame is called `data`.

# Questions 4 and 5 are scored in the opposite direction to the other items.
# ============================================================
# HADS-A Anxiety Scale - SCQ Version
# ============================================================

# Initialise score only for participants who completed the SCQ
data$hadsa <- NA_real_
data$hadsa[data$has_scq == 1 & !is.na(data$has_scq)] <- 0

# Positively scored items
posq <- c(
  "SCQAnxiety1",
  "SCQAnxiety2",
  "SCQAnxiety3",
  "SCQAnxiety6",
  "SCQAnxiety7"
)

for (var in posq) {

  data$hadsa <- data$hadsa + (4 - data[[var]])

  # Set total score to missing if item is invalid/missing
  data$hadsa[
    !is.na(data[[var]]) &
    (data[[var]] == 999 | data[[var]] < 0)
  ] <- NA_real_
}

# Questions 4 and 5 are scored in the opposite direction
data$hadsa <- data$hadsa + (data$SCQAnxiety4 - 1)
data$hadsa <- data$hadsa + (data$SCQAnxiety5 - 1)

# Set total score to missing if either item is invalid/missing
data$hadsa[
  !is.na(data$SCQAnxiety4) &
  (data$SCQAnxiety4 == 999 | data$SCQAnxiety4 < 0)
] <- NA_real_

data$hadsa[
  !is.na(data$SCQAnxiety5) &
  (data$SCQAnxiety5 == 999 | data$SCQAnxiety5 < 0)
] <- NA_real_

# Variable label
attr(data$hadsa, "label") <- "HADS-A Anxiety Scale"

# Rename
names(data)[names(data) == "hadsa"] <- "MHhadsa"



# ============================================================
# HADS-A Anxiety Scale - CAPI Version
# ============================================================

data$hadsa <- 0

# Positively scored items
posq <- c("mh201", "mh202", "mh203", "mh206", "mh207")

for (var in posq) {

  data$hadsa <- data$hadsa + (4 - data[[var]])

  data$hadsa[
    !is.na(data[[var]]) &
    data[[var]] %in% c(98, 99, -1)
  ] <- NA_real_
}

# Negatively scored items
negq <- c("mh204", "mh205")

for (var in negq) {

  data$hadsa <- data$hadsa + (data[[var]] - 1)

  data$hadsa[
    !is.na(data[[var]]) &
    data[[var]] %in% c(98, 99, -1)
  ] <- NA_real_
}

# Variable label
attr(data$hadsa, "label") <- "HADS-A Anxiety Scale (CAPI)"

# Rename
names(data)[names(data) == "hadsa"] <- "MHhadsa_capi"