Skip to contents

This function determines the hypertension status of a respondent based on their systolic and diastolic blood pressure measurements and medication usage.

Usage

determine_hypertension(
  BPMDPBPS,
  BPMDPBPD,
  ANYMED2,
  CCC_32 = 2,
  CARDIOV = 2,
  DIABX = 2,
  CKD = 2
)

Arguments

BPMDPBPS

integer An integer representing the systolic blood pressure measurement of the respondent.

BPMDPBPD

integer An integer representing the diastolic blood pressure measurement of the respondent.

ANYMED2

integer An integer indicating whether the respondent is on medication for hypertension.

  • 1: Yes

  • 0: No

CCC_32

integer An optional integer indicating whether the respondent is actually on medication for hypertension.

  • 1: Yes

  • 2: No (default)

CARDIOV

integer An optional integer indicating the presence of cardiovascular disease, affecting medication status.

  • 1: Yes

  • 2: No (default)

DIABX

integer An optional integer indicating the presence of diabetes, affecting blood pressure thresholds.

  • 1: Yes

  • 2: No (default)

CKD

integer An optional integer indicating the presence of chronic kidney disease, affecting blood pressure thresholds.

  • 1: Yes

  • 2: No (default)

Value

integer The hypertension status:

  • 1: High blood pressure (BP >= 140/90 mmHg (or >= 130/80 mmHg if diabetes or CKD) or on hypertension medication)

  • 2: Normal blood pressure (BP < 140/90 mmHg (or < 130/80 mmHg if diabetes or CKD) and not on hypertension medication)

  • haven::tagged_na("a"): Not applicable

  • haven::tagged_na("b"): Missing

Details

This function implements clinical guidelines for hypertension classification:

     **Blood Pressure Thresholds:**
     - General population: >= 140/90 mmHg indicates hypertension
     - Diabetes or CKD patients: >= 130/80 mmHg indicates hypertension (lower threshold)

     **Medication Logic:**
     - Anyone taking hypertension medication is classified as hypertensive
     - Medication status may be adjusted based on comorbidities (diabetes, CKD, cardiovascular disease)

     **Missing Data Codes:**
     - `BPMDPBPS`, `BPMDPBPD`:
       - `996`: Valid skip. Handled as `haven::tagged_na("a")`.
       - `997-999`: Don't know, refusal, or not stated. Handled as `haven::tagged_na("b")`.
     - `ANYMED2`:
       - Tagged NA "a": Valid skip.
       - Tagged NA "b": Don't know, refusal, or not stated.
     - `CCC_32`, `CARDIOV`, `DIABX`, `CKD`:
       - `6`: Valid skip. Handled as `haven::tagged_na("a")`.
       - `7-9`: Don't know, refusal, or not stated. Handled as `haven::tagged_na("b")`.

See also

adjust_SBP(), adjust_DBP() for blood pressure adjustment, determine_adjusted_hypertension() for adjusted BP classification

Examples

# Scalar usage: Single respondent
# Example 1: Respondent has systolic BP = 150, diastolic BP = 95, and on medication.
determine_hypertension(BPMDPBPS = 150, BPMDPBPD = 95, ANYMED2 = 1)
#> [1] 1
# Output: 1 (High blood pressure due to systolic BP, diastolic BP, and medication usage).

# Example 2: Respondent has systolic BP = 120, diastolic BP = 80, and not on medication.
determine_hypertension(BPMDPBPS = 120, BPMDPBPD = 80, ANYMED2 = 0)
#> [1] 2
# Output: 2 (Normal blood pressure as BP is below 140/90 mmHg and not on medication).

# Example 3: Respondent has non-response BP values of 996 for both systolic and diastolic.
result <- determine_hypertension(BPMDPBPS = 996, BPMDPBPD = 996, ANYMED2 = 0)
result # Shows: NA
#> [1] NA
haven::is_tagged_na(result, "a") # Shows: TRUE (confirms it's tagged NA(a))
#> [1] TRUE
format(result, tag = TRUE) # Shows: "NA(a)" (displays the tag)
#> [1] "NA"

# Multiple respondents
determine_hypertension(
  BPMDPBPS = c(150, 120, 135), BPMDPBPD = c(95, 80, 85),
  ANYMED2 = c(1, 0, 1), DIABX = c(2, 2, 1)
)
#> [1] 1 2 1
# Returns: c(1, 2, 1)