Summarise concept id counts

knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

Introduction

In this vignette, we will explore the OmopSketch functions designed to provide information about the number of counts of concepts in tables. Specifically, there are two key functions that facilitate this, summariseConceptIdCounts() and tableConceptIdCounts(). The former one creates a summary statistics results with the number of counts per each concept in the clinical table, and the latter one displays the result in a table.

Create a mock cdm

Let's see an example of the previous functions. To start with, we will load essential packages and create a mock cdm using mockOmopSketch().

library(duckdb)
library(OmopSketch)
library(dplyr)


cdm <- mockOmopSketch()

cdm

Summarise concept id counts

We now use the summariseConceptIdCounts() function from the OmopSketch package to retrieve counts for each concept id and name, as well as for each source concept id and name, across the clinical tables.

summariseConceptIdCounts(cdm, omopTableName = "drug_exposure") |>
  select(group_level, variable_name, variable_level, estimate_name, estimate_value, additional_name, additional_level) |>
  glimpse()

By default, the function returns the number of records (estimate_name == "count_records") for each concept_id. To include counts by person, you can set the countBy argument to "person" or to c("record", "person") to obtain both record and person counts.

summariseConceptIdCounts(cdm,
  omopTableName = "drug_exposure",
  countBy = c("record", "person")
) |>
  select( variable_name, estimate_name, estimate_value) 

Further stratification can be applied using the interval, sex, and ageGroup arguments. The interval argument supports "overall" (no time stratification), "years", "quarters", or "months".

``` {r, warning=FALSE} summariseConceptIdCounts(cdm, omopTableName = "condition_occurrence", countBy = "person", interval = "years", sex = TRUE, ageGroup = list("<=50" = c(0, 50), ">50" = c(51, Inf)) ) |> select(group_level, strata_level, variable_name, estimate_name, additional_level) |> glimpse()

We can also filter the clinical table to a specific time window by setting the dateRange argument.

```r
summarisedResult <- summariseConceptIdCounts(cdm,
                                             omopTableName = "condition_occurrence",
                                             dateRange = as.Date(c("1990-01-01", "2010-01-01"))) 
summarisedResult |>
  omopgenerics::settings()|>
  glimpse()

Finally, you can summarise concept counts on a subset of records by specifying the sample argument.

summariseConceptIdCounts(cdm,
                         omopTableName = "condition_occurrence",
                         sample = 50) |>
  select(group_level, variable_name, estimate_name) |>
  glimpse()

Display the results

Finally, concept counts can be visualised using tableConceptIdCounts(). By default, it generates an interactive reactable table, but DT datatables are also supported.

result <- summariseConceptIdCounts(cdm,
  omopTableName = "measurement",
  countBy = "record"
) 
tableConceptIdCounts(result, type = "reactable")
tableConceptIdCounts(result, type = "datatable")

The display argument in tableConceptIdCounts() controls which concept counts are shown. Available options include display = "overall". It is the default option and it shows both standard and source concept counts.

tableConceptIdCounts(result, display = "overall")

If display = "standard" the table shows only standard concept_id and concept_name counts.

tableConceptIdCounts(result, display = "standard")

If display = "source" the table shows only source concept_id and concept_name counts.

tableConceptIdCounts(result, display = "source")

If display = "missing source" the table shows only counts for concept ids that are missing a corresponding source concept id.

tableConceptIdCounts(result, display = "missing source")

If display = "missing standard" the table shows only counts for source concept ids that are missing a mapped standard concept id.

tableConceptIdCounts(result, display = "missing standard")


Try the OmopSketch package in your browser

Any scripts or data that you put into this service are public.

OmopSketch documentation built on June 8, 2025, 1:36 p.m.