library(data.table)
library(ggplot2)
fig5a = fread('~/Downloads/fig5a.csv')
fig5b = fread('~/Downloads/fig5b.csv')
fig6 = fread('~/Downloads/fig6.csv')
Stats used in figures
# Before ranking
avg_t_bf = fig5a[variable=="total_min_spent_pp" & value>0 & date <= as.Date('2020-05-04') & date >= as.Date('2020-04-20'), mean(value)]
# After ranking
avg_t_af = fig5a[variable=="total_min_spent_pp" & value>0 & date <= as.Date('2020-06-08') & date >= as.Date('2020-05-25'), mean(value)]
# After tableau
t_avg_t_af = fig5a[variable=="total_min_spent_pp" & value>0 & date <= as.Date('2020-11-30') & date >= as.Date('2020-11-16'), mean(value)]
paste("avg_t_bf:", avg_t_bf, "; avg_t_af:", avg_t_af, "; t_avg_t_af:", t_avg_t_af)
## [1] "avg_t_bf: 3.17796610169492 ; avg_t_af: 2.03254630673985 ; t_avg_t_af: 1.28640971594901"
text_red = paste0(round((avg_t_bf-avg_t_af)/avg_t_bf*100),"% reduction\nin time spent\nper patient")
text_red
## [1] "36% reduction\nin time spent\nper patient"
text_tab = paste0(round((avg_t_af-t_avg_t_af)/avg_t_af*100),"% reduction\nin time spent\nper patient")
text_tab
## [1] "37% reduction\nin time spent\nper patient"
# Total capacity (weekly minutes)
total_cap = 209
text_red_cap = paste0(round((1/(avg_t_af/avg_t_bf) - 1)*100),"% increase\n(", round(total_cap/avg_t_af-total_cap/avg_t_bf), " patients)\n", "in clinic capacity")
text_red_cap
## [1] "56% increase\n(37 patients)\nin clinic capacity"
text_tab_cap = paste0(round((1/(t_avg_t_af/avg_t_af) - 1)*100),"% increase\n(", round(total_cap/t_avg_t_af-total_cap/avg_t_af), " patients)\n", "in clinic capacity")
text_tab_cap
## [1] "58% increase\n(60 patients)\nin clinic capacity"
Figure 5a
ggplot(fig5a,
aes(x=date, y=value, color=variable)) + geom_line() + geom_point() +
geom_vline(xintercept = as.Date('2020-05-13'), linetype = "dotted") +
geom_vline(xintercept = as.Date('2020-11-13'), linetype = "dotted") +
scale_x_date(labels = scales::date_format("%m/%d"), date_breaks = "4 weeks", name = "Date (week)", limits = c(as.Date("2020-03-27"), as.Date("2021-01-31"))) +
theme_minimal() + ylim(0,NA) +
geom_segment(data=data.frame(y=avg_t_bf, yend=avg_t_bf, x=as.Date('2020-04-20'), xend=as.Date('2020-05-04')),
mapping=aes(x=x,xend=xend,y=y,yend=yend), inherit.aes = F,
color = "red", linetype="solid") +
geom_segment(data=data.frame(y=avg_t_bf, yend=avg_t_af+0.1, x=as.Date('2020-05-25'),
xend=as.Date('2020-05-25')),
mapping=aes(x=x,xend=xend,y=y,yend=yend), inherit.aes = F,
color = "black", arrow = arrow(length = unit(0.02, "npc"))) +
geom_segment(data=data.frame(y=avg_t_af, yend=avg_t_af, x=as.Date('2020-05-25'), xend=as.Date('2020-06-08')),
mapping=aes(x=x,xend=xend,y=y,yend=yend), inherit.aes = F,
color = "darkgreen", linetype="solid") +
geom_segment(data=data.frame(y=avg_t_af, yend=t_avg_t_af+0.1, x=as.Date('2020-11-16'),
xend=as.Date('2020-11-16')),
mapping=aes(x=x,xend=xend,y=y,yend=yend), inherit.aes = F,
color = "black", arrow = arrow(length = unit(0.02, "npc"))) +
geom_segment(data=data.frame(y=t_avg_t_af, yend=t_avg_t_af, x=as.Date('2020-11-16'), xend=as.Date('2020-11-30')),
mapping=aes(x=x,xend=xend,y=y,yend=yend), inherit.aes = F,
color = "darkblue", linetype="solid") +
annotate("text", x=as.Date('2020-05-27'), y=avg_t_bf, label=text_red, hjust=0, vjust=1, size=4) +
annotate("text", x=as.Date('2020-11-20'), y=2.5, label=text_tab, hjust=0, vjust=1, size=4) +
annotate("text", x=as.Date('2020-03-27'), y=3.3, label="Period 1", hjust=0, vjust=0, size=4) +
annotate("text", x=as.Date('2020-08-20'), y=3.3, label="Period 2", hjust=0.5, vjust=0, size=4) +
annotate("text", x=as.Date('2020-12-01'), y=3.3, label="Period 3", hjust=0, vjust=0, size=4) +
guides(linetype = FALSE) +
scale_color_discrete(name = "Task", breaks = c('min_spent_on_cgm_review_pp','min_spent_on_contacts_pp', 'total_min_spent_pp'),
labels = c("CGM Data Review", "Contacting Patients", "Total")) +
ylab("Mean time spent\nper week per patient in population, minutes") +
theme(legend.position="top")

Figure 5b
ggplot(fig5b,
aes(x=date, y=value, color=variable)) + geom_line() + geom_point() +
geom_vline(xintercept = as.Date('2020-05-13'), linetype = "dotted") +
geom_vline(xintercept = as.Date('2020-11-13'), linetype = "dotted") +
scale_x_date(labels = scales::date_format("%m/%d"), date_breaks = "4 weeks", name = "Date (week)", limits = c(as.Date("2020-03-27"), as.Date("2021-01-31"))) +
theme_minimal() + ylim(0,180) +
geom_segment(data=data.frame(y=total_cap/avg_t_bf, yend=total_cap/avg_t_bf,
x=as.Date('2020-03-27'), xend=as.Date('2020-05-13')),
mapping=aes(x=x,xend=xend,y=y,yend=yend), inherit.aes = F,
color = "red", linetype="dashed") +
geom_segment(data=data.frame(y=total_cap/avg_t_af, yend=total_cap/avg_t_af,
x=as.Date('2020-05-18'), xend=as.Date('2020-11-13')),
mapping=aes(x=x,xend=xend,y=y,yend=yend), inherit.aes = F,
color = "darkgreen", linetype="dashed") +
geom_segment(data=data.frame(y=total_cap/avg_t_bf+1, yend=total_cap/avg_t_af-1,
x=as.Date('2020-05-16'), xend=as.Date('2020-05-16')),
mapping=aes(x=x,xend=xend,y=y,yend=yend), inherit.aes = F,
color = "black", arrow = arrow(length = unit(0.02, "npc"))) +
annotate("text", x=as.Date('2020-05-20'), y=110,
label=text_red_cap,
hjust=0, vjust=0, size=4) +
geom_segment(data=data.frame(y=total_cap/t_avg_t_af, yend=total_cap/t_avg_t_af,
x=as.Date('2020-11-13'), xend=as.Date('2021-01-31')),
mapping=aes(x=x,xend=xend,y=y,yend=yend), inherit.aes = F,
color = "darkblue", linetype="dashed") +
geom_segment(data=data.frame(y=total_cap/avg_t_af+1, yend=total_cap/t_avg_t_af-1,
x=as.Date('2020-11-13'), xend=as.Date('2020-11-13')),
mapping=aes(x=x,xend=xend,y=y,yend=yend), inherit.aes = F,
color = "black", arrow = arrow(length = unit(0.02, "npc"))) +
annotate("text", x=as.Date('2020-11-16'), y=110,
label=text_tab_cap,
hjust=0, vjust=0, size=4) +
# annotate("text", x=as.Date('2020-03-27'), y=180, label="Period 1", hjust=0, vjust=0, size=4) +
# annotate("text", x=as.Date('2020-08-20'), y=180, label="Period 2", hjust=0.5, vjust=0, size=4) +
# annotate("text", x=as.Date('2020-12-01'), y=180, label="Period 3", hjust=0, vjust=0, size=4) +
ylab("Patients, number") + guides(linetype = FALSE) +
scale_color_discrete(name = "", breaks = c('patients_eligible','patients_flagged_by_tool', 'patients_contacted'),
labels = c("Patients eligible", "Patients flagged", "Patients contacted")) +
theme(legend.position="bottom")
