--- title: "Introduction" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{a00_introduction} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ## 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 ```{r, eval=FALSE} # From GitHub: # install.packages("remotes") remotes::install_github("HealthInformaticsUT/syrona") ``` ### Dependencies - [CDMConnector](https://CRAN.R-project.org/package=CDMConnector) (\>= 2.0.0) for database access - [omopgenerics](https://CRAN.R-project.org/package=omopgenerics) (\>= 1.3.0) for cohort table operations - [meta](https://CRAN.R-project.org/package=meta) for random-effects meta-analysis - [duckdb](https://CRAN.R-project.org/package=duckdb) for local DuckDB files ## Quick start ### 1. Connect to a database ```{r, eval=FALSE} 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 ```{r, eval=FALSE} # 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 ```{r, eval=FALSE} # After extracting both datasets: compare_all("Dataset_A", "Dataset_B") ``` ### 4. Disconnect ```{r, eval=FALSE} 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 - [Extraction](a01_extraction.html) - detailed extraction guide with all parameters - [Comparison](a02_comparison.html) - comparison pipeline and meta-analysis - [Cohorts](a03_cohorts.html) - OHDSI cohort-based extraction workflows