Builds a tiny synthetic OMOP CDM (20 persons) in an in-memory DuckDB database
and returns a live connection. Every table rwevalidate queries for the
concept, attrition, density, and covariate modules is populated, together
with a cohort table that has the standard subject_id,
cohort_definition_id, cohort_start_date, and cohort_end_date columns.
The cohort table carries two arms so all four modules can be demonstrated:
persons 1-10 are the target cohort (cohort_definition_id = 1) and persons
11-20 are a comparator (cohort_definition_id = 2). The clinical tables and
a minimal vocabulary both live in the default main schema.
Details
This exists so the package can be tried, and its examples can run, without a
live database connection. It is a synthetic demo fixture, not a substitute
for a real CDM. The duckdb package (a soft dependency) must be installed.
The caller owns the returned connection and should close it with
cdm_disconnect().
Examples
if (requireNamespace("duckdb", quietly = TRUE)) {
con <- example_cdm()
attrition <- run_attrition(con, cdm_schema = "main",
cohort_table = "cohort", cohort_id = 1,
vocab_schema = "main")
print(attrition$cohort_size)
cdm_disconnect(con)
}
#> [1] 10