Clinical trials analyses: ctrdata, a tool for leveraging register data

Overview

Package ctrdata is continually developed and offered for the R system since 2015. It facilitates investigating and understanding trends in design and conduct of trials, their availability for participants and using their protocols and results for research and meta-analyses, informing future research needs and activities. The package can be used with all information and documents publicly available in the

Features include,

  • Protocol- and results-related trial information is easily downloaded, including any trial documents available in registers.
  • Information is stored a document-centric database (DuckDB, PostgreSQL, RSQLite or MongoDB), for fast offline access.
  • Functions for analysing trial concepts, identify unique (de-duplicated) records across registers, easily access deeply-nested fields

Getting started

Package ctrdata is on CRAN: https://cran.r-project.org/package=ctrdata Within R, package ctrdata can be installed with: install.packages("ctrdata"). See code below for how to install the latest working development version.

The documentation shows a full simple workflow and has Articles with detailed trial analysis: https://rfhb.github.io/ctrdata/

Issues, feature requests and bugs reports are most welcome at https://github.com/rfhb/ctrdata/issues and general comments at the bottom of this page.

Milestones

  • Version 1.23.0 of 2 July 2025 got a technology update and offers a large speed-up using EUCTR, the register with much structured results data
  • From March 2025, new functions for easy analysis of a trial concept(s) across registers and retrieval of trials from simple user input
  • In November 2024, database and trial data functions accelerated through contributions to RSQLite 2.3.8 and nodbi 0.11.0
  • Since 2024-06-30, CTIS2 as relaunched on 2024-06-17 is supported, and queries to CTGOV (retired on 2024-06-25) are made to work with CTGOV2.
  • Version 1.18.0 of package ctrdata can retrieve historic versions of studies as structured data from CTGOV2 (example), published on 2024-05-13.
  • By November 2023, ctrdata was freed from all dependencies on command line tools of the operating system.
  • The European Union's new Clinical Trials Information System (CTIS) is supported since March 2023.
  • Since 2019, ctrdata supports several databases (through package nodbi, now maintained by the same author).
  • Results data from the EU Clinical Trials Register are supported since 2017, from ClinicalTrials.Gov since 2015.
  • On 15 September 2015, package ctrdata was first published on CRAN.

Disclaimer

When using package ctrdata, the registers’ terms and conditions need to be respected and are shown with ctrOpenSearchPagesInBrowser(copyright = TRUE).

Please cite package ctrdata in any publication as: “Ralf Herold (2025). ctrdata: Retrieve and Analyze Clinical Trials in Public Registers. R package version 1.23.0, https://cran.r-project.org/package=ctrdata”.

References

Package ctrdata has been used for unpublished work and for:

Example

Code

This covers how to obtain information of trials of interest from all supported registers, for plotting their start and completion over time. For more sophisticated examples, see the Articles under Documentation above.

Graph

This example shows the plot resulting from the script above.

Data model used by ctrdata

Package ctrdata uses the data models that are implicit in data retrieved from the different registers. For EUCTR, CTGOV and ISRCTN, the trial information retrieved by ctrdata corresponds to a documented data model of the respective register, see table row "Definitions of fields" on help(ctrdata-registers). However, for CTIS, the trial information retrieved is the structured information with which the CTIS webapp is populated, and this information is merged by ctrdata into a data model that is reasonable and useful but does not (cannot) correspond to the (unknown) data model of this register. The approach is further explained here, together with the reasons for this choice. A possible future development is to provide a mapping to a canonical data model, which however does not exist at the moment and will require an international approach and alliance.

To explore the structure, field names and values of a trial from one of the registers, use function ctrShowOneTrial() in package ctrdata and go to our webapp here which provides and interactive widget such as this:


Leave a Reply

Your email address will not be published. Required fields are marked *