library(Capr)
# Function to test that cohort compiles
assertCohortCompiles <- function(cohortDefinition) {
sql <- CirceR::cohortExpressionFromJson(as.json(ch))
sql <- CirceR::buildCohortQuery(sql, options = CirceR::createGenerateOptions(generateStats = TRUE))
stopifnot(nchar(sql) > 1)
invisible(NULL)
}
This vignette provides a number of example cohorts built with Capr from the OHDSI Phenotype Phebruary event.
Persons with new type 2 diabetes mellitus at first diagnosis
https://atlas-phenotype.ohdsi.org/#/cohortdefinition/88/definition
library(Capr)
cs0 <- cs(descendants(443238, 201820, 442793),
descendants(exclude(195771, 201254, 435216, 761051, 4058243, 40484648)),
name = "Type 2 diabetes mellitus (diabetes mellitus excluding T1DM and secondary)")
ch <- cohort(
entry = entry(
conditionOccurrence(cs0),
observationWindow = continuousObservation(priorDays = 365)
),
exit = exit(
endStrategy = observationExit()
)
)
Persons with new type 2 diabetes and no prior T1DM or secondary diabetes
https://atlas-phenotype.ohdsi.org/#/cohortdefinition/89/export
library(Capr)
cs0 <- cs(descendants(443238, 201820, 442793),
descendants(exclude(195771, 201254, 435216, 761051, 4058243, 40484648)),
name = "Type 2 diabetes mellitus (diabetes mellitus excluding T1DM and secondary)")
cs1 <- cs(descendants(201254, 435216, 40484648),
name = "Type 1 diabetes mellitus")
cs2 <- cs(descendants(195771),
name = "Secondary diabetes mellitus")
ch <- cohort(
entry = entry(
conditionOccurrence(cs0),
observationWindow = continuousObservation(priorDays = 365)
),
attrition = attrition(
't1d' = withAll(
exactly(0, conditionOccurrence(cs1), duringInterval(eventStarts(-Inf, 0)))
),
'secondaryDiabetes' = withAll(
exactly(0, conditionOccurrence(cs2), duringInterval(eventStarts(-Inf, 0)))
)
),
exit = exit(
endStrategy = observationExit()
)
)
Persons with new type 2 diabetes mellitus at first dx rx or lab
https://atlas-phenotype.ohdsi.org/#/cohortdefinition/90
library(Capr)
cs0 <- cs(descendants(443238, 201820, 442793),
descendants(exclude(195771, 201254, 435216, 761051, 4058243, 40484648)),
name = "Type 2 diabetes mellitus (diabetes mellitus excluding T1DM and secondary)")
cs1 <- cs(descendants(201254, 435216, 40484648),
name = "Type 1 diabetes mellitus")
cs2 <- cs(descendants(195771),
name = "Secondary diabetes mellitus")
cs3 <- cs(descendants(4184637, 37059902),
name = "Hemoglobin A1c (HbA1c) measurements")
cs4 <- cs(descendants(21600744),
name = "Drugs for diabetes except insulin")
ch <- cohort(
entry = entry(
conditionOccurrence(cs0),
drugExposure(cs4),
measurement(cs3, valueAsNumber(bt(6.5, 30)), unit("%")),
measurement(cs3, valueAsNumber(bt(48, 99)), unit("mmol/mol")),
observationWindow = continuousObservation(priorDays = 365)
),
attrition = attrition(
'no T1D' = withAll(
exactly(0, conditionOccurrence(cs1), duringInterval(eventStarts(-Inf, 0)))
),
'no secondary diabettes' = withAll(
exactly(0, conditionOccurrence(cs2), duringInterval(eventStarts(-Inf, 0)))
)
),
exit = exit(
endStrategy = observationExit()
)
)
Persons with new type 1 diabetes
https://atlas-phenotype.ohdsi.org/#/cohortdefinition/92
cs0 <- cs(descendants(195771),
name = "Type 1 diabetes mellitus")
ch <- cohort(
entry = entry(
conditionOccurrence(cs0),
observationWindow = continuousObservation(priorDays = 365)
)
)
assertCohortCompiles(ch)
Persons with new type 1 diabetes and no prior T2DM or secondary diabetes
https://atlas-phenotype.ohdsi.org/#/cohortdefinition/91
cs0 <- cs(descendants(443238, 201820, 442793),
descendants(exclude(195771, 201254, 435216, 761051, 4058243, 40484648)),
name = "Type 2 diabetes mellitus (diabetes mellitus excluding T1DM and secondary)")
cs1 <- cs(descendants(201254, 435216, 40484648),
name = "Type 1 diabetes mellitus")
cs2 <- cs(descendants(195771),
name = "Secondary diabetes mellitus")
ch <- cohort(
entry = entry(
conditionOccurrence(cs1),
observationWindow = continuousObservation(priorDays = 365)
),
attrition = attrition(
"no prior T2DM" = withAll(exactly(0, conditionOccurrence(cs0), duringInterval(eventStarts(-Inf, 0)))),
"no prior secondary T1DM" = withAll(exactly(0, conditionOccurrence(cs2), duringInterval(eventStarts(-Inf, 0))))
)
)
Persons with atrial fibrillation per Wharton et al 2021
https://atlas-phenotype.ohdsi.org/#/cohortdefinition/93
cs0 <- cs(descendants(313217),
name = "Atrial fibrillation")
ch <- cohort(conditionOccurrence(cs0))
Persons with atrial fibrillation per Subramanya et al 2021
https://atlas-phenotype.ohdsi.org/#/cohortdefinition/94
afib <- cs(descendants(313217),
name = "Atrial fibrillation")
ip <- cs(descendants(262, 9201),
name = "Inpatient or inpatient ER visit")
op <- cs(descendants(9202, 9203),
name = "Outpatient or ER visit")
ch <- cohort(
entry = entry(
conditionOccurrence(afib,
nestedWithAny(
atLeast(1, visit(ip), duringInterval(eventStarts(-Inf, 0), eventEnds(0, Inf))),
nestedWithAll(
atLeast(1, visit(op, duringInterval(eventStarts(-Inf, 0), eventEnds(0, Inf)),
nestedWithAll(
atLeast(1, conditionOccurrence(afib, duringInterval(eventStarts(7, 365)),
nestedWithAll(
atLeast(1, visit(op, duringInterval(eventStarts(-Inf, 0), eventEnds(0, Inf))))
)
))
)
))
)
)
)
)
)