1. From Data Points to Public Health
12,000 patients with a diabetes diagnosis in your health system. How many of them had an HbA1c test in the last 12 months? If you can’t answer that question in under a minute, you have a population health problem. The challenge isn’t data - it’s aggregation. A “Diabetes” diagnosis in one clinic is coded as a specific ICD-10 subtype in billing, a SNOMED concept in the EHR, and possibly a local code in a legacy system. Counting “all diabetics” means resolving hundreds of concept codes across vocabularies into a single, comprehensive set. Do the same for HbA1c measurements. Then query across millions of records. Manually, this takes weeks. By the time you have your answer, the care gap has widened. OMOPHub makes the vocabulary resolution fast. It’s a REST API for the OHDSI ATHENA vocabularies - SNOMED, ICD-10, LOINC, RxNorm, and 100+ others. Its hierarchy API lets you take a broad concept like “Type 2 Diabetes Mellitus” and retrieve every descendant code in a single call - all the specific subtypes, complications, and variants. Its search API handles fuzzy and semantic matching for disparate local names. Its mappings API resolves across vocabularies. The pattern is simple: define your clinical concept at a high level, expand it into a comprehensive concept set via OMOPHub, and plug that set into your OMOP CDM SQL queries. That turns population health questions into answerable queries - and care gaps into actionable lists.2. The Core Concept: Rolling Up the Hierarchy
Population health analytics lives and dies on aggregation. You don’t want to count 500 individual respiratory infection codes separately - you want to count “Respiratory Infections” as a category, knowing it captures everything underneath. The OMOP vocabulary hierarchy is built for this. Every specific concept has parent concepts linked by “Is a” relationships, forming a tree. “Streptococcal pneumonia” Is a “Bacterial pneumonia” Is a “Pneumonia” Is a “Respiratory tract infection.” If you query for the parent, and include all its descendants, you catch everything. OMOPHub’shierarchy.descendants() does this traversal via API. Give it a concept ID and a depth, and it returns every child, grandchild, and great-grandchild in the hierarchy. This is the “roll-up” - and it’s the foundation of every use case in this article.
It works at any level of granularity:
- Broad: “Cardiovascular disease” → hundreds of descendant conditions
- Medium: “Type 2 Diabetes Mellitus” → dozens of specific subtypes
- Narrow: “Atrial fibrillation” → a handful of specific variants
3. Use Case A: Identifying Gaps in Care (The “Diabetes Screening” Gap)
The most actionable application of population health: finding patients who should be getting care but aren’t. The Scenario: Your health system wants to identify all patients with a Diabetes diagnosis who haven’t had an HbA1c test in the last 12 months. These patients are your outreach targets. The Workflow: Use OMOPHub to build two concept sets (all Diabetes condition codes, all HbA1c measurement codes), then plug them into an OMOP CDM SQL query.Python
4. Use Case B: Disease Surveillance Across Heterogeneous Sources
Public health surveillance requires aggregating data from dozens of hospitals, each with different coding practices. The goal: detect trends in broad disease categories regardless of how the source data was coded. The Scenario: You’re monitoring “Flu-like Illness” across 50 hospitals. Some report in ICD-10-CM, some in SNOMED, and some use local codes. You need a single surveillance count. The Workflow:- Build a surveillance concept set for “Respiratory tract infection” by expanding the hierarchy
- For incoming standard codes (ICD-10, SNOMED), look them up in OMOPHub and check if they’re in the set
- For local/proprietary codes, flag for manual mapping (OMOPHub can’t resolve these)
Python
5. Risk Stratification: Beyond Simple Counts
Two patients both have “Type 2 Diabetes.” One is well-controlled with no complications. The other has diabetic retinopathy, chronic kidney disease, and a prior MI. They need very different levels of care - but a simple count treats them identically. Risk stratification means identifying which patients carry comorbidities and complications that increase their risk. OMOPHub helps by building complication concept sets programmatically.Python