Paper 2: Prevalence, clinical profile and short-term outcome of NTDs in a tertiary hospital in Ghana - A two-year retrospective study

Author

Samuel Blay Nguah

Comments

Issues
  1. For the predictors of the mortality table, which variables should I include in the table as predictors?

We first load the requisite libraries

Code
library(tidyverse)

fxn1 <- function(x){
    x = factor(x, levels = c("0", "1"), labels = c("No", "Yes"))
    x}

Next first read and label the data.

Code
df_ntd <- 
    readxl::read_xlsx("NTDs prev for analysis.xlsx") %>% 
    janitor::clean_names() %>% 
    rename(
        adm_age = admission_age,
        bwt = bw,
        gest_age = ga,
        anomaly = anoma_ac1_ac34ly) %>% 
    mutate(
        sex = toupper(sex) %>% 
            factor(levels = c("F", "M"), labels = c("Female", "Male")),
        type_gest_new = case_when(
            type_gest == "M" ~ "Multiple",
            type_gest == "S" ~ "Singleton",
            type_gest == "Twins" ~ "Multiple") %>% 
            factor(levels = c("Singleton", "Multiple")),
        mode_del_new = case_when(
            mode_del == "AVD" ~ "Vaginal",
            mode_del == "SVD" ~ "Vaginal",
            mode_del == "C/S" ~ "Cesarean Section") %>% 
            factor(levels = c("Vaginal","Cesarean Section")),
        presc_meds = str_extract(presc, "\\d"),
        prev_ano = str_extract(prev_ano, "\\d"),
        mat_dx_new = case_when(mat_dx == "0" ~ "No", TRUE ~ "Yes") %>% 
            factor(),
        across(
            c(consanguinity, feb_ill, rash, unpres, herbal, 
              alcohol, illicit_drugs, anc_dx, presc_meds, prev_ano, 
              smokin), 
            ~fxn1(.)), 
        mat_occ = toupper(mat_occ),
        outcome = toupper(outcome),
        anomaly = case_when(
            anomaly %in% 
                c("encephalocele- frontal", "Encephalocele frontal", 
                  "frontal encephalocele", "frontal Encephalocele")  ~ 
                "Encephlocele (Frontal)", 
            anomaly %in% 
                c("Occipital Encephalocele", "occipital Encephalocele", 
                  "occipital encephalocele", "Encephalocele/occipital",
                  "encephalocele(occipital)", "encephalocele occipital")  ~ 
                "Encephlocele (Occipital)",
            anomaly %in% 
                c("nasal Encephalocele", "Encephalocele- nasal")  ~ 
                "Encephlocele (Nasal)",
            anomaly %in% 
                c("Encephalocele", "Encephalocele- nasal")  ~ 
                "Encephlocele", 
            anomaly %in% 
                c("MM lumbar", "MM/lumbar", "MM+lumbar", 
                  "Myelomeningocele/lumbar")  ~ 
                "Myelomeningocele (Lumbar)",
            anomaly %in% 
                c("MM(sacral)", "MM/sacral", "MM/Ssacral", 
                  "MM+sacral")  ~ 
                "Myelomeningocele (Sacral)",
            anomaly %in% 
                c("MM/thoracic", "MM/thoarcic")  ~ 
                "Myelomeningocele (Thoracic)",
            anomaly %in% 
                c("MM/cervical")  ~ 
                "Myelomeningocele (Cervical)",
            anomaly %in% c("anencephaly")  ~ "Anencephaly",
            anomaly %in% c("meningocele")  ~ "Meningocele",
            anomaly %in% c("MM+Talipes")  ~ "Myelomeningocele (+ Talipes)",
            anomaly %in% c("MM+encephalocele")  ~ 
                "Myelomeningocele + Encephalocele",
            TRUE ~ anomaly),
        encephalocele = case_when(
            str_detect(anomaly, "Encephlocele") ~ "Yes", TRUE ~ "No") %>% 
            factor(),
        anencephaly = case_when(
            str_detect(anomaly, "Anencephaly") ~ "Yes", TRUE ~ "No") %>% 
            factor(), 
        meningocele = case_when(
            str_detect(anomaly, "Meningocele") ~ "Yes", TRUE ~ "No")%>% 
            factor(),
        myelomeningocele = case_when(
            str_detect(
                anomaly, "Myelomeningocele") ~ "Yes", TRUE ~ "No") %>% 
            factor(),
        associated_location = toupper(associated_location),
        associated_anomaly = toupper(associated_anomaly),
        parity_new = str_extract(parity, "\\d+") %>% as.numeric(),
        hydrocephalus = case_when(
            str_detect(
                associated_anomaly, "HC") ~ "Yes", 
            TRUE ~ "No") %>% 
            factor(),
        talipes = case_when(
            str_detect(
                associated_anomaly, "TALIP") ~ "Yes", 
            TRUE ~ "No") %>% 
            factor(),
        rect_prolapse = case_when(
            str_detect(
                associated_anomaly, "RECTAL") ~ "Yes", 
            TRUE ~ "No") %>% 
            factor(),
        edward_synd = case_when(
            str_detect(
                associated_anomaly, "13") ~ "Yes", 
            TRUE ~ "No") %>% 
            factor(), 
        omphalocele = case_when(
            str_detect(
                associated_anomaly, "OMPH") ~ "Yes", 
            TRUE ~ "No") %>% 
            factor(),
        chd = case_when(
            str_detect(
                associated_anomaly, "VSD") ~ "Yes", 
            TRUE ~ "No") %>% 
            factor(),
        aqued_stenosis = case_when(
            str_detect(
                associated_anomaly, "AQUE") ~ "Yes", 
            TRUE ~ "No") %>% 
            factor(),
        died = case_when(
            outcome == "DEAD" ~ "Yes", TRUE ~ "No") %>% 
            factor(),
        mat_occ_new = case_when(
            mat_occ %in% c(
                "UNEMPLOYED", "UNEMPL", "NONE", "STUDENT") ~ "Unemployed",
            mat_occ %in% c(
                "ACCOUNTANT", "NURSE", "OPTICIAN", "PHARMACIST", 
                "PUBLISHER", "TEACHER") ~ "Formal",
            mat_occ %in% c(
                "CATERER", "CLEANER", "DECORATOR", "FARMER", "HAIRDRESSER", 
                "MINER", "MOULDER", "SEAMSTRESS", "TRADER") ~ 
                "Informal") %>% 
            factor(levels = c("Informal", "Formal", "Unemployed")),
        reg_anc_attend = case_when(
            anc_att %in% c("non Attend", "2x") ~ "No",
            anc_att %in% c("reg", "2x") ~ "Yes") %>% 
            factor(),
        complications_new = case_when(
            is.na(complication) ~ "No", TRUE ~ "Yes"),
        farm = case_when(
            str_detect(associated_location, "FARM") ~ "Yes", 
            TRUE ~ "No"),
        mining = case_when(
            str_detect(associated_location, "MINI") ~ "Yes", 
            TRUE ~ "No"))

labelled::var_label(df_ntd) <-
    list(
        adm_age = "Age at Admission (days)",
        bwt = "Birth Weight (kgs)", 
        gest_age = "Gestational Age (weeks)",
        sex = "Sex",
        type_gest = "Type of Gestation",
        type_gest_new = "Type of Gestation",
        mode_del_new = "Mode of Delivery",
        mode_del = "Mode of Delivery",
        consanguinity = "Consanguinity",
        mat_age = "Maternal age (Years)", 
        edu_level = "Educational Status",
        place_del = "Place of Delivery",
        booking = "Booking Age (weeks)",
        feb_ill = "Febile illness",
        rash = "Rash",
        fa_start = "Age Folic Acid Started",
        anc_att = "ANC Attendance",
        length_of_stay = "Length of Stay (Days)",
        outcome = "Outcome",
        unpres = "Unprescribed medications",
        presc_meds = "Prescribed medications",
        presc = "Prescribed medications",
        herbal = "Herbal use",
        alcohol = "Alcohol use",
        anc_dx = "Diagnosed during ANC",
        illicit_drugs = "Illicit drug use",
        prev_ano = "Previous anomaly",
        smokin = "Smoking",
        mat_dx = "Maternal disease",
        mat_dx_new = "Maternal disease",
        mat_occ = "Maternal Occupation",
        encephalocele = "Encephalocele",
        anencephaly = "Anencephaly",
        meningocele = "Meningocele",
        myelomeningocele = "Myelomeningocele",
        anomaly = "Neural tube defect",
        parity ="Parity",
        parity_new ="Parity",
        edward_synd = "Edward Syndrome",
        talipes = "Talipes",
        aqued_stenosis = "Aqueductal stenosis",
        omphalocele = "Omphalocele",
        chd = "Congenital Heart Disease",
        rect_prolapse = "Rectal Prolapse",
        hydrocephalus = "Hydrocephalus",
        died = "Died",
        mat_occ_new = "Maternal occupation",
        time_to_surgery = "Time to surgery (days)",
        reg_anc_attend = "Regular ANC attendant",
        complications_new = "Complication present",
        farm = "Farming",
        mining = "Mining"
        )

Data Summary

Code
gtsummary::theme_gtsummary_compact()
Setting theme "Compact"
Code
df_ntd %>% 
    gtsummary::tbl_summary(
        sort = gtsummary::all_categorical(FALSE) ~ "alphanumeric",) %>% 
    gtsummary::bold_labels()
Characteristic N = 1421
Age at Admission (days) 2 (0, 7)
Birth Weight (kgs) 2.80 (2.40, 3.20)
Gestational Age (weeks) 38.00 (37.00, 39.00)
Sex
    Female 61 (43%)
    Male 81 (57%)
Type of Gestation
    M 5 (3.5%)
    S 133 (94%)
    Twins 4 (2.8%)
Mode of Delivery
    AVD 1 (0.7%)
    C/S 65 (46%)
    SVD 76 (54%)
Place of Delivery
    CHPS 1 (0.7%)
    Clinic 9 (6.3%)
    DH 3 (2.1%)
    GH 34 (24%)
    H/C 8 (5.6%)
    HC 6 (4.2%)
    home 9 (6.3%)
    KATH 27 (19%)
    mat home 3 (2.1%)
    Mission 26 (18%)
    Pivate 1 (0.7%)
    private 1 (0.7%)
    Private 14 (9.9%)
Consanguinity 2 (1.4%)
Maternal age (Years) 29 (24, 33)
Maternal Occupation
    ACCOUNTANT 1 (0.7%)
    CATERER 1 (0.7%)
    CLEANER 1 (0.7%)
    DECORATOR 1 (0.7%)
    FARMER 34 (24%)
    HAIRDRESSER 8 (5.6%)
    MINER 1 (0.7%)
    MOULDER 1 (0.7%)
    NONE 2 (1.4%)
    NURSE 7 (4.9%)
    OPTICIAN 1 (0.7%)
    PHARMACIST 2 (1.4%)
    PUBLISHER 1 (0.7%)
    SEAMSTRESS 12 (8.5%)
    STUDENT 3 (2.1%)
    TEACHER 6 (4.2%)
    TRADER 46 (32%)
    UNEMPL 13 (9.2%)
    UNEMPLOYED 1 (0.7%)
Educational Status
    none 27 (19%)
    primary 63 (44%)
    secondary 30 (21%)
    tertiary 22 (15%)
Booking Age (weeks) 14 (10, 20)
ANC Attendance
    2x 3 (2.1%)
    non Attend 19 (13%)
    reg 120 (85%)
Febile illness 18 (13%)
Rash 5 (3.5%)
Age Folic Acid Started 14 (10, 20)
Unprescribed medications 9 (6.3%)
Prescribed medications
    0 133 (94%)
    1 7 (4.9%)
    1(anticonvulsants) 1 (0.7%)
    1(ARVs) 1 (0.7%)
Herbal use 60 (42%)
Maternal disease
    0 131 (92%)
    1 2 (1.4%)
    DM 1 (0.7%)
    epilepsy 1 (0.7%)
    hepB 2 (1.4%)
    HIV 4 (2.8%)
    Syphillis 1 (0.7%)
Smoking 0 (0%)
Alcohol use 2 (1.4%)
Illicit drug use 1 (0.7%)
Diagnosed during ANC 40 (28%)
Previous anomaly 3 (2.3%)
    Unknown 13
Neural tube defect
    Anencephaly 2 (1.4%)
    Encephlocele 1 (0.7%)
    Encephlocele (Frontal) 5 (3.5%)
    Encephlocele (Nasal) 2 (1.4%)
    Encephlocele (Occipital) 15 (11%)
    Meningocele 1 (0.7%)
    Myelomeningocele (+ Talipes) 1 (0.7%)
    Myelomeningocele (Cervical) 2 (1.4%)
    Myelomeningocele (Lumbar) 56 (39%)
    Myelomeningocele (Sacral) 46 (32%)
    Myelomeningocele (Thoracic) 10 (7.0%)
    Myelomeningocele + Encephalocele 1 (0.7%)
Parity
    1 40 (29%)
    1+2sa 2 (1.4%)
    10 1 (0.7%)
    2 31 (22%)
    3 23 (17%)
    3+1sa 2 (1.4%)
    3+1sd 1 (0.7%)
    4 17 (12%)
    4+3sa 1 (0.7%)
    5 12 (8.7%)
    5+1D 1 (0.7%)
    6 3 (2.2%)
    7 3 (2.2%)
    8 1 (0.7%)
    Unknown 4
associated_location
    FARMER 2 (3.2%)
    FARMING 32 (52%)
    FARMING + MINING 1 (1.6%)
    FARMING AREA 1 (1.6%)
    MINING 24 (39%)
    SEAMSTRESS 1 (1.6%)
    TRADER 1 (1.6%)
    Unknown 80
associated_anomaly
    HC 54 (47%)
    HC,TALIPES 1 (0.9%)
    HC/AQUEDACTAL STENOSIS 1 (0.9%)
    HC/RECTAL PROLAPSE 1 (0.9%)
    HC/TALIPES,RECTAL PROLAPSE 1 (0.9%)
    HC+TALIPES 38 (33%)
    HC+TALIPES+RECTAL PROLPASE 1 (0.9%)
    OMPHALOCELE 1 (0.9%)
    T13/HC+TALIPES 1 (0.9%)
    TALIPES 14 (12%)
    TALIPES+HC 1 (0.9%)
    TRISOMY 13/HC 1 (0.9%)
    VSD/ASD 1 (0.9%)
    Unknown 26
complication
    /meningitis 1 (1.3%)
    meningitis 11 (14%)
    Meningitis 1 (1.3%)
    meningitis/PDA,VSD, 1 (1.3%)
    meningitis/SSI 1 (1.3%)
    Meningitis/SSI 2 (2.6%)
    meningitis/wound dehiscence 1 (1.3%)
    sepsis 7 (9.1%)
    Sepsis 2 (2.6%)
    sepsis/PDA 1 (1.3%)
    SSI 13 (17%)
    SSI/meningitis 5 (6.5%)
    SSI/meningitis/stridor/ 1 (1.3%)
    SSI/meningitis/wound dehiscence 2 (2.6%)
    SSI/sepsis 3 (3.9%)
    SSI/Sepsis 4 (5.2%)
    SSI/wound dehiscence 4 (5.2%)
    stridor 1 (1.3%)
    stridor/wound dehiscence/ventriculitis/SSI 1 (1.3%)
    ventriculitis 3 (3.9%)
    ventriculitis/stridor 1 (1.3%)
    Wdehiscence/CSF leakage 5 (6.5%)
    Wdehiscence/CSF leakage/ventriculitis 1 (1.3%)
    wound dehis/sepsis 1 (1.3%)
    wound dehis/sepsis/SSI 1 (1.3%)
    wound dehis/SSI 1 (1.3%)
    wound dehiscence 1 (1.3%)
    wound dehiscence/meningitis 1 (1.3%)
    Unknown 65
Outcome
    ALIVE 102 (72%)
    DAMA 18 (13%)
    DEAD 22 (15%)
shunting
    22/06/2022 1 (0.7%)
    44779 1 (0.7%)
    44904 1 (0.7%)
    44968 1 (0.7%)
    45181 1 (0.7%)
    45525 1 (0.7%)
    45639 1 (0.7%)
    45840 1 (0.7%)
    not done 95 (67%)
    not required 37 (26%)
    paraparesis 2 (1.4%)
Time to surgery (days) 36 (25, 53)
    Unknown 44
Length of Stay (Days) 55 (39, 76)
Type of Gestation
    Singleton 133 (94%)
    Multiple 9 (6.3%)
Mode of Delivery
    Vaginal 77 (54%)
    Cesarean Section 65 (46%)
Prescribed medications 9 (6.3%)
Maternal disease 11 (7.7%)
Encephalocele 23 (16%)
Anencephaly 2 (1.4%)
Meningocele 1 (0.7%)
Myelomeningocele 116 (82%)
Parity
    1 42 (30%)
    2 31 (22%)
    3 26 (19%)
    4 18 (13%)
    5 13 (9.4%)
    6 3 (2.2%)
    7 3 (2.2%)
    8 1 (0.7%)
    10 1 (0.7%)
    Unknown 4
Hydrocephalus 100 (70%)
Talipes 57 (40%)
Rectal Prolapse 3 (2.1%)
Edward Syndrome 2 (1.4%)
Omphalocele 1 (0.7%)
Congenital Heart Disease 1 (0.7%)
Aqueductal stenosis 1 (0.7%)
Died 22 (15%)
Maternal occupation
    Informal 105 (74%)
    Formal 18 (13%)
    Unemployed 19 (13%)
Regular ANC attendant 120 (85%)
Complication present 77 (54%)
Farming 36 (25%)
Mining 25 (18%)
1 Median (Q1, Q3); n (%)

What is the prevalence of NTDs at Komfo Anokye Teaching Hospital (KATH)?

Code
df_ntd %>% 
    select(
        sex, myelomeningocele, encephalocele, anencephaly, meningocele) %>% 
    gtsummary::tbl_summary(
        by = sex,
        digits = list(gtsummary::all_categorical() ~ c(0,1)),
        statistic = list(gtsummary::all_categorical() ~ "{n} ({p}%,") 
        ) %>% 
    gtsummary::add_overall(last=T) %>% 
    gtsummary::add_ci(
        pattern = "{stat} {ci})",
        statistic = list(
            gtsummary::all_categorical() ~ "{conf.low}% - {conf.high}%")) %>%     gtsummary::modify_caption(
        caption = "**Table 1**: Prevalence to NTDs at KATH")
Table 1: Prevalence to NTDs at KATH
Characteristic Female
N = 61 95% CI)1,2
Male
N = 81 95% CI)1,2
Overall
N = 142 95% CI)1,2
Myelomeningocele 51 (83.6%, 71% - 91%) 65 (80.2%, 70% - 88%) 116 (81.7%, 74% - 87%)
Encephalocele 9 (14.8%, 7.4% - 27%) 14 (17.3%, 10% - 28%) 23 (16.2%, 11% - 24%)
Anencephaly 1 (1.6%, 0.09% - 10%) 1 (1.2%, 0.06% - 7.6%) 2 (1.4%, 0.24% - 5.5%)
Meningocele 0 (0.0%, 0.00% - 7.4%) 1 (1.2%, 0.06% - 7.6%) 1 (0.7%, 0.04% - 4.4%)
1 n (%,
2 CI = Confidence Interval

What are the other anomalies associated with NTDs?

Code
df_ntd %>% 
    select(
        hydrocephalus, talipes, rect_prolapse, edward_synd, 
        aqued_stenosis, omphalocele, chd,  sex) %>% 
    gtsummary::tbl_summary(
        by = sex,
        digits = list(gtsummary::all_categorical() ~ c(0,1)),
        statistic = list(gtsummary::all_categorical() ~ "{n} ({p}%,") 
        ) %>% 
    gtsummary::add_overall(last=T) %>% 
    gtsummary::add_ci(
        pattern = "{stat} {ci})",
        statistic = list(
            gtsummary::all_categorical() ~ "{conf.low}% - {conf.high}%")) %>%     gtsummary::modify_caption(
        caption = "**Table 2**: Distribution of Associated anomalies of NTDs")
Table 2: Distribution of Associated anomalies of NTDs
Characteristic Female
N = 61 95% CI)1,2
Male
N = 81 95% CI)1,2
Overall
N = 142 95% CI)1,2
Hydrocephalus 39 (63.9%, 51% - 76%) 61 (75.3%, 64% - 84%) 100 (70.4%, 62% - 78%)
Talipes 18 (29.5%, 19% - 43%) 39 (48.1%, 37% - 59%) 57 (40.1%, 32% - 49%)
Rectal Prolapse 1 (1.6%, 0.09% - 10%) 2 (2.5%, 0.43% - 9.5%) 3 (2.1%, 0.55% - 6.5%)
Edward Syndrome 0 (0.0%, 0.00% - 7.4%) 2 (2.5%, 0.43% - 9.5%) 2 (1.4%, 0.24% - 5.5%)
Aqueductal stenosis 0 (0.0%, 0.00% - 7.4%) 1 (1.2%, 0.06% - 7.6%) 1 (0.7%, 0.04% - 4.4%)
Omphalocele 0 (0.0%, 0.00% - 7.4%) 1 (1.2%, 0.06% - 7.6%) 1 (0.7%, 0.04% - 4.4%)
Congenital Heart Disease 1 (1.6%, 0.09% - 10%) 0 (0.0%, 0.00% - 5.6%) 1 (0.7%, 0.04% - 4.4%)
1 n (%,
2 CI = Confidence Interval

Identify factors associated with inpatient mortality of babies with neural tube defects at KATH

Code
tbl_crude <- 
    df_ntd %>% 
    select(
        died, anc_dx, reg_anc_attend, edu_level, bwt, 
        complications_new, time_to_surgery, adm_age, gest_age, 
        hydrocephalus, talipes, mining, farm, mode_del_new, 
        herbal, mat_occ_new, fa_start) %>% 
    gtsummary::tbl_uvregression(
        y = died, 
        method = glm,
        method.args = list(family = binomial),
        exponentiate = TRUE,
        pvalue_fun = function(x) gtsummary::style_pvalue(x, digits = 3),
        show_single_row = c(
            anc_dx, reg_anc_attend, complications_new, hydrocephalus, 
            talipes, mining, farm, mode_del_new, herbal),
        hide_n = TRUE) %>% 
    gtsummary::bold_labels() %>% 
    gtsummary::add_global_p() %>% 
    gtsummary::bold_p()

tbl_adj <- 
    df_ntd %>% 
    select(
        died, anc_dx, reg_anc_attend, complications_new) %>% 
    glm(died ~ ., data = ., family = binomial) %>% 
    gtsummary::tbl_regression(
        exponentiate = TRUE,
        pvalue_fun = function(x) gtsummary::style_pvalue(x, digits = 3),
        show_single_row = c(
            anc_dx, reg_anc_attend, complications_new)) %>% 
    gtsummary::bold_labels() %>% 
    gtsummary::bold_p()

table_2 <- 
    gtsummary::tbl_merge(
    list(tbl_crude, tbl_adj),
    tab_spanner = c("**Univariate**", "**Multivariate**")) %>%    
    gtsummary::modify_caption(
        caption = "**Table 3**: Univartiate and multivariate logistic 
        regression predictors of death in NTDs")

table_2
Table 3: Univartiate and multivariate logistic regression predictors of death in NTDs
Characteristic
Univariate
Multivariate
OR1 95% CI1 p-value OR1 95% CI1 p-value
Diagnosed during ANC 0.22 0.03, 0.79 0.018 0.20 0.03, 0.77 0.041
Regular ANC attendant 0.31 0.11, 0.91 0.034 0.32 0.10, 1.04 0.052
Educational Status

0.924


    none



    primary 0.73 0.23, 2.61



    secondary 0.68 0.15, 2.86



    tertiary 0.98 0.21, 4.23



Birth Weight (kgs) 0.63 0.32, 1.18 0.152


Complication present 4.65 1.62, 16.8 0.003 5.59 1.87, 21.0 0.004
Time to surgery (days) 1.07 1.03, 1.11 <0.001


Age at Admission (days) 0.99 0.94, 1.03 0.668


Gestational Age (weeks) 0.97 0.80, 1.19 0.766


Hydrocephalus 0.55 0.22, 1.44 0.216


Talipes 1.29 0.51, 3.24 0.582


Mining 1.99 0.65, 5.56 0.217


Farming 1.46 0.52, 3.84 0.457


Mode of Delivery 1.52 0.61, 3.86 0.370


Herbal use 1.80 0.72, 4.58 0.207


Maternal occupation

0.618


    Informal



    Formal 1.59 0.41, 5.12



    Unemployed 0.65 0.10, 2.60



Age Folic Acid Started 1.00 0.93, 1.06 0.894


1 OR = Odds Ratio, CI = Confidence Interval