This vignette shows to to run a TreatmentPatterns
analysis using Strategus
.
The
Strategus
package is a new approach for coordinating and executing analytics using HADES modules. The goal is to have OHDSI network sites install Strategus and exchange an analysis specification in JSON format to execute a network study. The analysis specification will capture all of the design choices that pertain to the methods used in a given study. The analysis specification format aims to allow for combining different HADES modules together as a pipeline to execute a study.
First we specify the execution settings, which dictate how to connect to the database.
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
)
Secondly we need need to tell Strategus which cohorts to generate, and where.
# 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()
Then we tell Strategus how to execute TreatmentPatterns.
# 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
# ...
)
Finally we design our analysis and execute it against the database.
# 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
)