Syrona compares health datasets built on the OMOP Common Data Model. Given two OMOP CDM databases (or two cohorts within the same database), it:
The output is a set of CSV tables that can be explored in the Syrona dashboard or consumed by downstream 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.
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")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