## ----setup, include=FALSE-----------------------------------------------------
knitr::opts_chunk$set(echo = TRUE)

## ----database, eval=FALSE-----------------------------------------------------
#  library(Strategus)
#  library(Eunomia)
#  library(CohortGenerator)
#  library(CirceR)
#  library(TreatmentPatterns)
#  
#  connectionDetails <- Eunomia::getEunomiaConnectionDetails()
#  
#  outputFolder <- tempdir()
#  
#  executeSettings <- Strategus::createCdmExecutionSettings(
#    workDatabaseSchema = "main",
#    cdmDatabaseSchema = "main",
#    cohortTableNames = CohortGenerator::getCohortTableNames(cohortTable = "cohort_table"),
#    workFolder = file.path(outputFolder, "work"),
#    resultsFolder = file.path(outputFolder, "result"),
#    minCellCount = 5
#  )

## ----cohort_generator, eval=FALSE---------------------------------------------
#  # Read cohort json files provided by TreatmentPatterns
#  files <- list.files(
#    path = system.file(package = "TreatmentPatterns", "exampleCohorts"),
#    full.names = TRUE
#  )
#  json <- sapply(files, readLines)
#  json <- sapply(json, paste, collapse = "")
#  
#  # Build SQL from JSON definition
#  sql <- sapply(
#    X = json,
#    FUN = CirceR::buildCohortQuery,
#    options = CirceR::createGenerateOptions(generateStats = FALSE)
#  )
#  
#  # Set cohort names
#  cohortNames <- sapply(basename(files), function(name) {
#    strtrim(name, nchar(name) - 5)
#  })
#  
#  # Build cohortSet
#  cohortSet <- data.frame(
#    cohortId = seq_len(length(json)),
#    cohortName = cohortNames,
#    sql = sql,
#    json = json
#  )
#  
#  # Specify CohortGenerator module
#  cgMod <- Strategus::CohortGeneratorModule$new()
#  
#  # Add `cohortSet` to the shared specifications
#  cohortSharedResource <- cgMod$createCohortSharedResourceSpecifications(
#    cohortDefinitionSet = cohortSet
#  )
#  
#  # Create the CohortGenerator specification
#  cgSpec <- cgMod$createModuleSpecifications()

## ----treatment_patterns, eval=FALSE-------------------------------------------
#  # Create a cohort 'types' table from the cohortSet to indicate whcih cohorts
#  # are a 'target' and 'event' cohorts
#  cohorts <- data.frame(
#    cohortId = cohortSet$cohortId,
#    cohortName = cohortSet$cohortName,
#    type = c(rep("event", 7), "target")
#  )
#  
#  # Create the TreatmentPatterns module
#  tpMod <- Strategus::TreatmentPatternsModule$new()
#  
#  # Create the TreatmentPatterns specification
#  tpSpec <- tpMod$createModuleSpecifications(
#    cohorts = cohorts,
#    minEraDuration = 30,
#    combinationWindow = 30,
#    minPostCombinationDuration = 30
#    # ...
#  )

## ----execution, eval=FALSE----------------------------------------------------
#  # Add specifications to an empty analysis specification
#  analysisSpec <- Strategus::createEmptyAnalysisSpecificiations() |>
#    Strategus::addSharedResources(cohortSharedResource) |>
#    Strategus::addCohortGeneratorModuleSpecifications(cgSpec) |>
#    Strategus::addTreatmentPatternsModuleSpecifications(tpSpec)
#  
#  # Execute the analysis
#  Strategus::execute(
#    analysisSpecifications = analysisSpec,
#    executionSettings = executeSettings,
#    connectionDetails = connectionDetails
#  )