Ever tried to answer a simple question like "how long did that prior auth actually take" when three different systems touched the case? On paper CMS-0057-F sets a clean clock: 72 hours for expedited, 7 calendar days for standard. In practice the case bounces from your intake to a utilization management vendor to a radiology benefits manager and back, and the timestamps live in four different databases with four different clocks.
If you want a fair shot at the January 2027 enforcement date, SLA telemetry has to be a first-class product, not a report someone runs quarterly. This is the part of the rule that quietly eats payer engineering time, and it is worth exploring alongside the rest of the healthcare interoperability hub before you commit to a design.
What End-to-End Actually Means Here

The regulated window starts when the payer (or a delegate acting on its behalf) receives a compliant Prior Authorization request, and it ends when a determination is communicated back to the provider. Between those two points, the case usually passes through a handful of hands: intake normalization, clinical triage, an external delegate for a specialty carve-out, medical director review, and finally the notify step.
Every one of those handoffs is a place where the clock either keeps running, pauses for a compliant reason (like a request for additional information), or resumes. Any telemetry design that ignores those state transitions ends up either over-counting or under-counting time, and both are audit problems.
Design the Event Schema First
Before touching any code, agree on the event vocabulary. A minimal schema that survives real cases usually looks like this:
- pa.received — first compliant PAS Bundle lands at the payer edge
- pa.triaged — internal routing decision is made
- pa.handoff.sent — case dispatched to a delegate, with delegate id
- pa.handoff.ack — delegate confirms receipt (this is the SLA baton pass)
- pa.info.requested / pa.info.received — pause and resume markers
- pa.decision.received — delegate returns a determination
- pa.decision.final — payer-of-record signs off
- pa.notify.sent — provider notified per the API contract
Each event carries a correlation id that follows the case across every system. Do not reuse the FHIR Task id or the Claim id alone. Mint a payer-level case id at pa.received and require every downstream system, including delegates, to echo it in every event they emit.
Choose Event Bus Over Polling
Polling delegate systems for status is where SLA drift begins. You end up with a 15-minute poll interval, a 15-minute average blind spot, and no reliable pause-state accounting. An event bus is the honest answer: publish the eight events above onto a durable topic, let the delegates emit their side through a signed webhook or a FHIR Subscription, and reconcile at ingest.
For the delegate boundary specifically, FHIR R4B Subscriptions with topic-based filtering work well because they give you the same event shape both directions. Where subscriptions are not viable, a signed webhook that carries a minimal FHIR Bundle payload is a fair second choice.
Do the SLA Arithmetic in One Place
Once the events are flowing, compute the SLA in exactly one service. Every case timeline is a reduction over its events:
- start from pa.received
- add elapsed time while state is active
- freeze elapsed time between pa.info.requested and pa.info.received
- stop at pa.notify.sent
Track two clocks in parallel: the regulated clock (with compliant pauses) and the raw wall clock (no pauses). Providers see the regulated one, your operations team looks at both, and your auditors can reconcile either.
Alerting thresholds should fire on projected breach, not actual breach. If a case sits with a delegate at 60% of its window with no pa.decision.received, page someone. For a broader look at how the questionnaire layer behind DTR affects those handoffs, the FHIR Questionnaire vs traditional form engines comparison is worth a scan, and if you are still shortlisting DTR-friendly form tooling, the top 7 FHIR Questionnaire tools for clinical workflows roundup covers the reasonable options.
Build In-House or Buy a Runtime That Ships It
Here is the honest decision framework. Build it yourself if you already own the FHIR core, your delegate contracts let you dictate the event schema, and you have a platform team that can operate a durable event bus. Buy the runtime if any of those three are missing, or if the compliance deadline leaves you less than nine months of runway.
On the buy side, vendor evaluation typically pits point CMS-0057-F services against reusable FHIR stores like Aidbox with an embedded compliance layer such as Payerbox from Health Samurai. The point services get you the four APIs faster, the reusable-store path gives you a single runtime for PA SLA telemetry, Patient Access, Provider Access, and Payer-to-Payer without stitching separate audit trails together. Neither is universally correct. The right pick is the one where your operations team can still answer that simple question a year from now: how long did that prior auth actually take.
Sources
- HL7 build.fhir.org - Da Vinci PAS FHIR IG v2.2.1 PAS Metrics page (canonical SLA metrics vocabulary for prior auth turnaround, directly maps to CMS-0057-F reporting)
- PDF, CMS, 2024 - Prior Authorization API Workflow (CMS-0057-F) official workflow diagram with SLA checkpoints across payer and delegate boundaries
- HL7 build.fhir.org - Da Vinci PAS FHIR IG Subscription profile (canonical event-bus contract for delegate handoff/decision events referenced in the article)