Learn R Programming

MeasurementDiagnostics

The MeasurementDiagnostics package helps us to assess the use of measurements present in data mapped to the OMOP CDM, either for the dataset as a whole or for a particular cohort.

Installation

You can install the development version of MeasurementDiagnostics from GitHub with:

# install.packages("pak")
pak::pak("ohdsi/MeasurementDiagnostics")

Example

Let’s say we are going to do a study where we are going to be using measurements of respiratory function. We can use MeasurementDiagnostics to better understand the use of these measurements.

For this example we’ll use the Eunomia data.

library(duckdb)
library(omopgenerics)
library(CDMConnector)
library(dplyr)
library(MeasurementDiagnostics)
con <- dbConnect(duckdb(), dbdir = eunomiaDir())
cdm <- cdmFromCon(
  con = con, cdmSchem = "main", writeSchema = "main", cdmName = "Eunomia"
)
cdm
#> 
#> ── # OMOP CDM reference (duckdb) of Eunomia ────────────────────────────────────
#> • omop tables: care_site, cdm_source, concept, concept_ancestor, concept_class,
#> concept_relationship, concept_synonym, condition_era, condition_occurrence,
#> cost, death, device_exposure, domain, dose_era, drug_era, drug_exposure,
#> drug_strength, fact_relationship, location, measurement, metadata, note,
#> note_nlp, observation, observation_period, payer_plan_period, person,
#> procedure_occurrence, provider, relationship, source_to_concept_map, specimen,
#> visit_detail, visit_occurrence, vocabulary
#> • cohort tables: -
#> • achilles tables: -
#> • other tables: -

Now we have a cdm reference with our data, we will create a codelist with measurement concepts.

respiratory_function_codes <- newCodelist(list("respiratory function" = c(4052083L, 4133840L, 3011505L)))
respiratory_function_codes
#> 
#> - respiratory function (3 codes)

And now we can run a set of measurement diagnostic checks, here stratifying results by sex.

respiratory_function_measurements <- summariseMeasurementUse(cdm, respiratory_function_codes, bySex = TRUE)

Among our results is a summary of timings between measurements for individuals in our dataset. We can quickly create a plot of these results like so

plotMeasurementSummary(respiratory_function_measurements |> 
  filter(variable_name == "time"))

Copy Link

Version

Install

install.packages('MeasurementDiagnostics')

Monthly Downloads

12,161

Version

0.2.0

License

Apache License (>= 2)

Maintainer

Nuria Mercade-Besora

Last Published

December 17th, 2025

Functions in MeasurementDiagnostics (0.2.0)

tableMeasurementSummary

Format a measurement_summary object into a visual table
plotMeasurementValueAsConcept

Plot summariseMeasurementTiming results.
resultDoc

Helper for consistent documentation of `result`.
summariseCohortMeasurementUse

Diagnostics of a codelist of measurement codes within a cohort
mockMeasurementDiagnostics

Function to create a mock cdm reference.
plotMeasurementSummary

Plot summariseMeasurementTiming results.
plotMeasurementValueAsNumber

Plot summariseMeasurementTiming results.
summariseMeasurementUse

Diagnostics of a codelist of measurement codes in the database
tableMeasurementValueAsNumber

Format a measurement_summary object into a visual table
tableMeasurementValueAsConcept

Format a measurement_summary object into a visual table
plotDoc

Helper for consistent documentation of `plot`.
uniqueCombinationsDoc

Helper for consistent documentation of `uniqueCombinations`.
tableDoc

Helper for consistent documentation of `table`.
timeScaleDoc

Helper for consistent documentation of `timeScale`.
summariseMeasurementDoc

Helper for consistent documentation of `summariseMeasurement` functions.
MeasurementDiagnostics-package

MeasurementDiagnostics: Diagnostics for Lists of Codes Based on Measurements