This function determines the hypertension status of a respondent based on their systolic and diastolic blood pressure measurements and medication usage.
Usage
derive_hypertension(
bpmdpbps,
bpmdpbpd,
any_htn_med,
ccc_32 = 2,
cvd_status = 2,
diab_status = 2,
ckd_status = 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.
- any_htn_med
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)
- cvd_status
integer An optional integer indicating the presence of cardiovascular disease, affecting medication status.
1: Yes
2: No (default)
- diab_status
integer An optional integer indicating the presence of diabetes, affecting blood pressure thresholds.
1: Yes
2: No (default)
- ckd_status
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 applicablehaven::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")`.
- `any_htn_med`:
- Tagged NA "a": Valid skip.
- Tagged NA "b": Don't know, refusal, or not stated.
- `ccc_32`, `cvd_status`, `diab_status`, `ckd_status`:
- `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, derive_hypertension_adj() for adjusted BP classification
Examples
# Scalar usage: Single respondent
# Example 1: Respondent has systolic BP = 150, diastolic BP = 95, and on medication.
derive_hypertension(bpmdpbps = 150, bpmdpbpd = 95, any_htn_med = 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.
derive_hypertension(bpmdpbps = 120, bpmdpbpd = 80, any_htn_med = 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 <- derive_hypertension(bpmdpbps = 996, bpmdpbpd = 996, any_htn_med = 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
derive_hypertension(
bpmdpbps = c(150, 120, 135), bpmdpbpd = c(95, 80, 85),
any_htn_med = c(1, 0, 1), diab_status = c(2, 2, 1)
)
#> [1] 1 2 1
# Returns: c(1, 2, 1)
# Database usage: Applied to survey datasets
# library(dplyr)
# dataset |>
# mutate(hypertension = derive_hypertension(bpmdpbps, bpmdpbpd, any_htn_med))