| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| openemr_manual [2026/05/22 22:28] – Composer/Packagist pivot: replace two-zip install with three install methods (Composer/Zip/Tarball), simplify Compatibility to single-binary language, add 2.1.3 Packagist-edition changelog entry brad.sharp | openemr_manual [2026/08/26 21:25] (current) – [Module Version Compatibility] brad.sharp |
|---|
| The ClaimRev Connect module is published on Packagist as ''claimrevolution/oe-module-claimrev-connect''. Starting with v2.1.3 a **single build** runs on both OpenEMR 7.x and OpenEMR 8.x — runtime compatibility shims in ''src/Compat/'' activate only when the host core lacks the newer APIs. Pick the install method that matches your environment. | The ClaimRev Connect module is published on Packagist as ''claimrevolution/oe-module-claimrev-connect''. Starting with v2.1.3 a **single build** runs on both OpenEMR 7.x and OpenEMR 8.x — runtime compatibility shims in ''src/Compat/'' activate only when the host core lacks the newer APIs. Pick the install method that matches your environment. |
| |
| **Current Version: 2.1.3** | **Current Version: 2.1.X** |
| |
| === Method 1: Composer (Recommended) === | === Method 1: Composer (Recommended) === |
| </code> | </code> |
| |
| === Method 2: Manual Zip Upload === | === Method 2: Manual File Drop (Shared Hosting / No CLI) === |
| |
| For installs without CLI access (shared hosting, restricted environments): | OpenEMR's //Manage Modules// page does not have a zip-upload feature for custom modules — it scans ''interface/modules/custom_modules/'' on every page load and lists whatever directories it finds. For installs without CLI access (shared hosting, restricted environments), drop the files into place via SFTP/FTP: |
| |
| - Download the current release zip from [[https://github.com/claimrevolution/oe-module-claimrev-connect/releases|the GitHub releases page]]. | - Download the current release zip from [[https://github.com/claimrevolution/oe-module-claimrev-connect/releases|the GitHub releases page]]. |
| - Log into OpenEMR as an administrator. | - Unzip it locally. You should see a folder named ''oe-module-claimrev-connect/'' containing ''composer.json'', ''info.txt'', ''src/'', ''public/'', ''templates/'', etc. |
| - Navigate to **Modules > Manage Modules**. | - Connect to your OpenEMR server with SFTP, FTP, or your hosting control panel's file manager. |
| - Click the **Install** tab, then click **Upload Module** and select the downloaded zip. | - Upload the entire ''oe-module-claimrev-connect/'' folder into ''interface/modules/custom_modules/'' so the resulting path is ''interface/modules/custom_modules/oe-module-claimrev-connect/composer.json'' (and so on for the other files). |
| | - Continue with [[#Activation|Activation]] below — OpenEMR will see the new directory on the next page load. |
| | |
| | **Note:** Updates with this method are the same flow — replace the contents of the ''oe-module-claimrev-connect/'' folder with the contents of the new zip. Method 1 (Composer) is much easier if you have any way to run shell commands on the server. |
| |
| === Method 3: Release Tarball === | === Method 3: Release Tarball === |
| |
| ===== Compatibility ===== | ===== Compatibility ===== |
| | |
| | ==== Module Version Compatibility ==== |
| | |
| | **Always run the current release.** A single build covers every supported OpenEMR version — the ''src/Compat/'' shim layer adapts to the host core at runtime, so there is no version-specific build to choose. |
| | |
| | ^ Module version ^ OpenEMR 7.0.2 ^ OpenEMR 7.0.4 ^ OpenEMR 8.0.x ^ OpenEMR 8.2 ^ OpenEMR 8.3 ^ |
| | | **v2.1.9** (current) | Yes | Yes | Yes | Yes | Yes | |
| | |
| | |
| | Requires **PHP 8.2 or later** on any core. v2.1.8 verified live against the ClaimRev API on 8.3.0, 7.0.4 and 7.0.2, including 837P claim submission. |
| | |
| | === Running an older module version? === |
| | |
| | **v2.1.6 and earlier fail on OpenEMR 7.0.4 and on the 8.0.x patch line.** Module pages die with: |
| | |
| | <code>Call to undefined method OpenEMR\Core\OEGlobalsBag::getKernel()</code> |
| | |
| | Those cores ship an ''OEGlobalsBag'' //without// ''getKernel()''. Because the class itself is present, the module's shim does not engage, and the direct call fails. Symptoms are blank module pages, or the **Patient Portal / API** panel vanishing from the patient dashboard. v2.1.3 is worse still — it fails during login bootstrap and returns HTTP 500 for the entire site. |
| | |
| | Upgrading to v2.1.7 or later resolves all of it. |
| | |
| | === Pinning a specific version === |
| | |
| | Every release stays available on Packagist. To hold a particular version: |
| | |
| | <code>composer require claimrevolution/oe-module-claimrev-connect:2.1.8</code> |
| | |
| | There is no separate branch per OpenEMR version. A single build covers both 7.x and 8.x, and older cores are supported by pinning the last release that supported them. |
| |
| ==== Supported OpenEMR Versions ==== | ==== Supported OpenEMR Versions ==== |
| | ''CsrfHelper'' | Detects whether ''SessionWrapperFactory::getActiveSession'' exists; routes to ''CsrfUtils'' with the correct argument order and ''$_SESSION'' fallback when needed | | | ''CsrfHelper'' | Detects whether ''SessionWrapperFactory::getActiveSession'' exists; routes to ''CsrfUtils'' with the correct argument order and ''$_SESSION'' fallback when needed | |
| | ''GlobalConfig::getClientSecret'' | Prefers ''CryptoGen::decryptFromDatabase'' (upstream PR #11956, May 2026) when available; falls back to ''decryptStandard'' on older cores | | | ''GlobalConfig::getClientSecret'' | Prefers ''CryptoGen::decryptFromDatabase'' (upstream PR #11956, May 2026) when available; falls back to ''decryptStandard'' 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: | |
| * ''OEGlobalsBag'' — Whether the native class or shim is in use | |
| * ''ServiceContainer'' — Whether the native class or shim is in use | |
| * ''LoggerInterface'' / ''ClockInterface'' / ''CryptoInterface'' — Whether native or shimmed | |
| * ''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", the module is running with compatibility shims — all features work normally. | |
| |
| --- | --- |
| * **Eligibility Sweep Background Service** — New ''ClaimRev_Elig_Sweep'' background service that proactively queues eligibility checks for upcoming appointments on configured days of the week. Configurable sweep days (default Monday and Thursday) and lookahead window (default 7 days). Skips appointments with fresh results or already-queued checks. | * **Eligibility Sweep Background Service** — New ''ClaimRev_Elig_Sweep'' background service that proactively queues eligibility checks for upcoming appointments on configured days of the week. Configurable sweep days (default Monday and Thursday) and lookahead window (default 7 days). Skips appointments with fresh results or already-queued checks. |
| * **OpenEMR 7.x Compatibility** — Built-in compatibility shims (''OEGlobalsBag'', ''ServiceContainer'', ''LoggerInterface'', ''ClockInterface'', ''CryptoInterface'') allow the module to run on OpenEMR 7.x without modification | * **OpenEMR 7.x Compatibility** — Built-in compatibility shims (''OEGlobalsBag'', ''ServiceContainer'', ''LoggerInterface'', ''ClockInterface'', ''CryptoInterface'') allow the module to run on OpenEMR 7.x without modification |
| * **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 | * **Statement Tracking Table** — New ''mod_claimrev_patient_statements'' database table for tracking statement history per encounter |
| |