Controlled hypertension derived variable
Source:R/blood-pressure.R
determine_controlled_hypertension.RdThis function determines the controlled hypertension status of a respondent based on their systolic and diastolic blood pressure measurements and medication usage.
Usage
determine_controlled_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: Hypertension controlled (BP < 140/90 mmHg (or < 130/80 mmHg if diabetes or CKD) when on hypertension medication)
2: Hypertension not controlled (BP >= 140/90 mmHg (or >= 130/80 mmHg if diabetes or CKD) when on hypertension medication)
haven::tagged_na("a"): Not applicablehaven::tagged_na("b"): Missing
Details
This function assesses whether a respondent's hypertension is controlled:
**Control Thresholds:**
- General population: < 140/90 mmHg
- Diabetes or CKD patients: < 130/80 mmHg
**Logic:**
- Only applies to respondents taking hypertension medication.
- If BP is below the threshold, hypertension is "controlled" (1).
- If BP is at or above the threshold, it is "not controlled" (2).
**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
determine_controlled_adjusted_hypertension() for controlled status with adjusted BP
Examples
# Scalar usage: Single respondent
# Example 1: Respondent has systolic BP = 150, diastolic BP = 95, and on medication.
determine_controlled_hypertension(BPMDPBPS = 150, BPMDPBPD = 95, ANYMED2 = 1)
#> [1] 2
# Output: 2 (Hypertension not controlled due to high SBP and SBP despite medication usage).
# Example 2: Respondent has systolic BP = 120, diastolic BP = 80, and on medication.
determine_controlled_hypertension(BPMDPBPS = 120, BPMDPBPD = 80, ANYMED2 = 1)
#> [1] 1
# Output: 1 (Hypertension controlled as BP is below 140/90 mmHg and on medication).
# Example 3: Respondent has non-response BP values of 996 for both systolic and diastolic.
result <- determine_controlled_hypertension(BPMDPBPS = 996, BPMDPBPD = 996, ANYMED2 = 0)
result # Shows: NA
#> [1] 2
haven::is_tagged_na(result, "a") # Shows: TRUE (confirms it's tagged NA(a))
#> [1] FALSE
format(result, tag = TRUE) # Shows: "NA(a)" (displays the tag)
#> [1] "2"
# Multiple respondents
determine_controlled_hypertension(
BPMDPBPS = c(150, 120, 135), BPMDPBPD = c(95, 80, 85),
ANYMED2 = c(1, 1, 1), DIABX = c(2, 2, 1)
)
#> [1] 2 1 2
# Returns: c(2, 1, 2)