Da Vinci CRD, DTR and PAS: how the prior authorization guides fit together

CMS-0057-F points payers at three HL7 Da Vinci guides for prior authorization. Each does one job. Here is what CRD, DTR and PAS do, how a request flows through them, and where automation needs checks.

The short answer

The HL7 Da Vinci prior authorization guides split one process into three steps. CRD (Coverage Requirements Discovery) lets a payer tell the provider, inside the EHR at the moment of ordering, whether prior authorization or documentation is needed. DTR (Documentation Templates and Rules) turns the payer’s documentation rules into forms that fill themselves from the EHR for a person to review and complete. PAS (Prior Authorization Support) submits the request as a FHIR Bundle and returns the decision, or a pended status that’s resolved later. CMS strongly encourages all three for the prior authorization API that impacted payers must provide from 1 January 2027.1

A rule can ask for two different people before an AI-drafted decision runs. One person can’t approve twice, one refusal is final, and an agent can never approve itself. Made-up request and names.

Why three guides

CMS’s fact sheet for CMS-0057-F says the API must identify whether prior authorization is needed and what documentation is required, support the request and response, and return an approval, a denial with a specific reason, or a request for more information. It names Da Vinci CRD STU 2.0.1, DTR STU 2.0.0 and PAS STU 2.0.1 as the guides CMS strongly encourages.1

Those map neatly onto the three guides. Newer versions have since been published: the current versions are CRD 2.2.1, DTR 2.2.0 and PAS 2.2.1.342 Check which version your trading partners support; this post uses the versions CMS named.

Guide Question it answers Main mechanism
CRD Does this order need prior auth or documents? CDS Hooks calls from the EHR to the payer
DTR What documentation, and can the EHR fill it? FHIR Questionnaire with embedded CQL
PAS Submit the request; what’s the decision? Claim/$submit with a FHIR Bundle

CRD: what does this payer need?

CRD defines a workflow for payers to provide coverage requirements to providers through their own systems at the time treatment decisions are made.3 It’s built on CDS Hooks: the EHR calls the payer’s CRD service when a user does something, and the service answers with cards. CRD covers the appointment-book, encounter-start, encounter-discharge, order-dispatch, order-select and order-sign hooks.3

In practice: a clinician signs an order for an MRI; the order-sign hook calls the payer; the payer answers that prior authorization is required and offers a link to launch DTR. The guide supports both PHI-specific and non-PHI mechanisms, depending on what the payer is allowed to see.3

DTR: gather the documentation

DTR uses FHIR Questionnaires with embedded CQL logic and value sets to retrieve existing information from the EHR, prompt for what’s missing, and decide which questions need answering.4 The design aim is extracting existing EHR information “for review/confirmation”, so the person filling the form checks what was pulled in rather than re-keying it.4

The forms can be rendered in a SMART on FHIR app or inside the EHR itself. The guide defines four kinds of system: a DTR Payer Service that serves questionnaires, a DTR SMART Client, a Full DTR EHR that fills forms natively, and a Light DTR EHR that relies on a SMART app; the payer side supports Questionnaire Package, ValueSet Expand and Next Question operations.4 The result is a QuestionnaireResponse that travels with the request.

PAS: submit and track

PAS submits the request. The provider system POSTs a Bundle to [base]/Claim/$submit; the first entry is a Claim, FHIR’s resource for prior authorization requests.2 The receiving system may convert the Bundle into an X12N 278, the transaction HIPAA designates for prior authorization, and convert the 278 response back into a FHIR Bundle.2 Under a CMS-granted exception, implementers can instead send the PAS bundles intact without X12 translation.2

The detail that matters most for anyone automating: if the payer can’t decide in time, items come back pended. The client can then use a subscription to hear about updates, or Claim/$inquire to ask for the final result.2 A response arrived; a decision may not have.

One request, end to end

  1. Clinician signs an order. The EHR fires order-sign to the payer’s CRD service.3
  2. CRD returns a card: prior auth required; launch DTR.
  3. DTR loads the payer’s questionnaire; CQL fills answers from the EHR; staff review, correct and complete them.4
  4. The EHR builds a PAS Bundle with the Claim and the QuestionnaireResponse and calls Claim/$submit.2
  5. The payer answers: approved, denied with a reason, or pended.12
  6. If pended, the provider system waits on a subscription or polls $inquire.2

Where automation needs checks

AI is being used on both sides of this flow. Each step has one failure to design against:

Step Automation might Check
CRD Read the card and decide whether to proceed Record which card and rules version was returned
DTR Accept CQL-filled answers without review A person confirms; record who and what changed
PAS submit Build and send the Bundle Read each response entry; keep the Claim id
PAS response Report “approved” Distinguish approved from pended in code and in messages
Denial reason Draft the explanation Tie it to the criterion that produced it

The pended row is the easiest to get wrong. An agent that sees a successful HTTP response and a ClaimResponse may summarise it as “approved” when the item is pended. Our open draft spec’s examples include exactly this case: a synthetic Da Vinci PAS submission where the agent reports payer approval but the read-back shows the request pended.6 The spec page shows how the claim and the observed state sit side by side in one record.

For Bundles generally, read each entry’s status in the response, not just the overall reply; the R4 rules for batch and transaction responses are summarised in our transaction vs batch post.5

Questions people ask

Do I need all three guides?

CMS strongly encourages all three for the payer API, not mandates each one.1 Many providers will meet PAS first, then CRD and DTR as payers offer them.

Does PAS replace the X12 278?

PAS is designed to map to the 278 through an intermediary, and the X12 mapping is published by X12.2 Under the CMS exception, bundles can be exchanged intact.2

Where does AI fit safely?

Pre-filling DTR answers for a person to confirm, and tracking pended requests, are natural fits. Deciding or explaining denials needs a person and a traceable criterion; our CMS-0057-F post covers the denial-reason rule.

For payers and their vendors, our insurer page explains how agent actions in this flow can be recorded and checked. To try approvals and read-backs on a real database in your browser, open the playground; to grade what an agent can reach on your own machine, run npx deedglass scan (the grade, explained).

Written with AI assistance and checked against our claims register.

The takeaway

CRD tells the provider what's needed, DTR fills the forms from the EHR for a person to confirm, and PAS submits and tracks; a pended reply isn't an approval.

Read nextCMS-0057-F and the prior authorization API: what it requires, and where automation fits Try it: install in 7 s

Related on this site

Terms

In the docs

More posts

Sources

  1. 1CMS fact sheet: CMS Interoperability and Prior Authorization Final Rule (CMS-0057-F) · cms.gov · checked 27 October 2026
  2. 2HL7 Da Vinci PAS 2.0.1: Specification · hl7.org · checked 27 October 2026
  3. 3HL7 Da Vinci CRD 2.0.1 · hl7.org · checked 27 October 2026
  4. 4HL7 Da Vinci DTR 2.0.0 · hl7.org · checked 27 October 2026
  5. 5HL7 FHIR R4: RESTful API, batch and transaction · hl7.org · checked 27 October 2026
  6. 6Agent Action Provenance for Health (AAP-H) v0.1 draft · deedglass.com · checked 27 October 2026

Published 27 October 2026, sources last checked 27 October 2026. If something here is out of date, write to hello@deedglass.com.

Try it on your own setup

npx deedglass scan

Grades only your own setup. Nothing is uploaded.

Pricing