openemr_manual
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| openemr_manual [2026/03/13 03:19] – [Requirements] brad.sharp | openemr_manual [2026/05/22 22:34] (current) – Fix Method 2: OE Manage Modules has no zip-upload UI for custom modules — extract zip and drop files into custom_modules/ via SFTP instead brad.sharp | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== OpenEMR ClaimRev Connect Module ====== | ====== OpenEMR ClaimRev Connect Module ====== | ||
| - | The **ClaimRev Connect** module integrates ClaimRev' | + | The **ClaimRev Connect** module integrates ClaimRev' |
| ===== Table of Contents ===== | ===== Table of Contents ===== | ||
| Line 7: | Line 7: | ||
| - [[# | - [[# | ||
| - [[# | - [[# | ||
| + | - [[# | ||
| - [[#Claims Submission|Claims Submission]] | - [[#Claims Submission|Claims Submission]] | ||
| + | - [[#Claims Tab|Claims Tab]] | ||
| + | - [[#Payment Advice|Payment Advice]] | ||
| + | - [[# | ||
| + | - [[#Patient Balance|Patient Balance]] | ||
| + | - [[#Claim Status|Claim Status]] | ||
| + | - [[#AR Aging Report|AR Aging Report]] | ||
| + | - [[#Denial Analytics|Denial Analytics]] | ||
| + | - [[# | ||
| - [[# | - [[# | ||
| - [[#ERA Downloads|ERA Downloads]] | - [[#ERA Downloads|ERA Downloads]] | ||
| + | - [[#X12 Tracker|X12 Tracker]] | ||
| + | - [[# | ||
| + | - [[#Calendar Eligibility Indicators|Calendar Eligibility Indicators]] | ||
| + | - [[# | ||
| - [[# | - [[# | ||
| + | - [[# | ||
| - [[# | - [[# | ||
| - [[# | - [[# | ||
| Line 19: | Line 33: | ||
| ==== Requirements ==== | ==== Requirements ==== | ||
| - | * OpenEMR **8.0.0** or later | + | * OpenEMR **7.0.0** or later (8.x recommended) |
| * PHP **8.2** or later | * PHP **8.2** or later | ||
| * An active ClaimRev account with API credentials | * An active ClaimRev account with API credentials | ||
| - | ==== Download | + | ==== Choose Your Install Method |
| - | Download the latest version of the ClaimRev Connect module: | + | The ClaimRev Connect module |
| - | **Current Version: | + | **Current Version: |
| - | ~~NOTOC~~ | + | === Method 1: Composer (Recommended) === |
| - | | **Module File** | {{ : | + | If you have CLI access to your OpenEMR |
| - | | **Released** | March 12, 2026 | | + | |
| - | | **Changelog** | See [[# | + | |
| - | **Note:** If you do not yet have a ClaimRev account, visit [[https://www.claimrev.com|claimrev.com]] | + | <code bash> |
| + | cd /path/to/ | ||
| + | composer require claimrevolution/ | ||
| + | sudo systemctl reload php-fpm | ||
| + | </ | ||
| - | ==== Installation Steps ==== | + | Composer downloads the latest v2.1.x release, drops it into '' |
| - | - Download the **oe-module-claimrev-connect.zip** file above. | + | To **update** the module later: |
| - | - Log into OpenEMR | + | |
| - | - Navigate | + | <code bash> |
| - | - Click the **Install** | + | composer update claimrevolution/ |
| - | - After upload completes, find **ClaimRev Connect** | + | sudo systemctl reload php-fpm |
| - | - Once installed, click **Enable** to activate the module. | + | </ |
| + | |||
| + | === Method 2: Manual File Drop (Shared Hosting / No CLI) === | ||
| + | |||
| + | OpenEMR' | ||
| + | |||
| + | - Download the current release | ||
| + | - Unzip it locally. You should see a folder named '' | ||
| + | - Connect to your OpenEMR server with SFTP, FTP, or your hosting control panel' | ||
| + | - Upload the entire '' | ||
| + | - Continue with [[# | ||
| + | |||
| + | **Note:** Updates with this method are the same flow — replace the contents of the '' | ||
| + | |||
| + | === Method 3: Release Tarball === | ||
| + | |||
| + | If you installed OpenEMR via an official release tarball that already bundles '' | ||
| + | |||
| + | ==== Activation (all methods) ==== | ||
| + | |||
| + | - In OpenEMR, navigate | ||
| + | - Find **ClaimRev Connect** in the module list. Click **Install**, | ||
| + | - Navigate to **ClaimRev Connect | ||
| + | |||
| + | **Note:** If you do not yet have a ClaimRev account, visit [[https:// | ||
| --- | --- | ||
| Line 62: | Line 102: | ||
| - Click **Save** to store your settings. | - Click **Save** to store your settings. | ||
| - | **Tip:** To verify your connection, navigate to the ClaimRev module and check for a successful | + | **Tip:** To verify your connection, navigate to the ClaimRev module and click the **Connectivity** tab for a connection status |
| --- | --- | ||
| ===== Features ===== | ===== 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: | ||
| + | |||
| + | === 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: | ||
| + | * **Collections This Month** — Total payments received this month, with last month shown for comparison | ||
| + | * **Collections This Quarter** — Quarterly total | ||
| + | |||
| + | === Denials === | ||
| + | * **Denial Rate** — Percentage of claims denied vs. total processed (90-day window) | ||
| + | * **Top Adjustment Reasons** — The five most common adjustment reasons from posted ERAs | ||
| + | |||
| + | === Patient Responsibility === | ||
| + | * **Patient AR** — Total outstanding patient balances (encounters where insurance has responded) | ||
| + | * **Need Statements** — Encounters with a patient balance that have never had a statement sent | ||
| + | |||
| + | === Quick Actions === | ||
| + | Direct links to Search Claims, Payment Advice, Reconciliation, | ||
| ==== Claims Submission ==== | ==== Claims Submission ==== | ||
| - | The module enables electronic claim submission (837P/837I/837D) to payers through ClaimRev. | + | The module enables electronic claim submission (837P/837I) to payers through ClaimRev. |
| * Claims are submitted from the OpenEMR billing manager | * Claims are submitted from the OpenEMR billing manager | ||
| Line 76: | Line 143: | ||
| * Claims can be marked as worked after review | * Claims can be marked as worked after review | ||
| * CSV export of claim search results is available | * 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 '' | ||
| + | * 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' | ||
| + | * **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**, | ||
| + | |||
| + | === 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' | ||
| + | |||
| + | === 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, | ||
| + | |||
| + | == 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" | ||
| + | |||
| + | == What Gets Posted == | ||
| + | When an ERA is posted, the following data flows into OpenEMR: | ||
| + | |||
| + | * **Payments** — Insurance payments are recorded in '' | ||
| + | * **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 '' | ||
| + | * **Insurance Level Close** — The '' | ||
| + | |||
| + | === Test Mode === | ||
| + | When the **Enable Test Mode** global is on (Admin > Globals > ClaimRev Connect), the Payment Advice, ERA, and Reconciliation pages return **mock data** generated from local OpenEMR billing rows. Useful for demos, training, and posting-workflow rehearsal without hitting the live ClaimRev API. | ||
| + | |||
| + | * Posting still writes to OpenEMR — useful when running against a development database. | ||
| + | * Claims are **not** marked as worked in ClaimRev while the global is on. | ||
| + | * Reconciliation row actions (Sync rejected status, Requeue) short-circuit to a fake-success response. | ||
| + | * ERA Download returns a 0-byte placeholder file. | ||
| + | |||
| + | **Important: | ||
| + | |||
| + | ==== 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' | ||
| + | * "Do I have ERAs showing payment that haven' | ||
| + | * "Are there denials in the ERA that OpenEMR doesn' | ||
| + | |||
| + | === 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, | ||
| + | | 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' | ||
| + | |||
| + | Rows are color-coded: | ||
| + | |||
| + | === 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' | ||
| + | * **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, | ||
| + | |||
| + | ==== 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 ('' | ||
| + | * There is a remaining balance after all payments and adjustments (using the same formula as OpenEMR' | ||
| + | |||
| + | === 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 " | ||
| + | | 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' | ||
| + | * **Coinsurance** — Patient' | ||
| + | * **Copay** — Copay amount | ||
| + | * **Pt Resp** — Other patient responsibility amounts | ||
| + | * **Per-Code Breakdown** — Each procedure code with its charge, adjustment, and remaining balance (from OpenEMR' | ||
| + | * **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' | ||
| + | * **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' | ||
| + | * **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 '' | ||
| + | |||
| + | ==== 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' | ||
| + | * **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/ | ||
| + | |||
| + | === 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 " | ||
| + | | 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., " | ||
| + | * **CARC Code** — The Claim Adjustment Reason Code number, if present | ||
| + | * **CARC Description** — Human-readable description (e.g., " | ||
| + | * **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. | ||
| + | |||
| + | ==== Recoupment Report ==== | ||
| + | |||
| + | The **Recoupment Report** is found under the **Analytics** dropdown. It identifies claims where payments were reversed (recouped) — typically from Medicare reprocessing or payer take-backs — and tracks whether a reprocessed payment has been received. | ||
| + | |||
| + | === Purpose === | ||
| + | When Medicare or another payer reprocesses a claim, they often reverse the original payment (a " | ||
| + | * "Which claims had payments taken back?" | ||
| + | * "Has the reprocessed payment come through yet?" | ||
| + | * "What is the net financial impact of these recoupments?" | ||
| + | * "Which recoupments are still pending a reprocessed payment?" | ||
| + | |||
| + | === How to Use === | ||
| + | - Click **Analytics > Recoupment Report** in the navigation bar. | ||
| + | - Set your filters: | ||
| + | * **Date Range** — Filter recoupments by post date (defaults to the last 6 months) | ||
| + | * **Payer** — Filter by payer name | ||
| + | * **Patient** — Filter by patient name | ||
| + | - Click **Run Report**. | ||
| + | |||
| + | === Summary Cards === | ||
| + | * **Recoupments** — Total number of recoupment events found | ||
| + | * **Total Recouped** — Dollar amount taken back by payers (shown in red) | ||
| + | * **Reprocessed** — Dollar amount received in reprocessed payments (shown in green) | ||
| + | * **Net Impact** — Difference between recouped and reprocessed amounts, shown as a gain or loss. The card border is color-coded: | ||
| + | * **Pending Reprocess** — Number of recoupments where no reprocessed payment has been received yet (shown in yellow) | ||
| + | |||
| + | === Results Table === | ||
| + | |||
| + | | **Column** | **Description** | | ||
| + | | Patient | Patient name and date of birth | | ||
| + | | Encounter | Encounter number | | ||
| + | | Service Date | Date of the encounter | | ||
| + | | Payer | Insurance company name | | ||
| + | | Code | Procedure code affected | | ||
| + | | Original Paid | Total of payments received before the recoupment | | ||
| + | | Recouped | Amount taken back (shown in red) | | ||
| + | | Reprocessed | Amount received after recoupment (green), or " | ||
| + | | Net Impact | Gain or loss from the recoupment cycle (bold, color-coded) | | ||
| + | | Balance | Current encounter balance | | ||
| + | | Status | **Reprocessed** (green badge) or **Pending** (yellow badge) | | ||
| + | |||
| + | Rows with a " | ||
| + | |||
| + | === Detail View === | ||
| + | Click any row to expand a three-column detail panel: | ||
| + | |||
| + | * **Recoupment Details** — The recoupment date, amount, check reference, check date, and memo from the '' | ||
| + | * **Original Payments** — Table of all positive payments posted before the recoupment, with date, amount, and reference number | ||
| + | * **Reprocessed Payments** — Table of positive payments posted after the recoupment date. If none exist, a warning message is shown: "No reprocessed payment found yet. Medicare may still be processing, or the new ERA has not been posted." | ||
| + | |||
| + | === How It Works === | ||
| + | The report queries '' | ||
| + | - All positive payments on the same encounter posted **before** the recoupment date → classified as " | ||
| + | - All positive payments posted **after** the recoupment date → classified as " | ||
| + | |||
| + | This classification helps billers understand the full payment lifecycle for reprocessed claims. | ||
| + | |||
| + | === CSV Export === | ||
| + | Click **Export CSV** to download the report as a spreadsheet. The CSV includes: Patient, Encounter, Service Date, Payer, Code, Original Paid, Recoup Amount, Recoup Date, Reference, Reprocessed, | ||
| ==== Eligibility Verification ==== | ==== Eligibility Verification ==== | ||
| Line 86: | Line 539: | ||
| * **Demographics** - Verify patient demographic information with the payer | * **Demographics** - Verify patient demographic information with the payer | ||
| * **MBI Finder** - Look up a patient' | * **MBI Finder** - Look up a patient' | ||
| + | |||
| + | **Note:** Eligibility, | ||
| === How to Run an Eligibility Check === | === How to Run an Eligibility Check === | ||
| Line 92: | Line 547: | ||
| - Select one or more products to check using the checkboxes. | - Select one or more products to check using the checkboxes. | ||
| - Click **Check Now** for immediate results, or **Queue Check** to process in the background. | - Click **Check Now** for immediate results, or **Queue Check** to process in the background. | ||
| - | - Results appear in tabbed sections: Quick Info, Deductibles, | + | - Results appear in tabbed sections: Quick Info, Deductibles, |
| + | |||
| + | === Patients With No Insurance === | ||
| + | Coverage Discovery, Demographics, | ||
| + | |||
| + | === Reset Cached Results === | ||
| + | A red **Reset** button next to **Check Now** clears every cached eligibility row for the current patient (across all payer responsibilities). Useful when re-testing a fresh check or after fixing patient demographics that produced a bad result. The button asks for confirmation before deleting. | ||
| === Eligibility AI Assistant === | === Eligibility AI Assistant === | ||
| Line 110: | Line 571: | ||
| * Search for available ERA files by date range | * Search for available ERA files by date range | ||
| * Download individual files for import into the OpenEMR billing system | * Download individual files for import into the OpenEMR billing system | ||
| + | * When **Enable Test Mode** is on, the ERA tab returns mock search results from local billing data and the Download button returns a 0-byte placeholder file. | ||
| + | |||
| + | ==== 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 a comprehensive view of upcoming appointments with integrated eligibility verification, | ||
| + | |||
| + | === Search and Filtering === | ||
| + | Filter appointments using any combination of: | ||
| + | * **Date Range** — Start and end date (defaults to today through 7 days out) | ||
| + | * **Facility** — Filter by service location | ||
| + | * **Provider** — Filter by rendering provider | ||
| + | * **Eligibility Status** — Filter by: | ||
| + | * **All** — Show all appointments | ||
| + | * **Needs Attention** — Appointments with no eligibility check, errors, or stale results | ||
| + | * **Active Coverage** — Appointments where eligibility returned successfully | ||
| + | * **Not Checked** — Appointments with no eligibility record at all | ||
| + | * **Stale** — Appointments where the eligibility check is older than the configured stale threshold | ||
| + | |||
| + | === Results Table === | ||
| + | Each appointment row displays: | ||
| + | |||
| + | | **Column** | **Description** | | ||
| + | | Checkbox | Select for bulk actions | | ||
| + | | Date | Appointment date | | ||
| + | | Time | Appointment start time | | ||
| + | | Patient | Patient last name, first name | | ||
| + | | DOB | Patient date of birth | | ||
| + | | Provider | Rendering provider | | ||
| + | | Facility | Service location | | ||
| + | | Eligibility Status | Color-coded status: Active Coverage (green), Pending (orange), Error (red), Not Checked (gray). Payer name and response messages are shown below the status. | | ||
| + | | Last Checked | Date/time of the most recent eligibility check, or " | ||
| + | | Actions | Per-row action buttons | | ||
| + | |||
| + | === Actions === | ||
| + | * **Check Now** — Immediately runs an eligibility check for the appointment via AJAX and updates the status in-place without a page reload. Shows a spinner while processing. | ||
| + | * **Queue** — Queues the eligibility check for background processing by the send/ | ||
| + | * **Queue Selected** — Queues all checked appointments (or all if none are checked) for background eligibility processing. | ||
| + | * **Check Now Selected** — Runs immediate eligibility checks for all checked appointments in parallel via AJAX, updating each row's status as results come back. | ||
| + | |||
| + | === Detail View === | ||
| + | For appointments with completed eligibility results, an expandable detail row shows the full eligibility response including the quick info summary with benefit details parsed from the 271 response. | ||
| + | |||
| + | ==== Calendar Eligibility Indicators ==== | ||
| + | |||
| + | When enabled, color-coded indicators appear on appointment blocks in the main OpenEMR calendar, giving providers and staff an at-a-glance view of each patient' | ||
| + | |||
| + | === How It Works === | ||
| + | The module hooks into the calendar' | ||
| + | |||
| + | | **Color** | **CSS Class** | **Meaning** | | ||
| + | | Green | '' | ||
| + | | Red | '' | ||
| + | | Yellow | '' | ||
| + | | Blue | '' | ||
| + | |||
| + | === Performance === | ||
| + | Eligibility data for all patients visible on the calendar is loaded in a single batch query, minimizing database overhead. However, on very busy calendars with many appointments, | ||
| + | |||
| + | === Configuration === | ||
| + | * Navigate to **Admin > Config > Connectors > ClaimRev Connect** | ||
| + | * Set **Enable Calendar Eligibility Indicators** to //Yes// | ||
| + | * The stale threshold is controlled by the **Eligibility Age To Stale** setting (in days) | ||
| + | |||
| + | ==== Eligibility Sweep ==== | ||
| + | |||
| + | The Eligibility Sweep is an automated background service that proactively queues eligibility checks for upcoming appointments on a scheduled basis, ensuring patients have current coverage verification before they arrive. | ||
| + | |||
| + | === How It Works === | ||
| + | - The sweep runs as a background service once per day (every 1440 minutes). | ||
| + | - On each run, it checks whether today is one of the configured sweep days. | ||
| + | - If it is a sweep day, it looks ahead N days for appointments where eligibility is: | ||
| + | * **Missing** — No eligibility record exists (never checked) | ||
| + | * **In Error** — Previous check returned an error | ||
| + | * **Stale** — Results are older than the configured stale threshold | ||
| + | - Appointments already queued ('' | ||
| + | - Matching appointments are queued for the existing eligibility send/ | ||
| + | |||
| + | === Configuration === | ||
| + | Navigate to **Admin > Config > Connectors > ClaimRev Connect** and configure: | ||
| + | |||
| + | | **Setting** | **Description** | **Default** | | ||
| + | | Enable Eligibility Sweep | Turn the sweep service on or off | Off | | ||
| + | | Sweep Days | Comma-separated day numbers: 0=Sun, 1=Mon, 2=Tue, 3=Wed, 4=Thu, 5=Fri, 6=Sat | 1,4 (Mon, Thu) | | ||
| + | | Sweep Lookahead Days | Number of days ahead to check for appointments | 7 | | ||
| + | |||
| + | The stale threshold is shared with other eligibility features and is controlled by the **Eligibility Age To Stale** setting. | ||
| + | |||
| + | === Example === | ||
| + | With the default settings (sweep on Monday and Thursday, 7-day lookahead): | ||
| + | * On Monday morning, the sweep queues eligibility checks for all appointments through the following Monday. | ||
| + | * On Thursday, it queues checks for appointments through the following Thursday. | ||
| + | * Appointments that already have fresh eligibility results are skipped. | ||
| + | |||
| + | This ensures that by the time a patient arrives, their eligibility has been verified within the last few days. | ||
| ==== Notifications ==== | ==== Notifications ==== | ||
| Portal notifications from ClaimRev are accessible within the module, keeping you informed of important updates about your claims and account. | 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 ships as a **single binary** covering: | ||
| + | * **OpenEMR 8.x** (master and the 8.0.x patch line) — verified against '' | ||
| + | * **OpenEMR 7.x** (7.0.0 and later) — verified against '' | ||
| + | |||
| + | The '' | ||
| + | |||
| + | === Shimmed Components === | ||
| + | |||
| + | | **Component** | **What the shim does on older cores** | | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | ==== 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: | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * OpenEMR version and PHP version | ||
| + | |||
| + | If all checks show green, the module is fully operational. If any check shows "Using ClaimRev shim", the module is running with compatibility shims — all features work normally. | ||
| --- | --- | ||
| Line 123: | Line 722: | ||
| * Ensure your server can reach the ClaimRev API endpoint (check firewall rules) | * Ensure your server can reach the ClaimRev API endpoint (check firewall rules) | ||
| * Check the OpenEMR error log for detailed error messages | * Check the OpenEMR error log for detailed error messages | ||
| + | * Use the **Connectivity** tab in the module to test your connection | ||
| ==== Eligibility Check Returns No Results ==== | ==== Eligibility Check Returns No Results ==== | ||
| Line 128: | Line 728: | ||
| * Ensure the payer is enrolled for eligibility transactions — see [[payer_enrollment|Payer Enrollments]] | * Ensure the payer is enrolled for eligibility transactions — see [[payer_enrollment|Payer Enrollments]] | ||
| * Check that the subscriber ID and patient demographics are accurate | * Check that the subscriber ID and patient demographics are accurate | ||
| + | |||
| + | ==== "Error communicating with server" | ||
| + | * Most common cause is the upstream ClaimRev API taking longer than the script' | ||
| + | * Click **Reset** next to **Check Now** to clear cached results and try again. A retry usually succeeds because the previous request finished server-side after the browser gave up. | ||
| + | * If the error reproduces every time on a specific patient, capture the OpenEMR error log entry around the failed check (see **Connectivity** for log location) and contact ClaimRev support. | ||
| + | |||
| + | ==== 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: '' | ||
| + | * 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 '' | ||
| + | * Navigate to **Setup** and click **Run Upgrade** to ensure the '' | ||
| + | * Try lowering the **Min Amount** filter or clearing all filters | ||
| + | |||
| + | ==== Calendar Indicators Not Showing ==== | ||
| + | * Verify the **Enable Calendar Eligibility Indicators** setting is turned on in **Admin > Config > Connectors > ClaimRev Connect** | ||
| + | * Make sure the module is fully configured (API credentials set) — calendar indicators only register when the module is configured | ||
| + | * Check that patients have eligibility records in the system — appointments for patients with no eligibility data will show a yellow (unchecked) indicator | ||
| + | * Clear your browser cache and reload the calendar | ||
| + | |||
| + | ==== Eligibility Sweep Not Running ==== | ||
| + | * Verify the **Enable Eligibility Sweep** setting is turned on | ||
| + | * Check that today is one of the configured **Sweep Days** (0=Sun through 6=Sat) | ||
| + | * Confirm the '' | ||
| + | * Check the OpenEMR error log for sweep-related messages (search for " | ||
| + | * The sweep runs once per day (every 1440 minutes) — it will not re-run on the same day | ||
| + | |||
| + | ==== 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 ==== | ==== Module Not Appearing ==== | ||
| * Confirm the module is both **installed** and **enabled** in Modules > Manage Modules | * Confirm the module is both **installed** and **enabled** in Modules > Manage Modules | ||
| * Clear your browser cache and reload the page | * Clear your browser cache and reload the page | ||
| + | |||
| + | ==== "Wrong build" Symptoms ==== | ||
| + | If you installed the //OpenEMR 8.x// build on a 7.x install (or vice versa), you may see: | ||
| + | * **Fatal error: Class " | ||
| + | * **Call to undefined method ... CsrfUtils:: | ||
| --- | --- | ||
| ===== Changelog ===== | ===== Changelog ===== | ||
| + | |||
| + | == Version 2.1.3 — May 22, 2026 (Packagist edition) == | ||
| + | * **Now published on Packagist** as '' | ||
| + | * **Single-binary cross-version compatibility** — the '' | ||
| + | * **Crypto helper hardened for cross-version** — '' | ||
| + | * **X12_SFTP install fix** — module enable no longer references the non-existent '' | ||
| + | |||
| + | == Version 2.1.3 — May 13, 2026 rebuild for OE 8.0.x == | ||
| + | * **OpenEMR 8.x build rebuilt from the '' | ||
| + | * **Verified against '' | ||
| + | * **Cross-core crypto handling** — '' | ||
| + | * Module version constant stays at **2.1.3**; this is a rebuild of the same release for the actual 8.0.x patch line. | ||
| + | |||
| + | == Version 2.1.3 (May 2026) == | ||
| + | * **Security release** — Closes the ten findings raised by the Aisle security review on the upstream PR. The fixes are layered: | ||
| + | * **IDOR guards on eligibility endpoints** — A new '' | ||
| + | * **CSRF on appointment queue actions** — '' | ||
| + | * **Authoritative re-fetch for posting + status sync** — '' | ||
| + | * **Test-mode gating** — The '' | ||
| + | * **Path traversal hardening** — '' | ||
| + | * **CSV export header sanitization** — '' | ||
| + | * **Module-enable consent** — '' | ||
| + | * **Payment posting race window** — '' | ||
| + | * **Cross-core crypto compatibility** — '' | ||
| + | |||
| + | == Version 2.1.2 (May 2026) == | ||
| + | * **Eligibility request body** — Send '' | ||
| + | * **MBI Finder mutex + request shape** — MBI Finder is now mutually exclusive with Eligibility (matching the existing Coverage Discovery / Eligibility mutex). The '' | ||
| + | * **Coverage Discovery results render correctly** — Coverage Discovery now renders with the full Quick Info / Deductibles / Benefits / Medicare / Validations layout. The API returns the same response shape as Eligibility, | ||
| + | * **Run without insurance** — Coverage Discovery, Demographics, | ||
| + | * **Stop "Error communicating with server" | ||
| + | * **Reset button** — A red **Reset** button next to **Check Now** clears every cached eligibility row for the current patient (across all payer responsibilities) after a confirmation prompt. Useful when re-testing a check from a clean slate. | ||
| + | |||
| + | == Version 2.1.1 (May 2026) == | ||
| + | * **Two-build distribution** — The module now ships as separate downloads for OpenEMR 8.x and 7.x. The 8.x build targets the native 8.x classes directly; the 7.x build adds the compatibility shim layer. Pick the build that matches your OpenEMR major version. | ||
| + | * **Hardening pass** — CSRF verification added to all state-changing AJAX endpoints (eligibility check/ | ||
| + | * **Bug fixes** — Eligibility Sweep now correctly includes Sunday ('' | ||
| + | * **Standards** — All module PHP files declare '' | ||
| + | * **Internal** — '' | ||
| + | |||
| + | == Version 2.1.0 (March 2026) == | ||
| + | * **KPI Dashboard** — Home tab replaced with a full revenue cycle dashboard showing claim pipeline, AR metrics, collections, | ||
| + | * **Patient Balance Queue** — New tab showing encounters with outstanding patient responsibility after insurance has responded. Includes PR breakdown (deductible/ | ||
| + | * **Claim Status Dashboard** — New work-queue tab with claim lifecycle timeline, real-time 276/277 status checks, batch sync, and manual notes | ||
| + | * **Claim Lifecycle Tracking Tables** — New '' | ||
| + | * **AR Aging Report** — New analytics page with 30/ | ||
| + | * **Denial Analytics** — New analytics page analyzing adjustment patterns by reason code, payer, and monthly trend with CARC code descriptions and CSV export | ||
| + | * **Recoupment Report** — New analytics page identifying claims with reversed/ | ||
| + | * **Analytics Dropdown** — AR Aging Report, Denial Analytics, and Recoupment Report grouped under an " | ||
| + | * **Appointments Page Enhancements** — Added facility, provider, and eligibility status filters. Eligibility status filter supports All, Needs Attention, Active Coverage, Not Checked, and Stale views. Added "Check Now" and "Check Now Selected" | ||
| + | * **Calendar Eligibility Indicators** — Color-coded left borders on appointment blocks in the main OpenEMR calendar showing eligibility status at a glance (green=active, | ||
| + | * **Eligibility Sweep Background Service** — New '' | ||
| + | * **OpenEMR 7.x Compatibility** — Built-in compatibility shims ('' | ||
| + | * **Compatibility Check** — New diagnostic page (Connectivity > Run Compatibility Check) verifies all module dependencies resolve correctly | ||
| + | * **Statement Tracking Table** — New '' | ||
| + | |||
| + | == 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 == | == Version 1.0.0 == | ||
| * Initial release | * Initial release | ||
| - | * Claims submission (837P/I/D) | + | * Claims submission (837P/837I) |
| * Real-time eligibility verification (Eligibility, | * Real-time eligibility verification (Eligibility, | ||
| * AI-powered eligibility assistant | * AI-powered eligibility assistant | ||
| Line 145: | Line 850: | ||
| * Portal notifications | * Portal notifications | ||
| * Native OpenEMR eligibility sync | * Native OpenEMR eligibility sync | ||
| - | |||
| - | --- | ||
| - | |||
| - | ===== Support ===== | ||
| - | |||
| - | If you need help with the ClaimRev Connect module: | ||
| - | |||
| - | * **Email**: [[mailto: | ||
| - | * **Phone**: 918-942-9564 | ||
| - | * **Hours**: Monday - Friday, 9 AM to 5 PM (CST) | ||
| - | |||
openemr_manual.1773371960.txt.gz · Last modified: by brad.sharp
