A Guide to the Epic Clarity Data Model for Analytics in 2026

The Epic Clarity data model is the cornerstone of analytics for any hospital running on Epic. In simple terms, it's a separate, analytics-friendly copy of your organization's clinical and financial data, extracted nightly from the live Epic EHR, known as Chronicles. This separation is crucial-it allows for deep, complex data analysis without ever putting the performance of the live clinical system at risk.
What Is the Epic Clarity Data Model

Think about the sheer volume of data generated in a hospital every second. Doctors, nurses, and schedulers are all working in Epic's primary transactional database, Chronicles, to document patient care in real time. Running a massive, resource-intensive report directly on that live system would be like trying to conduct a detailed inventory in a bustling emergency room-it would grind operations to a halt.
Epic's solution was to create Clarity. Each night, a dedicated ETL (Extract, Transform, Load) process kicks off. It pulls data from the complex, hierarchical structure of Chronicles and re-engineers it into a standard relational SQL database. The result is a clean, stable snapshot of the previous day's activity, perfectly structured for reporting.
The Foundation for Healthcare Analytics
This nightly process is what gives data teams the freedom to do their work. Analysts, researchers, and administrators can run queries, build dashboards, and explore massive datasets without ever worrying about impacting patient care or system performance. Because Clarity uses a relational structure with standard tables and columns, anyone with SQL experience can get up to speed relatively quickly.
The nightly ETL is the heartbeat of the entire analytics environment. It's what ensures that decision-makers have a fresh, comprehensive view of the organization's data every single morning, powering everything from population health studies to financial forecasting.
This approach was a game-changer for healthcare reporting when it was introduced in the early 2000s. It made sifting through enormous patient populations not just possible, but efficient. At Epic user conferences in 2022, some organizations reported that moving their analytics to Clarity led to a 40% reduction in query times compared to older methods of accessing Chronicles data. For a deeper dive, this comprehensive guide to Epic Clarity is a great resource.
Key Benefits and First Steps
Once you start working with Clarity, you can begin connecting different data domains to see the complete picture. It's where you can finally link a patient's demographic information to their clinical encounters, prescribed medications, and billing history. If you're interested in how this works across different systems, our guide on EHR integration strategies provides some valuable context.
For anyone just starting out, here are a few practical tips:
- Mind the Lag: Always remember that Clarity data is, by design, one day behind. If a report needs to be absolutely real-time, Clarity isn't the right tool for the job.
- Focus on Core Tables: The model contains thousands of tables. Don't try to learn them all at once. Start with the foundational ones like PATIENT (demographics), PAT_ENC (encounters), and ORDER_PROC (procedures). These are the building blocks for most analyses.
- Lean on Documentation: Nobody knows every single table and column by heart. Keep Epic's data dictionary open in a browser tab. For more advanced work, like mapping Clarity to standardized vocabularies, resources like the OMOPHub documentation can be a lifesaver.
Navigating Clarity's Core Architecture and Tables

When you first dive into the Epic Clarity data model, its sheer size can be intimidating. With thousands of tables, a common rookie mistake is trying to memorize everything. That’s a losing battle.
A much smarter strategy is to think of Clarity not as a list of tables, but as a city of data. This city is organized into logical neighborhoods, each one corresponding to a different part of the patient's journey. By learning the layout of these neighborhoods, you stop wandering aimlessly and start navigating with purpose.
This mental map is what separates a novice from a true data expert. It’s the key to knowing exactly where to go to find demographic details, trace a clinical encounter, or investigate a billing question.
The Lay of the Land: Major Table Groups
Clarity's structure becomes far more manageable once you understand its primary categories. Getting a handle on these main groups is the first step toward pulling the right data for any analysis.
- Patient Demographics: This is your starting point-the "who" of the story. These tables hold the foundational information about the patient: name, date of birth, contact details, and insurance coverage. It's the central directory for everyone in the system.
- Encounters: This neighborhood documents every interaction a patient has with the health system. It’s the "when and where," capturing everything from a routine annual check-up to an emergency department visit or a multi-day hospital stay.
- Clinical Data: Here’s where you find the "what happened." This broad and vital area holds the granular details of patient care, including diagnoses, procedures, administered medications, lab results, and vital signs.
- Orders: When a provider intends to do something-order a lab, prescribe a medication, or request a referral-that action is recorded here. This group is crucial for tracking the entire lifecycle of care from intent to outcome.
- Billing and Finance: This is where clinical care meets the revenue cycle. These tables manage charges, payments, insurance claims, and account balances, providing the financial narrative that runs parallel to the patient's clinical one.
The real magic happens when you start connecting the dots between these neighborhoods. By joining a patient's demographic record to their encounter history, and then linking that visit to specific lab results, you can piece together a powerful, data-driven story of their entire healthcare experience.
Following the Data Trail with Key Tables
While there are thousands of tables, a handful act as the central hubs-the "Grand Central Stations" of their respective data neighborhoods. Almost any query you write will start with or pass through one of these flagship tables. They provide the primary context and connect out to dozens of other, more specific tables.
To get a better sense of this, here are some of the most important table groups and the key tables that anchor them.
Key Epic Clarity Table Groups and Their Purpose
| Table Group | Purpose | Example Key Tables |
|---|---|---|
| Patient Demographics | Establishes the patient population and their core attributes. | PATIENT, PATIENT_RACE, PATIENT_TYPE |
| Encounters | Records every patient visit, admission, and interaction with the health system. | PAT_ENC, PAT_ENC_HSP |
| Clinical Observations | Stores discrete clinical data like results, vitals, and flowsheet documentation. | ORDER_RESULTS, IP_FLWSHT_REC, IP_FLWSHT_MEAS |
| Orders | Tracks all provider orders for medications, labs, procedures, and other services. | ORDER_PROC, ORDER_MED |
| Billing | Manages the complete financial lifecycle, from charges to payments and adjustments. | HSP_ACCOUNT, HSP_TRANSACTIONS |
Think of these tables as your primary landmarks. For example, a common workflow is to start with the PATIENT table to identify your population. Using the PAT_ID, you can then jump to the PAT_ENC (Patient Encounter) table to find all their visits. From there, the PAT_ENC_CSN_ID becomes your key to unlock everything that happened during a specific visit, like joining to ORDER_PROC to see which procedures were ordered.
This skill-tracing data pathways from one key table to the next-is fundamental to mastering Clarity. As you move on to more complex projects, like mapping your data to a standardized format like the OMOP Common Data Model, this foundational knowledge becomes even more critical. For those taking on such projects, leveraging programmatic tools like the OMOPHub SDKs for Python and R can help automate and validate these intricate data connections.
Fine-Tuning Your Clarity ETL Strategy
For any organization running on Epic, the nightly Clarity ETL process is the heartbeat of your analytics program. This isn't just a routine data transfer; it's a high-stakes, time-sensitive operation that fuels every report, dashboard, and research query your team runs. Getting your ETL strategy right isn't a one-time project. It’s a constant discipline of tuning, validating, and adapting.
Think of it this way: every night, a massive amount of complex clinical and financial data is pulled from Epic's live transactional database, Chronicles. The "Transform" step is where the real magic happens. The data is completely reshaped from its native, hierarchical format into the clean, relational SQL structure we know as Clarity. This nightly job is what unlocks the potential for any meaningful, large-scale analysis.
The Real-World Challenges of Clarity ETL
Anyone who has managed a Clarity environment knows the common headaches. First and foremost, you're always racing against the clock. The nightly ETL window is brutally finite. If jobs run long, they can delay the morning’s critical reports. If they fail, you've got a full-blown data outage on your hands.
Then there’s the constant variable of Epic's own software updates. A seemingly small upgrade can quietly shift the underlying Clarity schema, breaking ETL scripts you thought were rock-solid. This is why just "keeping the lights on" isn't enough. You have to be proactive to survive.
Best Practices for a Bulletproof Pipeline
To keep those nightly jobs running smoothly, your strategy needs to be built for resilience from the ground up. This is less about writing clever SQL and more about a disciplined approach to development and maintenance.
Here are a few hard-won lessons from the field:
- Embrace Incremental Loads: Forget about full data loads-they are a recipe for disaster. Your jobs should be designed from day one to only process records that have changed since the last run. This is the single biggest factor in cutting down processing time and server load.
- Code Defensively with SQL: Make it a team rule: never use
SELECT *. Always specify the exact columns you need. This simple practice prevents your scripts from breaking the moment someone adds a new column to a source table, and it makes your code infinitely more readable. - Don't Fly Blind-Log Everything: Your ETL process shouldn't be a mystery. Implement detailed logging that captures row counts, execution times, and errors for every single step. Pair this with automated alerts that page your team the moment a job fails or runs suspiciously long.
The mark of a truly mature Clarity ETL pipeline is its predictability. Your goal should be to find and fix problems long before your users even know something went wrong. This means putting just as much effort into monitoring and error handling as you do into the transformation logic itself.
The Absolute Must-Do: Data De-identification
When it comes to using clinical data for research or analytics, protecting patient privacy isn't just a best practice-it's a legal and ethical mandate. HIPAA compliance is non-negotiable, and your ETL process is your first and most important line of defense. De-identifying data by removing or masking Protected Health Information (PHI) has to be a fully automated part of your transformation workflow.
Typically, this involves a few core steps:
- Stripping out direct identifiers like patient names, medical record numbers, and street addresses.
- Shifting all dates by a random (but consistent) number of days to preserve durations without exposing actual service dates.
- Generalizing sensitive data, like converting a 5-digit ZIP code to a less-specific 3-digit prefix.
As you’re handling this sensitive work, you'll also need to map thousands of proprietary clinical and billing codes to standardized terminologies. This is a huge challenge in its own right. For a deeper dive into this specific topic, check out our guide on leveraging mapping within ETL pipelines. By building these de-identification and mapping steps directly into your ETL, you ensure the data is clean, compliant, and ready for analysis the moment it lands.
How to Map Clarity Data to the OMOP CDM
Your Epic Clarity data model is an incredibly powerful asset, but it’s built for your organization's specific needs. What happens when you want to join a multi-site research network or use standardized analytical tools? This is the moment when mapping Clarity to the Observational Medical Outcomes Partnership (OMOP) Common Data Model (CDM) shifts from a technical exercise to a strategic necessity.
The goal is to translate your proprietary data structure into an open, globally recognized standard. Think of it like translating your hospital’s unique internal shorthand into a universal language that researchers anywhere can understand. This process is your ticket to collaborating on large-scale studies and unlocking a world of standardized analytics.
From Local Tables to Global Domains
At its core, the mapping process starts by connecting the dots between Clarity's source tables and their OMOP counterparts. This is the foundation of your entire ETL transformation logic.
- A patient visit logged in Clarity's
PAT_ENCtable becomes a new entry in the OMOPVISIT_OCCURRENCEtable. - A procedure captured in
ORDER_PROCfinds its proper place in the OMOPPROCEDURE_OCCURRENCEtable. - A medication dispensed from
ORDER_MEDis mapped over to theDRUG_EXPOSUREtable.
This structural mapping is usually the easy part. The real work, and where most projects get bogged down, is in the vocabulary-translating the thousands of local, custom codes used within Epic into internationally standardized terminologies.
The diagram below gives a high-level view of the ETL strategy for this kind of mapping, breaking it down into the familiar phases of Extract, Transform, and Load.

As you can see, the "Transform" phase is where the magic happens. This is where you perform the crucial vocabulary mapping and data standardization that turns raw source data into analysis-ready information.
The Vocabulary Mapping Challenge
Let's get practical. Imagine your lab uses a specific internal code for a "complete blood count" test. For that data point to be useful in the OMOP CDM, your local code must be mapped to a standard concept, such as a specific LOINC code. Now, multiply that effort by every single diagnosis, procedure, medication, and lab result in your system.
This is, without a doubt, the most time-consuming and error-prone part of the entire ETL process. Manually looking up and maintaining these mappings for millions of records just isn't scalable. It's a recipe for burnout and bad data.
Vocabulary mapping is more than a technical task; it's a scientific one. An incorrect mapping can misrepresent clinical intent, leading to flawed analysis and incorrect research conclusions. Automation and validation are your best defenses against these pitfalls.
Accelerating Mapping with Programmatic Tools
To have any hope of tackling this challenge efficiently, data teams need a reliable, programmatic way to manage vocabulary mappings. This is where services built for this purpose become indispensable. For example, a platform like OMOPHub provides direct API access to the OHDSI ATHENA standardized vocabularies, saving you the headache of hosting and managing them yourself.
For teams mapping Epic data, aligning with standards like SNOMED CT and RxNorm through an API can speed up the ETL process by as much as 50%. This is possible because programmatic queries often return results in under 50ms.
By using the OMOPHub SDKs for Python or R, you can automate the entire vocabulary lookup process. Instead of someone manually searching for codes in a spreadsheet, your ETL script can simply make an API call to find the standard concept for any given local code.
Here’s a quick look at how you could map a list of source codes to standard concepts using the Python SDK.
from omophub import OMOPHub
# Initialize the client with your API key
client = OMOPHub(api_key="YOUR_API_KEY")
# A list of local source codes you want to map
source_codes = ["J03.90", "H52.13", "M19.041"]
source_vocabulary = "ICD10CM"
try:
# Programmatically map source codes to standard concepts
mapped_concepts = client.search.map_source_codes_to_standard(
source_codes=source_codes,
source_vocabulary_id=source_vocabulary
)
for concept in mapped_concepts:
print(f"Source: {concept.source_code} -> Standard: {concept.standard_concept_id} ({concept.standard_concept_name})")
except Exception as e:
print(f"An error occurred: {e}")
This automated approach not only saves hundreds of hours but also makes your mappings more consistent, repeatable, and easier to update as vocabularies evolve.
Practical Tips for a Successful Mapping Project
Getting your mapping right is the difference between a successful OMOP conversion and a frustrating dead end. Here are a few tips from the field.
- Start with Manual Exploration: Before you write a single line of code, get your hands dirty. Use a tool like the OMOPHub Concept Lookup to manually explore the relationships between your most common local codes and their standard vocabulary targets. This builds crucial intuition.
- Focus on High-Value Domains: Don't try to boil the ocean. Begin by mapping your most critical and frequently used domains, like diagnoses (ICD-10 to SNOMED), medications (NDC to RxNorm), and procedures. Get some quick wins to build momentum.
- Establish a Governance Process: What happens when a local code could map to multiple standard concepts? You need a clear process for resolving these ambiguities that involves both data engineers and clinical subject matter experts.
By combining a solid conceptual understanding with powerful automation tools, you can successfully bridge the gap between your local Epic Clarity data model and the global OMOP CDM. For a deeper dive into the target model, you may want to read our in-depth look at the OMOP data model itself.
Getting Real-World Value from Clarity Data

While the technical side of the Epic Clarity data model is complex, its real value isn't found in tables and ETL jobs. It’s about how all that data translates into tangible improvements in the chaotic, high-stakes environment of a hospital. A solid analytics strategy is what turns this raw information into measurable clinical and business wins.
The best healthcare organizations are using Clarity to get straight answers to their toughest questions. This data opens up a window into operational efficiency, financial stability, and patient care quality, revealing opportunities that are otherwise impossible to see.
Improving Operational Efficiency
In a hospital, every second and every square foot of space matters. Clarity analytics gives leaders the hard data they need to optimize how they use their resources, smooth out patient flow, and staff their units intelligently.
- Operating Room Optimization: By digging into surgical case times and turnover rates, hospitals can build smarter, more accurate schedules. This is about more than just convenience; it’s about reducing expensive downtime and getting the most out of a hospital's most valuable assets.
- Reduced Patient Wait Times: Tracing a patient's journey through the emergency department or outpatient clinics helps pinpoint the exact bottlenecks causing delays. This insight allows for process tweaks that get patients seen faster, boosting satisfaction and opening up much-needed capacity.
- Predictive Staffing: By analyzing historical patient census data against actual staffing levels, health systems can get much better at forecasting future demand. This means avoiding the twin problems of being caught understaffed during a surge or paying for overstaffing during lulls.
Strengthening Financial Performance
The financial health of any hospital is directly tied to the performance of its revenue cycle. Clarity provides the granular detail required to diagnose problems, plug revenue leaks, and ensure billing accuracy from start to finish.
The Epic Clarity data model is the analytical backbone for over 2,500 U.S. hospitals. The results speak for themselves. We see organizations using Clarity achieve 30% faster financial close cycles and slash claim denial rates from a painful 12% to just 6%. On the operational side, one study of 1.2 million visits used data from the
HSP_ACCOUNTtable to identify staffing bottlenecks, ultimately cutting overtime costs by 18%.
This kind of detailed insight helps finance teams shift from putting out fires to proactively managing the revenue cycle. When you can continuously monitor key metrics, you can spot negative trends early and step in before they make a serious dent in the bottom line.
Elevating Clinical Quality and Research
Perhaps the most profound impact of Clarity data is its role in improving patient outcomes. The data model is the engine that powers population health dashboards, groundbreaking clinical research, and critical quality improvement programs.
Analysts can build specific patient cohorts-for instance, everyone with diabetes or heart failure-to track outcomes and see if care protocols are actually working as intended. This same data becomes an invaluable resource for clinical researchers working to understand disease patterns and the effectiveness of different treatments.
Of course, getting these answers requires navigating Clarity’s intricate structure. Tools that bridge the gap between complex tables and straightforward questions are becoming essential. For example, an AI Text to SQL Assistant can dramatically simplify the process of pulling data for these kinds of real-world analyses.
By transforming millions of daily EHR entries into a structured, queryable database, Clarity gives organizations the power to turn clinical data into a strategic asset that improves both patient health and the financial stability of the entire system.
Practical Tips and Common Questions about the Epic Clarity Data Model in 2026
If you’ve spent any time working in the Epic data ecosystem, you know certain questions pop up again and again. Whether you’re an analyst, a data engineer, or a clinical leader, navigating the path from raw data to real insight involves a few common hurdles.
Let’s tackle some of the most persistent questions we hear from teams on the ground.
What Is the Difference Between Epic Clarity and Caboodle?
This is easily the most common point of confusion, but the distinction is pretty straightforward once you get it. The best analogy is that Clarity is the exhaustive encyclopedia, while Caboodle is the curated collection of greatest hits.
Clarity is a direct, nightly pull from Epic’s live Chronicles database. It's structured as a normalized relational database (3NF), meaning the data is broken down into hundreds of interconnected tables to avoid redundancy. This structure is incredibly powerful for deep, granular research. If you need to trace every single event in a patient’s journey or troubleshoot an operational workflow, Clarity is where you’ll find the unvarnished truth.
Caboodle, on the other hand, is built from Clarity data. It’s a dimensional data warehouse organized into a star schema. All that granular data from Clarity is pre-processed, summarized, and reorganized for one primary purpose: fast, intuitive analytics. It’s the fuel for your high-level dashboards in tools like Tableau or Power BI and is designed for business users to explore data without writing complex SQL.
- Use Clarity when: You're a researcher doing a deep dive, an analyst needing granular patient-level detail, or you're debugging complex operational issues.
- Use Caboodle when: You're building executive dashboards, enabling self-service analytics for business users, or you need fast query performance on aggregated data.
How Should I Manage Epic's Frequent Updates?
Epic’s regular updates are a fact of life, and they can absolutely wreak havoc on your ETL jobs and reports if you’re not prepared. A reactive approach just won’t cut it; you need a proactive strategy to stay ahead of the changes.
First, never, ever test in production. A dedicated non-production environment is your single most important line of defense. This is where you test new Epic versions against your ETL processes before they go live. Second, write defensive SQL. Using SELECT * is a time bomb. Always explicitly name the columns you need, which prevents your code from breaking when Epic adds, removes, or reorders columns.
The impact of Epic's updates isn't just about table structures; it also changes the underlying terminologies and value sets. This is where a robust version control system like Git for your ETL code becomes non-negotiable. It gives you a clear history of changes and a way to roll back if an update causes unexpected problems.
For vocabulary mapping, this is a place where trying to manage it all manually is a losing battle. A managed service that handles the updates for you is a huge advantage. Tools like OMOPHub are critical here, as they automatically sync with new releases of standard vocabularies like SNOMED and RxNorm. This ensures your mappings remain current, and you can automate the entire process using their SDKs for Python and R.
How Do I Integrate Data from Non-Epic Systems with Clarity?
It's important to remember that Clarity is a walled garden-it only contains data from your organization's Epic instance. But a patient's story rarely starts and ends within a single system. To get that 360-degree view, you'll need to pull in data from lab systems, claims processors, or other EHRs.
This integration can't happen inside Clarity. The standard practice is to create a separate, centralized enterprise data warehouse (EDW) or data lake. You then build ETL pipelines to pull data from Clarity and your other sources into this central hub. The absolute key to making this work is a rock-solid Master Patient Index (MPI). Your MPI is the Rosetta Stone that links a patient’s records across different systems using a single, universal identifier.
This process becomes far more powerful when you map all your sources to a common data model like OMOP. You're still building separate ETL pipelines for each source, but they all land in the same standardized OMOP database. The result is a unified, cohesive patient view that’s immediately ready for large-scale, reproducible analysis.
Where Do I Start with Vocabulary Mapping?
Vocabulary mapping is notorious for being one of the most challenging parts of any healthcare data project. The prospect of translating thousands of proprietary, local codes into standard terminologies is enough to make anyone’s head spin. The key is to not try and boil the ocean.
Start small, focus on impact, and build from there.
- Find Your High-Impact Codes: Don't start with obscure, rarely used terms. Run an analysis on your source data (the
ZC_tables in Clarity are a great place to look) to find the most frequently used local codes for high-value domains like diagnoses, medications, and procedures. - Explore Manually to Build Intuition: Before you try to automate everything, get your hands dirty. Use a tool like the OMOPHub Concept Lookup to manually search for a few of your top codes. This helps you understand the relationships and nuances before you start writing code.
- Automate and Scale: Once you have a feel for the patterns, it’s time to scale. Using an API and SDKs, you can send entire lists of your local codes and programmatically get their standard concept mappings back. You can find detailed code examples for this process in the official documentation at docs.omophub.com.
The effort is well worth it. The insights unlocked by the Epic Clarity data model have a real-world impact on patient care. For instance, a 2024 Epic User Group analysis of 300 facilities showed that using Clarity for precise tracking helped them reduce readmission rates by an average of 12.5% across 8 million patient encounters. You can learn more about the findings from this extensive analysis here.
Ready to streamline your OMOP vocabulary mapping and accelerate your research? With OMOPHub, you can get instant API access to standardized vocabularies without any infrastructure overhead. Generate your free API key and start querying in minutes. Ship faster and build more reliable data pipelines at https://omophub.com.


