claimrevolution/oe-module-claimrev-connect
OpenEMR Custom Module Claim Revolution, LLC Connector
v2.1.7
324K downloads/mo
#2323 most downloaded on Packagist
claimrevolution/oe-module-claimrev-connect
What this package is like to depend on
Last release 1 months ago
08 Jul 2026
Ships on a steady schedule
a new release about every 2 weeks
Nearly every release is documented
notes for 5 of 5 stable releases
Nothing withdrawn
no release was ever pulled
3 months old
5 releases · first in 2026
5 releases in the last 12 months
see the full history below
Release timeline
5 releases · May 2026 to Jul 2026Releases
latest 5-
v2.1.708 Jul 2026Release notes
Open source →Fix so enabling the module no longer blanks the Patient Portal / API panel on the patient dashboard (or fatals the claims/ERA/payment pages) on OpenEMR 8.0.x. Completes the 2.1.4
KernelCompatmigration — elevengetKernel()call sites intemplates/eligibility.phpand thepublic/*.phpentry points were still calling the method that doesn't exist on 8.0.x — and adds atry/catch (\Throwable)fault boundary around the eligibility section so a render fault can never blank adjacent core panels again. Verified on the 8.0.0.3 test container.Full Changelog: v2.1.6...v2.1.7
Release notes
Open source →Fix — enabling the module blanked the Patient Portal / API panel on the patient dashboard (and fatalled other pages) on OpenEMR 8.0.x:
- 2.1.4 moved kernel resolution to
Compat\KernelCompat::resolve()to avoid the directOEGlobalsBag::getInstance()->getKernel()call that fatals on 8.0.x (core'sOEGlobalsBagthere has nogetKernel()), but that migration only covered thesrc/service layer. Eleven call sites still calledgetKernel()directly:templates/eligibility.phpand tenpublic/*.phpentry points (claims,claim_requeue,claim_status,claim_sync_status,eligibility_chat,era,EraDownload,payment_advice,payment_advice_post,reconciliation). On 8.0.x these still threw "Call to undefined method OEGlobalsBag::getKernel()". The eligibility template renders inside the core demographics page via aRenderEventlistener (Bootstrap::renderEligibilitySection), so its fatal aborted the whole page render and the Patient Portal / API panel — emitted after it — vanished; disabling the module made the panel reappear. Reported by a client on 8.0.x. - Fix: route all eleven remaining call sites through
KernelCompat::resolve()->getEventDispatcher(), completing the 2.1.4 migration. Verified on the 8.0.0.3 test container (patient dashboard renders, Portal/API panel present, eligibility section loads). - Defense in depth: wrap the eligibility-section
includeinBootstrap::renderEligibilitySectionin atry/catch (\Throwable)fault boundary. A render fault in the module's demographics panel now logs viaerror_logand degrades to an inline notice instead of blanking adjacent core panels — the same isolation rationale as the 2.1.5 calendar fix. (\Throwable, not\Exception, since an undefined-method fatal is anError.)
- 2.1.4 moved kernel resolution to
-
v2.1.623 Jun 2026Release notes
Open source →Fix for css on calendar not showing appointments in some views.
Full Changelog: v2.1.5...v2.1.6
Release notes
Open source →Fix — appointments invisible in calendar week/day view when eligibility indicators are enabled:
- A second, independent defect in the calendar eligibility indicator (distinct from the 2.1.5 crash fix). The day/week calendar template treats an event's
eventViewClassas a full replacement for the core CSS class ($evtClass = $event['eventViewClass'] ?? $evtClassinviews/day/ajax_template.html), not an addition. The core class for an appointment isevent_appointment, which inajax_calendar_sass.scsssuppliesz-index: 2andbackground-color: white.CalendarEligibilityIndicator::filterCalendarEventsseteventViewClassto only the eligibility class (e.g.event_elig_active), so the appointment<div>lostevent_appointmentand dropped behind the calendar grid — appointments appeared to vanish in week and day view (month view uses a different template and was unaffected). Reported by a provider who traced it to the event div losing its z-index. - Fix:
mergeEventViewClassnow preserves a base class — the existingeventViewClassif another listener set one, otherwiseevent_appointment— and appends the eligibility class to it, so the appointment keeps its stacking and fill while still getting the eligibility border.
- A second, independent defect in the calendar eligibility indicator (distinct from the 2.1.5 crash fix). The day/week calendar template treats an event's
-
v2.1.518 Jun 2026Release notes
Open source →v2.1.5 - calendar indicator fault boundary; appointments can no longe…
…r be blanked by the eligibility indicator
Release notes
Open source →Critical fix — installing the module could make all calendar appointments disappear:
- The calendar eligibility indicator (
CalendarEligibilityIndicator::filterCalendarEvents, enabled by "Enable Calendar Eligibility Indicators") listens on OpenEMR'sCalendarUserGetEventsFilter. Core dispatches that filter insidepostcalendar_userapi_pcGetEvents()with no error handling, then returns whatever the listeners produce. The listener ran an unguardedSELECT ... FROM mod_claimrev_eligibility(referencingpayer_responsibility,last_checked,create_date,individual_json,status). On an install whosemod_claimrev_eligibilityschema was out of date (missing column) or otherwise unhappy, that query threw — and because core has no try/catch around the dispatch, the exception aborted the whole calendar event fetch, so every appointment vanished from the calendar. Disabling the module removed the listener and the appointments reappeared, which is why the symptom looked like the module was deleting appointments. It never touched appointment data. - Fix: wrap the indicator logic in a fault boundary. A cosmetic color indicator must never be able to remove appointments, so
filterCalendarEventsnow delegates toapplyEligibilityIndicatorsinside atry/catch (\Throwable); on any failure it logs viaerror_logand returns the events unmodified. The calendar always renders; at worst the eligibility colors are missing.
- The calendar eligibility indicator (
-
v2.1.404 Jun 2026Release notes
Open source →Cross-version compatibility fix:
- Resolve the OpenEMR kernel via a new
Compat\KernelCompat::resolve()helper instead of callingOEGlobalsBag::getInstance()->getKernel()directly.getKernel()only exists on core's flex/master line; the 8.0.x patch releases ship anOEGlobalsBagwithout it. Because the real class is present on 8.0.x, theOEGlobalsBagShimswap never activates there, so the direct call fatalled with "Call to undefined method OEGlobalsBag::getKernel()" during login bootstrap — taking the whole site to a 500. The helper reads the kernel from the'kernel'global (with a type guard), exactly as flex'sgetKernel()does internally, so the same binary works on 7.x, 8.0.x, and flex. Fixes the regression introduced in 2.1.3.
- Resolve the OpenEMR kernel via a new
-
v2.1.322 May 2026Release notes
Open source →Cross-version compatibility and security hardening:
- Read stored credentials with
CryptoGen::decryptStandardinstead ofdecryptFromDatabase. The newer helper was added to OE core in the 8.x line but does not exist on OE 7.x; reverting todecryptStandardlets the same module binary work on both branches. - Close findings from the external Aisle Analyzer security review of PR #11265: tighten IDOR and CSRF gaps on AJAX endpoints, refetch ERA and claim status server-side rather than trusting the browser to echo them back, and tighten property-access hardening on several response shapes.
Test mode coverage extended to every gated page:
- ERA tab and
EraDownloadshort-circuit to mock data when test mode is enabled, gated by the global setting (the per-tab checkbox is removed). - Payment Advice tab reads the test-mode global directly; per-tab checkbox removed.
- Reconciliation tab returns mock rows via
ReconciliationMockService. - Eligibility Chat returns mock AI answers in test mode.
claim_sync_statusandclaim_requeueshort-circuit cleanly without contacting the API.- README's test-mode coverage row documents every gated page.
Maintenance:
- Rector/PHPStan cleanups across the module.
- Fix
STATUS_UPLOAD_ERRORconstant typo. - Miscellaneous narrowing of array/object access patterns flagged by PHPStan.
- Read stored credentials with