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")

Figure 6

ggplot(fig6, 
       aes(x=months_since_onset, y=mean_tir, ymin=mean_tir-2*se_tir, ymax=mean_tir+2*se_tir, color=factor(remotely_monitored))) + geom_line() + theme_bw() + geom_pointrange(position=position_dodge(width=0.2)) +
  scale_color_manual(breaks = c("0", "1"), 
                     labels = c(
                       paste0("No Remote Monitoring"," (N = ",fig6[remotely_monitored==0,max(n)],")"), 
                       paste0("With Remote Monitoring"," (N = ",fig6[remotely_monitored==1,max(n)],")")), values=c("red","blue")) +
  theme(legend.position="bottom") + labs(color = "Cohort") + 
  scale_x_continuous(breaks=seq(0,12), labels = scales::number_format(accuracy = 1), name = "Months Since Diabetes Onset") +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1), name = "Mean Time in Range (95% CI)")