generated from opensafely/research-template
/
Table_postop_readmit_sub.R
56 lines (42 loc) · 3.69 KB
/
Table_postop_readmit_sub.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
library(foreach)
library(data.table)
ncores <- parallel::detectCores(logical = T)
data.table::setDTthreads(ncores)
source(here::here("analysis","Utils.R"))
###########################################################
dt.tv <- data.table::setDT(feather::read_feather(here::here("output","cohort_long.feather")))
procedures <- c('Colectomy','Cholecystectomy',
'HipReplacement','KneeReplacement')
data.table::setkey(dt.tv,patient_id,tstart)
n.type.events <- sort(unique(dt.tv[(postop.readmit.cohort) ,event.readmit]))[-1]
post.op.readmit.model.sub <-
lapply(n.type.events, function(i) survival::coxph(survival::Surv(start.readmit,end.readmit,event.readmit==i) ~ Colectomy + Cholecystectomy + HipReplacement +
KneeReplacement + postcovid*wave + age.cat + sex + bmi.cat + imd5 + vaccination.status.factor + region + Current.Cancer + Emergency + Charl12 + recentCOVID + previousCOVID, id = patient_id,
data = dt.tv[(postop.readmit.cohort)], model = T))
data.table::fwrite(broom::tidy(post.op.readmit.model.sub[[1]], exponentiate= T, conf.int = T), file = here::here("output","postopreadmitmodelsub.csv"))
new.data.postop.covid <- data.table::data.table('start.readmit' = rep(0,8*length(procedures)),
'end.readmit' = rep(30,8*length(procedures)),
'event.readmit' = rep(F,8*length(procedures)),
'Colectomy' = c(rep(T,8),rep(F,24)),
'Cholecystectomy'=c(rep(F,8),rep(T,8),rep(F,16)),
'HipReplacement'=c(rep(F,16),rep(T,8),rep(F,8)),
'KneeReplacement'=c(rep(F,24),rep(T,8)),
'postcovid' = rep(c(rep(F,4),rep(T,4)), times = length(procedures)),
'age.cat' = rep('(50,70]',8*length(procedures)),
'sex' = rep('F',8*length(procedures)),
'bmi.cat' = rep(levels(dt.tv$bmi.cat)[2],8*length(procedures)),
'imd5' = rep(levels(dt.tv$imd5)[3], 8*length(procedures)),
'wave' = rep(paste0('Wave_',1:4),times = 2*length(procedures)),
'vaccination.status.factor' = rep('3',8*length(procedures)),
'region' = rep("East Midlands",8*length(procedures)),
'Current.Cancer' = rep(T,8*length(procedures)),
'Emergency' = rep(F,8*length(procedures)),
'Charl12' = rep('Single',8*length(procedures)),
'recentCOVID' = rep(F,8*length(procedures)),
'previousCOVID' = rep(F,8*length(procedures)),
'patient_id' = 1:(8*length(procedures)))
cuminc.adjusted.readmit.sub <-
matrix(cuminc.cox(n.type.events = n.type.events,dt = 'dt.tv[(postop.readmit.cohort)]', model = 'post.op.readmit.model.sub', newdata = 'new.data.postop.covid', day = 90), byrow = T, ncol = 4)
colnames(cuminc.adjusted.readmit.sub) <- paste0('Wave_',1:4)
rownames(cuminc.adjusted.readmit.sub) <- paste0(c('No COVID','COVID'),rep(procedures, each = 2))
save(post.op.readmit.model.sub,cuminc.adjusted.readmit.sub, file = here::here("output","postopreadmit_sub.RData"))