Introduction

What is Syrona?

Syrona compares health datasets built on the OMOP Common Data Model. Given two OMOP CDM databases (or two cohorts within the same database), it:

  1. Extracts stratified prevalence tables across three clinical domains (conditions, procedures, drugs)
  2. Compares paired datasets by computing log2 prevalence ratios per stratum
  3. Synthesizes (pools) results via multi-level random-effects meta-analysis

The output is a set of CSV tables that can be explored in the Syrona dashboard or consumed by downstream tools.

How it differs from other OHDSI tools

Tool Purpose
ACHILLES Profile a single database (aggregate statistics)
CohortDiagnostics Validate cohort definitions (incidence, attrition)
CohortContrast Feature selection: target vs control within one database
Syrona Compare 2 datasets (cohorts, sites) by prevalences of the 3 domains (diagnoses, procedures, drugs)

Syrona is designed for multi-site comparisons where you want to understand how prevalence patterns differ between institutions, countries, or data sources.

Installation

# From GitHub:
# install.packages("remotes")
remotes::install_github("HealthInformaticsUT/syrona")

Dependencies

Quick start

1. Connect to a database

library(syrona)

# PostgreSQL (the typical production CDM; e.g. via SSH tunnel).
# Omit `password` and set PGPASSWORD in ~/.Renviron, or use ~/.pgpass.
db <- syrona_connect_pg(
  dbname = "omop",
  user = "analyst",
  cdm_schema = "cdm",
  write_schema = "results_analyst"
)

# Or a local DuckDB file (read-only by default)
db <- syrona_connect("path/to/omop.duckdb")

2. Extract a dataset

# Extract all three domains
tables <- extract_all("Dataset_A", db = db)

# Or a single domain (faster for large databases)
tables <- extract_all("Dataset_A", db = db, domains = "conditions")

3. Compare two datasets

# After extracting both datasets:
compare_all("Dataset_A", "Dataset_B")

4. Disconnect

syrona_disconnect(db)

Output structure

Syrona writes CSV files to two directories:

data/
  sources/                        # Phase 1: extracted datasets
    Dataset_A/
      _metadata.csv
      condition_prevalence.csv    # concept x year x sex x age_group
      condition_info.csv          # concept metadata
      condition_chapters.csv      # SNOMED/ICD-10 chapter assignments
      condition_attributes.csv    # SNOMED relationship targets
      demographics.csv            # birth year x sex counts
      death_counts.csv            # deaths by stratum
      ...                         # same pattern for procedures + drugs
    Dataset_B/
      ...
  comparisons/                    # Phase 2-3: comparison results
    Dataset_A_vs_Dataset_B/
      _metadata.csv
      condition_yearly.csv        # per-stratum prevalence ratios
      condition_meta_agegroups.csv # meta across years
      condition_meta_by_sex.csv   # meta across age groups
      condition_meta_summary.csv  # final summary (one row per concept)
      ...                         # same pattern for procedures + drugs

Next steps

mirror server hosted at Truenetwork, Russian Federation.