Add indications to Drug Utilisation Cohort
Marti Catala, Mike Du, Yuchen Guo, Kim Lopez-Guell, Edward Burn, Xintong Li
2024-05-14
a03_addIndications-example.Rmd
Introduction
In this vignette, we demonstrate how to use the
addIndications()
function to establish a binary indicator
between the drug utilisation cohort and another concept-based
cohort.
The DrugUtilisation package is designed to work with data in the OMOP CDM format, so our first step is to create a reference to the data using the DBI and CDMConnector packages. The connection to a Postgres database would look like:
library(DrugUtilisation)
library(DBI)
library(duckdb)
library(CDMConnector)
library(CodelistGenerator)
library(dplyr)
library(PatientProfiles)
con <- DBI::dbConnect(duckdb::duckdb(), eunomia_dir())
cdm <- CDMConnector::cdm_from_con(
con = con,
cdm_schema = "main",
write_schema = "main"
)
Create a drug utilisation cohort
We will use Acetaminophen as our example drug to construct our drug utilisation cohort. To begin, we’ll employ the CodelistGenerator package to generate a concept list associated with Acetaminophen.
conceptList <- CodelistGenerator::getDrugIngredientCodes(cdm, "acetaminophen")
conceptList
#>
#> - acetaminophen (7 codes)
Next, we can create a drug utilisation cohort by using the
conceptList
with the
generateDrugUtilisationCohortSet()
function. For a better
understanding of the arguments and functionalities of
generateDrugUtilisationCohortSet()
, please refer to the
Use DrugUtilisation to create a cohort vignette.
cdm <- generateDrugUtilisationCohortSet(
cdm = cdm,
name = "acetaminophen_users",
conceptSet = conceptList,
limit = "All",
gapEra = 30,
priorUseWashout = 0
)
Create a indication cohort
Next we going to create our indications cohort to indicate patients
with sinusitis and bronchitis. This can be done by using
generateConceptCohortSet()
.
indications <-
list(
sinusitis = c(257012, 4294548, 40481087),
bronchitis = c(260139, 258780)
)
cdm <-
generateConceptCohortSet(cdm, name = "indications_cohort", indications)
cohortCount(cdm[["indications_cohort"]]) %>%
left_join(
settings(cdm[["indications_cohort"]]) %>%
select(cohort_definition_id, cohort_name),
by = "cohort_definition_id"
)
#> # A tibble: 2 × 4
#> cohort_definition_id number_records number_subjects cohort_name
#> <int> <int> <int> <chr>
#> 1 1 2688 2688 sinusitis
#> 2 2 2546 2546 bronchitis
Add indications with addIndication() function
Then to add indication to the drug utilisation cohort we can simple
use the addIndication()
function. To do that, we only need
the drug utilisation cohort and the indicationCohortName
.
However, other arguments can be specified using the additional
parameters. An example is provided below.
cdm[["acetaminophen_users"]] %>%
addIndication(
cdm = cdm,
indicationCohortName = "indications_cohort",
indicationGap = c(0, 30, 365),
unknownIndicationTable = c("condition_occurrence")
)
#> # Source: table<og_030_1715701299> [?? x 16]
#> # Database: DuckDB v0.10.2 [unknown@Linux 6.5.0-1018-azure:R 4.4.0//tmp/RtmptJZ94m/file1d2a1d0b450a.duckdb]
#> cohort_definition_id subject_id cohort_start_date cohort_end_date
#> <int> <int> <date> <date>
#> 1 1 95 2002-08-01 2002-08-29
#> 2 1 99 1959-06-22 1959-07-06
#> 3 1 99 1994-04-02 1994-04-16
#> 4 1 148 1993-06-12 1993-08-11
#> 5 1 219 1974-11-24 1974-12-08
#> 6 1 219 1975-10-06 1975-10-20
#> 7 1 219 1985-06-18 1985-07-18
#> 8 1 245 1917-05-16 1917-05-30
#> 9 1 245 1984-02-25 1984-04-25
#> 10 1 399 1986-06-15 1986-07-06
#> # ℹ more rows
#> # ℹ 12 more variables: indication_gap_0_bronchitis <dbl>,
#> # indication_gap_0_sinusitis <dbl>, indication_gap_0_none <dbl>,
#> # indication_gap_0_unknown <dbl>, indication_gap_30_sinusitis <dbl>,
#> # indication_gap_30_bronchitis <dbl>, indication_gap_30_none <dbl>,
#> # indication_gap_30_unknown <dbl>, indication_gap_365_bronchitis <dbl>,
#> # indication_gap_365_sinusitis <dbl>, indication_gap_365_none <dbl>, …
Use indicationGap
to specify the indication gaps, which
are defined as the gap between the event and the indication.
Additionally, you can use unknownIndicationTable
to specify
the tables to look for unknown indication.
Summarise indications with summariseIndication()
To create a summary table of the indications cohort, you can use the
summariseIndication()
function.
cdm[["acetaminophen_users"]] %>%
addIndication(
cdm = cdm,
indicationCohortName = "indications_cohort",
indicationGap = c(0, 30, 365),
unknownIndicationTable = c("condition_occurrence")
) %>%
summariseIndication(cdm) %>%
select("variable_name", "estimate_name", "estimate_value")
#> # A tibble: 26 × 3
#> variable_name estimate_name estimate_value
#> <chr> <chr> <chr>
#> 1 number records count 13860
#> 2 number subjects count 2679
#> 3 Indication on index date count 2518
#> 4 Indication on index date percentage 18.1673881673882
#> 5 Indication on index date count NA
#> 6 Indication on index date percentage NA
#> 7 Indication on index date count 163
#> 8 Indication on index date percentage 1.17604617604618
#> 9 Indication on index date count 11178
#> 10 Indication on index date percentage 80.6493506493507
#> # ℹ 16 more rows
You can also summarise the indications by using the
strata
argument in the summariseIndication()
function. In the example below, it is summarized by
ageGroup
and sex
.
cdm[["acetaminophen_users"]] %>%
addDemographics(ageGroup = list(c(0, 19), c(20, 150))) %>%
addIndication(
cdm = cdm,
indicationCohortName = "indications_cohort",
indicationGap = c(0),
unknownIndicationTable = c("condition_occurrence")
) %>%
summariseIndication(
cdm,
strata = list("age" = "age_group", "sex" = "sex")) %>%
select("variable_name", "estimate_name", "estimate_value","strata_name")
#> # A tibble: 50 × 4
#> variable_name estimate_name estimate_value strata_name
#> <chr> <chr> <chr> <chr>
#> 1 number records count 13860 overall
#> 2 number subjects count 2679 overall
#> 3 Indication on index date count 2518 overall
#> 4 Indication on index date percentage 18.1673881673882 overall
#> 5 Indication on index date count NA overall
#> 6 Indication on index date percentage NA overall
#> 7 Indication on index date count 163 overall
#> 8 Indication on index date percentage 1.17604617604618 overall
#> 9 Indication on index date count 11178 overall
#> 10 Indication on index date percentage 80.6493506493507 overall
#> # ℹ 40 more rows