Building a Care Management Platform That Handles 5 Programs Simultaneously
Care Programs

Building a Care Management Platform That Handles 5 Programs Simultaneously

Pravin Uttarwar
CTO & Founder, Mindbowser
TL;DR:

Argues that platforms which bolt on care programs one at a time (CCM, then RPM, then BHI…) end up as separate siloed systems sharing a login screen, not real multi-program architecture. The fix is a single shared eligibility engine that evaluates one patient data model against all 9 programs at once, backed by a concurrency check that enforces the stacking matrix in code (not a reference table a biller checks manually), shared EHR connectivity (ConnectHealth) instead of 9 separate integrations, and per-program billing/audit attribution so shared data never becomes a compliance liability.

I have reviewed more than one care-management platform that started as a CCM tool, added RPM as a second module, then BHI as a third, and ended up with three parallel systems that happen to share a login screen. That isn’t multi-program architecture. It’s three single-program systems bolted together, and it inherits every one of the coordination failures a real shared architecture is supposed to eliminate.

Why Single-Program Architecture Doesn’t Scale to Multi-Program

The fix isn’t a better dashboard on top of three siloed systems. It’s a data model built from the start to answer “which programs is this patient eligible for and enrolled in, right now, across all nine” as a single query, not nine separate ones.

The bolt-on pattern doesn’t announce itself early. A platform with one or two programs runs fine either way, because there’s little coordination to fail yet. The cracks show up specifically at the third or fourth program, when a patient’s status in one silo genuinely needs to inform a decision in another, a CCM enrollment that should block an APCM claim, a TCM window that should pause RPM billing, and nothing in the architecture is positioned to make that connection automatically.

At that point, the fix options are limited and expensive: either build the connective logic as an increasingly fragile layer of point-to-point integrations between silos that were never designed to talk to each other, or replace the data model entirely. Neither is a small project, which is why platforms that start bolt-on tend to stay bolt-on far longer than anyone planned, patching around the coordination gaps rather than fixing the underlying model.

The Shared Eligibility Engine

This is the same logic the AWV enrollment engine piece describes for HRA findings specifically, generalized: every data point that could inform program eligibility, whether it comes from an AWV, a routine visit, or a discharge summary, feeds the same engine rather than a program-specific silo.

The engine has to handle two different kinds of eligibility questions, and conflating them is a common design mistake. The first is static eligibility, does this patient’s current condition profile qualify them for a given program at all, which changes slowly and can be recalculated on a reasonable cadence. The second is dynamic eligibility, is this patient currently blocked from a program because of a concurrent enrollment or a program window that’s still open, which can change within a single day and has to be checked at the moment of every enrollment or billing action, not on a periodic schedule.

An engine built only for the first kind will correctly identify that a patient qualifies for APCM and still let a conflicting CCM claim through, because it never re-checked the dynamic state at submission time. Both checks have to run, and they run on different clocks.

Future-Proof Your Care Management Platform

The Concurrency Check: Where Stacking Rules Actually Live in Code

The stacking matrix from Mindbowser’s program stacking rules guide isn’t just reference documentation in a well-built platform, it’s an enforced rule set. Every proposed enrollment or claim submission runs against it before it’s accepted, not after a biller manually checks a reference table.

Reference documentationEnforced rule
Where it livesA guide a biller consultsCode that runs on every enrollment attempt
What happens on a conflictDepends on the biller catching itSubmission blocked automatically, before a claim is filed
How it updatesManual review of CMS’s annual rule changesA single rule set updated once, applied everywhere it’s referenced

the difference between a reference guide and an enforced rule is the difference between “someone should catch this” and “the system won’t let this happen.”

Shared EHR Connectivity, Not 9 Separate Integrations

Every program on this cluster’s roster needs current patient data from wherever a health system’s EHR lives, Epic, Cerner, Athenahealth, or another system. Building that connectivity once, as a shared layer, rather than once per program, is what makes adding a 6th, 7th, or 8th program an extension rather than a new integration project. ConnectHealth is that shared connectivity layer in Mindbowser’s builds, feeding the same current patient data into the eligibility engine, the concurrency check, and every program-specific workflow that needs it.

Audit Trail: Proving Every Program’s Documentation Independently

A shared data model doesn’t mean a shared audit trail. Every program’s claim has to stand on its own documentation, regardless of what other programs share the same underlying patient record. The architecture that gets this right timestamps and attributes every data point to the specific program and workflow that generated it, so a reviewer examining a CCM claim sees exactly the CCM-relevant documentation, not an undifferentiated pool of everything ever recorded about that patient.

Handling Mid-Quarter Transitions Across Multiple Programs at Once

Mindbowser’s published APCM guide covers the specific case of a patient transitioning from CCM to APCM mid-quarter, tracking which program applies in a given month and blocking the other’s codes for that period. A multi-program platform needs that same transition logic generalized across every pairing on the stacking matrix, not just the CCM-to-APCM case. A patient discharged from the hospital while already enrolled in RPM needs the platform to correctly pause or continue RPM billing while TCM’s 30-day window is open, then resume the prior state once it closes, all tracked automatically rather than requiring a biller to remember the sequence.

Generalizing this correctly means the transition logic can’t be hardcoded per pairing. A platform with a special-case rule for “CCM to APCM” and a separate special-case rule for “RPM paused during TCM” is really building nine or more separate transition handlers, one per pairing that matters, which is the bolt-on pattern again in a different disguise. The architecture that scales treats every transition as an instance of the same general operation: given a patient’s current program state and a new event, either a diagnosis change, a discharge, or an enrollment request, evaluate the full stacking matrix and derive the correct resulting state, rather than looking up a pairing-specific rule.

That’s a meaningfully harder engineering problem than hardcoding the two or three transitions a platform happens to need on day one, and it’s also the only version that doesn’t need new code every time this cluster’s own program-eligibility rules or CMS’s stacking guidance change.

What CCNHealth’s “All-in-One Dashboard” Doesn’t Solve

CCNHealth and similar vendors market a shared dashboard across multiple programs, which looks similar to the architecture this page describes from the outside. The distinction is underneath the interface. A shared dashboard displaying data pulled from separate underlying systems still carries the bolt-on failure pattern from Figure 1, it just hides it behind one login. A shared eligibility engine, where the data model itself is unified and the concurrency check runs as an enforced rule rather than a display feature, is a different architecture, not a better UI on the same one.

There’s a practical test that separates the two, and it’s worth applying to any platform being evaluated, including a proposed custom build: ask what happens when a patient’s eligibility for a second program changes because of new data captured in a workflow the platform didn’t originally build for that patient, an AWV finding a new chronic condition, say, for a patient already enrolled in RTM. In a dashboard-over-silos architecture, that new eligibility fact sits wherever it was captured until someone manually checks it against the patient’s other enrollments.

In a shared-engine architecture, the eligibility engine picks up the new data point automatically and re-evaluates the patient’s full program status, the same query it runs for every other patient, with no special handling required for the fact that this particular finding came from an unrelated workflow. If a platform can’t answer that test cleanly, the dashboard is doing more of the coordination work than the architecture is, and that’s a maintenance burden that grows with every program added, not a one-time cost.

Building the Architecture That Extends, Not Multiplies

Every program a health system adds to a bolt-on platform is a new integration project. Every program added to a shared-engine architecture is an extension of a rule set that already exists. Mindbowser builds the second kind, one eligibility engine, one connectivity layer, separated billing queues underneath, so the tenth program costs less to add than the second one did.

That cost curve is the actual argument for building this way rather than starting with whichever single-program tool solves today’s most urgent problem. A single-program tool is genuinely cheaper and faster for program one. The gap opens at program three or four, when the bolt-on path’s per-program cost stays roughly flat or grows as coordination complexity compounds, while the shared-engine path’s per-program cost drops, because most of the hard work, the data model, the concurrency logic, the connectivity layer, was already built for the first two or three programs and only needs extending. A health system evaluating this tradeoff honestly has to weigh where on that curve it expects to be in two years, not just what solves the immediate need, since the architecture decision made for program one is the one that determines how expensive program six turns out to be.

Is a shared dashboard the same as a shared eligibility engine?

No. A dashboard can display data from separate underlying systems and still carry every coordination failure of bolt-on architecture. A shared engine means the underlying data model and concurrency logic are unified, not just the display.

Does sharing patient data across programs create a billing-compliance risk?

Not if the architecture separates billing queues correctly. Each program’s claim pulls only its own relevant documentation, even though the underlying patient record is shared.

How many programs should a platform support before this architecture is worth building?

Two concurrent programs already benefit from shared eligibility logic. The case gets stronger with each additional program, since the alternative is a new siloed integration for every one.

Frequently Asked Questions

No. A dashboard can display data from separate underlying systems and still carry every coordination failure of bolt-on architecture. A shared engine means the underlying data model and concurrency logic are unified, not just the display.

Not if the architecture separates billing queues correctly. Each program’s claim pulls only its own relevant documentation, even though the underlying patient record is shared.

Two concurrent programs already benefit from shared eligibility logic. The case gets stronger with each additional program, since the alternative is a new siloed integration for every one.

Pravin Uttarwar

Pravin Uttarwar

CTO & Founder, Mindbowser

Connect Now

Pravin Uttarwar is CTO & Founder at Mindbowser. He has 16+ years of experience as a developer and technology leader, with deep expertise in healthcare platform architecture, AI/ML strategy, and build-vs-buy decision frameworks.

His career spans founding and growing Mindbowser from a startup to a 150+ person healthcare technology company, while maintaining hands-on technical depth across system architecture, remote team operations, and developer experience.

Share This Blog

Read More Similar Blogs

Let’s #Transform Healthcare,# Together.

Partner with us to design, build, and scale digital solutions that drive better outcomes.

Location

Global Tech Teams LLC, 525 Washington Blvd, Industrious at Newport Tower, Jersey City, NJ 07310, United States.

Contact

+1 408 786 5974
contact@mindbowser.com
BOOK A QUICK CONSULTATION

Have a Healthcare Project in Mind?

Let’s discuss your goals, workflows, and next steps in a focused consultation call.

Calendar icon Schedule a Call

Contact form