library(dplyr)    # to manipulate data
library(ggplot2)  # for nice looking plots
library(Hmisc)
library(psych)
library(stats)
library(summarytools)
library(table1)
library(tidyverse)
library(plyr)
library(readr)

# Load functions

source("R/input_parameter_functions.R") # load input parameter files
source("R/model_setup_functions.R") # load model functions
source("R/ICER_functions.R") # load functions to calculate outputs
source("R/plot_functions.R") # functions to create plots

# Load parameter sets for BNX and Methadone scenarios

source("R/input_parameter_functions.R")

# Calibrated parameter values
if(is.null(v_calib_post_map)){
  load(file = "outputs/Calibration/imis_output.RData")
} else{}

# Modified Model Specification
# BNX scenario
if(is.null(l_params_BUP_MMS)){
  l_params_BUP_MMS <- load_all_params(file.init = "data/init_params.csv",
                                  file.init_dist = "data/init_dist_bup.csv",
                                  file.mort = "data/all_cause_mortality.csv",
                                  file.death_hr = "data/death_hr.csv",
                                  file.frailty = "data/frailty.csv",
                                  file.weibull = "data/Modified Model Specification/weibull.csv",
                                  file.unconditional = "data/Modified Model Specification/unconditional.csv",
                                  file.overdose = "data/overdose.csv",
                                  file.fentanyl = "data/fentanyl.csv",
                                  file.hiv = "data/hiv_sero.csv",
                                  file.hcv = "data/hcv_sero.csv",
                                  file.costs = "data/Modified Model Specification/costs.csv",
                                  file.crime_costs = "data/Modified Model Specification/crime_costs.csv",
                                  file.qalys = "data/Modified Model Specification/qalys.csv")
} else{}

# Methadone scenario
if(is.null(l_params_MET_MMS)){
  l_params_MET_MMS <- load_all_params(file.init = "data/init_params.csv",
                                  file.init_dist = "data/init_dist_met.csv",
                                  file.mort = "data/all_cause_mortality.csv",
                                  file.death_hr = "data/death_hr.csv",
                                  file.frailty = "data/frailty.csv",
                                  file.weibull = "data/Modified Model Specification/weibull.csv",
                                  file.unconditional = "data/Modified Model Specification/unconditional.csv",
                                  file.overdose = "data/overdose.csv",
                                  file.fentanyl = "data/fentanyl.csv",
                                  file.hiv = "data/hiv_sero.csv",
                                  file.hcv = "data/hcv_sero.csv",
                                  file.costs = "data/Modified Model Specification/costs.csv",
                                  file.crime_costs = "data/Modified Model Specification/crime_costs.csv",
                                  file.qalys = "data/Modified Model Specification/qalys.csv")
} else{}

# Trial Specification
# BNX scenario
if(is.null(l_params_BUP_TS)){
  l_params_BUP_TS <- load_all_params(file.init = "data/init_params.csv",
                                  file.init_dist = "data/init_dist_bup.csv",
                                  file.mort = "data/all_cause_mortality.csv",
                                  file.death_hr = "data/death_hr.csv",
                                  file.frailty = "data/frailty.csv",
                                  file.weibull = "data/Trial Specification/weibull.csv",
                                  file.unconditional = "data/Trial Specification/unconditional.csv",
                                  file.overdose = "data/overdose.csv",
                                  file.fentanyl = "data/fentanyl.csv",
                                  file.hiv = "data/hiv_sero.csv",
                                  file.hcv = "data/hcv_sero.csv",
                                  file.costs = "data/Trial Specification/costs.csv",
                                  file.crime_costs = "data/Trial Specification/crime_costs.csv",
                                  file.qalys = "data/Trial Specification/qalys.csv")
} else{}

# Methadone scenario
if(is.null(l_params_MET_TS)){
  l_params_MET_TS <- load_all_params(file.init = "data/init_params.csv",
                                  file.init_dist = "data/init_dist_met.csv",
                                  file.mort = "data/all_cause_mortality.csv",
                                  file.death_hr = "data/death_hr.csv",
                                  file.frailty = "data/frailty.csv",
                                  file.weibull = "data/Trial Specification/weibull.csv",
                                  file.unconditional = "data/Trial Specification/unconditional.csv",
                                  file.overdose = "data/overdose.csv",
                                  file.fentanyl = "data/fentanyl.csv",
                                  file.hiv = "data/hiv_sero.csv",
                                  file.hcv = "data/hcv_sero.csv",
                                  file.costs = "data/Trial Specification/costs.csv",
                                  file.crime_costs = "data/Trial Specification/crime_costs.csv",
                                  file.qalys = "data/Trial Specification/qalys.csv")
} else{}

# Run deterministic scenarios for BNX and methadone

source("R/model_setup_functions.R")
source("R/ICER_functions.R")

# Update parameter list with calibrated params
# Modified Model Specification
#l_params_BUP_MMS <- update_param_list(l_params_all = l_params_BUP_MMS, params_updated = v_calib_post_map)
#l_params_MET_MMS <- update_param_list(l_params_all = l_params_MET_MMS, params_updated = v_calib_post_map)

# Trial Specification
#l_params_BUP_TS <- update_param_list(l_params_all = l_params_BUP_TS, params_updated = v_calib_post_map)
#l_params_MET_TS <- update_param_list(l_params_all = l_params_MET_TS, params_updated = v_calib_post_map)

# Produce model outputs
# Modified Model Specification
if(is.null(l_outcomes_BUP_MMS)){
  l_outcomes_BUP_MMS  <- outcomes(l_params_all = l_params_BUP_MMS, v_params_calib = v_calib_post_map)
} else{}

if(is.null(l_outcomes_MET_MMS)){
  l_outcomes_MET_MMS  <- outcomes(l_params_all = l_params_MET_MMS, v_params_calib = v_calib_post_map)
} else{}

df_outcomes_MMS <- rbind(l_outcomes_BUP_MMS$df_outcomes, l_outcomes_MET_MMS$df_outcomes)
rownames(df_outcomes_MMS) <- c("Early take-home BNX", "Methadone")

# Trial Specification
if(is.null(l_outcomes_BUP_TS)){
  l_outcomes_BUP_TS  <- outcomes(l_params_all = l_params_BUP_TS, v_params_calib = v_calib_post_map)
} else{}

if(is.null(l_outcomes_MET_TS)){
  l_outcomes_MET_TS  <- outcomes(l_params_all = l_params_MET_TS, v_params_calib = v_calib_post_map)
} else{}

df_outcomes_TS <- rbind(l_outcomes_BUP_TS$df_outcomes, l_outcomes_MET_TS$df_outcomes)
rownames(df_outcomes_TS) <- c("Early take-home BNX", "Methadone")

# Generate ICERs
ICER_MMS <- ICER(outcomes_comp = l_outcomes_MET_MMS, outcomes_int = l_outcomes_BUP_MMS)
ICER_TS <- ICER(outcomes_comp = l_outcomes_MET_TS, outcomes_int = l_outcomes_BUP_TS)

# Create trace plots

source("R/plot_functions.R")

#### Create plots ####
# Modified Model Specification
l_trace_BUP_MMS  <- trace_plots(outcomes = l_outcomes_BUP_MMS)
l_trace_MET_MMS  <- trace_plots(outcomes = l_outcomes_MET_MMS)

# Trial Specification
l_trace_BUP_TS  <- trace_plots(outcomes = l_outcomes_BUP_TS)
l_trace_MET_TS  <- trace_plots(outcomes = l_outcomes_MET_TS)

Model Trace Plots

1. Early Take-Home BNX

# BUP
#pdf(file = "Plots/Markov Trace/Modified Model Spec/full_trace_BUP.pdf", width = 8, height = 9)
multiplot(plotlist = l_trace_BUP_MMS[[4]], layout = l_trace_BUP_MMS[[5]])
#dev.off()

1. Methadone Standard of Care

# MET
#pdf(file = "Plots/Markov Trace/Modified Model Spec/full_trace_MET.pdf", width = 8, height = 9)
multiplot(plotlist = l_trace_MET_MMS[[4]], layout = l_trace_MET_MMS[[5]])
#dev.off()

Modified Model Specification (Outcomes)

ICER

library(knitr)
kable(ICER_MMS$df_icer)

Costs (Total)

library(knitr)
kable(df_outcomes_MMS[, 1:4])

Costs (Health Sector)

library(knitr)
kable(df_outcomes_MMS[, 5:8])

Costs (Crime)

library(knitr)
kable(df_outcomes_MMS[, 9:12])

Costs (Treatment)

library(knitr)
kable(df_outcomes_MMS[, 13:16])

QALYs (EQ-5D-5L)

library(knitr)
kable(df_outcomes_MMS[, 17:20])


benenns/OUD-Model documentation built on Dec. 15, 2024, 3:52 a.m.