Hypertension in DM

Author
Affiliation

Kwame Nkrumah University of Science & Technology

Published

May 30, 2025

Code
df_hpt <- 
    readxl::read_xlsx("Data/Hypertension_prehypt.xlsx") %>% 
    janitor::clean_names() %>% 
    rename(
        educ = patient_education_level,
        resid = place_of_residence, 
        age_diag = age_at_diagnosis_yrs, 
        dura_dm = duration_of_diabetes_yrs,
        type_dm = type_of_diabetes,
        cur_meds = current_medications,
        hba1c = most_recent_hb_a1c_level_if_known,
        fam_hx = family_history,
        bmi_perc = bmi_percentiles,
        sbp = sbp_mm_hg_systolic,
        dbp = dbp_mm_hg_diastolic,
        sbp_grade = bp_systolic_grading,
        dbp_grade = bp_diastlolic_grading) %>% 
    mutate(
        across(c(type_dm, gender, resid), ~factor(.)),
        insulin = case_when(
            str_detect(cur_meds, "sulin") ~ "Yes",
            TRUE ~ "No"),
        oha = case_when(
            str_detect(cur_meds, "OHA") ~ "Yes",
            TRUE ~ "No"),
        fam_hx_dm = case_when(
            str_detect(fam_hx, "Diabetes") ~ "Yes",
            TRUE ~ "No"),
        fam_hx_hpt = case_when(
            str_detect(fam_hx, "Hypertension") ~ "Yes",
            TRUE ~ "No"),
        fam_hx_glau = case_when(
            str_detect(fam_hx, "Glaucoma") ~ "Yes",
            TRUE ~ "No"), 
        hba1c_cat = case_when(hba1c <= 7 ~ "No", hba1c > 7 ~ "Yes"),
        educ2 = case_when(
            educ %in% c("None", "Primary", "JHS") ~ "Primary & below", 
            TRUE ~ educ), 
        bmi_perc2 = case_when(
            bmi_perc %in% c("Obesity","Overweight") ~ "Overweight/Obese",
            bmi_perc == "underwgt" ~ "Underweight",
            TRUE ~ bmi_perc)) %>% 
    select(
        -c(town, region, hospital_clinic,family_history_2, prehypt))

x <- 
    pedbp::p_bp(
    q_sbp = df_hpt$sbp,
    q_dbp = df_hpt$dbp,
    age = df_hpt$curr_age*12,
    male = ifelse(df_hpt$gender == "Male", 1, 0),
    height = df_hpt$height_cm, 
    source = "flynn2017") 

x <- data.frame(
    sbp_perc = x[[1]]*100, 
    dbp_perc = x[[2]]*100, 
    patient_id = df_hpt$patient_id)

df_hpt_new <- 
    df_hpt %>% 
    full_join(x) %>% 
    mutate(
        bp_grade = case_when(
            (curr_age >= 13 & sbp < 120 & dbp < 80) ~ "Normal", 
            (sbp_perc < 90 & dbp_perc < 90) ~ "Normal",
            (curr_age >= 13 & (sbp < 130 & dbp < 80)) ~ "Elevated BP",
            (sbp_perc < 95 & dbp_perc < 95) ~ "Elevated BP",
            (curr_age >= 13 & (sbp < 140 | dbp < 90)) ~ "Stage I",
            (curr_age >= 13 & (sbp >= 140 | dbp >= 90) ~ "Stage II"),
            patient_id == 65 ~ "Stage I",
            patient_id == 107 ~ "Stage II"), 
        hpt = case_when(
            bp_grade == "Stage I" ~ "Yes", 
            bp_grade == "Stage II" ~ "Yes",
            TRUE ~ "No"),
        elevated_bp = case_when(
            bp_grade == "Elevated BP" ~ "Yes",
            TRUE ~ "No"),
        normal_bp = case_when(
            bp_grade == "Normal" ~ "Yes",
            TRUE ~ "No"), 
        abnormal_bp = ifelse(normal_bp == "No", "Yes", "No")) %>% 
    select(-c(sbp_perc, dbp_perc))

    
labelled::var_label(df_hpt_new)<- 
    list(
        educ = "Educational Level",
        educ2 = "Educational Level",
        resid = "Residence type",
        curr_age = "Age in years",
        gender = "Sex", 
        age_diag = "Age at diagnosis (years)", 
        dura_dm = "Duration of DM (years)", 
        type_dm = "Type of DM",
        cur_meds = "Current medications",
        insulin = "Currently using Insulin",
        oha = "Currently using OHA",
        hba1c = "HbA1c (%)",
        fam_hx = "Family history",
        fam_hx_dm = "Family history of DM",
        fam_hx_hpt = "Family history of hypertension",
        fam_hx_glau = "Family history of Glaucoma",
        height_cm = "Height (cm)",
        bmi_kg_m2 = "BMI (kg/m2)",
        bmi_perc = "BMI Percentile",
        bmi_perc2 = "BMI Percentile",
        sbp = "Systolic BP (mmHg)",
        dbp = "Diastolic BP (mmHg)",
        sbp_grade = "Systolic BP grading",
        dbp_grade = "Diastolic BP grading",
        bp_grade = "BP grading",
        hpt = "Hypertension",
        elevated_bp = "Elevated Blood Pressure",
        normal_bp = "Normal BP",
        abnormal_bp = "Abnormal BP", 
        hba1c_cat = "Elevated HbA1c")    

Summary of Data

Code
gtsummary::theme_gtsummary_compact()
gtsummary::theme_gtsummary_eda()
df_hpt_new %>% 
    select(-patient_id) %>% 
    gtsummary::tbl_summary(by = hpt) %>% 
    gtsummary::modify_spanning_header(
        gtsummary::all_stat_cols() ~ "**Hypertension**") %>% 
    gtsummary::bold_labels() %>% 
    gtsummary::add_overall(last =T)
Characteristic
Hypertension
Overall
N = 1181
No
N = 781
Yes
N = 401
Age in years


    Median (Q1, Q3) 17.0 (14.0, 20.0) 19.5 (16.0, 22.5) 18.0 (15.0, 21.0)
    Mean (SD) 17.1 (4.1) 19.3 (4.0) 17.8 (4.2)
    Min, Max 6.0, 25.0 11.0, 25.0 6.0, 25.0
Sex


    Female 49 (62.8%) 32 (80.0%) 81 (68.6%)
    Male 29 (37.2%) 8 (20.0%) 37 (31.4%)
Residence type


    Rural 34 (43.6%) 16 (40.0%) 50 (42.4%)
    Urban 44 (56.4%) 24 (60.0%) 68 (57.6%)
Educational Level


    JHS 4 (5.13%) 4 (10.0%) 8 (6.78%)
    None 2 (2.56%) 0 (0%) 2 (1.69%)
    Primary 24 (30.8%) 8 (20.0%) 32 (27.1%)
    Secondary 39 (50.0%) 22 (55.0%) 61 (51.7%)
    Tertiary 9 (11.5%) 6 (15.0%) 15 (12.7%)
Age at diagnosis (years)


    Median (Q1, Q3) 12.0 (9.0, 14.0) 12.0 (11.0, 16.5) 12.0 (10.0, 15.0)
    Mean (SD) 12.0 (4.3) 13.6 (4.2) 12.5 (4.3)
    Min, Max 3.0, 23.0 7.0, 22.0 3.0, 23.0
Duration of DM (years)


    Median (Q1, Q3) 4.0 (2.0, 7.0) 5.0 (2.5, 8.5) 4.5 (2.0, 8.0)
    Mean (SD) 5.0 (3.6) 5.8 (4.0) 5.3 (3.7)
    Min, Max 1.0, 15.0 1.0, 15.0 1.0, 15.0
Type of DM


    Type 1 68 (87.2%) 39 (97.5%) 107 (90.7%)
    Type 2 10 (12.8%) 1 (2.50%) 11 (9.32%)
Current medications


    Insulin 65 (83.3%) 34 (85.0%) 99 (83.9%)
    insulin and OHA 11 (14.1%) 6 (15.0%) 17 (14.4%)
    OHA 2 (2.56%) 0 (0%) 2 (1.69%)
HbA1c (%)


    Median (Q1, Q3) 10.00 (8.00, 12.20) 10.00 (8.20, 12.00) 10.00 (8.00, 12.00)
    Mean (SD) 10.42 (2.34) 10.23 (2.19) 10.36 (2.28)
    Min, Max 6.00, 14.00 6.50, 14.00 6.00, 14.00
    Unknown 20 11 31
Family history


    Diabetes 27 (34.6%) 14 (35.0%) 41 (34.7%)
    Diabetes, Hypertension 9 (11.5%) 9 (22.5%) 18 (15.3%)
    Diabetes, Hypertension;Glaucoma 1 (1.28%) 1 (2.50%) 2 (1.69%)
    Hypertension 8 (10.3%) 5 (12.5%) 13 (11.0%)
    None 33 (42.3%) 11 (27.5%) 44 (37.3%)
Height (cm)


    Median (Q1, Q3) 160 (152, 167) 161 (153, 167) 160 (152, 167)
    Mean (SD) 157 (14) 160 (10) 158 (12)
    Min, Max 118, 185 137, 180 118, 185
BMI (kg/m2)


    Median (Q1, Q3) 21.2 (17.8, 23.5) 22.6 (19.5, 26.7) 21.7 (18.6, 25.1)
    Mean (SD) 21.7 (5.8) 24.0 (5.7) 22.5 (5.8)
    Min, Max 9.9, 37.6 14.8, 35.8 9.9, 37.6
BMI Percentile


    Normal 48 (61.5%) 22 (55.0%) 70 (59.3%)
    Obesity 15 (19.2%) 10 (25.0%) 25 (21.2%)
    Overweight 2 (2.56%) 6 (15.0%) 8 (6.78%)
    underwgt 13 (16.7%) 2 (5.00%) 15 (12.7%)
Systolic BP (mmHg)


    Median (Q1, Q3) 105 (95, 116) 120 (110, 132) 110 (101, 121)
    Mean (SD) 106 (12) 122 (14) 111 (15)
    Min, Max 83, 129 101, 158 83, 158
Systolic BP grading


    Normal 63 (80.8%) 21 (52.5%) 84 (71.2%)
    Prehypertensive 15 (19.2%) 9 (22.5%) 24 (20.3%)
    Stage 1 0 (0%) 7 (17.5%) 7 (5.93%)
    Stage 2 0 (0%) 3 (7.50%) 3 (2.54%)
Diastolic BP (mmHg)


    Median (Q1, Q3) 70 (60, 74) 83 (81, 88) 74 (67, 81)
    Mean (SD) 69 (7) 85 (8) 74 (11)
    Min, Max 50, 79 70, 109 50, 109
Diastolic BP grading


    Normal 78 (100.0%) 5 (12.5%) 83 (70.3%)
    Prehypertension 0 (0%) 5 (12.5%) 5 (4.24%)
    Stage 1 0 (0%) 21 (52.5%) 21 (17.8%)
    Stage 2 0 (0%) 9 (22.5%) 9 (7.63%)
Currently using Insulin 76 (97.4%) 40 (100.0%) 116 (98.3%)
Currently using OHA 13 (16.7%) 6 (15.0%) 19 (16.1%)
Family history of DM 37 (47.4%) 24 (60.0%) 61 (51.7%)
Family history of hypertension 18 (23.1%) 15 (37.5%) 33 (28.0%)
Family history of Glaucoma 1 (1.28%) 1 (2.50%) 2 (1.69%)
Elevated HbA1c 52 (89.7%) 26 (89.7%) 78 (89.7%)
    Unknown 20 11 31
Educational Level


    Primary & below 30 (38.5%) 12 (30.0%) 42 (35.6%)
    Secondary 39 (50.0%) 22 (55.0%) 61 (51.7%)
    Tertiary 9 (11.5%) 6 (15.0%) 15 (12.7%)
BMI Percentile


    Normal 48 (61.5%) 22 (55.0%) 70 (59.3%)
    Overweight/Obese 17 (21.8%) 16 (40.0%) 33 (28.0%)
    Underweight 13 (16.7%) 2 (5.00%) 15 (12.7%)
BP grading


    Elevated BP 16 (20.5%) 0 (0%) 16 (13.6%)
    Normal 62 (79.5%) 0 (0%) 62 (52.5%)
    Stage I 0 (0%) 36 (90.0%) 36 (30.5%)
    Stage II 0 (0%) 4 (10.0%) 4 (3.39%)
Elevated Blood Pressure 16 (20.5%) 0 (0%) 16 (13.6%)
Normal BP 62 (79.5%) 0 (0%) 62 (52.5%)
Abnormal BP 16 (20.5%) 40 (100.0%) 56 (47.5%)
1 n (%)

Table 1: Descriptive

Code
gtsummary::reset_gtsummary_theme()
gtsummary::theme_gtsummary_compact()
Setting theme "Compact"
Code
df_hpt_new %>% 
    select(
        hpt, curr_age, gender, resid, educ2, age_diag, dura_dm, 
        type_dm, insulin, oha, fam_hx_dm, fam_hx_hpt, fam_hx_glau, 
        bmi_perc, bmi_perc2, hba1c) %>% 
    gtsummary::tbl_summary(
        by = hpt,
        statistic = list(
            gtsummary::all_continuous() ~ "{mean} ({sd})",
            gtsummary::all_categorical() ~ "{n}({p})"),
        digits = list(
            gtsummary::all_continuous()~ 1,
            gtsummary::all_categorical() ~ c(0,1))) %>%
    gtsummary::modify_spanning_header(
        gtsummary::all_stat_cols() ~ "**Hypertension**") %>% 
    gtsummary::add_overall(last =T) %>% 
    # gtsummary::add_p( 
    #     pvalue_fun = ~ gtsummary::style_pvalue(.x, digits = 3),
    #     test = list(gtsummary::all_continuous() ~ "t.test")) %>%
    # gtsummary::bold_p() %>% 
    gtsummary::bold_labels()
Characteristic
Hypertension
Overall
N = 1181
No
N = 781
Yes
N = 401
Age in years 17.1 (4.1) 19.3 (4.0) 17.8 (4.2)
Sex


    Female 49(62.8) 32(80.0) 81(68.6)
    Male 29(37.2) 8(20.0) 37(31.4)
Residence type


    Rural 34(43.6) 16(40.0) 50(42.4)
    Urban 44(56.4) 24(60.0) 68(57.6)
Educational Level


    Primary & below 30(38.5) 12(30.0) 42(35.6)
    Secondary 39(50.0) 22(55.0) 61(51.7)
    Tertiary 9(11.5) 6(15.0) 15(12.7)
Age at diagnosis (years) 12.0 (4.3) 13.6 (4.2) 12.5 (4.3)
Duration of DM (years) 5.0 (3.6) 5.8 (4.0) 5.3 (3.7)
Type of DM


    Type 1 68(87.2) 39(97.5) 107(90.7)
    Type 2 10(12.8) 1(2.5) 11(9.3)
Currently using Insulin 76(97.4) 40(100.0) 116(98.3)
Currently using OHA 13(16.7) 6(15.0) 19(16.1)
Family history of DM 37(47.4) 24(60.0) 61(51.7)
Family history of hypertension 18(23.1) 15(37.5) 33(28.0)
Family history of Glaucoma 1(1.3) 1(2.5) 2(1.7)
BMI Percentile


    Normal 48(61.5) 22(55.0) 70(59.3)
    Obesity 15(19.2) 10(25.0) 25(21.2)
    Overweight 2(2.6) 6(15.0) 8(6.8)
    underwgt 13(16.7) 2(5.0) 15(12.7)
BMI Percentile


    Normal 48(61.5) 22(55.0) 70(59.3)
    Overweight/Obese 17(21.8) 16(40.0) 33(28.0)
    Underweight 13(16.7) 2(5.0) 15(12.7)
HbA1c (%) 10.4 (2.3) 10.2 (2.2) 10.4 (2.3)
    Unknown 20 11 31
1 Mean (SD); n(%)

Logistic regression for the predictors of hypertension

Code
tbl1 <- 
    df_hpt_new %>% 
    mutate(hpt = factor(hpt)) %>% 
        gtsummary::tbl_uvregression(
            y = hpt, 
            method = glm,
            include = c(
                curr_age, gender, resid, educ2, age_diag, dura_dm, 
                type_dm, insulin, oha, fam_hx_dm, fam_hx_hpt, 
                fam_hx_glau, bmi_perc2, hba1c, educ2, hba1c),
            pvalue_fun = function(x) gtsummary::style_pvalue(x, digits = 3), 
            hide_n = TRUE, 
            show_single_row = c(insulin, oha, fam_hx_dm, fam_hx_hpt, 
                fam_hx_glau),
            method.args = family(binomial))%>% 
        gtsummary::modify_header(estimate ~ "**COR**", label ~ "**Variable**") %>%
        gtsummary::bold_labels() %>% 
        gtsummary::bold_p(t = 0.2) 

tbl2 <- 
    df_hpt_new %>% 
    select(
        curr_age, gender, type_dm, sbp, age_diag, bmi_perc2, 
        fam_hx_dm, fam_hx_hpt) %>% 
    glm(sbp ~ ., data = .,) %>% 
    gtsummary::tbl_regression(
        pvalue_fun = function(x) gtsummary::style_pvalue(x, digits = 3),
        show_single_row = c(fam_hx_dm, fam_hx_hpt),) %>% 
    gtsummary::modify_header(estimate ~ "**AOR**", label ~ "**Variable**") %>%
    gtsummary::bold_p() %>% 
    gtsummary::bold_labels()
    

gtsummary::tbl_merge(
    tbls = list(tbl1, tbl2), 
    tab_spanner = c("**Univariate**", "**Multivariate**"))
Variable
Univariate
Multivariate
COR 95% CI p-value AOR 95% CI p-value
Age in years 0.13 0.04, 0.24 0.009 1.5 0.77, 2.2 <0.001
Sex





    Female

    Male -0.86 -1.8, 0.01 0.061 3.5 -1.9, 8.9 0.203
Residence type





    Rural



    Urban 0.15 -0.62, 0.93 0.709


Educational Level





    Primary & below



    Secondary 0.34 -0.50, 1.2 0.428


    Tertiary 0.51 -0.75, 1.7 0.416


Age at diagnosis (years) 0.09 0.00, 0.18 0.054 0.34 -0.34, 1.0 0.328
Duration of DM (years) 0.06 -0.05, 0.16 0.280


Type of DM





    Type 1

    Type 2 -1.7 -4.7, -0.04 0.102 -14 -23, -5.7 0.002
Currently using Insulin 15 -147,
0.988


Currently using OHA -0.13 -1.2, 0.90 0.816


Family history of DM 0.51 -0.26, 1.3 0.198 3.2 -1.9, 8.2 0.219
Family history of hypertension 0.69 -0.14, 1.5 0.101 -0.11 -5.4, 5.2 0.967
Family history of Glaucoma 0.68 -2.6, 3.9 0.634


BMI Percentile





    Normal

    Overweight/Obese 0.72 -0.13, 1.6 0.097 4.7 -0.94, 10 0.105
    Underweight -1.1 -3.0, 0.30 0.173 -3.9 -11, 3.4 0.301
HbA1c (%) -0.04 -0.24, 0.16 0.715


Abbreviations: CI = Confidence Interval, OR = Odds Ratio

Ordinal regression for increasing BP categories

Code
tbl1 <- 
    df_hpt_new %>% 
    mutate(
        bp_grade = factor(
            bp_grade, 
            levels = c("Normal", "Elevated BP", "Stage I", "Stage II"))) %>% 
    gtsummary::tbl_uvregression(
    include = c(
        curr_age, educ2, gender, resid, age_diag, dura_dm, 
        type_dm, oha, fam_hx_dm, fam_hx_hpt, 
        fam_hx_glau, bmi_perc2, hba1c),
    method = ordinal::clm,
    y = bp_grade,
    exponentiate = TRUE,
    pvalue_fun = ~ gtsummary::style_pvalue(.x, digits = 3),
    add_estimate_to_reference_rows = TRUE,
    hide_n = TRUE,
    tidy_fun = function(x, ...) broom::tidy(x, ..., p.values = TRUE)
    ) %>%
    gtsummary::modify_header(estimate ~ "**cOR**", label ~ "**Variable**") %>%
    gtsummary::bold_labels() %>% 
    gtsummary::bold_p(t=0.2)

tbl2 <- 
    df_hpt_new %>% 
        mutate(
        bp_grade = factor(
            bp_grade, 
            levels = c("Normal", "Elevated BP", "Stage I", "Stage II"))) %>%
    select(curr_age, age_diag, type_dm, bp_grade, gender, bmi_perc2, fam_hx_hpt) %>% 
    ordinal::clm(bp_grade ~ ., data = .,) %>% 
    gtsummary::tbl_regression(
        pvalue_fun = function(x) gtsummary::style_pvalue(x, digits = 3)) %>% 
    gtsummary::modify_header(estimate ~ "**AOR**", label ~ "**Variable**") %>%
    gtsummary::bold_p() %>% 
    gtsummary::bold_labels()

gtsummary::tbl_merge(
    tbls = list(tbl1, tbl2), 
    tab_spanner = c("**Univariate**", "**Multivariate**"))
Variable
Univariate
Multivariate
cOR 95% CI p-value AOR 95% CI p-value
Age in years 1.15 1.05, 1.26 0.002 0.13 0.02, 0.25 0.022
Educational Level





    Primary & below 1.00



    Secondary 1.21 0.57, 2.61 0.624


    Tertiary 1.55 0.49, 4.82 0.447


Sex





    Female 1.00

    Male 0.82 0.40, 1.68 0.590 -0.32 -1.2, 0.51 0.454
Residence type





    Rural 1.00



    Urban 1.43 0.71, 2.94 0.320


Age at diagnosis (years) 1.10 1.01, 1.19 0.026 0.04 -0.07, 0.14 0.495
Duration of DM (years) 1.02 0.93, 1.12 0.600


Type of DM





    Type 1 1.00

    Type 2 0.10 0.01, 0.54 0.030 -3.3 -6.3, -1.4 0.004
Currently using OHA





    No 1.00



    Yes 0.70 0.25, 1.86 0.487


Family history of DM





    No 1.00



    Yes 0.98 0.49, 1.95 0.952


Family history of hypertension





    No 1.00

    Yes 1.79 0.84, 3.85 0.133 0.32 -0.54, 1.2 0.461
Family history of Glaucoma





    No 1.00



    Yes 1.35 0.05, 22.2 0.829


BMI Percentile





    Normal 1.00

    Overweight/Obese 2.11 0.97, 4.65 0.061 1.0 0.14, 1.9 0.025
    Underweight 0.32 0.07, 1.11 0.098 -0.97 -2.6, 0.36 0.180
HbA1c (%) 0.94 0.78, 1.13 0.503


Abbreviations: CI = Confidence Interval, OR = Odds Ratio

Predictors of SBP

Code
imputed_data <- 
    df_hpt_new %>% 
    select(curr_age, gender, resid, educ2, age_diag, dura_dm, 
            type_dm, insulin, oha, fam_hx_dm, fam_hx_hpt, 
            fam_hx_glau, bmi_perc2, hba1c, sbp) %>% 
    mice::mice(maxit = 20, m = 5, printFlag = F)
Warning: Number of logged events: 7
Code
tbl1 <- 
    df_hpt_new %>% 
    gtsummary::tbl_uvregression(
        y = sbp, 
        method = lm,
        include = c(
            curr_age, gender, resid, educ2, age_diag, dura_dm, 
            type_dm, insulin, oha, fam_hx_dm, fam_hx_hpt, 
            fam_hx_glau, bmi_perc2, hba1c),
        pvalue_fun = function(x) gtsummary::style_pvalue(x, digits = 3), 
        hide_n = TRUE, 
        show_single_row = c(insulin, oha, fam_hx_dm, fam_hx_hpt, 
            fam_hx_glau))%>% 
    gtsummary::modify_header(estimate ~ "**COR**", label ~ "**Variable**") %>%
    gtsummary::bold_p(t = 0.2) %>% 
    gtsummary::bold_labels()

tbl2 <- 
     with(
         imputed_data, 
         lm(
             sbp ~ curr_age + gender + educ2 + age_diag + type_dm + 
                 bmi_perc2 + hba1c)) %>% 
    # df_hpt_new %>% 
    # select(curr_age, gender, educ2, age_diag, type_dm, sbp, bmi_perc2, hba1c) %>% 
    # glm(sbp ~ ., data = .,) %>% 
    gtsummary::tbl_regression(
        pvalue_fun = function(x) gtsummary::style_pvalue(x, digits = 3)) %>% 
    gtsummary::modify_header(estimate ~ "**AOR**", label ~ "**Variable**") %>%
    gtsummary::bold_p() %>% 
    gtsummary::bold_labels()
    

gtsummary::tbl_merge(
    tbls = list(tbl1, tbl2), 
    tab_spanner = c("**Univariate**", "**Multivariate**"))
Variable
Univariate
Multivariate
COR 95% CI p-value AOR 95% CI p-value
Age in years 1.6 1.0, 2.2 <0.001 1.6 0.80, 2.5 <0.001
Sex





    Female

    Male 2.5 -3.4, 8.4 0.398 3.2 -2.3, 8.7 0.252
Residence type





    Rural



    Urban 1.9 -3.6, 7.4 0.498


Educational Level





    Primary & below

    Secondary 3.9 -2.1, 9.8 0.199 -1.8 -7.4, 3.9 0.535
    Tertiary 7.5 -1.4, 16 0.096 -4.0 -13, 5.0 0.384
Age at diagnosis (years) 1.2 0.60, 1.8 <0.001 0.30 -0.40, 1.0 0.395
Duration of DM (years) 0.15 -0.58, 0.89 0.680


Type of DM





    Type 1

    Type 2 -10 -19, -0.73 0.035 -13 -21, -4.1 0.004
Currently using Insulin 7.4 -14, 29 0.493


Currently using OHA 2.2 -5.2, 9.7 0.555


Family history of DM 1.5 -4.0, 7.0 0.586


Family history of hypertension 1.9 -4.2, 8.0 0.539


Family history of Glaucoma 1.8 -19, 23 0.868


BMI Percentile





    Normal

    Overweight/Obese 3.0 -3.2, 9.2 0.335 5.3 -0.51, 11 0.073
    Underweight -6.9 -15, 1.4 0.103 -5.2 -13, 2.4 0.178
HbA1c (%) -1.1 -2.5, 0.40 0.153 0.05 -1.2, 1.3 0.940
Abbreviation: CI = Confidence Interval

Predictors of DBP

Code
tbl1 <- 
    df_hpt_new %>% 
        gtsummary::tbl_uvregression(
            y = dbp, 
            method = lm,
            include = c(
                curr_age, gender, resid, educ2, age_diag, dura_dm, 
                type_dm, insulin, oha, fam_hx_dm, fam_hx_hpt, 
                fam_hx_glau, bmi_perc2, hba1c),
            pvalue_fun = function(x) gtsummary::style_pvalue(x, digits = 3), 
            hide_n = TRUE, 
            show_single_row = c(insulin, oha, fam_hx_dm, fam_hx_hpt, 
            fam_hx_glau))%>% 
    gtsummary::bold_p(t=0.2) %>% 
    gtsummary::bold_labels()

tbl2 <- 
    df_hpt_new %>% 
    select(curr_age, gender, age_diag, educ2, bmi_perc2, dbp, type_dm, fam_hx_dm) %>% 
    glm(dbp ~ ., data = .,) %>% 
    gtsummary::tbl_regression(
        pvalue_fun = function(x) gtsummary::style_pvalue(x, digits = 3),
        show_single_row = c( fam_hx_dm)) %>% 
    gtsummary::bold_p() %>% 
    gtsummary::bold_labels()
    
gtsummary::tbl_merge(
    tbls = list(tbl1, tbl2), 
    tab_spanner = c("**Univariate**", "**Multivariate**"))
Characteristic
Univariate
Multivariate
Beta 95% CI p-value Beta 95% CI p-value
Age in years 1.1 0.63, 1.5 <0.001 1.1 0.55, 1.6 <0.001
Sex





    Female

    Male -4.5 -8.7, -0.37 0.033 -3.8 -7.6, 0.03 0.054
Residence type





    Rural



    Urban 2.2 -1.8, 6.2 0.276


Educational Level





    Primary & below

    Secondary 3.4 -0.88, 7.6 0.119 -2.0 -5.9, 2.0 0.330
    Tertiary 6.4 0.02, 13 0.049 -1.9 -8.0, 4.3 0.551
Age at diagnosis (years) 0.57 0.13, 1.0 0.012 -0.01 -0.49, 0.46 0.958
Duration of DM (years) 0.31 -0.22, 0.84 0.247


Type of DM





    Type 1

    Type 2 -6.1 -13, 0.64 0.076 -12 -18, -5.7 <0.001
Currently using Insulin 9.5 -5.7, 25 0.220


Currently using OHA 0.70 -4.7, 6.1 0.796


Family history of DM 2.9 -0.98, 6.8 0.140 2.8 -0.72, 6.4 0.121
Family history of hypertension 2.0 -2.4, 6.4 0.364


Family history of Glaucoma -4.9 -20, 10 0.527


BMI Percentile





    Normal

    Overweight/Obese 4.5 0.25, 8.8 0.038 4.1 0.13, 8.1 0.045
    Underweight -7.4 -13, -1.6 0.013 -7.0 -12, -1.7 0.011
HbA1c (%) -0.64 -1.7, 0.44 0.241


Abbreviation: CI = Confidence Interval