Heart Failure

Reading data

Code
# df_new <- 
#     readxl::read_xlsx(
#     path = "Heart_Failure_Registry_21-10-2024 11_00 AM -DM.xlsx",
#     sheet = 1) %>% 
#     janitor::clean_names()
# 
# df_readmission <- 
#     readxl::read_xlsx(
#     path = "Heart_Failure_Registry_21-10-2024 11_00 AM -DM.xlsx",
#     sheet = 3) %>% 
#     janitor::clean_names()
# 
# df_followup <- 
#     readxl::read_xlsx(
#     path = "Heart_Failure_Registry_21-10-2024 11_00 AM -DM.xlsx",
#     sheet = 5) %>% 
#     janitor::clean_names()
# 
# df_new %>% dput("new_registry_data")
# df_readmission %>% dput("readmission_data")
# df_followup %>% dput("followup_data")

Importing data

Code
df_new <- dget("new_registry_data")
df_readmission <- dget("readmission_data")
df_followup <- dget("followup_data")

Data management

Code
gtsummary::theme_gtsummary_compact()
Setting theme "Compact"
Code
df_new_selected  <- 
    df_new %>% 
    select(
        age, gender, nationality, ethnicity, religion, 
        marital_status, educational_level, employment, 
        residence, region, are_you_a_smoker, do_you_drink_alcohol,
        bmi_category, hypertension_systemic, diabetes_mellitus, 
        blood_pressure_systolic_mm_hg, blood_pressure_diastolic_mm_hg,
        rhythm, arrhythmia_specify, sob_exertional_resting:bmi, 
        ef_simpson_s_percent, outcome, fs_percent, 
        heart_failure_phenotype, nyha_class, monthly_income,
         type_of_settlement, unique_id, are_you_a_smoker) %>% 
    mutate(
        blood_pressure_systolic_mm_hg = 
            as.numeric(blood_pressure_systolic_mm_hg),
        blood_pressure_diastolic_mm_hg = 
            as.numeric(blood_pressure_diastolic_mm_hg),
        bmi = as.numeric(bmi),
        bmi = case_when(bmi > 2 & bmi < 100 ~ bmi),
        
        afib = case_when(
            str_detect(
                arrhythmia_specify, "fib") ~ "Yes", 
             !is.na(arrhythmia_specify) ~ "No"),
        afib2 = case_when(afib == "Yes" ~ "Yes", TRUE ~ "No"),
        aflut = case_when(
            str_detect(arrhythmia_specify, "lut") ~ "Yes", 
                !is.na(arrhythmia_specify) ~ "No"),
        aflut2 = case_when(aflut == "Yes" ~ "Yes", TRUE ~ "No"),
        monthly_income = factor(
            monthly_income,
            levels = c(
                "Less than 500 Cedis", "500-999 Cedis", 
                "1000-5000 Cedis", "> 5000 Cedis"),
            labels = c(
                "Less than 500 Cedis", "500-999 Cedis", 
                "1000-5000 Cedis", "> 5000 Cedis")),
        gender = case_when(
            unique_id == "AGPH/11" ~ "Female", 
            unique_id == "CCTH/097" ~ "Female",
            unique_id == "KBTH/255" ~ "Male",
            TRUE ~ gender),
        educational_level = case_when(
            educational_level %in% c(
                "Postgraduate Studies",
                "University", "Diploma") ~ "Tertiary",
            educational_level %in% "No Formal Education" ~ "None",
            educational_level %in% "Basic" ~ "Primary",
            educational_level %in% "Senior High School" ~ "Secondary"),
        employment = factor(employment) %>% 
            fct_lump(n = 5, other_level = "Other"),
        region = factor(region) %>% fct_lump(n=6),
        blood_pressure_systolic_mm_hg = case_when(
            blood_pressure_systolic_mm_hg > 20 ~
                blood_pressure_systolic_mm_hg),
        blood_pressure_diastolic_mm_hg = case_when(
            blood_pressure_diastolic_mm_hg > 10 ~
                blood_pressure_diastolic_mm_hg),
        sbp_hpt = case_when(
            hypertension_systemic == "Yes" ~ blood_pressure_systolic_mm_hg),
        dbp_hpt = case_when(
            hypertension_systemic == "Yes" ~ blood_pressure_diastolic_mm_hg),
        sbp_nohpt = case_when(
            hypertension_systemic == "No" ~ blood_pressure_systolic_mm_hg),
        dbp_nohpt = case_when(
            hypertension_systemic == "No" ~ blood_pressure_diastolic_mm_hg),
        agecat = case_when(
            age <= 40 ~ "40 yrs or less", 
            age > 40 & age < 65 ~ "41 to 64 yrs",
            age >= 65 ~ "65 yrs or more"),
        across(
            c(sob_exertional_resting, orthopnoea, pnd, easy_fatigability,
              bipedal_swelling, nyha_class, nocturnal_cough, palpitation,
              bloated_feeling_early_satiety, loss_of_appetite, chest_pain, 
              others),
            ~fun_one(.)),
        weight = case_when(weight > 10 ~ weight),
        height = ifelse(height < 0.1, NA, height),
        height = ifelse(height > 100, height/100, height),
        height = ifelse(height > 25, (height+100)/100, height),
        ef_simpson_s_percent = case_when(
            (ef_simpson_s_percent > 0) & (ef_simpson_s_percent < 100) ~ 
                ef_simpson_s_percent),
        outcome = fct_na_level_to_value(outcome, "N/A"),
        fs_percent = case_when(fs_percent > 1 ~ fs_percent))
Warning: There were 2 warnings in `mutate()`.
The first warning was:
ℹ In argument: `blood_pressure_systolic_mm_hg =
  as.numeric(blood_pressure_systolic_mm_hg)`.
Caused by warning:
! NAs introduced by coercion
ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
Code
# df_new_selected %>% 
#     select(unique_id, gender) %>% 
#     filter(gender == "Others")

Labeling data

Code
labelled::var_label(df_new_selected) <- 
    list(
        age = "Age in years",
        gender = "Gender",
        nationality = "Nationality",
        ethnicity = "Ethnicity",
        religion = "Religion",
        marital_status = "Marital Status",
        employment = "Employment",
        educational_level = "Educational level",
        region = "Region",
        are_you_a_smoker = "Are you a smoker",
        do_you_drink_alcohol = "Do you drink alcohol",
        bmi_category = "BMI Category",
        hypertension_systemic = "Hypertension",
        diabetes_mellitus = "Diabetes Mellitus",
        blood_pressure_systolic_mm_hg = "Systolic Blood Pressure (mmHg)", 
        blood_pressure_diastolic_mm_hg = "Diastolic Blood Pressure (mmHg)",
        orthopnoea = "Orthopnoea",
        pnd = "Paroxysmal Nocturnal Dyspnoea",
        easy_fatigability = "Easy Fatiguability",
        bipedal_swelling = "Bipedal edema",
        nyha_class = "NYHA Classification",
        nocturnal_cough = "Nocturnal Cough",
        palpitation = "Palpitation",
        bloated_feeling_early_satiety = "Early Satiety",
        loss_of_appetite = "Loss of Appetite",
        chest_pain = "Chest Pain",
        others = "Other Symptoms",
        weight = "Weight (Kgs)",
        height = "Height (cms)",
        bmi = "Body Mass Index",
        ef_simpson_s_percent = "Ejection fraction (%)",
        outcome = "Outcome",
        fs_percent = "Fraction Shortening",
        heart_failure_phenotype = "Geart Failure Phenotype",
        afib = "Atrial Fibrillation",
        afib2 = "Atrial Fibrillation (ALL)",
        sob_exertional_resting = "Shortness of breath",
        rhythm = "Cardiac Rhythm",
        type_of_settlement = "Type of Settlement",
        aflut = "Atrial Flutter",
        aflut2 = "Atrial Flutter (ALL)",
        monthly_income = "Monthly Income",
        are_you_a_smoker = "Smoker",
        sbp_hpt = "Syst. Blood Press in hyertensives (mmHg)",
        sbp_nohpt = "Syst. Blood Press in non-hyertensives (mmHg)",
        dbp_hpt = "Diast. Blood Press in hyertensives (mmHg)",
        dbp_nohpt = "Syst. Blood Press in non-hyertensives (mmHg)",
        agecat ="Categorised age in years")

Table of all variables

Code
gtsummary::theme_gtsummary_compact()
Setting theme "Compact"
Code
gtsummary::theme_gtsummary_eda()
Setting theme "Exploratory Data Analysis"
Code
df_new_selected %>% 
    gtsummary::tbl_summary(
        include = -c(
            residence, if_others_specify, arrhythmia_specify, unique_id),
        missing_text = "Missing") %>% 
    gtsummary::bold_labels()

Characteristic

N = 1,133

1
Age in years
    Median (Q1, Q3) 57 (45, 67)
    Mean (SD) 56 (16)
    Min, Max 12, 93
Gender
    Female 567 (50.0%)
    Male 566 (50.0%)
Nationality
    Ghanaian 1,126 (99.4%)
    Non-Ghanaian 7 (0.62%)
Ethnicity
    Akan 641 (56.6%)
    Ewe 155 (13.7%)
    Ga-Dangme 117 (10.3%)
    Mole-Dagbon 90 (7.94%)
    Others 130 (11.5%)
Religion
    Christianity 943 (83.2%)
    Islam 182 (16.1%)
    Others 2 (0.18%)
    Traditional 6 (0.53%)
Marital Status
    Divorced 74 (6.53%)
    Married 768 (67.8%)
    Single 117 (10.3%)
    Widowed 174 (15.4%)
Educational level
    None 174 (15.4%)
    Primary 485 (42.8%)
    Secondary 290 (25.6%)
    Tertiary 184 (16.2%)
Employment
    Farming/Fishing/Trading 424 (37.4%)
    Retiree 215 (19.0%)
    Skilled Artisan 126 (11.1%)
    Unemployed 165 (14.6%)
    Other 203 (17.9%)
Region
    Ashanti 239 (21.1%)
    Central 145 (12.8%)
    Greater Accra 364 (32.1%)
    Northern 58 (5.12%)
    Volta 74 (6.53%)
    Western 143 (12.6%)
    Other 110 (9.71%)
Are you a smoker
    No (never smoked) 1,002 (88.4%)
    Previously smoked (Ex-smoker) 105 (9.27%)
    Yes (currently smoker) 26 (2.29%)
Do you drink alcohol
    No 920 (81.2%)
    Occasionally/Seldom 72 (6.35%)
    Yes 141 (12.4%)
BMI Category
    Normal [18.5–24.9] 393 (45.8%)
    Obese [30 or Greater] 187 (21.8%)
    Overweight [25–29.9] 223 (26.0%)
    Underweight [<18.5] 55 (6.41%)
    Missing 275
Hypertension 797 (70.3%)
Diabetes Mellitus 232 (20.5%)
Systolic Blood Pressure (mmHg)
    Median (Q1, Q3) 126 (109, 146)
    Mean (SD) 130 (29)
    Min, Max 70, 270
    Missing 26
Diastolic Blood Pressure (mmHg)
    Median (Q1, Q3) 80 (70, 91)
    Mean (SD) 82 (18)
    Min, Max 20, 186
    Missing 26
Cardiac Rhythm
    Arrhythmia 181 (16.0%)
    Sinus 952 (84.0%)
Shortness of breath 934 (83.1%)
    Missing 9
Orthopnoea 809 (72.4%)
    Missing 16
Paroxysmal Nocturnal Dyspnoea 683 (61.6%)
    Missing 24
Easy Fatiguability 995 (89.4%)
    Missing 20
Bipedal edema 827 (73.9%)
    Missing 14
NYHA Classification
    I 105 (9.27%)
    II 236 (20.8%)
    III 384 (33.9%)
    IV 408 (36.0%)
Nocturnal Cough 581 (53.3%)
    Missing 43
Palpitation 751 (67.8%)
    Missing 25
Early Satiety 420 (38.9%)
    Missing 53
Loss of Appetite 465 (43.7%)
    Missing 69
Chest Pain 485 (43.9%)
    Missing 29
Other Symptoms 48 (6.53%)
    Missing 398
Weight (Kgs)
    Median (Q1, Q3) 68 (58, 80)
    Mean (SD) 71 (18)
    Min, Max 23, 157
    Missing 241
Height (cms)
    Median (Q1, Q3) 1.64 (1.58, 1.70)
    Mean (SD) 1.64 (0.10)
    Min, Max 1.04, 1.99
    Missing 264
Body Mass Index
    Median (Q1, Q3) 25 (21, 29)
    Mean (SD) 26 (6)
    Min, Max 12, 62
    Missing 280
Ejection fraction (%)
    Median (Q1, Q3) 36 (25, 52)
    Mean (SD) 38 (17)
    Min, Max 1, 86
    Missing 86
Outcome
    Died 52 (7.06%)
    Discharged 565 (76.7%)
    Others 120 (16.3%)
    Missing 396
Fraction Shortening
    Median (Q1, Q3) 18 (12, 27)
    Mean (SD) 20 (11)
    Min, Max 2, 70
    Missing 61
Geart Failure Phenotype
    HFmrEF 120 (10.6%)
    HFpEF 283 (25.0%)
    HFrEF 730 (64.4%)
Monthly Income
    Less than 500 Cedis 405 (35.7%)
    500-999 Cedis 415 (36.6%)
    1000-5000 Cedis 298 (26.3%)
    > 5000 Cedis 15 (1.32%)
Type of Settlement
    Mixed 262 (23.1%)
    Rural 112 (9.89%)
    Urban 759 (67.0%)
Atrial Fibrillation 104 (57.5%)
    Missing 952
Atrial Fibrillation (ALL) 104 (9.18%)
Atrial Flutter 33 (18.2%)
    Missing 952
Atrial Flutter (ALL) 33 (2.91%)
Syst. Blood Press in hyertensives (mmHg)
    Median (Q1, Q3) 132 (113, 152)
    Mean (SD) 136 (30)
    Min, Max 70, 270
    Missing 354
Diast. Blood Press in hyertensives (mmHg)
    Median (Q1, Q3) 82 (72, 94)
    Mean (SD) 84 (19)
    Min, Max 33, 186
    Missing 355
Syst. Blood Press in non-hyertensives (mmHg)
    Median (Q1, Q3) 112 (101, 126)
    Mean (SD) 115 (21)
    Min, Max 70, 185
    Missing 805
Syst. Blood Press in non-hyertensives (mmHg)
    Median (Q1, Q3) 75 (65, 86)
    Mean (SD) 76 (15)
    Min, Max 20, 149
    Missing 804
Categorised age in years
    40 yrs or less 203 (17.9%)
    41 to 64 yrs 566 (50.0%)
    65 yrs or more 364 (32.1%)
1

n (%)

Variables stratified by Gender

Code
gtsummary::reset_gtsummary_theme()
gtsummary::theme_gtsummary_compact()

df_new_selected %>% 
    gtsummary::tbl_summary(
        by = gender,
        include = -c(
            residence, if_others_specify, arrhythmia_specify, unique_id),
        missing_text = "Missing",
        statistic = list(
            gtsummary::all_categorical() ~ "{n}({p})",
            gtsummary::all_continuous() ~ "{mean}({sd})"),
        digits = gtsummary::all_categorical()~ c(0,1)) %>% 
    gtsummary::bold_labels() %>% 
    gtsummary::add_overall(last = TRUE) %>% 
    gtsummary::add_p(
        pvalue_fun = function(x) gtsummary::style_pvalue(x, digits = 3))

Characteristic

Female
N = 567

1

Male
N = 566

1

Overall
N = 1,133

1

p-value

2
Age in years 55(17) 58(15) 56(16) <0.001
Nationality


0.726
    Ghanaian 564(99.5) 562(99.3) 1,126(99.4)
    Non-Ghanaian 3(0.5) 4(0.7) 7(0.6)
Ethnicity


0.229
    Akan 336(59.3) 305(53.9) 641(56.6)
    Ewe 74(13.1) 81(14.3) 155(13.7)
    Ga-Dangme 48(8.5) 69(12.2) 117(10.3)
    Mole-Dagbon 44(7.8) 46(8.1) 90(7.9)
    Others 65(11.5) 65(11.5) 130(11.5)
Religion


0.645
    Christianity 476(84.0) 467(82.5) 943(83.2)
    Islam 88(15.5) 94(16.6) 182(16.1)
    Others 0(0.0) 2(0.4) 2(0.2)
    Traditional 3(0.5) 3(0.5) 6(0.5)
Marital Status


<0.001
    Divorced 46(8.1) 28(4.9) 74(6.5)
    Married 319(56.3) 449(79.3) 768(67.8)
    Single 55(9.7) 62(11.0) 117(10.3)
    Widowed 147(25.9) 27(4.8) 174(15.4)
Educational level


<0.001
    None 130(22.9) 44(7.8) 174(15.4)
    Primary 262(46.2) 223(39.4) 485(42.8)
    Secondary 120(21.2) 170(30.0) 290(25.6)
    Tertiary 55(9.7) 129(22.8) 184(16.2)
Employment


<0.001
    Farming/Fishing/Trading 264(46.6) 160(28.3) 424(37.4)
    Retiree 81(14.3) 134(23.7) 215(19.0)
    Skilled Artisan 38(6.7) 88(15.5) 126(11.1)
    Unemployed 112(19.8) 53(9.4) 165(14.6)
    Other 72(12.7) 131(23.1) 203(17.9)
Region


0.002
    Ashanti 107(18.9) 132(23.3) 239(21.1)
    Central 89(15.7) 56(9.9) 145(12.8)
    Greater Accra 175(30.9) 189(33.4) 364(32.1)
    Northern 29(5.1) 29(5.1) 58(5.1)
    Volta 43(7.6) 31(5.5) 74(6.5)
    Western 59(10.4) 84(14.8) 143(12.6)
    Other 65(11.5) 45(8.0) 110(9.7)
Are you a smoker


<0.001
    No (never smoked) 554(97.7) 448(79.2) 1,002(88.4)
    Previously smoked (Ex-smoker) 11(1.9) 94(16.6) 105(9.3)
    Yes (currently smoker) 2(0.4) 24(4.2) 26(2.3)
Do you drink alcohol


<0.001
    No 519(91.5) 401(70.8) 920(81.2)
    Occasionally/Seldom 22(3.9) 50(8.8) 72(6.4)
    Yes 26(4.6) 115(20.3) 141(12.4)
BMI Category


<0.001
    Normal [18.5–24.9] 176(40.6) 217(51.1) 393(45.8)
    Obese [30 or Greater] 123(28.4) 64(15.1) 187(21.8)
    Overweight [25–29.9] 99(22.9) 124(29.2) 223(26.0)
    Underweight [<18.5] 35(8.1) 20(4.7) 55(6.4)
    Missing 134 141 275
Hypertension 402(70.9) 395(69.8) 797(70.3) 0.682
Diabetes Mellitus 126(22.2) 106(18.7) 232(20.5) 0.145
Systolic Blood Pressure (mmHg) 132(30) 128(28) 130(29) 0.073
    Missing 12 14 26
Diastolic Blood Pressure (mmHg) 82(18) 81(18) 82(18) 0.586
    Missing 12 14 26
Cardiac Rhythm


0.041
    Arrhythmia 78(13.8) 103(18.2) 181(16.0)
    Sinus 489(86.2) 463(81.8) 952(84.0)
Shortness of breath 476(84.4) 458(81.8) 934(83.1) 0.243
    Missing 3 6 9
Orthopnoea 413(73.6) 396(71.2) 809(72.4) 0.370
    Missing 6 10 16
Paroxysmal Nocturnal Dyspnoea 337(60.5) 346(62.7) 683(61.6) 0.456
    Missing 10 14 24
Easy Fatiguability 505(90.3) 490(88.4) 995(89.4) 0.305
    Missing 8 12 20
Bipedal edema 415(73.8) 412(74.0) 827(73.9) 0.962
    Missing 5 9 14
NYHA Classification


0.467
    I 54(9.5) 51(9.0) 105(9.3)
    II 117(20.6) 119(21.0) 236(20.8)
    III 181(31.9) 203(35.9) 384(33.9)
    IV 215(37.9) 193(34.1) 408(36.0)
Nocturnal Cough 286(52.2) 295(54.4) 581(53.3) 0.459
    Missing 19 24 43
Palpitation 386(68.9) 365(66.6) 751(67.8) 0.408
    Missing 7 18 25
Early Satiety 213(39.7) 207(38.1) 420(38.9) 0.603
    Missing 30 23 53
Loss of Appetite 253(47.6) 212(39.8) 465(43.7) 0.011
    Missing 35 34 69
Chest Pain 257(46.0) 228(41.8) 485(43.9) 0.166
    Missing 8 21 29
Other Symptoms 23(6.1) 25(7.0) 48(6.5) 0.587
    Missing 187 211 398
Weight (Kgs) 69(19) 72(17) 71(18) <0.001
    Missing 121 120 241
Height (cms) 1.59(0.08) 1.69(0.08) 1.64(0.10) <0.001
    Missing 130 134 264
Body Mass Index 27(7) 25(5) 26(6) 0.001
    Missing 138 142 280
Ejection fraction (%) 41(18) 36(16) 38(17) <0.001
    Missing 47 39 86
Outcome


0.949
    Died 28(7.3) 24(6.7) 52(7.1)
    Discharged 291(76.4) 274(77.0) 565(76.7)
    Others 62(16.3) 58(16.3) 120(16.3)
    Missing 186 210 396
Fraction Shortening 22(12) 18(10) 20(11) <0.001
    Missing 29 32 61
Geart Failure Phenotype


<0.001
    HFmrEF 53(9.3) 67(11.8) 120(10.6)
    HFpEF 170(30.0) 113(20.0) 283(25.0)
    HFrEF 344(60.7) 386(68.2) 730(64.4)
Monthly Income


<0.001
    Less than 500 Cedis 257(45.3) 148(26.1) 405(35.7)
    500-999 Cedis 204(36.0) 211(37.3) 415(36.6)
    1000-5000 Cedis 101(17.8) 197(34.8) 298(26.3)
    > 5000 Cedis 5(0.9) 10(1.8) 15(1.3)
Type of Settlement


0.013
    Mixed 151(26.6) 111(19.6) 262(23.1)
    Rural 58(10.2) 54(9.5) 112(9.9)
    Urban 358(63.1) 401(70.8) 759(67.0)
Atrial Fibrillation 53(67.9) 51(49.5) 104(57.5) 0.013
    Missing 489 463 952
Atrial Fibrillation (ALL) 53(9.3) 51(9.0) 104(9.2) 0.844
Atrial Flutter 6(7.7) 27(26.2) 33(18.2) 0.001
    Missing 489 463 952
Atrial Flutter (ALL) 6(1.1) 27(4.8) 33(2.9) <0.001
Syst. Blood Press in hyertensives (mmHg) 138(31) 133(29) 136(30) 0.023
    Missing 173 181 354
Diast. Blood Press in hyertensives (mmHg) 85(19) 83(19) 84(19) 0.357
    Missing 173 182 355
Syst. Blood Press in non-hyertensives (mmHg) 115(21) 116(21) 115(21) 0.509
    Missing 406 399 805
Syst. Blood Press in non-hyertensives (mmHg) 75(15) 77(15) 76(15) 0.551
    Missing 406 398 804
Categorised age in years


<0.001
    40 yrs or less 133(23.5) 70(12.4) 203(17.9)
    41 to 64 yrs 277(48.9) 289(51.1) 566(50.0)
    65 yrs or more 157(27.7) 207(36.6) 364(32.1)
1

Mean(SD); n(%)

2

Wilcoxon rank sum test; Fisher’s exact test; Pearson’s Chi-squared test

Variables stratified by heart failure phenotype

Code
gtsummary::reset_gtsummary_theme()
gtsummary::theme_gtsummary_compact()

df_new_selected %>% 
    gtsummary::tbl_summary(
        by = heart_failure_phenotype,
        include = -c(
            residence, if_others_specify, arrhythmia_specify, unique_id),
        missing_text = "Missing",
        statistic = list(
            gtsummary::all_categorical()~ "{n}({p})",
            gtsummary::all_continuous() ~ "{mean}({sd})"),
        digits = gtsummary::all_categorical()~ c(0,1)) %>% 
    gtsummary::bold_labels() %>% 
    gtsummary::add_overall(last = TRUE) %>% 
    gtsummary::add_p(
        pvalue_fun = function(x) gtsummary::style_pvalue(x, digits = 3),
        test.args = gtsummary::all_tests("fisher.test") ~ list(simulate.p.value = TRUE))

Characteristic

HFmrEF
N = 120

1

HFpEF
N = 283

1

HFrEF
N = 730

1

Overall
N = 1,133

1

p-value

2
Age in years 57(17) 59(16) 55(15) 56(16) <0.001
Gender



<0.001
    Female 53(44.2) 170(60.1) 344(47.1) 567(50.0)
    Male 67(55.8) 113(39.9) 386(52.9) 566(50.0)
Nationality



0.846
    Ghanaian 120(100.0) 282(99.6) 724(99.2) 1,126(99.4)
    Non-Ghanaian 0(0.0) 1(0.4) 6(0.8) 7(0.6)
Ethnicity



0.061
    Akan 69(57.5) 184(65.0) 388(53.2) 641(56.6)
    Ewe 15(12.5) 35(12.4) 105(14.4) 155(13.7)
    Ga-Dangme 13(10.8) 27(9.5) 77(10.5) 117(10.3)
    Mole-Dagbon 8(6.7) 17(6.0) 65(8.9) 90(7.9)
    Others 15(12.5) 20(7.1) 95(13.0) 130(11.5)
Religion



0.275
    Christianity 98(81.7) 247(87.3) 598(81.9) 943(83.2)
    Islam 21(17.5) 34(12.0) 127(17.4) 182(16.1)
    Others 0(0.0) 1(0.4) 1(0.1) 2(0.2)
    Traditional 1(0.8) 1(0.4) 4(0.5) 6(0.5)
Marital Status



0.252
    Divorced 6(5.0) 16(5.7) 52(7.1) 74(6.5)
    Married 87(72.5) 191(67.5) 490(67.1) 768(67.8)
    Single 12(10.0) 22(7.8) 83(11.4) 117(10.3)
    Widowed 15(12.5) 54(19.1) 105(14.4) 174(15.4)
Educational level



0.585
    None 16(13.3) 37(13.1) 121(16.6) 174(15.4)
    Primary 56(46.7) 132(46.6) 297(40.7) 485(42.8)
    Secondary 30(25.0) 71(25.1) 189(25.9) 290(25.6)
    Tertiary 18(15.0) 43(15.2) 123(16.8) 184(16.2)
Employment



0.140
    Farming/Fishing/Trading 39(32.5) 113(39.9) 272(37.3) 424(37.4)
    Retiree 32(26.7) 60(21.2) 123(16.8) 215(19.0)
    Skilled Artisan 13(10.8) 22(7.8) 91(12.5) 126(11.1)
    Unemployed 16(13.3) 41(14.5) 108(14.8) 165(14.6)
    Other 20(16.7) 47(16.6) 136(18.6) 203(17.9)
Region



<0.001
    Ashanti 21(17.5) 85(30.0) 133(18.2) 239(21.1)
    Central 19(15.8) 38(13.4) 88(12.1) 145(12.8)
    Greater Accra 42(35.0) 74(26.1) 248(34.0) 364(32.1)
    Northern 4(3.3) 5(1.8) 49(6.7) 58(5.1)
    Volta 12(10.0) 17(6.0) 45(6.2) 74(6.5)
    Western 14(11.7) 47(16.6) 82(11.2) 143(12.6)
    Other 8(6.7) 17(6.0) 85(11.6) 110(9.7)
Are you a smoker



0.594
    No (never smoked) 108(90.0) 253(89.4) 641(87.8) 1,002(88.4)
    Previously smoked (Ex-smoker) 11(9.2) 26(9.2) 68(9.3) 105(9.3)
    Yes (currently smoker) 1(0.8) 4(1.4) 21(2.9) 26(2.3)
Do you drink alcohol



0.222
    No 96(80.0) 233(82.3) 591(81.0) 920(81.2)
    Occasionally/Seldom 13(10.8) 15(5.3) 44(6.0) 72(6.4)
    Yes 11(9.2) 35(12.4) 95(13.0) 141(12.4)
BMI Category



0.001
    Normal [18.5–24.9] 44(46.3) 79(37.3) 270(49.0) 393(45.8)
    Obese [30 or Greater] 20(21.1) 69(32.5) 98(17.8) 187(21.8)
    Overweight [25–29.9] 27(28.4) 52(24.5) 144(26.1) 223(26.0)
    Underweight [<18.5] 4(4.2) 12(5.7) 39(7.1) 55(6.4)
    Missing 25 71 179 275
Hypertension 86(71.7) 227(80.2) 484(66.3) 797(70.3) <0.001
Diabetes Mellitus 31(25.8) 70(24.7) 131(17.9) 232(20.5) 0.017
Systolic Blood Pressure (mmHg) 132(30) 142(32) 125(27) 130(29) <0.001
    Missing 0 2 24 26
Diastolic Blood Pressure (mmHg) 81(18) 83(20) 81(18) 82(18) 0.295
    Missing 0 3 23 26
Cardiac Rhythm



0.305
    Arrhythmia 25(20.8) 43(15.2) 113(15.5) 181(16.0)
    Sinus 95(79.2) 240(84.8) 617(84.5) 952(84.0)
Shortness of breath 92(77.3) 229(81.8) 613(84.6) 934(83.1) 0.118
    Missing 1 3 5 9
Orthopnoea 77(65.3) 180(64.3) 552(76.8) 809(72.4) <0.001
    Missing 2 3 11 16
Paroxysmal Nocturnal Dyspnoea 69(58.5) 123(44.2) 491(68.9) 683(61.6) <0.001
    Missing 2 5 17 24
Easy Fatiguability 105(88.2) 239(86.0) 651(90.9) 995(89.4) 0.068
    Missing 1 5 14 20
Bipedal edema 90(75.0) 197(70.4) 540(75.1) 827(73.9) 0.295
    Missing 0 3 11 14
NYHA Classification



0.108
    I 11(9.2) 37(13.1) 57(7.8) 105(9.3)
    II 29(24.2) 57(20.1) 150(20.5) 236(20.8)
    III 35(29.2) 101(35.7) 248(34.0) 384(33.9)
    IV 45(37.5) 88(31.1) 275(37.7) 408(36.0)
Nocturnal Cough 57(49.1) 120(43.6) 404(57.8) 581(53.3) <0.001
    Missing 4 8 31 43
Palpitation 69(58.0) 174(62.1) 508(71.7) 751(67.8) <0.001
    Missing 1 3 21 25
Early Satiety 33(28.4) 78(28.4) 309(44.8) 420(38.9) <0.001
    Missing 4 8 41 53
Loss of Appetite 48(41.0) 99(36.4) 318(47.1) 465(43.7) 0.009
    Missing 3 11 55 69
Chest Pain 48(40.7) 124(44.4) 313(44.3) 485(43.9) 0.752
    Missing 2 4 23 29
Other Symptoms 8(11.4) 8(4.3) 32(6.7) 48(6.5) 0.107
    Missing 50 99 249 398
Weight (Kgs) 69(15) 74(21) 69(17) 71(18) 0.009
    Missing 24 63 154 241
Height (cms) 1.64(0.09) 1.63(0.10) 1.65(0.10) 1.64(0.10) 0.031
    Missing 22 67 175 264
Body Mass Index 26(6) 28(8) 25(6) 26(6) <0.001
    Missing 27 67 186 280
Ejection fraction (%) 43(8) 60(12) 28(11) 38(17) <0.001
    Missing 9 9 68 86
Outcome



0.685
    Died 4(5.0) 11(5.8) 37(7.9) 52(7.1)
    Discharged 60(75.0) 148(77.9) 357(76.4) 565(76.7)
    Others 16(20.0) 31(16.3) 73(15.6) 120(16.3)
    Missing 40 93 263 396
Fraction Shortening 22(6) 33(9) 15(7) 20(11) <0.001
    Missing 6 7 48 61
Monthly Income



0.588
    Less than 500 Cedis 46(38.3) 89(31.4) 270(37.0) 405(35.7)
    500-999 Cedis 45(37.5) 107(37.8) 263(36.0) 415(36.6)
    1000-5000 Cedis 27(22.5) 84(29.7) 187(25.6) 298(26.3)
    > 5000 Cedis 2(1.7) 3(1.1) 10(1.4) 15(1.3)
Type of Settlement



0.584
    Mixed 24(20.0) 73(25.8) 165(22.6) 262(23.1)
    Rural 11(9.2) 31(11.0) 70(9.6) 112(9.9)
    Urban 85(70.8) 179(63.3) 495(67.8) 759(67.0)
Atrial Fibrillation 18(72.0) 27(62.8) 59(52.2) 104(57.5) 0.140
    Missing 95 240 617 952
Atrial Fibrillation (ALL) 18(15.0) 27(9.5) 59(8.1) 104(9.2) 0.050
Atrial Flutter 2(8.0) 5(11.6) 26(23.0) 33(18.2) 0.115
    Missing 95 240 617 952
Atrial Flutter (ALL) 2(1.7) 5(1.8) 26(3.6) 33(2.9) 0.281
Syst. Blood Press in hyertensives (mmHg) 139(30) 146(31) 130(28) 136(30) <0.001
    Missing 34 56 264 354
Diast. Blood Press in hyertensives (mmHg) 84(18) 85(20) 83(19) 84(19) 0.584
    Missing 34 57 264 355
Syst. Blood Press in non-hyertensives (mmHg) 115(20) 121(25) 114(20) 115(21) 0.094
    Missing 86 229 490 805
Syst. Blood Press in non-hyertensives (mmHg) 73(15) 75(16) 77(15) 76(15) 0.303
    Missing 86 229 489 804
Categorised age in years



0.036
    40 yrs or less 21(17.5) 44(15.5) 138(18.9) 203(17.9)
    41 to 64 yrs 56(46.7) 129(45.6) 381(52.2) 566(50.0)
    65 yrs or more 43(35.8) 110(38.9) 211(28.9) 364(32.1)
1

Mean(SD); n(%)

2

Kruskal-Wallis rank sum test; Pearson’s Chi-squared test; Fisher’s Exact Test for Count Data with simulated p-value (based on 2000 replicates)

Variables stratified by ethnicity

Code
gtsummary::reset_gtsummary_theme()
gtsummary::theme_gtsummary_compact()
Setting theme "Compact"
Code
df_new_selected %>% 
    gtsummary::tbl_summary(
        by = ethnicity,
        include = -c(
            residence, if_others_specify, arrhythmia_specify, unique_id),
        missing_text = "Missing",
        statistic = list(
            gtsummary::all_categorical()~ "{n}({p})",
            gtsummary::all_continuous() ~ "{mean}({sd})"),
        digits = gtsummary::all_categorical()~ c(0,1)) %>% 
    gtsummary::bold_labels() %>% 
    gtsummary::add_overall(last = TRUE) %>% 
    gtsummary::add_p(
        pvalue_fun = function(x) gtsummary::style_pvalue(x, digits = 3),
        test.args = gtsummary::all_tests("fisher.test") ~ list(simulate.p.value = TRUE))

Characteristic

Akan
N = 641

1

Ewe
N = 155

1

Ga-Dangme
N = 117

1

Mole-Dagbon
N = 90

1

Others
N = 130

1

Overall
N = 1,133

1

p-value

2
Age in years 56(15) 60(16) 57(15) 53(18) 53(17) 56(16) 0.004
Gender





0.229
    Female 336(52.4) 74(47.7) 48(41.0) 44(48.9) 65(50.0) 567(50.0)
    Male 305(47.6) 81(52.3) 69(59.0) 46(51.1) 65(50.0) 566(50.0)
Nationality





<0.001
    Ghanaian 641(100.0) 154(99.4) 117(100.0) 90(100.0) 124(95.4) 1,126(99.4)
    Non-Ghanaian 0(0.0) 1(0.6) 0(0.0) 0(0.0) 6(4.6) 7(0.6)
Religion





<0.001
    Christianity 613(95.6) 149(96.1) 106(90.6) 18(20.0) 57(43.8) 943(83.2)
    Islam 27(4.2) 2(1.3) 9(7.7) 72(80.0) 72(55.4) 182(16.1)
    Others 1(0.2) 0(0.0) 1(0.9) 0(0.0) 0(0.0) 2(0.2)
    Traditional 0(0.0) 4(2.6) 1(0.9) 0(0.0) 1(0.8) 6(0.5)
Marital Status





0.045
    Divorced 56(8.7) 8(5.2) 3(2.6) 1(1.1) 6(4.6) 74(6.5)
    Married 422(65.8) 108(69.7) 74(63.2) 72(80.0) 92(70.8) 768(67.8)
    Single 65(10.1) 15(9.7) 15(12.8) 8(8.9) 14(10.8) 117(10.3)
    Widowed 98(15.3) 24(15.5) 25(21.4) 9(10.0) 18(13.8) 174(15.4)
Educational level





<0.001
    None 62(9.7) 19(12.3) 7(6.0) 44(48.9) 42(32.3) 174(15.4)
    Primary 307(47.9) 53(34.2) 52(44.4) 25(27.8) 48(36.9) 485(42.8)
    Secondary 170(26.5) 48(31.0) 38(32.5) 13(14.4) 21(16.2) 290(25.6)
    Tertiary 102(15.9) 35(22.6) 20(17.1) 8(8.9) 19(14.6) 184(16.2)
Employment





<0.001
    Farming/Fishing/Trading 235(36.7) 54(34.8) 48(41.0) 34(37.8) 53(40.8) 424(37.4)
    Retiree 111(17.3) 43(27.7) 31(26.5) 10(11.1) 20(15.4) 215(19.0)
    Skilled Artisan 63(9.8) 24(15.5) 16(13.7) 9(10.0) 14(10.8) 126(11.1)
    Unemployed 102(15.9) 10(6.5) 13(11.1) 19(21.1) 21(16.2) 165(14.6)
    Other 130(20.3) 24(15.5) 9(7.7) 18(20.0) 22(16.9) 203(17.9)
Region





<0.001
    Ashanti 195(30.4) 5(3.2) 3(2.6) 10(11.1) 26(20.0) 239(21.1)
    Central 121(18.9) 4(2.6) 6(5.1) 3(3.3) 11(8.5) 145(12.8)
    Greater Accra 137(21.4) 59(38.1) 101(86.3) 5(5.6) 62(47.7) 364(32.1)
    Northern 3(0.5) 2(1.3) 0(0.0) 48(53.3) 5(3.8) 58(5.1)
    Volta 3(0.5) 67(43.2) 1(0.9) 0(0.0) 3(2.3) 74(6.5)
    Western 119(18.6) 11(7.1) 1(0.9) 12(13.3) 0(0.0) 143(12.6)
    Other 63(9.8) 7(4.5) 5(4.3) 12(13.3) 23(17.7) 110(9.7)
Are you a smoker





0.019
    No (never smoked) 571(89.1) 141(91.0) 94(80.3) 77(85.6) 119(91.5) 1,002(88.4)
    Previously smoked (Ex-smoker) 56(8.7) 13(8.4) 21(17.9) 8(8.9) 7(5.4) 105(9.3)
    Yes (currently smoker) 14(2.2) 1(0.6) 2(1.7) 5(5.6) 4(3.1) 26(2.3)
Do you drink alcohol





<0.001
    No 502(78.3) 118(76.1) 96(82.1) 88(97.8) 116(89.2) 920(81.2)
    Occasionally/Seldom 51(8.0) 12(7.7) 5(4.3) 0(0.0) 4(3.1) 72(6.4)
    Yes 88(13.7) 25(16.1) 16(13.7) 2(2.2) 10(7.7) 141(12.4)
BMI Category





0.005
    Normal [18.5–24.9] 222(46.4) 49(38.9) 37(45.7) 43(60.6) 42(41.2) 393(45.8)
    Obese [30 or Greater] 104(21.8) 26(20.6) 22(27.2) 10(14.1) 25(24.5) 187(21.8)
    Overweight [25–29.9] 117(24.5) 48(38.1) 21(25.9) 11(15.5) 26(25.5) 223(26.0)
    Underweight [<18.5] 35(7.3) 3(2.4) 1(1.2) 7(9.9) 9(8.8) 55(6.4)
    Missing 163 29 36 19 28 275
Hypertension 456(71.1) 113(72.9) 90(76.9) 47(52.2) 91(70.0) 797(70.3) 0.002
Diabetes Mellitus 152(23.7) 29(18.7) 19(16.2) 13(14.4) 19(14.6) 232(20.5) 0.033
Systolic Blood Pressure (mmHg) 132(30) 128(28) 132(33) 120(23) 128(26) 130(29) 0.004
    Missing 14 1 4 0 7 26
Diastolic Blood Pressure (mmHg) 82(18) 79(18) 81(18) 80(18) 82(19) 82(18) 0.336
    Missing 13 2 4 0 7 26
Cardiac Rhythm





0.076
    Arrhythmia 95(14.8) 37(23.9) 18(15.4) 13(14.4) 18(13.8) 181(16.0)
    Sinus 546(85.2) 118(76.1) 99(84.6) 77(85.6) 112(86.2) 952(84.0)
Shortness of breath 549(86.3) 120(77.9) 84(72.4) 78(87.6) 103(79.8) 934(83.1) <0.001
    Missing 5 1 1 1 1 9
Orthopnoea 483(75.9) 95(62.1) 76(65.5) 64(76.2) 91(71.1) 809(72.4) 0.004
    Missing 5 2 1 6 2 16
Paroxysmal Nocturnal Dyspnoea 401(63.4) 76(49.7) 69(59.5) 55(67.9) 82(64.6) 683(61.6) 0.016
    Missing 9 2 1 9 3 24
Easy Fatiguability 581(91.1) 137(89.5) 92(80.7) 79(94.0) 106(85.5) 995(89.4) 0.005
    Missing 3 2 3 6 6 20
Bipedal edema 485(76.1) 99(64.7) 84(73.0) 68(79.1) 91(71.1) 827(73.9) 0.038
    Missing 4 2 2 4 2 14
NYHA Classification





<0.001
    I 53(8.3) 12(7.7) 14(12.0) 3(3.3) 23(17.7) 105(9.3)
    II 113(17.6) 51(32.9) 29(24.8) 18(20.0) 25(19.2) 236(20.8)
    III 239(37.3) 48(31.0) 36(30.8) 28(31.1) 33(25.4) 384(33.9)
    IV 236(36.8) 44(28.4) 38(32.5) 41(45.6) 49(37.7) 408(36.0)
Nocturnal Cough 347(55.4) 59(39.6) 64(55.2) 41(53.9) 70(56.9) 581(53.3) 0.010
    Missing 15 6 1 14 7 43
Palpitation 452(71.5) 84(54.9) 69(59.5) 61(76.3) 85(66.9) 751(67.8) <0.001
    Missing 9 2 1 10 3 25
Early Satiety 228(36.5) 53(35.3) 50(43.9) 30(41.7) 59(49.6) 420(38.9) 0.050
    Missing 16 5 3 18 11 53
Loss of Appetite 275(44.1) 58(39.2) 54(47.4) 28(47.5) 50(41.7) 465(43.7) 0.656
    Missing 18 7 3 31 10 69
Chest Pain 289(45.8) 55(35.9) 41(36.0) 33(41.3) 67(53.2) 485(43.9) 0.015
    Missing 10 2 3 10 4 29
Other Symptoms 21(5.0) 9(9.3) 5(6.8) 7(12.3) 6(6.6) 48(6.5) 0.194
    Missing 225 58 43 33 39 398
Weight (Kgs) 69(18) 75(18) 76(17) 65(16) 72(19) 71(18) <0.001
    Missing 143 26 33 16 23 241
Height (cms) 1.63(0.09) 1.65(0.10) 1.67(0.10) 1.64(0.10) 1.66(0.09) 1.64(0.10) <0.001
    Missing 156 28 37 16 27 264
Body Mass Index 26(7) 27(5) 27(6) 24(6) 26(6) 26(6) <0.001
    Missing 160 33 38 19 30 280
Ejection fraction (%) 40(18) 37(16) 39(17) 33(16) 34(16) 38(17) 0.001
    Missing 37 10 15 3 21 86
Outcome





0.002
    Died 22(5.0) 11(13.8) 8(11.4) 7(9.5) 4(5.7) 52(7.1)
    Discharged 350(79.0) 53(66.3) 46(65.7) 63(85.1) 53(75.7) 565(76.7)
    Others 71(16.0) 16(20.0) 16(22.9) 4(5.4) 13(18.6) 120(16.3)
    Missing 198 75 47 16 60 396
Fraction Shortening 21(12) 21(11) 20(11) 18(9) 17(9) 20(11) 0.005
    Missing 26 11 4 5 15 61
Geart Failure Phenotype





0.061
    HFmrEF 69(10.8) 15(9.7) 13(11.1) 8(8.9) 15(11.5) 120(10.6)
    HFpEF 184(28.7) 35(22.6) 27(23.1) 17(18.9) 20(15.4) 283(25.0)
    HFrEF 388(60.5) 105(67.7) 77(65.8) 65(72.2) 95(73.1) 730(64.4)
Monthly Income





<0.001
    Less than 500 Cedis 217(33.9) 32(20.6) 51(43.6) 45(50.0) 60(46.2) 405(35.7)
    500-999 Cedis 251(39.2) 61(39.4) 39(33.3) 26(28.9) 38(29.2) 415(36.6)
    1000-5000 Cedis 168(26.2) 60(38.7) 25(21.4) 16(17.8) 29(22.3) 298(26.3)
    > 5000 Cedis 5(0.8) 2(1.3) 2(1.7) 3(3.3) 3(2.3) 15(1.3)
Type of Settlement





<0.001
    Mixed 187(29.2) 18(11.6) 10(8.5) 25(27.8) 22(16.9) 262(23.1)
    Rural 79(12.3) 7(4.5) 2(1.7) 15(16.7) 9(6.9) 112(9.9)
    Urban 375(58.5) 130(83.9) 105(89.7) 50(55.6) 99(76.2) 759(67.0)
Atrial Fibrillation 51(53.7) 25(67.6) 7(38.9) 10(76.9) 11(61.1) 104(57.5) 0.150
    Missing 546 118 99 77 112 952
Atrial Fibrillation (ALL) 51(8.0) 25(16.1) 7(6.0) 10(11.1) 11(8.5) 104(9.2) 0.017
Atrial Flutter 17(17.9) 8(21.6) 4(22.2) 2(15.4) 2(11.1) 33(18.2) 0.899
    Missing 546 118 99 77 112 952
Atrial Flutter (ALL) 17(2.7) 8(5.2) 4(3.4) 2(2.2) 2(1.5) 33(2.9) 0.435
Syst. Blood Press in hyertensives (mmHg) 138(31) 133(29) 137(34) 128(22) 132(26) 136(30) 0.060
    Missing 195 43 29 43 44 354
Diast. Blood Press in hyertensives (mmHg) 85(19) 81(18) 85(18) 83(17) 84(20) 84(19) 0.300
    Missing 195 44 29 43 44 355
Syst. Blood Press in non-hyertensives (mmHg) 116(20) 115(20) 114(19) 110(21) 118(25) 115(21) 0.471
    Missing 460 113 92 47 93 805
Syst. Blood Press in non-hyertensives (mmHg) 76(15) 75(16) 70(12) 77(18) 78(15) 76(15) 0.177
    Missing 459 113 92 47 93 804
Categorised age in years





0.021
    40 yrs or less 110(17.2) 19(12.3) 18(15.4) 27(30.0) 29(22.3) 203(17.9)
    41 to 64 yrs 320(49.9) 76(49.0) 62(53.0) 42(46.7) 66(50.8) 566(50.0)
    65 yrs or more 211(32.9) 60(38.7) 37(31.6) 21(23.3) 35(26.9) 364(32.1)
1

Mean(SD); n(%)

2

Kruskal-Wallis rank sum test; Pearson’s Chi-squared test; Fisher’s Exact Test for Count Data with simulated p-value (based on 2000 replicates)