Da Vinci CRD, DTR and PAS explained: electronic prior authorization from order to decision

CRD, DTR and PAS as three linked steps from order to decision

Prior authorization has long meant phone calls, faxes and portals. The HL7 Da Vinci Project replaces that with three FHIR implementation guides that work together inside the clinician's normal workflow:

Together they make up the Prior Authorization API that CMS-0057-F requires payers to offer from 1 January 2027.

CRD: the answer at the moment of ordering

CRD runs on CDS Hooks. When a clinician selects or signs an order, books an appointment, or starts or discharges an encounter, the EHR calls the payer's CRD service with the order and a prefetch of relevant data such as the patient and coverage.

The payer answers within seconds, while the clinician is still looking at the order:

The answer travels with the order as a coverage-information extension, including a coverage-assertion-id that later steps can refer back to.

DTR: documentation, pre-filled

When documentation is needed, the EHR calls DTR's $questionnaire-package operation on the payer's FHIR server. The payer returns the Questionnaire together with the CQL logic that pre-fills it from the patient's record, and the value sets it uses.

The clinician reviews the pre-filled answers, completes the rest, and the result is a QuestionnaireResponse. Adaptive questionnaires go further: the payer sends one question at a time through $next-question, so each answer decides what is asked next.

PAS: the request and the decision

PAS submits the request as a FHIR Bundle to Claim/$submit. The bundle carries a Claim with use preauthorization, the patient, coverage, provider and the requested services, plus supporting documentation such as the DTR QuestionnaireResponse.

The payer answers with a ClaimResponse: approved, denied, modified or pended. A pended request can be followed with Claim/$inquire, and payers can push the final decision through a FHIR subscription. Under HIPAA the prior authorization transaction is the X12 278, so PAS defines the mapping between the two.

How the three fit together

CRD, DTR and PAS between the EHR and the payer: coverage, documentation, decision

  1. The clinician signs an order. CRD says prior authorization is needed and names the questionnaire.
  2. DTR fetches the questionnaire, pre-fills it, and the clinician completes it.
  3. PAS submits the request with the completed documentation.
  4. The payer decides. Many requests can be approved in real time, because the documentation the payer needs is already there.

How Perfuse does it

The four CMS-0057 APIs a payer serves with Perfuse

Perfuse is a free, Apache-2.0 healthcare integration engine that implements all three guides, for payers and for the systems that talk to them.

CRD 2.2.1, from a rules file

DTR 2.2.0 questionnaire packages

PAS 2.2.1 on either side

Security included

All of this ships inside the same single binary as the rest of the engine: HL7 v2, FHIR, X12, DICOM and CDA, twenty connector types, a durable queue and a full web console.

Try it

perfuse serve -pas -crd-rules examples/crd/rules.yaml

Then point a CDS Hooks client at /cds-services, or send a PAS bundle to /fhir/Claim/$submit. The manual walks through each step.

Related: CMS-0057-F explained.