Papre 24: Composite Blood Pressure and LDL-Cholesterol Control

Author

Dr Solomon Gyabaah

Published

November 1, 2026


Note
  • Everyone was hypertensive at baseline so that is not included in the tables
  • Only 39 participants are current alcohol users. Should we still use that criteria?

Importing Data

Show code
df_pings2_bp <- 
    dget("Data/pings_2_data_with_bps_ready") 

df_for_outc <- 
  df_pings2_bp |>
  select(pid, eventname, sbp, ff_ldl_12) |>
  arrange(pid, eventname) |>
  group_by(pid)|>
  fill(ff_ldl_12) |>
  filter(eventname == "Month12")|>
  select(-eventname)|>
  mutate(
    outc_140_18 = case_when(
      (sbp < 140 & ff_ldl_12 < 1.8) ~ "Yes", 
      !(is.na(sbp) | is.na(ff_ldl_12)) ~ "No"),
    outc_130_14 = case_when(
      (sbp < 130 & ff_ldl_12 < 1.4) ~ "Yes", 
      !(is.na(sbp) | is.na(ff_ldl_12)) ~ "No"))
  


df_baseline <- 
    dget("Data/df_for_papers") %>%
    labelled::unlabelled() %>% 
    mutate(
        d_st_type = as.character(d_st_type),
        d_st_type = case_when(
            d_st_type == "Ischemic With Hemorrhagic Transformation" ~ 
            "Ischemic Stroke", 
            is.na(d_st_type) ~ "Untyped Stroke (no CT scan available)",
            TRUE ~ d_st_type)) |> 
    labelled::set_variable_labels(
            d_st_type = "Stroke Type")

df_antihypt <- 
    df_pings2_bp |> 
    filter(eventname == "Baseline") |> 
    select(
        pid, h_antihpt, h_ccb, h_acei, h_arb, h_bb, 
        h_alpha_md, h_diuretics, h_alpha_ab, h_antiplt, 
        h_statins)

df_drugs_temp <- 
  readxl::read_xlsx(
      "Data/drugs_data_clean_10122025.xlsx", sheet = 1) 

df_max_drug_doses_temp <- 
  readxl::read_xlsx(
      "Data/PINGS_Antihypertensive Maximum doses.xlsx", sheet = 2)

Data manipulation

Show code
df_sbp <- 
    df_pings2_bp |> # labelled::look_for("acei")
    select(sbp, dbp, pid, eventname) |> 
    mutate(
        mth = parse_number(eventname),
        mth = case_when(
            eventname == "Baseline" ~ 0, 
            TRUE ~ mth)) |> 
    pivot_wider(
        id_cols = pid, 
        values_from = sbp, 
        names_from = mth, 
        names_prefix = "sbp_m_") |> 
    drop_na()

df_dbp <- 
    df_pings2_bp |> # labelled::look_for("acei")
    select(sbp, dbp, pid, eventname) |> 
    mutate(
        mth = parse_number(eventname),
        mth = case_when(
            eventname == "Baseline" ~ 0, 
            TRUE ~ mth)) |> 
    pivot_wider(
        id_cols = pid, 
        values_from = dbp, 
        names_from = mth, 
        names_prefix = "dbp_m_") |> 
    drop_na()

df_drugs <-  
    df_drugs_temp %>% 
    left_join(df_max_drug_doses_temp, by = "drug") %>%
    mutate(
        dose_index = freq_number*dose_number/maxi,
        antihpt  = case_when(is.na(antihpt) ~ 0, TRUE ~ antihpt)) %>% 
    filter(antihpt == 1) %>% 
    group_by(pid, eventname, arm) %>% 
    summarize(
      n_hpts = sum(antihpt), 
      dose_index = sum(dose_index)) %>% 
    ungroup() |> 
    filter(eventname == "Baseline") |> 
    select(pid, dose_index)

df_paper_20 <- 
    df_pings2_bp |> # labelled::look_for("acei")
    select(sbp, dbp, pid, eventname) |> 
    mutate(
        sbp_high = sbp >= 140, 
        dbp_high = dbp >= 90, 
        hpt = sbp_high | dbp_high, 
        mth = parse_number(eventname),
        mth = case_when(
            eventname == "Baseline" ~ 0, 
            TRUE ~ mth)) |> 
    select(pid, mth, hpt) |> 
    arrange(pid, mth) |> 
    pivot_wider(
        id_cols = pid, 
        values_from = hpt, 
        names_from = mth, 
        names_prefix = "m_") |> 
    drop_na() |> 
    mutate(
        m_0 = case_when(m_0 == FALSE ~ TRUE, TRUE ~ m_0),
        total_1 = rowSums(across(c(m_0:m_12))),
        hpt_class = case_when(
             total_1 == 1 ~ "Early",
             total_1 == 6 ~ "Persistent", 
             total_1 == 5 & m_12 == FALSE ~ "Late", 
             total_1 == 5 ~ "Fluctuating", 
             total_1 == 4 & m_9 == FALSE & m_12 == FALSE~ "Late",
             m_0 & m_1 & m_3 == FALSE & m_6 == FALSE & m_9 == FALSE & 
                 m_12 == FALSE~ "Early", 
             m_0 & m_1 & m_3 & m_6 == FALSE & m_9 == FALSE & m_12 == FALSE~ "Early", 
             m_0 & m_1 & m_3 & m_6 & m_9 == FALSE & m_12 == FALSE~ "Late",
             m_0 & m_1 & m_3 & m_6 & m_9 & m_12 == FALSE~ "Late", 
             m_0 & m_1 & m_3 & m_6 == FALSE & m_9 & m_12 == FALSE~ "Fluctuating", 
             m_0 & m_1 & m_3 & m_6 == FALSE & m_9 == FALSE & m_12 ~ "Fluctuating",
             m_0 & m_1 & m_3 == FALSE & m_6 & m_9 & m_12 == FALSE~ "Fluctuating", 
             total_1 == 4 & m_9 == FALSE & m_12 ~ "Fluctuating", 
             total_1 == 4 & m_9 & m_12 == FALSE~ "Fluctuating", 
             total_1 == 4 ~ "Fluctuating", 
             total_1 == 3 ~ "Fluctuating", 
             total_1 == 2 ~ "Fluctuating")) |> 
    left_join(df_baseline) |> 
    left_join(df_antihypt) |> 
    left_join(df_sbp) |> 
    left_join(df_dbp) |>
    left_join(df_drugs) |> 
    left_join(df_for_outc) |>
    mutate(
        no_of_hpts = 
            (h_acei == "Checked") + (h_arb == "Checked") + 
            (h_bb == "Checked") + (h_ccb == "Checked") + 
            (h_diuretics  == "Checked") + (h_alpha_md  == "Checked") + 
            (h_alpha_ab == "Checked"),
        arm = case_when(
            arm == "Arm 1- Intervention Arm" ~ "Intervention", 
            arm == "Arm 2- Routine Care" ~ "Routine") |> 
          factor(levels = c("Routine", "Intervention")),
        alcohol_curr = case_when(
            g_alcohol == "Currently uses alcohol" ~ "Yes",
            g_alcohol %in% c(
                "Never used alcohol", 
                "Past 12 months", 
                "Past 30 days", 
                "Formerly used alcohol", 
                "Stopped after the stroke occured") ~ "No"))



df_ready <- 
    df_paper_20 |> 
  mutate(
    bmi_cat = case_when(
      bmi < 25 ~ "Normal", 
      bmi < 30 ~ "Overweight", 
      bmi >= 30 ~ "Obese")|> 
        factor(levels = c("Normal","Overweight", "Obese")), 
    hba1c_high = case_when(
      ff_hba1c_0 >= 6.5 ~ "Yes", 
      ff_hba1c_0 < 6.5 ~ "No"), 
    across(
      c(h_acei, h_arb, h_bb, h_ccb, h_diuretics, h_alpha_md, h_alpha_ab), 
      .fns = ~case_when(
        .x == "Checked" ~ "Yes", 
        .x == "Unchecked" ~ "No"))) |>
    select(
        a_agebase, a_gender, educ, maristat, a_domicile, income,    
        a_religion, d_stroke_ct, d_st_type, nihss_scale, ranking, 
        dm, tobacco_use, bmi_cat, waist_hip_ratio, arm,hyperlipidemia,
        alcohol_curr, ff_hba1c_0, hba1c_high,  h_acei, h_arb, h_bb, h_ccb,
        h_diuretics, h_alpha_md, h_alpha_ab,h_antiplt, h_statins, hillbone, 
        aa_hkq, eq_5d,  hosp_cat, dose_index, outc_140_18, outc_130_14)

Labelling data

Show code
df_ready <- 
    df_ready |> 
    labelled::set_variable_labels(
            h_arb = "Angiotensin Receptor Blocker",
            h_acei = "ACE-Inhibitors",
            h_alpha_md = "Alpha Methyl Dopa",
            h_bb = "Beta blockers",
            h_ccb = "Calcium Channel Blocker",
            h_diuretics = "Diuretics",
            h_alpha_ab = "Alpha Adrenergic Blockers", 
#            no_of_hpts = "No. of Antihypertensives", 
            h_antiplt = "Antiplatelet", 
            h_statins = "Statins",
            dose_index = "Antihypertensive treatment intensity",
            eq_5d = "Health Related QoL", 
            arm = "Study Arm", 
            bmi_cat = "Categorised Body Mass Index", 
            hba1c_high = "High HbA1C")

Table 0

Show code
gtsummary::theme_gtsummary_compact()
Setting theme "Compact"
Show code
gtsummary::theme_gtsummary_eda()
Setting theme "Exploratory Data Analysis"
Show code
df_ready |> # labelled::look_for("alc")
    gtsummary::tbl_summary(missing_text = "Missing") |> 
    gtsummary::bold_labels()
Characteristic N = 3651
Age in years
    Median (Q1, Q3) 58 (50, 67)
    Mean (SD) 58 (11)
    Min, Max 29, 86
Gender
    Male 207 (56.7%)
    Female 158 (43.3%)
Educational Status
    None 31 (8.49%)
    Primary 152 (41.6%)
    Secondary 117 (32.1%)
    Tertiary 65 (17.8%)
Marital Status
    Currently Married 244 (66.8%)
    Previously Married 101 (27.7%)
    Never Married 20 (5.48%)
Domicile
    Rural 24 (6.58%)
    Semi-Urban 124 (34.0%)
    Urban 217 (59.5%)
Income in GHC
    0-100 130 (35.8%)
    101-250 113 (31.1%)
    251-500 81 (22.3%)
    >500 39 (10.7%)
    Missing 2
Religion
    Christianity 332 (91.0%)
    Islam 31 (8.49%)
    Other 2 (0.55%)
Stroke Subtype ( with results of Brain CT scan)
    Ischaemic 237 (73.8%)
    Haemorrhage infarct 10 (3.12%)
    Haemorrhagic 66 (20.6%)
    Ischaemic and Haemorrhagic 8 (2.49%)
    Missing 44
Stroke Type
    Intracerebral Hemorrhagic Stroke 76 (20.8%)
    Ischemic Stroke 260 (71.2%)
    Untyped Stroke (no CT scan available) 29 (7.95%)
NIH Stroke Scale
    Median (Q1, Q3) 2.0 (0.0, 7.0)
    Mean (SD) 4.3 (4.9)
    Min, Max 0.0, 23.0
    Missing 4
Modified Ranking Score
    0 26 (7.12%)
    1 84 (23.0%)
    2 117 (32.1%)
    3 72 (19.7%)
    4 65 (17.8%)
    5 1 (0.27%)
Diabetes Mellitus 123 (33.7%)
History of tobacco use 25 (7.00%)
    Missing 8
Categorised Body Mass Index
    Normal 151 (42.3%)
    Overweight 117 (32.8%)
    Obese 89 (24.9%)
    Missing 8
Waist-Hip Ratio
    Median (Q1, Q3) 0.93 (0.89, 0.96)
    Mean (SD) 1.17 (4.63)
    Min, Max 0.09, 88.30
    Missing 8
Study Arm
    Routine 184 (50.4%)
    Intervention 181 (49.6%)
Hyperlipidemia 120 (32.9%)
alcohol_curr 39 (10.7%)
HBA1C (Baseline)
    Median (Q1, Q3) 5.80 (5.40, 6.70)
    Mean (SD) 6.44 (2.03)
    Min, Max 3.00, 16.10
    Missing 69
High HbA1C 85 (28.7%)
    Missing 69
ACE-Inhibitors 29 (7.95%)
Angiotensin Receptor Blocker 33 (9.04%)
Beta blockers 14 (3.84%)
Calcium Channel Blocker 162 (44.4%)
Diuretics 15 (4.11%)
Alpha Methyl Dopa 17 (4.66%)
Alpha Adrenergic Blockers 5 (1.37%)
Antiplatelet 48 (14.0%)
    Missing 21
Statins 35 (10.4%)
    Missing 29
Total Hillbone Score
    Median (Q1, Q3) 53.0 (50.0, 53.0)
    Mean (SD) 51.4 (3.7)
    Min, Max 30.0, 56.0
    Missing 6
Total HKQ Score
    Median (Q1, Q3) 9 (6, 10)
    Mean (SD) 8 (3)
    Min, Max 0, 13
    Missing 15
Health Related QoL
    Median (Q1, Q3) 10.00 (8.00, 11.00)
    Mean (SD) 9.71 (1.94)
    Min, Max 6.00, 15.00
    Missing 144
Health institution category
    Primary 112 (30.7%)
    Secondary 81 (22.2%)
    Tertiary 172 (47.1%)
Antihypertensive treatment intensity
    Median (Q1, Q3) 1.44 (0.83, 1.92)
    Mean (SD) 1.48 (0.79)
    Min, Max 0.06, 4.50
    Missing 43
outc_140_18 50 (17.9%)
    Missing 86
outc_130_14 18 (6.45%)
    Missing 86
1 n (%)

Table 1A - Composite score (140mmHg, 1.8mmol/L)

Show code
gtsummary::reset_gtsummary_theme()
gtsummary::theme_gtsummary_compact()
Setting theme "Compact"
Show code
df_ready |>
  select(-c(outc_130_14, hyperlipidemia))|>
  gtsummary::tbl_summary(by = outc_140_18) |> 
  gtsummary::modify_spanning_header(
        gtsummary::all_stat_cols() ~ "**SBP < 140, LDL < 1.8 mmol/L**") %>% 
  gtsummary::add_overall(last = T) |>
  gtsummary::add_p()|>
  gtsummary::bold_p()|>
  gtsummary::bold_labels() |>
  gtsummary::modify_caption(
      "**Table 1A**: DEMOGRAPHIC & CLINICAL CHARACTERISTICS OF STUDY PARTICIPANTS**") 
86 missing rows in the "outc_140_18" column have been removed.
Table 1A: DEMOGRAPHIC & CLINICAL CHARACTERISTICS OF STUDY PARTICIPANTS**
Characteristic
SBP < 140, LDL < 1.8 mmol/L
Overall
N = 2791
p-value2
No
N = 2291
Yes
N = 501
Age in years 57 (50, 65) 61 (53, 70) 58 (51, 66) 0.072
Gender


0.8
    Male 132 (58%) 30 (60%) 162 (58%)
    Female 97 (42%) 20 (40%) 117 (42%)
Educational Status


0.4
    None 17 (7.4%) 6 (12%) 23 (8.2%)
    Primary 97 (42%) 18 (36%) 115 (41%)
    Secondary 74 (32%) 20 (40%) 94 (34%)
    Tertiary 41 (18%) 6 (12%) 47 (17%)
Marital Status


0.9
    Currently Married 150 (66%) 35 (70%) 185 (66%)
    Previously Married 69 (30%) 13 (26%) 82 (29%)
    Never Married 10 (4.4%) 2 (4.0%) 12 (4.3%)
Domicile


0.6
    Rural 12 (5.2%) 4 (8.0%) 16 (5.7%)
    Semi-Urban 78 (34%) 14 (28%) 92 (33%)
    Urban 139 (61%) 32 (64%) 171 (61%)
Income in GHC


>0.9
    0-100 84 (37%) 20 (40%) 104 (38%)
    101-250 67 (30%) 15 (30%) 82 (30%)
    251-500 51 (22%) 10 (20%) 61 (22%)
    >500 25 (11%) 5 (10%) 30 (11%)
    Unknown 2 0 2
Religion


0.2
    Christianity 214 (93%) 44 (88%) 258 (92%)
    Islam 13 (5.7%) 6 (12%) 19 (6.8%)
    Other 2 (0.9%) 0 (0%) 2 (0.7%)
Stroke Subtype ( with results of Brain CT scan)


0.4
    Ischaemic 148 (71%) 33 (79%) 181 (72%)
    Haemorrhage infarct 10 (4.8%) 0 (0%) 10 (4.0%)
    Haemorrhagic 43 (21%) 9 (21%) 52 (21%)
    Ischaemic and Haemorrhagic 7 (3.4%) 0 (0%) 7 (2.8%)
    Unknown 21 8 29
Stroke Type


0.6
    Intracerebral Hemorrhagic Stroke 54 (24%) 9 (18%) 63 (23%)
    Ischemic Stroke 160 (70%) 37 (74%) 197 (71%)
    Untyped Stroke (no CT scan available) 15 (6.6%) 4 (8.0%) 19 (6.8%)
NIH Stroke Scale 3.0 (0.0, 7.0) 2.0 (0.0, 9.0) 2.0 (0.0, 7.0) 0.7
    Unknown 2 0 2
Modified Ranking Score


0.5
    0 20 (8.7%) 1 (2.0%) 21 (7.5%)
    1 51 (22%) 12 (24%) 63 (23%)
    2 69 (30%) 20 (40%) 89 (32%)
    3 44 (19%) 8 (16%) 52 (19%)
    4 44 (19%) 9 (18%) 53 (19%)
    5 1 (0.4%) 0 (0%) 1 (0.4%)
Diabetes Mellitus 65 (28%) 25 (50%) 90 (32%) 0.003
History of tobacco use 18 (8.1%) 5 (10%) 23 (8.5%) 0.6
    Unknown 7 0 7
Categorised Body Mass Index


0.052
    Normal 103 (46%) 13 (27%) 116 (43%)
    Overweight 67 (30%) 19 (40%) 86 (32%)
    Obese 53 (24%) 16 (33%) 69 (25%)
    Unknown 6 2 8
Waist-Hip Ratio 0.93 (0.88, 0.96) 0.93 (0.89, 0.97) 0.93 (0.89, 0.96) 0.5
    Unknown 6 0 6
Study Arm


0.012
    Routine 123 (54%) 17 (34%) 140 (50%)
    Intervention 106 (46%) 33 (66%) 139 (50%)
alcohol_curr 23 (10%) 9 (18%) 32 (11%) 0.11
HBA1C (Baseline) 5.70 (5.30, 6.40) 5.85 (5.40, 7.10) 5.80 (5.40, 6.70) 0.10
    Unknown 31 4 35
High HbA1C 48 (24%) 19 (41%) 67 (27%) 0.020
    Unknown 31 4 35
ACE-Inhibitors 12 (5.2%) 7 (14%) 19 (6.8%) 0.055
Angiotensin Receptor Blocker 22 (9.6%) 4 (8.0%) 26 (9.3%) >0.9
Beta blockers 9 (3.9%) 1 (2.0%) 10 (3.6%) >0.9
Calcium Channel Blocker 92 (40%) 23 (46%) 115 (41%) 0.4
Diuretics 7 (3.1%) 2 (4.0%) 9 (3.2%) 0.7
Alpha Methyl Dopa 8 (3.5%) 1 (2.0%) 9 (3.2%) >0.9
Alpha Adrenergic Blockers 2 (0.9%) 1 (2.0%) 3 (1.1%) 0.4
Antiplatelet 28 (13%) 6 (13%) 34 (13%) >0.9
    Unknown 10 5 15
Statins 22 (10%) 3 (7.0%) 25 (9.6%) 0.8
    Unknown 12 7 19
Total Hillbone Score 52.0 (51.0, 53.0) 52.0 (50.0, 53.0) 52.0 (50.0, 53.0) 0.2
    Unknown 4 0 4
Total HKQ Score 9 (7, 10) 8 (5, 10) 9 (7, 10) 0.2
    Unknown 10 2 12
Health Related QoL 10.00 (8.00, 11.00) 10.00 (9.00, 10.00) 10.00 (8.00, 11.00) 0.4
    Unknown 90 19 109
Health institution category


>0.9
    Primary 73 (32%) 15 (30%) 88 (32%)
    Secondary 41 (18%) 9 (18%) 50 (18%)
    Tertiary 115 (50%) 26 (52%) 141 (51%)
Antihypertensive treatment intensity 1.50 (0.83, 1.83) 1.44 (1.00, 1.92) 1.46 (0.92, 1.83) 0.9
    Unknown 32 8 40
1 Median (Q1, Q3); n (%)
2 Wilcoxon rank sum test; Pearson’s Chi-squared test; Fisher’s exact test

Table 2 - Composite score (130mmHg, 1.4mm/L)

Show code
gtsummary::reset_gtsummary_theme()
gtsummary::theme_gtsummary_compact()
Setting theme "Compact"
Show code
df_ready |>
  select(-c(outc_140_18, hyperlipidemia))|>
  gtsummary::tbl_summary(by = outc_130_14) |> 
  gtsummary::modify_spanning_header(
        gtsummary::all_stat_cols() ~ "**SBP < 130, LDL < 1.4 mmol/L**") %>% 
  gtsummary::add_overall(last = T) |>
  gtsummary::add_p()|>
  gtsummary::bold_p()|>
  gtsummary::bold_labels() |>
  gtsummary::modify_caption(
      "**Table 1B**: DEMOGRAPHIC & CLINICAL CHARACTERISTICS OF STUDY PARTICIPANTS**") 
86 missing rows in the "outc_130_14" column have been removed.
Table 1B: DEMOGRAPHIC & CLINICAL CHARACTERISTICS OF STUDY PARTICIPANTS**
Characteristic
SBP < 130, LDL < 1.4 mmol/L
Overall
N = 2791
p-value2
No
N = 2611
Yes
N = 181
Age in years 58 (50, 66) 58 (52, 67) 58 (51, 66) >0.9
Gender


0.2
    Male 149 (57%) 13 (72%) 162 (58%)
    Female 112 (43%) 5 (28%) 117 (42%)
Educational Status


0.3
    None 21 (8.0%) 2 (11%) 23 (8.2%)
    Primary 111 (43%) 4 (22%) 115 (41%)
    Secondary 86 (33%) 8 (44%) 94 (34%)
    Tertiary 43 (16%) 4 (22%) 47 (17%)
Marital Status


0.7
    Currently Married 171 (66%) 14 (78%) 185 (66%)
    Previously Married 78 (30%) 4 (22%) 82 (29%)
    Never Married 12 (4.6%) 0 (0%) 12 (4.3%)
Domicile


>0.9
    Rural 15 (5.7%) 1 (5.6%) 16 (5.7%)
    Semi-Urban 86 (33%) 6 (33%) 92 (33%)
    Urban 160 (61%) 11 (61%) 171 (61%)
Income in GHC


0.7
    0-100 98 (38%) 6 (33%) 104 (38%)
    101-250 76 (29%) 6 (33%) 82 (30%)
    251-500 58 (22%) 3 (17%) 61 (22%)
    >500 27 (10%) 3 (17%) 30 (11%)
    Unknown 2 0 2
Religion


0.2
    Christianity 243 (93%) 15 (83%) 258 (92%)
    Islam 16 (6.1%) 3 (17%) 19 (6.8%)
    Other 2 (0.8%) 0 (0%) 2 (0.7%)
Stroke Subtype ( with results of Brain CT scan)


>0.9
    Ischaemic 169 (72%) 12 (75%) 181 (72%)
    Haemorrhage infarct 10 (4.3%) 0 (0%) 10 (4.0%)
    Haemorrhagic 48 (21%) 4 (25%) 52 (21%)
    Ischaemic and Haemorrhagic 7 (3.0%) 0 (0%) 7 (2.8%)
    Unknown 27 2 29
Stroke Type


>0.9
    Intracerebral Hemorrhagic Stroke 59 (23%) 4 (22%) 63 (23%)
    Ischemic Stroke 184 (70%) 13 (72%) 197 (71%)
    Untyped Stroke (no CT scan available) 18 (6.9%) 1 (5.6%) 19 (6.8%)
NIH Stroke Scale 3.0 (0.0, 7.0) 1.5 (0.0, 8.0) 2.0 (0.0, 7.0) 0.8
    Unknown 2 0 2
Modified Ranking Score


0.8
    0 20 (7.7%) 1 (5.6%) 21 (7.5%)
    1 57 (22%) 6 (33%) 63 (23%)
    2 83 (32%) 6 (33%) 89 (32%)
    3 50 (19%) 2 (11%) 52 (19%)
    4 50 (19%) 3 (17%) 53 (19%)
    5 1 (0.4%) 0 (0%) 1 (0.4%)
Diabetes Mellitus 82 (31%) 8 (44%) 90 (32%) 0.3
History of tobacco use 22 (8.7%) 1 (5.6%) 23 (8.5%) >0.9
    Unknown 7 0 7
Categorised Body Mass Index


0.5
    Normal 111 (44%) 5 (31%) 116 (43%)
    Overweight 79 (31%) 7 (44%) 86 (32%)
    Obese 65 (25%) 4 (25%) 69 (25%)
    Unknown 6 2 8
Waist-Hip Ratio 0.93 (0.88, 0.96) 0.93 (0.89, 0.98) 0.93 (0.89, 0.96) 0.8
    Unknown 6 0 6
Study Arm


0.6
    Routine 130 (50%) 10 (56%) 140 (50%)
    Intervention 131 (50%) 8 (44%) 139 (50%)
alcohol_curr 30 (11%) 2 (11%) 32 (11%) >0.9
HBA1C (Baseline) 5.80 (5.40, 6.70) 5.70 (5.40, 6.70) 5.80 (5.40, 6.70) 0.7
    Unknown 34 1 35
High HbA1C 62 (27%) 5 (29%) 67 (27%) 0.8
    Unknown 34 1 35
ACE-Inhibitors 15 (5.7%) 4 (22%) 19 (6.8%) 0.026
Angiotensin Receptor Blocker 25 (9.6%) 1 (5.6%) 26 (9.3%) >0.9
Beta blockers 9 (3.4%) 1 (5.6%) 10 (3.6%) 0.5
Calcium Channel Blocker 105 (40%) 10 (56%) 115 (41%) 0.2
Diuretics 8 (3.1%) 1 (5.6%) 9 (3.2%) 0.5
Alpha Methyl Dopa 9 (3.4%) 0 (0%) 9 (3.2%) >0.9
Alpha Adrenergic Blockers 3 (1.1%) 0 (0%) 3 (1.1%) >0.9
Antiplatelet 31 (13%) 3 (19%) 34 (13%) 0.4
    Unknown 13 2 15
Statins 24 (9.8%) 1 (6.3%) 25 (9.6%) >0.9
    Unknown 17 2 19
Total Hillbone Score 52.0 (51.0, 53.0) 51.5 (48.0, 53.0) 52.0 (50.0, 53.0) 0.12
    Unknown 4 0 4
Total HKQ Score 9 (7, 10) 8 (5, 11) 9 (7, 10) 0.6
    Unknown 12 0 12
Health Related QoL 10.00 (8.00, 10.00) 11.00 (9.00, 13.00) 10.00 (8.00, 11.00) 0.2
    Unknown 99 10 109
Health institution category


0.5
    Primary 83 (32%) 5 (28%) 88 (32%)
    Secondary 45 (17%) 5 (28%) 50 (18%)
    Tertiary 133 (51%) 8 (44%) 141 (51%)
Antihypertensive treatment intensity 1.46 (0.92, 1.83) 1.42 (0.96, 2.00) 1.46 (0.92, 1.83) 0.9
    Unknown 36 4 40
1 Median (Q1, Q3); n (%)
2 Wilcoxon rank sum test; Pearson’s Chi-squared test; Fisher’s exact test

Regression - Composite score (140mmHg, 1.8mmol/L)

Show code
df_ready |>
  select(-c(outc_130_14, hyperlipidemia)) |>
  mutate(outc_140_18 = factor(outc_140_18))|>
  drop_na(outc_140_18)|>
  gtsummary::tbl_uvregression(
        y = outc_140_18, 
        method = glm,
        method.args = list(family = binomial),
        exponentiate = TRUE,
        pvalue_fun = function(x) gtsummary::style_pvalue(x, digits = 3)) |>
  gtsummary::bold_p()|>
  gtsummary::bold_labels()
Characteristic N OR 95% CI p-value
Age in years 279 1.02 1.00, 1.05 0.089
Gender 279


    Male
— —
    Female
0.91 0.48, 1.68 0.760
Educational Status 279


    None
— —
    Primary
0.53 0.19, 1.62 0.234
    Secondary
0.77 0.28, 2.35 0.620
    Tertiary
0.41 0.11, 1.50 0.173
Marital Status 279


    Currently Married
— —
    Previously Married
0.81 0.39, 1.59 0.548
    Never Married
0.86 0.13, 3.44 0.847
Domicile 279


    Rural
— —
    Semi-Urban
0.54 0.16, 2.14 0.338
    Urban
0.69 0.22, 2.60 0.544
Income in GHC 277


    0-100
— —
    101-250
0.94 0.44, 1.97 0.871
    251-500
0.82 0.35, 1.86 0.649
    >500
0.84 0.26, 2.33 0.751
Religion 279


    Christianity
— —
    Islam
2.24 0.75, 6.02 0.120
    Other
0.00
0.989
Stroke Subtype ( with results of Brain CT scan) 250


    Ischaemic
— —
    Haemorrhage infarct
0.00
0.990
    Haemorrhagic
0.94 0.40, 2.04 0.879
    Ischaemic and Haemorrhagic
0.00
0.991
Stroke Type 279


    Intracerebral Hemorrhagic Stroke
— —
    Ischemic Stroke
1.39 0.65, 3.23 0.417
    Untyped Stroke (no CT scan available)
1.60 0.39, 5.69 0.482
NIH Stroke Scale 277 1.02 0.96, 1.08 0.566
Modified Ranking Score 279 1.03 0.80, 1.33 0.800
Diabetes Mellitus 279


    No
— —
    Yes
2.52 1.35, 4.73 0.004
History of tobacco use 272


    No
— —
    Yes
1.26 0.40, 3.35 0.665
Categorised Body Mass Index 271


    Normal
— —
    Overweight
2.25 1.05, 4.95 0.039
    Obese
2.39 1.07, 5.42 0.033
Waist-Hip Ratio 273 0.96
0.790
Study Arm 279


    Routine
— —
    Intervention
2.25 1.20, 4.35 0.013
alcohol_curr 279


    No
— —
    Yes
1.97 0.81, 4.44 0.115
HBA1C (Baseline) 244 1.10 0.95, 1.27 0.190
High HbA1C 244


    No
— —
    Yes
2.20 1.11, 4.29 0.021
ACE-Inhibitors 279


    No
— —
    Yes
2.94 1.04, 7.76 0.032
Angiotensin Receptor Blocker 279


    No
— —
    Yes
0.82 0.23, 2.26 0.724
Beta blockers 279


    No
— —
    Yes
0.50 0.03, 2.75 0.514
Calcium Channel Blocker 279


    No
— —
    Yes
1.27 0.68, 2.35 0.449
Diuretics 279


    No
— —
    Yes
1.32 0.19, 5.67 0.733
Alpha Methyl Dopa 279


    No
— —
    Yes
0.56 0.03, 3.18 0.593
Alpha Adrenergic Blockers 279


    No
— —
    Yes
2.32 0.11, 24.6 0.496
Antiplatelet 264


    Yes
— —
    No
0.95 0.39, 2.68 0.920
Statins 260


    Yes
— —
    No
1.50 0.49, 6.57 0.523
Total Hillbone Score 275 0.96 0.89, 1.05 0.358
Total HKQ Score 267 0.91 0.83, 1.01 0.084
Health Related QoL 170 1.10 0.90, 1.35 0.331
Health institution category 279


    Primary
— —
    Secondary
1.07 0.42, 2.62 0.887
    Tertiary
1.10 0.55, 2.26 0.789
Antihypertensive treatment intensity 239 1.03 0.64, 1.64 0.905
Abbreviations: CI = Confidence Interval, OR = Odds Ratio

Regression - Composite score (130mmHg, 1.4mmol/L)

Show code
df_ready |>
  select(-c(outc_140_18, hyperlipidemia)) |>
  mutate(outc_130_14 = factor(outc_130_14))|>
  drop_na(outc_130_14)|>
  gtsummary::tbl_uvregression(
        y = outc_130_14, 
        method = glm,
        method.args = list(family = binomial),
        exponentiate = TRUE,
        pvalue_fun = function(x) gtsummary::style_pvalue(x, digits = 3)) |>
  gtsummary::bold_p()|>
  gtsummary::bold_labels()
Characteristic N OR 95% CI p-value
Age in years 279 1.00 0.96, 1.04 0.883
Gender 279


    Male
— —
    Female
0.51 0.16, 1.40 0.215
Educational Status 279


    None
— —
    Primary
0.38 0.07, 2.85 0.279
    Secondary
0.98 0.22, 6.79 0.977
    Tertiary
0.98 0.18, 7.45 0.979
Marital Status 279


    Currently Married
— —
    Previously Married
0.63 0.17, 1.81 0.422
    Never Married
0.00
0.989
Domicile 279


    Rural
— —
    Semi-Urban
1.05 0.16, 20.5 0.967
    Urban
1.03 0.18, 19.5 0.977
Income in GHC 277


    0-100
— —
    101-250
1.29 0.39, 4.27 0.670
    251-500
0.84 0.17, 3.33 0.816
    >500
1.81 0.36, 7.37 0.420
Religion 279


    Christianity
— —
    Islam
3.04 0.66, 10.4 0.104
    Other
0.00
0.990
Stroke Subtype ( with results of Brain CT scan) 250


    Ischaemic
— —
    Haemorrhage infarct
0.00
0.994
    Haemorrhagic
1.17 0.32, 3.54 0.790
    Ischaemic and Haemorrhagic
0.00
0.995
Stroke Type 279


    Intracerebral Hemorrhagic Stroke
— —
    Ischemic Stroke
1.04 0.35, 3.81 0.944
    Untyped Stroke (no CT scan available)
0.82 0.04, 5.99 0.863
NIH Stroke Scale 277 1.00 0.90, 1.09 0.986
Modified Ranking Score 279 0.86 0.57, 1.28 0.468
Diabetes Mellitus 279


    No
— —
    Yes
1.75 0.65, 4.59 0.258
History of tobacco use 272


    No
— —
    Yes
0.62 0.03, 3.25 0.650
Categorised Body Mass Index 271


    Normal
— —
    Overweight
1.97 0.61, 6.86 0.262
    Obese
1.37 0.33, 5.34 0.651
Waist-Hip Ratio 273 0.95
0.897
Study Arm 279


    Routine
— —
    Intervention
0.79 0.29, 2.08 0.638
alcohol_curr 279


    No
— —
    Yes
0.96 0.15, 3.61 0.961
HBA1C (Baseline) 244 1.04 0.80, 1.27 0.754
High HbA1C 244


    No
— —
    Yes
1.11 0.34, 3.12 0.852
ACE-Inhibitors 279


    No
— —
    Yes
4.69 1.22, 15.0 0.014
Angiotensin Receptor Blocker 279


    No
— —
    Yes
0.56 0.03, 2.89 0.575
Beta blockers 279


    No
— —
    Yes
1.65 0.09, 9.55 0.645
Calcium Channel Blocker 279


    No
— —
    Yes
1.86 0.71, 5.01 0.207
Diuretics 279


    No
— —
    Yes
1.86 0.10, 11.0 0.569
Alpha Methyl Dopa 279


    No
— —
    Yes
0.00
0.991
Alpha Adrenergic Blockers 279


    No
— —
    Yes
0.00
0.992
Antiplatelet 264


    Yes
— —
    No
0.62 0.19, 2.81 0.473
Statins 260


    Yes
— —
    No
1.64 0.31, 30.2 0.641
Total Hillbone Score 275 0.92 0.84, 1.03 0.119
Total HKQ Score 267 0.94 0.81, 1.11 0.449
Health Related QoL 170 1.37 0.97, 1.96 0.075
Health institution category 279


    Primary
— —
    Secondary
1.84 0.49, 6.96 0.353
    Tertiary
1.00 0.32, 3.40 0.998
Antihypertensive treatment intensity 239 1.08 0.49, 2.24 0.846
Abbreviations: CI = Confidence Interval, OR = Odds Ratio