OpenEMR ClaimRev Connect Module
The ClaimRev Connect module integrates ClaimRev's clearinghouse services directly into OpenEMR, giving practices access to claims processing, eligibility verification, ERA downloads, payment posting, reconciliation, patient balance management, and analytics — all without leaving their EHR.
Table of Contents
Download and Installation
Requirements
Download
Download the latest version of the ClaimRev Connect module:
Current Version: 2.0.0
Note: If you do not yet have a ClaimRev account, visit claimrev.com or contact us at sales@claimrev.com to get started.
Installation Steps
Download the oe-module-claimrev-connect.zip file above.
Log into OpenEMR as an administrator.
Navigate to Modules > Manage Modules.
Click the Install tab, then click Upload Module and select the downloaded zip file.
After upload completes, find ClaimRev Connect in the module list and click Install.
Once installed, click Enable to activate the module.
Navigate to ClaimRev Connect > Setup and click Run Upgrade to create the required database tables.
—
Configuration
After enabling the module, you need to configure your ClaimRev API credentials.
Navigate to Admin > Config > Connectors.
Scroll to the ClaimRev Settings section.
Enter the following values provided by ClaimRev:
Click Save to store your settings.
Tip: To verify your connection, navigate to the ClaimRev module and click the Connectivity tab for a connection status check. Contact ClaimRev support if you need your API credentials.
—
Features
Dashboard
The Home tab is a KPI dashboard that gives billers a one-glance overview of the entire revenue cycle. It refreshes every time you open the module.
Claim Pipeline
Claims In Flight — Encounters billed and awaiting payer response
Pending ERAs — ERAs received from ClaimRev but not yet posted to OpenEMR
Rejected / Denied — Claims denied in the last 90 days
Clean Claim Rate — Percentage of claims accepted on first pass (90-day window). Color-coded: green (≥95%), yellow (90-94%), red (<90%)
Accounts Receivable
Total AR — Sum of all outstanding balances, with the amount over 90 days shown below
Avg Days in AR — Average age of outstanding balances. Color-coded: green (≤35 days), yellow (36-50), red (>50)
Collections This Month — Total payments received this month, with last month shown for comparison
Collections This Quarter — Quarterly total
Denials
Patient Responsibility
Quick Actions
Direct links to Search Claims, Payment Advice, Reconciliation, Claim Status, and Denial Analytics.
Claims Submission
The module enables electronic claim submission (837P/837I/837D) to payers through ClaimRev.
Claims are submitted from the OpenEMR billing manager
Claim status and errors are viewable in the ClaimRev Claims tab
Claims can be marked as worked after review
CSV export of claim search results is available
Claims Tab
The Claims tab provides a searchable view of claims submitted through ClaimRev, with integrated OpenEMR status tracking and actions.
Search and Filtering
Search for claims using any combination of:
Patient name (first and/or last)
Date range (service date or received date)
Payer name or payer number
Patient control number (PCN) — format is pid-encounter
Claim status (e.g., Accepted, Rejected, Pending)
Billing provider NPI
OpenEMR Status Integration
Each claim row displays the OpenEMR claim status alongside the ClaimRev status. This lets you see at a glance whether the two systems agree. OpenEMR statuses include:
| Status | Badge Color | Meaning |
| Not Billed | Gray | Claim has not been sent |
| Unbilled | Light | Claim is queued but not yet sent |
| Billed | Green | Claim has been submitted |
| Crossover | Blue | Crossover claim submitted |
| Denied | Red | Claim was denied |
Actions
Each claim row provides action buttons:
Open Encounter (folder icon, blue) — Opens the OpenEMR encounter directly in a new tab, allowing you to review charges, notes, and clinical documentation.
Sync Status (sync icon, red) — Appears when ClaimRev shows a claim as rejected but OpenEMR still shows it as billed. Clicking this updates the OpenEMR claim status to Denied and records the rejection reason from ClaimRev in the claim's process file. This saves manual data entry when payers reject claims.
Requeue for Billing (redo icon, yellow) — Reopens the encounter for billing so it can be corrected and resubmitted. This resets the billing flags and creates a new claim version with status Unbilled, placing it back in the billing queue.
Detail View
Click on any claim row to expand it and see:
Full ClaimRev claim details (status, payer acceptance, ERA classification)
OpenEMR status information
Direct link to the encounter in OpenEMR
Link to view the claim in the ClaimRev portal
Payment Advice
The Payment Advice tab allows you to search for ERA (835) payment advice records from ClaimRev and post them directly into OpenEMR's payment system.
Searching for Payment Advice
Navigate to the Payment Advice tab.
Enter search criteria (date range, payer, trace number, etc.).
Click Search to retrieve matching payment advice records.
Results show the payer name, check/trace number, payment date, total paid amount, and claim count.
Previewing a Payment Advice
Click on a payment advice record to expand it. Each claim line within the ERA shows:
Patient name and control number
Claim status (Paid, Denied, Reversed, Pended, etc.)
Billed amount, allowed amount, paid amount, and adjustments
Service line details with procedure codes and amounts
Posting to OpenEMR
Payment advice records can be posted to OpenEMR to record payments, adjustments, and denials.
Single Claim Posting
Expand a payment advice record to see its claim lines.
Click Preview on an individual claim to see exactly what will be posted.
The preview shows the session details, payment amounts, and adjustment codes that will be created.
Click Post to OpenEMR to post the payment.
After posting, the claim line is marked with a green checkmark.
Batch Posting
Click Batch Post All to post all eligible claims in a payment advice at once.
The system processes each claim and shows a results summary with:
Posted — Successfully posted claims (green)
Skipped — Claims that were already posted or could not be matched (gray)
Errors — Claims that encountered an error during posting (red)
Needs Approval — Reversals and pended claims that require individual review (yellow, see below)
Reversals and Pended Claims
Some claim statuses require special attention before posting:
Reversals (CLP02=22) — These represent a takeaway of a previous payment. Posting a reversal will create a negative payment in OpenEMR. When you click Post on a reversal, a confirmation dialog explains the impact and asks for approval before proceeding.
Pended Claims (CLP02=5) — These indicate the payer is still processing the claim. Posting records the current adjudication info, but amounts may change. A confirmation dialog warns you of this before posting.
In batch mode, reversals and pended claims are not auto-posted. Instead, they are separated into a “Needs Approval” section in the batch results, where you can review each one individually and click Approve & Post to post them one at a time.
What Gets Posted
When an ERA is posted, the following data flows into OpenEMR:
Payments — Insurance payments are recorded in ar_session and ar_activity
Contractual Adjustments — CO (Contractual Obligation) group adjustments reduce the balance
Patient Responsibility Memos — PR (Patient Responsibility) adjustments are recorded as zero-dollar memos with labels like Ins1 dedbl: 150.00, Ins1 coins: 45.00, Ins1 copay: 25.00. These memos are later parsed by the Patient Balance screen to show the PR breakdown.
Insurance Level Close — The last_level_closed flag on the encounter is updated, indicating insurance has finished processing
Test Mode
A Test Mode toggle is available below the search button. When enabled:
The search returns
mock data instead of calling the ClaimRev
API, allowing you to practice the posting workflow without real data.
Posting still writes to OpenEMR (useful for testing with a development database).
Claims are not marked as worked in ClaimRev when test mode is active.
A yellow warning banner is displayed to remind you that test mode is active.
Important: Only use test mode in development or training environments. Do not enable test mode in production with real patient data unless you understand that mock ERA data will be posted to OpenEMR.
Reconciliation
The Reconciliation tab provides a side-by-side comparison of OpenEMR encounters against their status in ClaimRev, helping you identify claims that may need attention.
Purpose
Reconciliation answers questions like:
“Did all my billed claims actually reach ClaimRev?”
“Are there claims rejected in ClaimRev that I haven't updated in OpenEMR?”
“Do I have ERAs showing payment that haven't been posted?”
“Are there denials in the ERA that OpenEMR doesn't reflect?”
How to Use
Navigate to the Reconciliation tab.
Set your search filters:
Date Range — Filter encounters by service date
OpenEMR Status — Choose from:
Billed — Encounters marked as billed or crossover (default)
Denied — Encounters marked as denied
All Billed — All encounters that have entered the billing process
Patient Name — Filter by first and/or last name
Payer Name — Filter by insurance company
Discrepancies Only — Show only encounters where the OE and ClaimRev statuses don't match
Click Search to run the reconciliation.
Summary Cards
At the top of the results, four summary cards show:
Total Encounters — Number of OpenEMR encounters matching your filters
Found in ClaimRev — How many of those encounters were found in ClaimRev
Not in ClaimRev — Encounters that were not found (potential submission issues)
Discrepancies — Encounters where the OE and ClaimRev statuses disagree
Results Table
The comparison table shows each encounter with columns for:
| Column | Description |
| Patient | Patient name |
| Encounter | Encounter number (click to expand details) |
| Service Date | Date of the encounter |
| Payer | Insurance company name |
| Charges | Total billed charges |
| OE Status | Current OpenEMR claim status (color-coded badge) |
| CR Status | ClaimRev claim status |
| ERA | ERA classification from ClaimRev (e.g., Paid, Denied) |
| CR Paid | Amount paid per ClaimRev |
| Issue | Description of the discrepancy, if any |
| Actions | Available action buttons |
Discrepancy Detection
The system automatically detects five types of discrepancies:
| Discrepancy | Severity | Meaning |
| Billed in OpenEMR but not found in ClaimRev | Danger (red) | The claim may not have been submitted successfully |
| Rejected in ClaimRev but still Billed in OpenEMR | Danger (red) | ClaimRev shows the claim was rejected, but OpenEMR hasn't been updated |
| Denied in OpenEMR but Accepted in ClaimRev | Warning (yellow) | OpenEMR shows denied, but ClaimRev shows the payer accepted the claim |
| ERA shows paid but no payment posted in OpenEMR | Warning (yellow) | A payment was received but hasn't been recorded in OpenEMR |
| ERA shows denied but OpenEMR not marked as denied | Warning (yellow) | The ERA indicates a denial that OpenEMR doesn't reflect |
Rows are color-coded: red for danger-level discrepancies, yellow for warnings, and gray for encounters not found in ClaimRev.
Actions
Each row provides action buttons depending on the situation:
Open Encounter — Navigate directly to the encounter in OpenEMR
Sync Status — Update OpenEMR to match ClaimRev's rejection status (appears for rejected claims)
Requeue for Billing — Put the claim back in the billing queue for correction and resubmission
View in Portal — Open the claim in the ClaimRev portal for full details
Detail View
Click on any row to expand a detailed comparison showing:
OpenEMR Info — Claim status, bill time, process file
ClaimRev Info — Claim status, payer acceptance, worked status
ERA Info — ERA classification, payer paid amount
Patient Balance
The Patient Balance tab surfaces encounters with outstanding patient responsibility after insurance has responded. It helps billers identify who owes money and manage the statement workflow.
When Encounters Appear
An encounter appears in the Patient Balance queue when:
Insurance has responded (last_level_closed >= 1 on the encounter)
There is a remaining balance after all payments and adjustments (using the same formula as OpenEMR's collections report: charges + drug sales - payments - adjustments)
Search Filters
Service Date Range — Filter by encounter date
Patient Name — Search by patient first or last name
Payer — Filter by primary insurance company
Min Amount — Only show balances above a threshold (default: $0.01)
Statement Status — Filter by:
All — Show everything
Never Sent — Encounters where no statement has been sent
Sent 1x — Exactly one statement sent
Sent 2+ — Two or more statements sent
In Collection — Encounters marked as in collection
Summary Cards
Total w/ Balance — Number of encounters with outstanding patient balances
Total Amount — Sum of all outstanding patient balances
Never Sent — Encounters needing their first statement
Sent 1x / Sent 2+ — Statement frequency breakdown
In Collection — Encounters flagged for collections
Results Table
| Column | Description |
| Patient | Patient name and date of birth |
| Encounter | Encounter number |
| Service Date | Date of the encounter |
| Payer | Primary insurance |
| Charges | Total billed charges |
| Ins Paid | Total insurance payments |
| Patient Owes | Outstanding balance (bold) |
| Stmts | Statement status badge: “Never Sent” (yellow), count (blue), or “Collections” (red) |
| Last Statement | Date of the most recent statement |
| Actions | Action buttons |
Detail View
Click any row to expand and see:
Patient Responsibility Breakdown — Parsed from the ERA posting memos. Shows the breakdown of why the patient owes money:
Deductible — Amount applied to the patient's deductible
Coinsurance — Patient's coinsurance portion
Copay — Copay amount
Pt Resp — Other patient responsibility amounts
Per-Code Breakdown — Each procedure code with its charge, adjustment, and remaining balance (from OpenEMR's InvoiceSummary)
Statement History — Log of all statements sent for this encounter, with date, method, amount, and who sent it
Actions
Generate Statement (file icon) — Opens OpenEMR's built-in statement tool (sl_eob_search) where you can print or email patient statements
Mark Sent (check icon) — Records that a statement was sent for this encounter. Logs the date, amount, and user to the statement history.
Add Note (sticky note icon) — Add a free-text note to the encounter's statement history
View Ledger (book icon) — Opens the OpenEMR payment ledger for the encounter
Open Encounter (folder icon) — Opens the encounter in OpenEMR
Generate via ClaimRev (cloud icon, disabled) — Placeholder for future ClaimRev statement generation integration
Statement Tracking
The module tracks statements in its own mod_claimrev_patient_statements table. The queue shows whichever count is higher: the module's own count or OpenEMR's native stmt_count on the encounter. This means statements sent through either system are reflected.
Claim Status
The Claim Status tab provides a work-queue style dashboard for tracking claims through their lifecycle, with real-time 276/277 status checks.
Features
Work Queue — Claims sorted by status, showing which need attention
Timeline View — Click any claim to see its full event history: submitted, accepted, rejected, ERA received, payment posted, manual notes
Real-Time Status Check — Send a 276 status inquiry to the payer and get a 277 response showing current claim status
Batch Sync — Sync multiple claims from ClaimRev at once to update local tracking data
Manual Notes — Add notes to any claim's timeline for team communication
Dashboard Stats — Summary cards showing claims by status category
Status Categories
Claims are categorized into actionable groups:
Needs Attention — Rejected, denied, stale (no update in 30+ days), or paid but not posted
In Progress — Submitted, accepted by payer, awaiting adjudication
Completed — Paid and posted, or worked and resolved
AR Aging Report
The AR Aging Report is found under the Analytics dropdown in the navigation bar. It provides a standard 30/60/90/120 day aging breakdown of accounts receivable, grouped by payer.
How to Use
Click Analytics > AR Aging Report in the navigation bar.
Optionally filter by payer name, patient name, or minimum balance amount.
Click Run Report.
Summary Cards
Total AR — Sum of all outstanding balances
Aging Buckets — Dollar amounts in each bucket: 0-30, 31-60, 61-90, 91-120, 120+ days
Payer Count — Number of distinct payers with outstanding balances
Encounter Count — Total encounters with balances
Payer Aging Table
Each row represents a payer and shows:
| Column | Description |
| Payer | Insurance company name (or “Self-Pay”) |
| 0-30 | Balance for encounters 0-30 days old |
| 31-60 | Balance for encounters 31-60 days old |
| 61-90 | Balance for encounters 61-90 days old |
| 91-120 | Balance for encounters 91-120 days old (red text) |
| 120+ | Balance for encounters over 120 days old (bold red) |
| Total | Total AR for this payer |
| Enc | Number of encounters |
| Distribution | Visual bar showing the percentage of AR that is over 90 days old. Green = healthy, yellow = caution, red = problem. |
Payers are sorted by total AR descending — the biggest balances appear first.
CSV Export
Click Export CSV to download the full encounter-level aging data as a spreadsheet. The CSV includes patient name, encounter, service date, payer, age in days, aging bucket, balance, insurance level, and statement count.
Denial Analytics
The Denial Analytics page is found under the Analytics dropdown. It analyzes adjustment and denial patterns to help identify systemic issues with specific payers or procedure codes.
How to Use
Click Analytics > Denial Analytics in the navigation bar.
The report auto-runs on page load showing the last 12 months of data.
Optionally filter by date range or payer name.
Click Analyze to refresh.
Summary Cards
Total Adjustments — Number of individual adjustment line items in the period
Total Adjusted — Dollar amount of all adjustments
Encounters — Number of distinct encounters affected
Payers — Number of distinct payers
Top Adjustment Reasons
The left panel shows the 20 most common adjustment reasons, with:
Reason — The adjustment memo as recorded during ERA posting (e.g., “Adjust code 45”)
CARC Code — The Claim Adjustment Reason Code number, if present
CARC Description — Human-readable description (e.g., “Charge exceeds fee schedule/max allowable”). The module includes descriptions for 30+ common CARC codes.
Count — How many times this adjustment appeared
Amount — Total dollar amount adjusted
Visual bar — Relative frequency compared to the top reason
By Payer
The right panel shows adjustments grouped by payer:
Which payers have the most adjustments
Total adjusted amount per payer
Number of encounters affected per payer
This helps identify payers that are consistently adjusting or denying claims.
Monthly Trend
Below the payer breakdown, a monthly trend table shows adjustment counts and amounts over time, with visual bars. This helps answer: “Are our denials getting better or worse?”
CSV Export
Click Export CSV to download the denial reason data as a spreadsheet for further analysis.
Eligibility Verification
Real-time eligibility verification is available from the patient demographics page.
Available Products
Eligibility - Standard 270/271 eligibility check with benefit details
Coverage Discovery - Find active coverage for a patient
Demographics - Verify patient demographic information with the payer
MBI Finder - Look up a patient's Medicare Beneficiary Identifier
How to Run an Eligibility Check
Open a patient's chart and navigate to the Demographics screen.
In the ClaimRev section, select the payer responsibility tab (Primary, Secondary, etc.).
Select one or more products to check using the checkboxes.
Click Check Now for immediate results, or Queue Check to process in the background.
Results appear in tabbed sections: Quick Info, Deductibles, Benefits, Medicare, and Validations.
Eligibility AI Assistant
The Conversation tab provides an AI-powered assistant that can answer questions about the eligibility response. Ask questions like:
“What is the patient's deductible?”
“Is this patient covered for outpatient services?”
“Summarize the key benefits”
“What are the co-pay amounts?”
Sync to Insurance Card
Eligibility results can be synced to OpenEMR's native Insurance card Eligibility tab by clicking the Sync to Insurance Card button. This populates the standard eligibility verification and benefit tables so the data is visible on the patient dashboard.
ERA Downloads
Electronic Remittance Advice (ERA/835) files from payers can be downloaded and imported into OpenEMR.
X12 Tracker
The X12 Tracker tab shows the history of X12 files (837, 835, 270/271, 276/277, etc.) that have been transmitted through ClaimRev.
View submitted and received X12 files with timestamps
Track file acceptance and rejection status
Download original X12 files for review or troubleshooting
Appointments
The Appointments tab provides visibility into appointment-related data synced with ClaimRev, supporting eligibility verification workflows tied to scheduled visits.
Notifications
Portal notifications from ClaimRev are accessible within the module, keeping you informed of important updates about your claims and account.
—
Compatibility
Supported OpenEMR Versions
The ClaimRev Connect module supports:
The module includes automatic compatibility shims for classes introduced in OpenEMR 8.x (OEGlobalsBag and ServiceContainer). On OpenEMR 7.x, these shims provide equivalent functionality by wrapping $GLOBALS and CryptoGen directly. On 8.x, the shims are never loaded — the native classes are used.
Compatibility Check
To verify the module works correctly on your OpenEMR version:
Navigate to ClaimRev Connect > Connectivity.
Click the Run Compatibility Check button.
A diagnostic page shows the status of each critical component:
OEGlobalsBag — Whether the native class or shim is in use
ServiceContainer — Whether the native class or shim is in use
GlobalConfig and Bootstrap — Whether they instantiate successfully
OpenEMR version and PHP version
If all checks show green, the module is fully operational. If any check shows “Using ClaimRev shim (7.x mode)”, the module is running with compatibility shims — all features work normally.
—
Troubleshooting
Connection Issues
Eligibility Check Returns No Results
Claims Not Appearing in ClaimRev
Confirm the claim was submitted through the OpenEMR billing manager
Check the X12 Tracker tab to verify the 837 file was transmitted
Use the Reconciliation tab to identify claims that were billed in OpenEMR but not found in ClaimRev
Payment Advice Posting Errors
Ensure the encounter exists in OpenEMR and the patient control number matches (format: pid-encounter)
Check that the encounter has not already been fully paid
Review the error message in the posting results for specific details
If using test mode, remember that mock data may not match real encounters
Patient Balance Shows No Results
Make sure ERAs have been posted — the Patient Balance queue only shows encounters where last_level_closed >= 1 (insurance has responded)
Navigate to Setup and click Run Upgrade to ensure the mod_claimrev_patient_statements table exists
Try lowering the Min Amount filter or clearing all filters
Database Upgrade Errors
If you see SQL errors when clicking Run Upgrade on the Setup tab, check the OpenEMR error log for the specific query that failed
The upgrade process is idempotent — it skips tables and rows that already exist, so it is safe to run multiple times
Module Not Appearing
Changelog
Version 2.1.0 (March 2026)
KPI Dashboard — Home tab replaced with a full revenue cycle dashboard showing claim pipeline, AR metrics, collections, denial rates, and patient responsibility at a glance
Patient Balance Queue — New tab showing encounters with outstanding patient responsibility after insurance has responded. Includes PR breakdown (deductible/coinsurance/copay parsed from ERA memos), per-code detail, statement tracking, and actions to generate statements or mark as sent
Claim Status Dashboard — New work-queue tab with claim lifecycle timeline, real-time 276/277 status checks, batch sync, and manual notes
AR Aging Report — New analytics page with 30/60/90/120 day aging buckets grouped by payer, distribution visualization, and CSV export
Denial Analytics — New analytics page analyzing adjustment patterns by reason code, payer, and monthly trend with CARC code descriptions and CSV export
Analytics Dropdown — AR Aging Report and Denial Analytics grouped under an “Analytics” dropdown in the navigation bar
OpenEMR 7.x Compatibility — Built-in compatibility shims allow the module to run on OpenEMR 7.x without modification. A compatibility check tool is available under Connectivity.
Compatibility Check — New diagnostic page (Connectivity > Run Compatibility Check) verifies all module dependencies resolve correctly
Statement Tracking Table — New mod_claimrev_patient_statements database table for tracking statement history per encounter
Version 2.0.0
Claims Tab — Added OpenEMR claim status display, encounter links, status sync (ClaimRev rejected → OE denied), and requeue-for-billing action
Payment Advice — New tab for searching, previewing, and posting ERA/835 payment advice to OpenEMR (single and batch), with approval workflows for reversals and pended claims
Payment Advice Test Mode — Mock data mode for testing the posting workflow without live
API calls
Reconciliation — New tab that compares OpenEMR encounters against ClaimRev statuses with automatic discrepancy detection
X12 Tracker — File transmission history and download
Version 1.0.0
Initial release
Claims submission (837P/I/D)
Real-time eligibility verification (Eligibility, Coverage Discovery, Demographics, MBI Finder)
AI-powered eligibility assistant
ERA file downloads
Portal notifications
Native OpenEMR eligibility sync
—
Support
If you need help with the ClaimRev Connect module: