DM Control

Author

Dr Samuel Blay Nguah

Reading In data

Importing and cleaning data

Code
df_glycemic_clean <- 
    df_glycemic %>% 
    janitor::clean_names() %>% 
    rename(
        caregiver_occup = primary_caregiver_s_occupation, 
        caregiver_educ = education_level_of_caregiver, 
        dura_dm = duration_of_diabetes_diagnosis,
        free_insulin = do_you_receive_free_insulin_consistently, 
        disrupt_strip = have_there_been_disruptions_in_the_supply_of_glucometers_or_test_strips, 
        diff_transport = do_you_have_difficulties_affording_transportation_to_the_clinic, 
        diff_trans_sp = if_yes_to_transportation_difficulties_specify, 
        diff_meals = do_you_have_difficulties_in_getting_regular_meals_daily,
        diff_meals_sp = if_yes_to_getting_meals_regularly_specify, 
        add_burden = are_there_any_additional_financial_burdens_related_to_diabetes_management_e_g_medication_tests, 
        supp_family = do_you_receive_support_for_diabetes_management_from_your_family,
        adm_public = have_you_faced_any_challenges_administering_insulin_at_school_workplace_or_in_public_places, 
        keep_ins = where_do_you_keep_your_insulin_at_school_work, 
        additional_concerns = do_you_have_any_additional_comments_or_concerns_regarding_your_diabetes_care,
        improve_dm = what_improvements_would_you_suggest_for_better_management_of_diabetes_in_your_community, 
        share_stigma = please_share_any_additional_comments_or_experiences_regarding_stigma_related_to_paediatric_diabetes, 
        help_stigma = what_type_of_support_do_you_believe_would_help_reduce_stigma_related_to_paediatric_diabetes_select_all_that_apply, 
        stigma_counsel = have_you_or_your_family_received_any_formal_education_or_counseling_on_how_to_cope_with_stigma_related_to_diabetes,
        strategies_stigma = what_strategies_do_you_or_your_family_use_to_cope_with_stigma_or_negative_treatment_related_to_diabetes_select_all_that_apply, 
        diff_relationship = for_adolescents_and_young_adults_have_you_experienced_difficulties_in_forming_or_maintaining_relationships_because_of_your_diabetes, 
        avoid_activities = have_you_avoided_participating_in_activities_e_g_sports_church_school_events_because_of_your_diabetes, 
        facility_avail = which_of_these_facilities_are_available_for_your_use_at_your_school_work_select_all_that_apply, 
        awareness_work = is_there_sufficient_awareness_and_support_for_diabetes_in_your_school_work, 
        feel_stigma = do_you_feel_that_diabetes_is_stigmatized_in_your_community, 
        exp_discrimination = have_you_experienced_any_negative_attitudes_or_discrimination_because_of_your_diabetes, 
        worries_dm = do_you_have_any_worries_about_people_discovering_that_you_have_diabetes, 
        worries_dm_desc = description_worries_about_diabetes_status_becoming_known, 
        awareness_work_res = give_reasons_for_your_answer_about_diabetes_awareness, 
        inform_dm = who_have_you_informed_that_you_have_diabetes, 
        unpleasant_desc = please_describe_any_unpleasant_experiences, 
        desc_rel_diff = description_about_relationship_difficulties, 
        inj_school = where_place_do_you_inject_at_school_work, 
        stigma_justify = justify_your_answer_concerning_stigma, 
        visit_freq = column1
        ) %>% 
    mutate(age_of_patient = factor(
        age_of_patient, 
        levels = c(
            "0–5 years", "5–10 years", "11–17 years", 
            "18–25 years", "Above 25 years")),
        family_income_level = factor(
            family_income_level, 
            levels = c("Low", "Medium", "High")),
        avail_health_p = case_when(
            str_detect(facility_avail, "(H|h)ealth") ~ "Yes", 
            TRUE ~ "No"), 
        avail_health_clinic = case_when(
            str_detect(facility_avail, "(Sick|Pharm|Clinic)") ~ "Yes", 
            TRUE ~ "No"), 
        avail_health_fridge = case_when(
            str_detect(facility_avail, "(F|f)ridge") ~ "Yes", 
            TRUE ~ "No"), 
        inj_p_private = case_when(
            str_detect(inj_school, "PRIVATE") ~ "Yes", 
            TRUE ~ "No"),
        inj_p_classroom = case_when(
            str_detect(inj_school, "(CLASSROOM|SCIENCE LAB)") ~ "Yes", 
            TRUE ~ "No"),
        inj_p_bathroom = case_when(
            str_detect(inj_school, "BATHROOM") ~ "Yes", 
            TRUE ~ "No"), 
        inj_p_home = case_when(
            str_detect(inj_school, "HOME") ~ "Yes", 
            TRUE ~ "No"), 
        inj_p_office = case_when(
            str_detect(inj_school, "OFFICE") ~ "Yes", 
            TRUE ~ "No"), 
        inj_p_house = case_when(
            str_detect(inj_school, "HOUSE") ~ "Yes", 
            TRUE ~ "No"), 
        inj_p_sickbay = case_when(
            str_detect(inj_school, "(SICK|HOSPITAL)") ~ "Yes", 
            TRUE ~ "No"),
        inj_p_dorm = case_when(
            str_detect(inj_school, "(DORM|HOSTEL|PREFECT)") ~ "Yes", 
            TRUE ~ "No"), 
        inj_p_teacher_house = case_when(
            str_detect(inj_school, "TEACHER'S HOUSE") ~ "Yes", 
            TRUE ~ "No"), 
        inj_p_others = case_when(
            str_detect(
                inj_school, 
                "(INCOMPLETE|SHOP|UNCOMPLETED|WORKPLACE)") ~ "Yes",
            TRUE ~ "No"), 
        str_talk_family = case_when(
            str_detect(strategies_stigma, "All of the above") ~"Yes", 
            str_detect(
                strategies_stigma, "Talking to family members") ~ "Yes", 
            TRUE ~ "no"), 
        str_talk_friends = case_when(
            str_detect(strategies_stigma, "All of the above") ~"Yes", 
            str_detect(
                strategies_stigma, 
                "Talking to friends") ~ "Yes", 
            TRUE ~ "no"), 
        str_talk_healthp = case_when(
            str_detect(strategies_stigma, "All of the above") ~"Yes", 
            str_detect(
                strategies_stigma, 
                "Talking to health professionals") ~ "Yes", 
            TRUE ~ "no"), 
        str_join_supp_grp = case_when(
            str_detect(strategies_stigma, "All of the above") ~"Yes", 
            str_detect(
                strategies_stigma, 
                "Joining a support group") ~ "Yes", 
            TRUE ~ "no"),
        str_avoid_stigma = case_when(
            str_detect(strategies_stigma, "All of the above") ~"Yes", 
            str_detect(
                strategies_stigma, 
                "Avoiding situations where stigma might occur") ~ "Yes", 
            TRUE ~ "no"), 
        need_sch_dm_educ = case_when(
            str_detect(help_stigma, "All of the above") ~"Yes", 
            str_detect(
                help_stigma, 
                "More education about diabetes in schools") ~ "Yes", 
            TRUE ~ "no"), 
        need_sup_caregiver = case_when(
            str_detect(help_stigma, "All of the above") ~"Yes", 
            str_detect(
                help_stigma, 
                "Support groups for caregivers") ~ "Yes", 
            TRUE ~ "no"),
        need_sup_children = case_when(
            str_detect(help_stigma, "All of the above") ~"Yes", 
            str_detect(
                help_stigma, 
                "Support groups for children with diabetes") ~ "Yes", 
            TRUE ~ "No"), 
        need_counselling = case_when(
            str_detect(help_stigma, "All of the above") ~"Yes", 
            str_detect(
                help_stigma, 
                "Counseling services") ~ "Yes", 
            TRUE ~ "No"), 
        need_aware_comm = case_when(
            str_detect(help_stigma, "All of the above") ~"Yes", 
            str_detect(
                help_stigma, 
                "Awareness campaigns in the community") ~ "Yes", 
            TRUE ~ "No"), 
        hba1c_cat = case_when(
            most_recent_hb_a1c < 7.5 ~ "Good Control", 
            most_recent_hb_a1c <= 9 ~ "Suboptimal",
            most_recent_hb_a1c > 9 ~ "Poor control") %>% 
            factor(
                ordered = T, 
                levels = c("Good Control", "Suboptimal", "Poor control")), 
        low_fam_income = case_when(
            family_income_level == "Low" ~ "Yes", TRUE ~ "No"), 
        rec_fam_supp = case_when(
            supp_family == "No" ~ "No", 
            supp_family !="" ~ "Yes"), 
        dura_dm = factor(
            dura_dm, 
            levels = c(
                "Less than 1 year", 
                "1–3 years", 
                "More than 3 years"), 
            labels = c("<1 year ", "1–3 years", ">3 years")), 
        visit_freq = case_when(
            visit_freq %in% c(
                "DIAGNOSED A MONTH AGO", "JUST STARTED",
                "Every 1–3 month") ~ "1–3 months", 
             visit_freq %in% c("Every 4–6 month") ~ "4–6 months", 
             visit_freq %in% c("Less frequently") ~ "Less frequently") %>% 
            factor(levels = c("1–3 months","4–6 months", 
                              "Less frequently")), 
        free_insulin = case_when(
            free_insulin == "Non applicable" ~ NA, 
            TRUE ~ free_insulin) %>% 
            factor(), 
        awareness_work = case_when(
            awareness_work == "UNSURE" ~ "Unsure", 
            awareness_work == "Non applicable" ~ NA, 
            TRUE ~ awareness_work), 
        feel_stigma = case_when(
            feel_stigma == "No" ~ "No", 
            feel_stigma == "Yes" ~ "Yes"), 
        avoid_activities = case_when(
            str_detect(avoid_activities, "Yes") ~ "Yes",
            avoid_activities == "No" ~ "No"))
  
labelled::var_label(df_glycemic_clean) <-
    list(
        age_of_patient = "Age of Patient", 
        gender = "Sex", 
        educational_level = "Educational Level", 
        family_income_level = "Family Income Level", 
        caregiver_educ = "Caregiver's Educational Level", 
        caregiver_occup = "Caregiver's Occupation", 
        type_of_diabetes = "Tyoe of Diabetes", 
        dura_dm = "Duration of diabetes", 
        most_recent_hb_a1c = "Most recent HbA1c (%)", 
        visit_freq = "Clinic visit frequency",
        free_insulin = "Consistent access to free insulin", 
        disrupt_strip = "Disruption of glucometer/test strips", 
        diff_transport = "Difficulty affording transport to clinic", 
        diff_meals = "Difficulty obtaining regular meals", 
        add_burden = "Additional diabetes-related financial burden", 
        adm_public = "Difficulty administering insulin at school/work", 
        avail_health_p = "Health professional available", 
        avail_health_clinic = "Sick bay/clinic/pharmacy available", 
        avail_health_fridge = "Refrigerator for insulin available", 
        inj_p_private = "Private space for injection available", 
        inj_p_classroom = "Place of Injection: Classroom", 
        inj_p_bathroom = "Place of Injection: Bathroom",
        inj_p_home  = "Place of Injection: Home", 
        inj_p_office = "Place of Injection: Office",
        inj_p_house  = "Place of Injection: House",
        inj_p_sickbay = "Place of Injection: Sickbay", 
        inj_p_dorm  = "Place of Injection: Dormitory", 
        inj_p_teacher_house = "Place of Injection: Teacher's House",
        inj_p_others  = "Place of Injection: Others",
        awareness_work = "Adequate awareness/support for diabetes", 
        str_talk_family = "Talking to family members",
        str_talk_friends = "Talking to friends",
        str_talk_healthp = "Talking to health professionals",
        str_join_supp_grp = "Joining a support group",
        str_avoid_stigma = "Avoiding stigma-prone situations",
        stigma_counsel = "Received formal stigma counselling",
        need_sch_dm_educ = "Need for school-based diabetes education",
        need_sup_caregiver = "Need for caregiver support groups",
        need_counselling = "Need for counselling services",
        need_aware_comm = "Need for community awareness campaigns")

    
# df_glycemic_clean %>% 
#     select(-patient_id) %>% 
#     gtsummary::tbl_summary() %>% 
#     gtsummary::bold_labels()

Table 1. Sociodemographic, Clinical Characteristics, and Availability of Diabetes Supplies (N = 161)

Code
df_glycemic_clean %>% # labelled::look_for("availa")
    select(
        age_of_patient, gender, educational_level, family_income_level, 
        caregiver_educ, caregiver_occup, type_of_diabetes, dura_dm, 
        most_recent_hb_a1c, hba1c_cat, visit_freq, free_insulin, 
        disrupt_strip) %>% 
    gtsummary::tbl_summary(
        statistic = list(most_recent_hb_a1c ~ "{mean} ({sd})")
    )%>% 
    gtsummary::bold_labels()
Characteristic N = 1611
Age of Patient
    0–5 years 3 (1.9%)
    5–10 years 15 (9.3%)
    11–17 years 67 (42%)
    18–25 years 58 (36%)
    Above 25 years 18 (11%)
Sex
    Female 107 (66%)
    Male 54 (34%)
Educational Level
    None 2 (1.2%)
    Primary 70 (43%)
    Secondary 60 (37%)
    Tertiary 29 (18%)
Family Income Level
    Low 68 (42%)
    Medium 88 (55%)
    High 5 (3.1%)
Caregiver's Educational Level
    None 23 (14%)
    Primary 50 (31%)
    Secondary 48 (30%)
    Tertiary 39 (24%)
    Unknown 1
Caregiver's Occupation
    CLERICAL/SERVICE WORKERS 10 (6.2%)
    MANAGER/SENIOR OFFICIAL 3 (1.9%)
    ORPHANED 1 (0.6%)
    PROFESSIONALS/TECHNICAL WORKERS 28 (17%)
    SKILLED MANUAL WORKER 13 (8.1%)
    TRADER/SELF-EMPLOYED 99 (61%)
    UNEMPLOYED 6 (3.7%)
    UNSKILLED MANUAL WORKER 1 (0.6%)
Tyoe of Diabetes
    Type 1 131 (81%)
    Type 2 30 (19%)
Duration of diabetes
    <1 year 31 (19%)
    1–3 years 31 (19%)
    >3 years 99 (61%)
Most recent HbA1c (%) 9.97 (2.45)
hba1c_cat
    Good Control 23 (14%)
    Suboptimal 36 (22%)
    Poor control 102 (63%)
Clinic visit frequency
    1–3 months 2 (15%)
    4–6 months 0 (0%)
    Less frequently 11 (85%)
    Unknown 148
Consistent access to free insulin
    No 5 (3.2%)
    Sometimes 5 (3.2%)
    Yes 146 (94%)
    Unknown 5
Disruption of glucometer/test strips
    No 124 (78%)
    Sometimes 7 (4.4%)
    Yes 28 (18%)
    Unknown 2
1 n (%); Mean (SD)

Table 2. Financial Constraints and School/Workplace Support for Diabetes Management

Code
df_glycemic_clean %>% 
    select(
        diff_transport, diff_meals, add_burden, adm_public, 
        avail_health_p, avail_health_clinic, avail_health_fridge, 
        inj_p_private, inj_p_classroom, inj_p_bathroom, inj_p_home, 
        inj_p_office, inj_p_house, inj_p_sickbay, inj_p_dorm, 
        inj_p_teacher_house, inj_p_others, awareness_work) %>%
    gtsummary::tbl_summary() %>% 
    gtsummary::bold_labels()
Characteristic N = 1611
Difficulty affording transport to clinic
    No 112 (70%)
    Sometimes 33 (20%)
    Yes 16 (9.9%)
Difficulty obtaining regular meals
    No 122 (76%)
    Sometimes 32 (20%)
    Yes 6 (3.8%)
    Unknown 1
Additional diabetes-related financial burden
    No 104 (65%)
    Sometimes 40 (25%)
    Yes 17 (11%)
Difficulty administering insulin at school/work
    No 39 (24%)
    Non applicable 4 (2.5%)
    Sometimes 14 (8.7%)
    Yes 104 (65%)
Health professional available 24 (15%)
Sick bay/clinic/pharmacy available 41 (25%)
Refrigerator for insulin available 102 (63%)
Private space for injection available 18 (11%)
Place of Injection: Classroom 19 (12%)
Place of Injection: Bathroom 27 (17%)
Place of Injection: Home 34 (21%)
Place of Injection: Office 12 (7.5%)
Place of Injection: House 9 (5.6%)
Place of Injection: Sickbay 12 (7.5%)
Place of Injection: Dormitory 17 (11%)
Place of Injection: Teacher's House 9 (5.6%)
Place of Injection: Others 6 (3.7%)
Adequate awareness/support for diabetes
    No 80 (52%)
    Partially 53 (34%)
    Unsure 15 (9.7%)
    Yes 7 (4.5%)
    Unknown 6
1 n (%)

Table 3. Stigma, Disclosure, and Social Impact of Diabetes

Code
df_glycemic_clean %>% 
    select(feel_stigma, worries_dm, exp_discrimination, inform_dm, 
           avoid_activities, diff_relationship) %>% 
    gtsummary::tbl_summary() %>% 
    gtsummary::bold_labels()
Characteristic N = 1611
feel_stigma 114 (72%)
    Unknown 3
worries_dm
    No 105 (65%)
    Not applicable 1 (0.6%)
    Yes (please describe) 55 (34%)
exp_discrimination
    My diabetes status is generally unknown 113 (70%)
    No 3 (1.9%)
    Yes 45 (28%)
inform_dm
    Inner circle and acquaintances 3 (1.9%)
    INNER CIRCLE AND DORMITORY MEMBERS 1 (0.6%)
    Inner circle and school/work authorities 41 (25%)
    Only close friends and immediate family members (inner circle) 99 (61%)
    Only family member 7 (4.3%)
    Only family member(s) 9 (5.6%)
    ONLY FAMILY MEMBERS 1 (0.6%)
avoid_activities 69 (43%)
diff_relationship
    CHILD IS VERY INTELLIGENT AND PLACES FIRST IN CLASS BUT IS SOCIALLY WITHDRAWN 1 (0.6%)
    DIDNOT INFORM PARTNER ABOUT HER DIABETES. HAD A CHILD WITH HIM BUT ARE NOW SEPARATED 1 (0.6%)
    I HAVE A BOYFRIEND BUT I HAVE NOT DISCLOSED MY DIABETES STATUS TO HIM 1 (0.6%)
    I HAVE A BOYFRIEND WHO KNOWS I HAVE DIABETES AND HE IS OK WITH THAT 1 (0.6%)
    No 113 (70%)
    Not applicable 21 (13%)
    Yes (specify) 23 (14%)
1 n (%)

Table 5. Bi- and Multivariable Logistic Regression Analysis of Factors Associated with Poor Glycaemic Control

Code
df_glycemic_clean %>%
    select(age_of_patient, low_fam_income, rec_fam_supp) %>% 
    gtsummary::tbl_summary() %>% 
    gtsummary::bold_labels()
Characteristic N = 1611
Age of Patient
    0–5 years 3 (1.9%)
    5–10 years 15 (9.3%)
    11–17 years 67 (42%)
    18–25 years 58 (36%)
    Above 25 years 18 (11%)
low_fam_income 68 (42%)
rec_fam_supp 137 (86%)
    Unknown 2
1 n (%)