measurementCohort {CohortConstructor} | R Documentation |
Create cohorts measurement based cohorts
Description
measurementCohort()
creates cohorts based on patient records contained
in the measurement table. This function extends the conceptCohort()
as it
allows for measurement values associated with the records to be specified.
If
valueAsConcept
andvalueAsNumber
are NULL then no requirements on of the values associated with measurement records and usingmeasurementCohort()
will lead to the same result as usingconceptCohort()
(so long as all concepts are from the measurement domain).If one of
valueAsConcept
andvalueAsNumber
is not NULL then records will be required to have values that satisfy the requirement specified.If both
valueAsConcept
andvalueAsNumber
are not NULL, records will be required to have values that fulfill either of the requirements
Usage
measurementCohort(
cdm,
conceptSet,
name,
valueAsConcept = NULL,
valueAsNumber = NULL
)
Arguments
cdm |
A cdm reference. |
conceptSet |
A conceptSet, which can either be a codelist or a conceptSetExpression. |
name |
Name of the cohort in the cdm object. |
valueAsConcept |
A vector of cohort IDs used to filter measurements.
Only measurements with these values in the |
valueAsNumber |
A named list indicating the range of values and the unit they correspond to, as follows: list("unit_concept_id" = c(rangeValue1, rangeValue2)). If NULL, all entries independently of their value as number will be included. |
Value
A cohort table
Examples
library(CohortConstructor)
cdm <- mockCohortConstructor(con = NULL)
cdm$concept <- cdm$concept |>
dplyr::union_all(
dplyr::tibble(
concept_id = c(4326744, 4298393, 45770407, 8876, 4124457),
concept_name = c("Blood pressure", "Systemic blood pressure",
"Baseline blood pressure", "millimeter mercury column",
"Normal range"),
domain_id = "Measurement",
vocabulary_id = c("SNOMED", "SNOMED", "SNOMED", "UCUM", "SNOMED"),
standard_concept = "S",
concept_class_id = c("Observable Entity", "Observable Entity",
"Observable Entity", "Unit", "Qualifier Value"),
concept_code = NA,
valid_start_date = NA,
valid_end_date = NA,
invalid_reason = NA
)
)
cdm$measurement <- dplyr::tibble(
measurement_id = 1:4,
person_id = c(1, 1, 2, 3),
measurement_concept_id = c(4326744, 4298393, 4298393, 45770407),
measurement_date = as.Date(c("2000-07-01", "2000-12-11", "2002-09-08",
"2015-02-19")),
measurement_type_concept_id = NA,
value_as_number = c(100, 125, NA, NA),
value_as_concept_id = c(0, 0, 0, 4124457),
unit_concept_id = c(8876, 8876, 0, 0)
)
cdm <- CDMConnector::copyCdmTo(
con = DBI::dbConnect(duckdb::duckdb()),
cdm = cdm, schema = "main")
cdm$cohort <- measurementCohort(
cdm = cdm,
name = "cohort",
conceptSet = list("normal_blood_pressure" = c(4326744, 4298393, 45770407)),
valueAsConcept = c(4124457),
valueAsNumber = list("8876" = c(70, 120))
)
cdm$cohort