Compute treatment patterns according to the specified parameters within specified cohorts.
computePathways(
cohorts,
cohortTableName,
cdm = NULL,
connectionDetails = NULL,
cdmSchema = NULL,
resultSchema = NULL,
tempEmulationSchema = NULL,
includeTreatments = "startDate",
indexDateOffset = 0,
minEraDuration = 0,
splitEventCohorts = NULL,
splitTime = NULL,
eraCollapseSize = 30,
combinationWindow = 30,
minPostCombinationDuration = 30,
filterTreatments = "First",
maxPathLength = 5
)
(data.frame()
)
Data frame containing the following columns and data types:
numeric(1)
Cohort ID's of the cohorts to be used in the cohort table.
character(1)
Cohort names of the cohorts to be used in the cohort table.
character(1)
["target", "event', "exit"]Cohort type, describing if the cohort is a target, event, or exit cohort
(character(1)
)
Cohort table name.
(CDMConnector::cdm_from_con()
: NULL
)
Optional; Ignores connectionDetails
, cdmSchema
, and resultSchema
.
(DatabaseConnector::createConnectionDetails()
: NULL
)
Optional; In congruence with cdmSchema
and resultSchema
. Ignores cdm
.
(character(1)
: NULL
)
Optional; In congruence with connectionDetails
and resultSchema
. Ignores cdm
.
(character(1)
: NULL
)
Optional; In congruence with connectionDetails
and cdmSchema
. Ignores cdm
.
Schema used to emulate temp tables
(character(1)
: "startDate"
)
"startDate"
Include treatments after the target cohort start date and onwards.
"endDate"
Include treatments before target cohort end date and before.
(integer(1)
: 0
)
Offset the index date of the Target
cohort.
(integer(1)
: 0
)
Minimum time an event era should last to be included in analysis
(character(n)
: ""
)
Specify event cohort to split in acute (< X days) and therapy (>= X days)
(integer(1)
: 30
)
Specify number of days (X) at which each of the split event cohorts should
be split in acute and therapy
(integer(1)
: 30
)
Window of time between which two eras of the same event cohort are collapsed
into one era
(integer(1)
: 30
)
Window of time two event cohorts need to overlap to be considered a
combination treatment
(integer(1)
: 30
)
Minimum time an event era before or after a generated combination treatment
should last to be included in analysis
(character(1)
: "First"
["first", "Changes", "all"])
Select first occurrence of (‘First’); changes between (‘Changes’); or all
event cohorts (‘All’).
(integer(1)
: 5
)
Maximum number of steps included in treatment pathway
(Andromeda::andromeda()
)
andromeda object containing non-sharable patient level
data outcomes.
# \donttest{
library(TreatmentPatterns)
library(CDMConnector)
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
if (require("CirceR", character.only = TRUE, quietly = TRUE)) {
withr::local_envvar(
R_USER_CACHE_DIR = tempfile(),
EUNOMIA_DATA_FOLDER = Sys.getenv("EUNOMIA_DATA_FOLDER", unset = tempfile())
)
tryCatch({
if (Sys.getenv("skip_eunomia_download_test") != "TRUE") {
CDMConnector::downloadEunomiaData(overwrite = TRUE)
}
}, error = function(e) NA)
con <- DBI::dbConnect(duckdb::duckdb(), dbdir = eunomia_dir())
cdm <- cdmFromCon(con, cdmSchema = "main", writeSchema = "main")
cohortSet <- readCohortSet(
path = system.file(package = "TreatmentPatterns", "exampleCohorts")
)
cdm <- generateCohortSet(
cdm = cdm,
cohortSet = cohortSet,
name = "cohort_table"
)
cohorts <- cohortSet %>%
# Remove 'cohort' and 'json' columns
select(-"cohort", -"json") %>%
mutate(type = c("event", "event", "event", "event", "exit", "event", "event", "target")) %>%
rename(
cohortId = "cohort_definition_id",
cohortName = "cohort_name",
) %>%
select("cohortId", "cohortName", "type")
outputEnv <- computePathways(
cohorts = cohorts,
cohortTableName = "cohort_table",
cdm = cdm
)
Andromeda::close(outputEnv)
DBI::dbDisconnect(con, shutdown = TRUE)
}
#>
#> Download completed!
#> ℹ Generating 8 cohorts
#> ℹ Generating cohort (1/8) - acetaminophen
#> ✔ Generating cohort (1/8) - acetaminophen [266ms]
#>
#> ℹ Generating cohort (2/8) - amoxicillin
#> ✔ Generating cohort (2/8) - amoxicillin [180ms]
#>
#> ℹ Generating cohort (3/8) - aspirin
#> ✔ Generating cohort (3/8) - aspirin [163ms]
#>
#> ℹ Generating cohort (4/8) - clavulanate
#> ✔ Generating cohort (4/8) - clavulanate [163ms]
#>
#> ℹ Generating cohort (5/8) - death
#> ✔ Generating cohort (5/8) - death [105ms]
#>
#> ℹ Generating cohort (6/8) - doxylamine
#> ✔ Generating cohort (6/8) - doxylamine [162ms]
#>
#> ℹ Generating cohort (7/8) - penicillinv
#> ✔ Generating cohort (7/8) - penicillinv [162ms]
#>
#> ℹ Generating cohort (8/8) - viralsinusitis
#> ✔ Generating cohort (8/8) - viralsinusitis [238ms]
#>
#> Warning: ! 5 casted column in cohort_table (cohort_attrition) as do not match expected
#> column type:
#> • `number_records` from numeric to integer
#> • `number_subjects` from numeric to integer
#> • `reason_id` from numeric to integer
#> • `excluded_records` from numeric to integer
#> • `excluded_subjects` from numeric to integer
#> Warning: ! 1 column in cohort_table do not match expected column type:
#> • `subject_id` is numeric but expected integer
#> -- Qualifying records for cohort definitions: 1, 2, 3, 4, 5, 6, 7, 8
#> Records: 14041
#> Subjects: 2693
#> -- Removing records < minEraDuration (0)
#> Records: 11386
#> Subjects: 2159
#> -- Removing events where index date < target index date + indexDateOffset (0)
#> Records: 8381
#> Subjects: 2159
#> -- splitEventCohorts
#> Records: 8366
#> Subjects: 2144
#> -- eraCollapse (30)
#> Records: 8366
#> Subjects: 2144
#> -- Iteration 1: minPostCombinationDuration (30), combinatinoWindow (30)
#> Records: 558
#> Subjects: 512
#> -- Iteration 2: minPostCombinationDuration (30), combinatinoWindow (30)
#> Records: 554
#> Subjects: 512
#> -- After Combination
#> Records: 554
#> Subjects: 512
#> -- filterTreatments (First)
#> Records: 553
#> Subjects: 512
#> -- treatment construction done
#> Records: 553
#> Subjects: 512
# }