Skip to main content

ontology-based rare disease common data model

Welcome to the repo of the ontology-based rare disease common data model (RD-CDM) harmonising international registry use, HL7® FHIR®, and the GA4GH Phenopacket Schema.

CI Documentation Status DOI Python Versions PyPI Downloads LinkML

Latest docs: https://rd-cdm.readthedocs.io/en/latest/

Manuscript

The corresponding paper for RD-CDM v2.0.0 has been published in Nature Scientific Data:
https://www.nature.com/articles/s41597-025-04558-z


Table of Contents


Project Description

The ontology-based RD-CDM harmonizes rare disease data capture across registries. It integrates ERDRI-CDS, HL7 FHIR, and GA4GH Phenopacket Schema to support interoperable data for research and care. RD-CDM v2.0.x comprises 78 data elements covering formal criteria, personal information, patient status, disease, genetic findings, phenotypic findings, and family history.


What you get from PyPI

Installing rd-cdm from PyPI provides:

  • Schema

    • src/rd_cdm/schema/rd_cdm.yaml — LinkML schema defining the data model structure. The version and date fields here are the single source of truth for the data model version.
  • Instances

    • src/rd_cdm/instances/code_systems.yaml
    • src/rd_cdm/instances/data_elements.yaml
    • src/rd_cdm/instances/value_sets.yaml
    • src/rd_cdm/instances/rd_cdm.yaml — merged instance, version-stamped with rd_cdm_version and rd_cdm_date at the top
    • src/rd_cdm/instances/jsons/rd_cdm.json
    • src/rd_cdm/instances/csvs/rd_cdm.csv
  • Generated Python classes (LinkML)

    • src/rd_cdm/python_classes/rd_cdm.py — LinkML runtime dataclasses
    • src/rd_cdm/python_classes/rd_cdm_pydantic.py — Pydantic v2 models
  • CLI entry points

    • rd-cdm-merge — merge instance parts into rd_cdm.yaml
    • rd-cdm-json — export to jsons/rd_cdm.json
    • rd-cdm-csv — export to csvs/rd_cdm.csv
    • rd-cdm-validate — validate ontology codes via BioPortal

Features

  • Interoperability: Aligns with HL7 FHIR v4.0.1 and GA4GH Phenopacket v2.0
  • Ontology-driven: Uses SNOMED CT, LOINC, NCIT, MONDO, OMIM, HPO, and more
  • Modular: Clear separation of schema, instances, and exports
  • Self-describing exports: Every YAML, JSON, and CSV file carries rd_cdm_version and rd_cdm_date so outputs are unambiguous without needing to know which package version was installed
  • Tooling: Merge, export, and validation utilities via simple CLI commands
  • Pydantic models: Runtime validation generated from the LinkML schema

Installation

From PyPI:

pip install rd-cdm

Optional extras:

pip install rd-cdm[test]   # pytest, requests-mock
pip install rd-cdm[docs]   # mkdocs and the material theme
pip install rd-cdm[dev]    # linkml (for regenerating Python classes and docs)

Development install

git clone https://github.com/BIH-CEI/rd-cdm.git
cd rd-cdm
python -m venv .venv && source .venv/bin/activate
pip install -U pip
pip install -e ".[test,dev]"
pytest -q

We use a src/ layout. Use the installed CLI entry points shown below rather than running scripts directly.


CLI tools

After installation the following commands are available:

# Merge instance parts → src/rd_cdm/instances/rd_cdm.yaml
rd-cdm-merge

# Export merged YAML → src/rd_cdm/instances/jsons/rd_cdm.json
rd-cdm-json

# Export merged YAML → src/rd_cdm/instances/csvs/rd_cdm.csv
rd-cdm-csv

# Validate all ontology codes against BioPortal
rd-cdm-validate

The recommended order when updating the model is:

rd-cdm-merge && rd-cdm-json && rd-cdm-csv && rd-cdm-validate

Validating with BioPortal

rd-cdm-validate checks all ontology codes in the merged instance against BioPortal and reports version drift and missing or deprecated terms.

Get an API key

Sign up at https://bioportal.bioontology.org/accounts/new, go to your account settings, and copy your API key.

Set the environment variable

macOS / Linux:

export BIOPORTAL_API_KEY="your-key-here"

Windows (PowerShell):

setx BIOPORTAL_API_KEY "your-key-here"

Contributing and Contact

The RD-CDM is a community-driven effort. Please feel free to open issues, discuss features, or submit pull requests. For larger contributions consider reaching out directly.

See the Contributing section of our documentation for full guidelines.

RareLink

RareLink is a REDCap-based framework for rare disease research linking international registries to FHIR and Phenopackets, built on the RD-CDM.


Resources

Ontologies

  • Human Phenotype Ontology 🔗
  • Monarch Initiative Disease Ontology 🔗
  • Online Mendelian Inheritance in Man 🔗
  • Orphanet Rare Disease Ontology 🔗
  • SNOMED CT 🔗
  • ICD-11 🔗
  • ICD-10-CM 🔗
  • NCBI Taxonomy 🔗
  • LOINC 🔗
  • HGNC 🔗
  • NCI Thesaurus OBO Edition 🔗

For the ontology versions used in each RD-CDM release, see the resources page in our documentation.


License

MIT License

Citing

Graefe, A.S.L., Hübner, M.R., Rehburg, F. et al. An ontology-based rare disease common data model harmonising international registries, FHIR, and Phenopackets. Sci Data 12, 234 (2025). https://doi.org/10.1038/s41597-025-04558-z

Acknowledgements

Metadata

Release files for rd-cdm 2.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rd-cdm 2.1.0
File Size Uploaded
rd_cdm-2.1.0.tar.gz 94.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for rd-cdm 2.1.0
File Interpreter ABI Platform
rd_cdm-2.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 216.3 kB

Release files / rd_cdm-2.1.0.tar.gz

Download URL rd_cdm-2.1.0.tar.gz
Size 94.6 kB
Tags Source
SHA-256 checksum
How to use checksums
e9fa5405740b2337268fa069d06475dddd35fc3bace6887622fb05037baf401b
BLAKE2b-256 checksum
How to use checksums
fbee6a6d2f370407470bbbb036f04611ec5f98e701ddb5da6775df40c66e1138
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / rd_cdm-2.1.0-py3-none-any.whl

Download URL rd_cdm-2.1.0-py3-none-any.whl
Size 121.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dccba6d3853621c7fa811c80b074d1af1b3a45eb8d4e313774277fcaacacb66e
BLAKE2b-256 checksum
How to use checksums
f2a597f660cca2577fbd6acac700c9583820edf32b40afe5d13b6f0bbba675ee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Release history Release notifications | RSS feed

This release

2.1.0 This release

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page