BNP drops · PT eval comes back · payer approves · caregiver answers the portal · vendor confirms the slot — every signal can change the plan. OpenBed listens to all of them, recomputes the six readiness dimensions, diffs against the last snapshot, and routes the change to the right human or external system within seconds. The plan is never static.
| Source | Kind | Protocol | Cadence | Example payload |
|---|---|---|---|---|
Epic FHIR Subscription via Epic Systems | push | FHIR R4 Subscription (REST hook) | Real-time push | Observation BNP=420 (down from 1820) · MedicationRequest Entresto created |
HL7 v2 ADT listener via Hospital integration engine (Mirth-style) | push | HL7 v2.x (A01/A02/A03/A08) | Real-time push | A08 — patient updated (new attending assignment) |
Payer auth webhook via CoverMyMeds, Availity | push | CoverMyMeds + Availity webhook | On decision | Entresto PA APPROVED · BlueShield MA · TAT 6h 14m |
Vendor callback (SNF / DME / NEMT) via Naviguide, Lincare, ModivCare, Twilio+Vapi | push | Partner REST / voice-agent transcript | On vendor response | Bayview SNF · ACCEPTED · bed Tue 10AM · pre-auth confirmed |
Patient portal event | push | Internal SSE | Real-time push | Carla submitted SNF preference: Bayview 1st, Hillcrest 2nd |
Task completion (internal) | push | Internal event bus | Real-time push | PT mobility assessment complete · op readiness +14 pts |
Voalte / Vocera ack stream via Vocera/Voalte/Halo | push | Vocera/Voalte webhook | Real-time push | Aisha Patel acknowledged PT page · ETA 13:15 |
Eligibility pull (X12 270 → 271) via Availity | pull | X12 270/271 via Availity | On admit + on plan change | BlueShield MA active · SNF benefit: 100 days · PA required |
4pm pharmacy cliff detector | scheduled | Inngest cron | Daily 15:30, 15:45, 15:50, 15:55 | 3 patients with pending Rx + retail closes 16:00 · escalate to pharmacy |
Friday morning weekend forecaster | scheduled | Inngest cron | Fri 07:00 | 5 patients exposed to weekend gap · pre-stage weekend prep tasks |
Webhooks, FHIR subscriptions, HL7 listeners, cron ticks land on the bus.
→Raw payloads converted to typed internal events; deduplicated by hash.
→Six-pillar readiness recomputed · brain detectors re-run · resource matches re-ranked · disposition re-scored.
→Compare new snapshot to previous; emit one diff entry per material change.
→Each diff → mapped to a target (UI surface · external API · audit row · notification).
→EHR writeback · CoverMyMeds submit · portal SSE · Voalte ping · toast on operator screen.
→AgentInference + Submission rows written; prompt-hash cache prevents loop.
Hospital integrations fail. A FHIR endpoint times out, a fax delivery bounces, a webhook arrives out of order. Inngest's durable execution retries with backoff and dedup — we don't lose events.
The same eligibility response arriving twice cannot create two PA submissions. Every event has a hash; the engine skips duplicates within the cache window. The runAgent wrapper has the same property for LLM calls.
Investors and design partners need to see one patient go through the full loop. Michael Johnson is our canonical example — 10 events across 4 days, every diff audited, every surface refreshed.