--- title: "EPOC Paper One Supplementary analysis" author: "Helen Badge and Ian Harris" date: '`r paste(format(Sys.Date(), "%d %b %Y"))`' output: # pdf_document: # toc: yes html_document: toc: yes --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE) knitr::opts_chunk$set(tidy.opts=list(width.cutoff=80),tidy=TRUE) ``` #### Load packages ```{r load packages} library(ggplot2) library(dplyr) library(tidyverse) library(caTools) library(StepReg) library(finalfit) library(tableone) library(caret) library(MASS) library(DataExplorer) library(dplyr) library(statsr) library(tidyr) library(skimr) library(caTools) library(gmodels) library(ROCR) library(Amelia) library(chron) ``` #### Load data ```{r load data} data <- read.csv("epoc_with_fu_data_R_LATEST.csv", na.strings = c("", "999", "NA", "N/A", "NR")) mydata_supp <- as.data.frame(data) # Recode id_number= 886 due to error in data # TG_Ab_1_compliant_missing_data: recode to FALSE # TG_Ab_1_compliant: recode to TRUE because ab_ceph = 1 AND ab_vanc = 1 AND others not missing mydata_supp <- mydata_supp %>% mutate(TG_Ab_1_compliant_missing_data = ifelse(id_number == 886, FALSE, TG_Ab_1_compliant_missing_data), TG_Ab_1_compliant = ifelse(id_number == 886, TRUE, TG_Ab_1_compliant)) # remove ineligible and those with no follow up mydata_supp <- mydata_supp %>% filter((optout_fu > 0) & (eligibility == 1)) ``` ## Describe additional demographic, acute care and prophylaxis variables ```{r Paper 1: Supplementary descriptive code} ## Supplemetary results ## Calculate median and IQR for continuous variables (Manuscript Table One) mydata_supp %>% summarise(mean_age = mean(mydata_supp$age), median_age = median(mydata_supp$age),iqr_age = IQR(mydata_supp$age), sd_age = sd(mydata_supp$age), count = n()) mydata_supp %>% summarise(mean_bmi = mean(mydata_supp$bmi), median_bmi = median(mydata_supp$bmi),iqr_bmi = IQR(mydata_supp$bmi), sd_bmi = sd(mydata_supp$bmi), count = n()) mydata_supp %>% summarise(mean_los = mean(mydata_supp$los), median_los = median(mydata_supp$los),iqr_los = IQR(mydata_supp$los), sd_los = sd(mydata_supp$los), count = n()) mydata_supp$surg_duration <- as.numeric(mydata_supp$surg_duration) mydata_supp %>% summarise(mean_surg_duration = mean(mydata_supp$surg_duration), median_surg_duration = median(mydata_supp$surg_duration),iqr_surg_duration = IQR(mydata_supp$surg_duration), sd_surg_duration = sd(mydata_supp$surg_duration), count = n()) #Calculate descriptives for other variables re indications for vancomycin (Manuscript Table One & line 269) table(mydata_supp$ab_contra, dnn = "Contraindication for an Antibiotic", exclude = NULL) table(mydata_supp$ab_allergy_type, dnn = "Type of antibiotic allergy", exclude = NULL) table(mydata_supp$ab_resist, dnn = "History Antibiotic Resistant infections", exclude = NULL) table(mydata_supp$ab_resist_spec, dnn = "Type Antibiotic Resistant infections", exclude = NULL) table(mydata_supp$ab_hosp_adm, dnn = "Previous hospital admission", exclude = NULL) ## Supplementary data, Surgeon and discharge destination table(mydata_supp$dc_dest, dnn = "Discharge destination", exclude = NULL) table(mydata_supp$surgeon, dnn = "Surgeon", exclude = NULL) # Supplementary data - Describe Antibiotic prophylaxis table(mydata_supp$ab_ceph, dnn = "Cephazolin used", exclude = NULL) table(mydata_supp$ab_fluclox, dnn = "Flucloxacillin", exclude = NULL) table(mydata_supp$ab_vanc, dnn = "vancomycin", exclude = NULL) table(mydata_supp$ab_genta, dnn = "gentamicin", exclude = NULL) table(mydata_supp$ab_clinda, dnn = "Clindamycin", exclude = NULL) table(mydata_supp$ab_astre, dnn = "Astronam", exclude = NULL) table(mydata_supp$ab_fluro, dnn = "Fluoroquinolone", exclude = NULL) table(mydata_supp$ab_alt1, dnn = "Alternate antibiotic - One", exclude = NULL) table(mydata_supp$ab_alt2, dnn = "Alternate antibiotic - Two", exclude = NULL) table(mydata_supp$ab_alt1_name, dnn = "Names alternate antibiotic - One", exclude = NULL) table(mydata_supp$ab_alt2_name, dnn = "Names alternate antibiotic - Two", exclude = NULL) # Number prophylactic medications taken by each person #VTE - transform yesno variables to numeric mydata_supp <- mydata_supp %>% mutate(vte_clex_count = vte_clex) mydata_supp$vte_clex_count <- as.numeric(mydata_supp$vte_clex_count) mydata_supp <- mydata_supp %>% mutate(vte_frag_count = vte_frag) mydata_supp$vte_frag_count <- as.numeric(mydata_supp$vte_frag_count) mydata_supp <- mydata_supp %>% mutate(vte_fondap_count = vte_fondap) mydata_supp$vte_fondap_count <- as.numeric(mydata_supp$vte_fondap_count) mydata_supp <- mydata_supp %>% mutate(vte_riva_count = vte_riva) mydata_supp$vte_riva_count <- as.numeric(mydata_supp$vte_riva_count) mydata_supp <- mydata_supp %>% mutate(vte_dabig_count = vte_dabig) mydata_supp$vte_dabig_count <- as.numeric(mydata_supp$vte_dabig_count) mydata_supp <- mydata_supp %>% mutate(vte_hep_count = vte_hep) mydata_supp$vte_hep_count <- as.numeric(mydata_supp$vte_hep_count) mydata_supp <- mydata_supp %>% mutate(vte_unfhep_count = vte_unfhep) mydata_supp$vte_unfhep_count <- as.numeric(mydata_supp$vte_unfhep_count) mydata_supp <- mydata_supp %>% mutate(vte_aspir_count = vte_aspir) mydata_supp$vte_aspir_count <- as.numeric(mydata_supp$vte_aspir_count) table(mydata_supp$vte_aspir_count) mydata_supp <- mydata_supp %>% mutate(vte_warf_count = vte_warf) mydata_supp$vte_warf_count <- as.numeric(mydata_supp$vte_warf_count) mydata_supp <- mydata_supp %>% mutate(vte_alt1_count = vte_alt1) mydata_supp$vte_alt1_count <- as.numeric(mydata_supp$vte_alt1_count) #Count number VTE prophylaxis medications taken mydata_supp <-mydata_supp %>% mutate(vte_prophylmeds_count = vte_clex_count + vte_frag_count + vte_fondap_count + vte_riva_count + vte_dabig_count + vte_hep_count + vte_unfhep_count + vte_aspir_count + vte_warf_count + vte_alt1_count) table(mydata_supp$vte_prophylmeds_count, dnn = "Number prophylactic VTE medications taken by each person") #AB - transform yesno variables to numeric mydata_supp <- mydata_supp %>% mutate(ab_ceph_count = ab_ceph) mydata_supp$ab_ceph_count <- as.numeric(mydata_supp$ab_ceph_count) mydata_supp <- mydata_supp %>% mutate(ab_fluclox_count = ab_fluclox) mydata_supp$ab_fluclox_count <- as.numeric(mydata_supp$ab_fluclox_count) mydata_supp <- mydata_supp %>% mutate(ab_vanc_count = ab_vanc) mydata_supp$ab_vanc_count <- as.numeric(mydata_supp$ab_vanc_count) mydata_supp <- mydata_supp %>% mutate(ab_genta_count = ab_genta) mydata_supp$ab_genta_count <- as.numeric(mydata_supp$ab_genta_count) mydata_supp <- mydata_supp %>% mutate(ab_clinda_count = ab_clinda) mydata_supp$ab_clinda_count <- as.numeric(mydata_supp$ab_clinda_count) mydata_supp <- mydata_supp %>% mutate(ab_astre_count = ab_astre) mydata_supp$ab_astre_count <- as.numeric(mydata_supp$ab_astre_count) mydata_supp <- mydata_supp %>% mutate(ab_fluro_count = ab_fluro) mydata_supp$ab_fluro_count <- as.numeric(mydata_supp$ab_fluro_count) mydata_supp <- mydata_supp %>% mutate(ab_alt1_count = ab_alt1) mydata_supp$ab_alt1_count <- as.numeric(mydata_supp$ab_alt1_count) mydata_supp <- mydata_supp %>% mutate(ab_alt2_count = ab_alt2) mydata_supp$ab_alt2_count <- as.numeric(mydata_supp$ab_alt2_count) #Count number prophylaxis antibiotics taken mydata_supp <-mydata_supp %>% mutate(ab_prophylmeds_count = ab_ceph_count + ab_fluclox_count + ab_vanc_count + ab_genta_count + ab_clinda_count + ab_astre_count + ab_fluro_count + ab_alt1_count + ab_alt2_count) table(mydata_supp$ab_prophylmeds_count, dnn = "Number prophylactic antibiotics taken by each person") # Supplementary data - Describe preop cardiac meds table(mydata_supp$cc_hd_meds, dnn = "Medication for heart disease", exclude = NULL) table(mydata_supp$cardiac_aspirin, dnn = "Preoperative medication commonly also used for VTE prophylaxis- Aspirin", exclude = NULL) table(mydata_supp$cardiac_warfarin , dnn = "Preoperative medication commonly also used for VTE prophylaxis- Warfarin", exclude = NULL) table(mydata_supp$cardiac_heparin, dnn = "Preoperative medication commonly also used for VTE prophylaxis- Heparin", exclude = NULL) table(mydata_supp$cardiac_drug_other, dnn = "Preoperative medication commonly also used for VTE prophylaxis- Other type", exclude = NULL) table(mydata_supp$cardiac_drug_other_type, dnn = "Name of other preoperative medication commonly also used for VTE prophylaxis", exclude = NULL) ## Supplementary data - Describe VTE prophylaxis table(mydata_supp$vte_clex, dnn = "Clexane used", exclude = NULL) table(mydata_supp$vte_frag, dnn = "Fragmin used", exclude = NULL) table(mydata_supp$vte_fondap, dnn = "Fondaparinux used", exclude = NULL) table(mydata_supp$vte_riva, dnn = "Rivaroxaban used", exclude = NULL) table(mydata_supp$vte_dabig, dnn = "Dabigatran etexilate used", exclude = NULL) table(mydata_supp$vte_hep, dnn = "Heparin used", exclude = NULL) table(mydata_supp$vte_unfhep, dnn = "Unfractionated heparin used", exclude = NULL) table(mydata_supp$vte_aspir, dnn = "Apirin used", exclude = NULL) table(mydata_supp$vte_warf, dnn = "Warfarin used", exclude = NULL) table(mydata_supp$vte_alt1, dnn = "Other chemoprophyalxis used - one", exclude = NULL) table(mydata_supp$vte_alt1_name, dnn = "Name 0ther chemoprophyalxis used - one", exclude = NULL) #Supplementary data: Mechanical VTE prophylaxis table(mydata_supp$vte_icp_foot, dnn = "Mechnical VTE prophylaxis: Foot pumps used", exclude = NULL) table(mydata_supp$vte_icp_calf, dnn = "Mechnical VTE prophylaxis: Intermittent calf compressors(ICP) used", exclude = NULL) table(mydata_supp$vte_gcs, dnn = "Mechnical VTE prophylaxis: Graduated compression stockins (GCS) used", exclude = NULL) table(mydata_supp$vte_mech_yesno, dnn = "HOw many people used any mechnical VTE prophylaxis", exclude = NULL) #Day first mobilised table(mydata_supp$vte_1stmobil_day0, dnn = "First mobilised day 0", exclude = NULL) ``` # Supplementary Data - Describe details of complication outcomes ```{r Paper 1: Supplementary complications} ##Supplementary Data - Describe details of complication outcomes #Cause of death #need to add cc_death_yesno = 1 AND surgery related - 10 people coded with a cause of death not related to surgery who didn't die - added 1014 cause of death = surgery related (PE) into REDcap table(mydata_supp$cc_death_surgeryrelated, dnn = "Cause of death related to surgery", exclude = NULL) #Supplementary data re VTE complications #0, PE and DVT | 1, PE only | 2, Symptomatic DVT | 3, Assymptomatic DVT | 4, DVT, unknown if symptomatic | 5, NONE, No VTE | 999, Not stated/Unknown table(mydata_supp$cc_vte_first_type, dnn = "Type 1st VTE", exclude = NULL) table(mydata_supp$cc_vte_second_type, dnn = "Type 2nd VTE", exclude = NULL) table(mydata_supp$cc_vte_third_type, dnn = "Type 3rd VTE", exclude = NULL) table(mydata_supp$cc_vte_fourth_type, dnn = "Type 4th VTE", exclude = NULL) table(mydata_supp$cc_vte_followup, dnn = "Time period for First VTE", exclude = NULL) table(mydata_supp$cc_vte_second_followup, dnn = "Time period for Second VTE", exclude = NULL) table(mydata_supp$cc_vte_third_followup, dnn = "Time period for Third VTE", exclude = NULL) table(mydata_supp$cc_vte_fourth_followup, dnn = "Time period for Fourth VTE", exclude = NULL) # Scores: 0, During Acute admission | 1, Between acute discharge and 35 days | 2, Between 36-90 days | 3, Between 91-365 days | 999, Not stated/Unknown #Bleeding outcomes - Joint and non-joint table(mydata_supp$cc_type_jtbleed, dnn = "Joint related bleeding complications", exclude = NULL) table(mydata_supp$cc_type_jtbleed_type, dnn = "Severity of joint related bleeding complications", exclude = NULL) table(mydata_supp$cc_type_otherbleed, dnn = "Non-joint related bleeding complications", exclude = NULL) table(mydata_supp$cc_type_otherbleed_type, dnn = "Severity of non-joint related bleeding complications", exclude = NULL) #Timeframe for bleeding is a checkbox variable - creates separate variable for each possible code: 0, During Acute admission | 1, Between acute discharge and 35 days | 2, Between 36-90 days | 3, Between 91-365 days | 999, Not stated/Unknown table(mydata_supp$cc_type_jtbleed_time___0, dnn = " Experienced joint related bleeding complications during acute admission", exclude = NULL) table(mydata_supp$cc_type_jtbleed_time___1, dnn = "Experienced joint related bleeding complications betweeen acute discharge and 35 days", exclude = NULL) table(mydata_supp$cc_type_jtbleed_time___2, dnn = "Experienced joint related bleeding complications betweeen 36 - 90 days", exclude = NULL) table(mydata_supp$cc_type_jtbleed_time___3, dnn = "Experienced joint related bleeding complications betweeen 91 - 365 days", exclude = NULL) #Timeframes non-joint bleeding table(mydata_supp$cc_type_otherbleed_time___0, dnn = "Non-joint related bleeding complications duing acute admission", exclude = NULL) table(mydata_supp$cc_type_otherbleed_time___1, dnn = "Non-joint related bleeding complications betwen acute discharge and 35 days", exclude = NULL) table(mydata_supp$cc_type_otherbleed_time___2, dnn = "Non-joint related bleeding complications betwen 36-90 days", exclude = NULL) table(mydata_supp$cc_type_otherbleed_time___3, dnn = "Non-joint related bleeding complications betwen 91-365 days", exclude = NULL) # Severity: 0, Type 1 (no healthcare action)| 1, Type 2 (overt bleed, healthcare provided) | 2, Type 3 (major intervention, readmission/reoperation) | 3, Type 5 (Fatal bleeding) | 999, Not stated/Unknown # Describe breakdown of joint infection table(mydata_supp$cc_type_jtinfect_type, dnn = "Type Joint infection", exclude = NULL) # Number of readmissions table(mydata_supp$cc_readmiss_yesno, dnn = "Had 1st Hospital readmission", exclude = NULL) table(mydata_supp$cc_readmiss_2nd_yesno, dnn = "Had 2nd hospital readmission", exclude = NULL) table(mydata_supp$cc_readmiss_3rd_yesno, dnn = "Had 3rd hospital readmission", exclude = NULL) table(mydata_supp$cc_readmiss_4th_yesno, dnn = "Had 4th hospital readmission", exclude = NULL) #Describe reasons for readmission. ## Note scores: 0, Readmitted, Joint specific reason (including VTE) | 1, Readmitted re surgery related but NOT joint specific | 999, Not stated/Unknown. Reasons for non-joint readmission and reoperation summarised from raw data, multiple fields provide information but mainly free text, 24 readmissions, 16 reoperations table(mydata_supp$cc_readmiss_first_reas, dnn = "Reason for 1st hospital readmission", exclude = NULL) table(mydata_supp$cc_readmiss_2nd_reas, dnn = "Reason for 2nd hospital readmission", exclude = NULL) table(mydata_supp$cc_readmiss_3rd_reas, dnn = "Reason for 3rd hospital readmission", exclude = NULL) table(mydata_supp$cc_readmiss_4th_reas, dnn = "Reason for 4th hospital readmission", exclude = NULL) #Reasons for joint related readmission at each followup #"cc_readmiss_first_reas_jt"" breaks joint specific reasons into: 1, PE | 2, DVT | 3, Deep joint infection (reoperation) | 4, Joint/wound Infection (readmitted and IV antibiotics) | 5, Wound/operated leg Bleeding | 6, Joint/wound bleeding | 7, Joint Dislocation | 8, Wound dehiscence | 9, severe joint stiffness |10, Other joint related reason | 999, Not stated/ Unknown table(mydata_supp$cc_readmiss_first_reas_jt, dnn = "Joint related reasons for first hospital readmission", exclude = NULL) table(mydata_supp$cc_readmis_second_reas_jt, dnn = "Joint related reasons for second hospital readmission", exclude = NULL) table(mydata_supp$cc_readmiss_third_reas_jt, dnn = "Joint related reasons for third hospital readmission", exclude = NULL) table(mydata_supp$cc_readmiss_fourth_reas_jt, dnn = "Joint related reasons for fourth hospital readmission", exclude = NULL) #Time period for readmissions - would need to do crosstabs to look at by joint/nonjoint table(mydata_supp$cc_readmiss_1st_followup, dnn = "Time period when experienced 1st hospital readmission", exclude = NULL) table(mydata_supp$cc_readmiss_2nd_followup, dnn = "Time period when experienced 2nd hospital readmission", exclude = NULL) table(mydata_supp$cc_readmiss_3rd_followup, dnn = "Time period when experienced 3rd hospital readmission", exclude = NULL) # Number of reoperations table(mydata_supp$cc_reop_yesno, dnn = "Had 1st Hospital reoperation", exclude = NULL) table(mydata_supp$cc_reop_2nd_yesno, dnn = "Had 2nd hospital reoperation", exclude = NULL) table(mydata_supp$cc_reop_3rd_yesno, dnn = "Had 3rd hospital reoperation", exclude = NULL) table(mydata_supp$cc_reop_4th_yesno, dnn = "Had 4th hospital reoperation", exclude = NULL) # Describe reasons for reoperation. #Note scores = 0, Reoperation, Joint specific reason (including VTE) | 1, Operation related to surgery related but NOT joint specific | 2, Reason for operation unclear | 999, Not stated/Unknown table(mydata_supp$cc_reop_yesno, dnn = "Reoperation", exclude = NULL) table(mydata_supp$cc_reop_first_reas, dnn = "Reason for 1st reoperation", exclude = NULL) table(mydata_supp$cc_reop_2nd_reas, dnn = "Reason for 2nd reoperation", exclude = NULL) table(mydata_supp$cc_reop_3rd_reas, dnn = "Reason for 3rd reoperation", exclude = NULL) table(mydata_supp$cc_reop_4th_reas, dnn = "Reason for 4th reoperation", exclude = NULL) #Reasons for joint related reoperation at each followup # "cc_reop_first_reas_jt" can break down into joint specific reasons: 1, Joint revision | 2, Joint Wash out | 3, Joint MUA | 4, Open reduction of dislocated joint | 5, Closed reduction of dislocated joint | 6, Joint, repair wound dehiscence | 7, Joint, exploratory , e.g. severe pain | 8, Joint, manage bleeding | 9, Other joint related reoperation | 10, Joint specific soft tissue repair | 11, Surgery re vascualr injury | 12, Surgery re compartment syndrome | 13, Amputation | 14, Internal fixation of fracture | 15, CLosed reduction of dislocated joint | 999, Not specified / Unknown table(mydata_supp$cc_reop_first_reas_jt, dnn = "Joint related reasons for first reoperation", exclude = NULL) table(mydata_supp$cc_reop_2nd_reas_jt, dnn = "Joint related reasons for second reoperation", exclude = NULL) table(mydata_supp$cc_reop_3rd_reas_jt, dnn = "Joint related reasons for third reoperation", exclude = NULL) table(mydata_supp$cc_reop_4th_reas_jt, dnn = "Joint related reasons for fourth reoperation", exclude = NULL) #Time period for reoperations table(mydata_supp$cc_reop_yesno, dnn = "Reopyesno", exclude = NULL) table(mydata_supp$cc_reop_1st_followup, dnn = "Time period when experienced 1st reoperation", exclude = NULL) table(mydata_supp$cc_reop_2nd_followup, dnn = "Time period when experienced 2nd reoperation", exclude = NULL) table(mydata_supp$cc_reop_3rd_followup , dnn = "Time period when experienced 3rd reoperation", exclude = NULL) ```