Da Vinci - Coverage Requirements Discovery
2.2.1 - STU 2.2

Da Vinci - Coverage Requirements Discovery, published by HL7 International / Financial Management. This guide is not an authorized publication; it is the continuous build for version 2.2.1 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/davinci-crd/ and changes regularly. See the Directory of published versions

## Extension: Coverage Information

Official URL: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information | Version: 2.2.1 | Highlight text changes?
Standards status: Trial-use Active as of 2026-03-26 | Maturity Level: 1 | Computable Name: CRDCoverageInformation
Other Identifiers: OID:2.16.840.1.113883.4.642.40.18.42.2

Captures assertions from a payer about the coverage rules for a service - in particular, whether it is covered and/or requires prior authorization.

Context of Use

This extension may be used on the following element(s)

- Element ID: `Appointment`
- Element ID: `CommunicationRequest`
- Element ID: `Encounter`
- Element ID: `DeviceRequest`
- Element ID: `MedicationRequest`
- Element ID: `NutritionOrder`
- Element ID: `QuestionnaireResponse`
- Element ID: `ServiceRequest`
- Element ID: `VisionPrescription`

### Introduction

This extension is added to FHIR Request and other resources as part of the CRD Coverage Information Response Type.

The process of describing the applicable coverage rules for a given product or service can be complex, so this extension includes quite a few components.

The primary purpose of this extension is to convey three things:

1. Is the product/service covered under the patient's coverage? (covered)
2. If covered (or possibly covered), under the patient's coverage, is prior authorization necessary? (pa-needed)
3. Is there additional information that needs to be covered that will be needed for: prior authorization processing, claims adjudication, appropriate use review, by the performer for any of the preceding reasons, or for some other purpose? (doc-needed)

All of the remaining elements are used to provide support for those three primary elements. There are several types of support.

#### Scoping elements

These elements limit the applicability of the statement being made. For example, if the statement is "covered, no prior authorization required", that assertion could be based on certain assumptions, such as the service being billed in a particular way or being performed in a particular time period time. There can be multiple coverage-information repetitions that each have distinct scoping elements. When this occurs, the interpretation is "if the scoping elements for the first coverage-information are true, the rules for coverage/authorization/etc. are defined in that coverage-information instance, otherwise keep looking for rules in subsequent coverage repetitions". The union of the scoping elements in each coverage-information repetition SHOULD be disjoint. §covinfo-1 I.e. for a given performed service, there should be a single coverage-information repetition that applies.

NOTE: The coverage information repetitions may not provide full coverage. For example, it is possible that the eventual billed code will fall outside the list of billing codes and/or date ranges of any of the coverage-information repetitions present. In that situation, no inference can be made about the coverage, prior authorization, or documentation requirements for the performed service.

- billingCode indicates the specific billing (codes) the coverage assertion applies to. This reflects the fact that the code used for an ordered product or service could vary from the performed or billed code. This is especially useful if the ordered code is not already a 'billing' code, but even if the ordered code is a billing code, the performed code might still vary.
- detail can have multiple uses. If the `detail.category` is 'limitation', then it acts as a scoping limitation. For example, limitation to quantity or performance period
- dependency indicates that the assertion is dependent on the occurrence of one or more other orders. For example, coverage for post-surgery rehabilitation might be dependent on the associated surgery proceeding as planned
- expiry-date is the date after which the provided coverage information should no longer be considered valid (typically when the patient's coverage ends or when coverage policies could change)

#### Detail elements

These elements provide additional details about the assertion being made, such as what type of documentation is needed.

- doc-purpose indicates the purposes for which additional documentation is needed when doc-needed is indicated
- info-needed indicates the nature of additional information that is necessary to make a decision about coverage, prior authorization, or documentation in situations where one or more of covered, pa-needed, or doc-needed is set to 'conditional'.
- reason indicates why the coverage decisions made apply. These would typically be reasons for no coverage, why prior auth is necessary, or why documentation is needed. But it could also convey why prior authorization is NOT necessary (e.g. gold carded provider). If one or more of the key decisions is "conditional", this will convey the details of the rules. If there are multiple reason repetitions, each repetition SHOULD make clear exactly what aspect of the coverage information assertion the reason applies to. §covinfo-2
- detail can have multiple uses. If the `detail.category` is 'decisional' or 'other', then the information provides additional detail, such as instructions for claim or authorization submission, copay information, etc.
- questionnaire indicates the questionnaire(s) to be completed in situations where doc-needed is flagged. (Note that DTR is capable of determining the set of questionnaires if they are not listed in the coverage-information extension.)
- satisfied-pa-id is the authorization number that applies if the pa-needed element is 'satisfied'

#### Metadata elements

Additional information related to this specific coverage assertion, such as when it was made or where to reach out for additional details.

- date indicates when the assertion was made
- coverage-assertion-id is a unique number for the coverage assertion
- contact is how to reach out if there are questions or a need for additional support with respect to the provided coverage information
- coverage indicates which insurance coverage the coverage information applies to. (In some cases, a service might make assertions for multiple coverages.)

Usage info

Usages:

- Use this Extension: CRD Appointment without Order, CRD Communication Request, CRD Device Request, CRD Encounter... Show 4 more, CRD Medication Request, CRD Nutrition Order, CRD Service Request and CRD Vision Prescription
- Examples for this Extension: MedicationRequest/annotated-example

You can also check for usages in the FHIR IG Statistics

### Formal Views of Extension Content

Description Differentials, Snapshots, and other representations.

- Differential Table
- Snapshot Table
- Statistics/References
- All

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Extension | C | 0..* | Extension | CoverageInfo Constraints: crd-ci-q1, crd-ci-q2, crd-ci-q3, crd-ci-q4, crd-ci-q5, crd-ci-q6, crd-ci-q7, crd-ci-q8, crd-ci-q9
extension |  | 4..* | Extension | Extension
Slices for extension |  |  |  | Content/Rules for all slices
extension:coverage | S | 1..1 | Extension | Reference to Coverage
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "coverage"
value[x] |  | 1..1 | Reference(CRD Coverage) | Value of extension
extension:covered | S | 1..1 | Extension | covered | not-covered | conditional | indeterminate
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "covered"
value[x] |  | 1..1 | code | Value of extension Binding: CRD Coverage Information Covered Value Set (required)
extension:pa-needed | S C | 0..1 | Extension | no-auth | auth-needed | satisfied | performpa | conditional | indeterminate
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "pa-needed"
value[x] |  | 1..1 | code | Value of extension Binding: CRD Coverage Information Prior Authorization Value Set (required)
extension:doc-needed | S | 0..* | Extension | clinical | admin | patient | conditional | indeterminate
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "doc-needed"
value[x] |  | 1..1 | code | Value of extension Binding: CRD Coverage Information Additional Documentation Value Set (required)
extension:doc-purpose | S C | 0..* | Extension | withpa | withclaim | withorder | retain-doc | OTH
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "doc-purpose"
value[x] |  | 1..1 | code | Value of extension Binding: CRD Coverage Information Documentation Reason Value Set (required)
extension:info-needed | S C | 0..* | Extension | performer | location | timeframe | contract-window | detail-code | OTH
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "info-needed"
value[x] |  | 1..1 | code | Value of extension Binding: CRD Information Needed Value Set (required)
extension:billingCode | S | 0..* | Extension | Billing code
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "billingCode"
value[x] |  | 1..1 | Coding | Value of extension Binding: USCLSCodes (example)
extension:reason | S C | 0..* | Extension | Reason for assertion
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "reason"
value[x] |  | 1..1 | CodeableConcept | Value of extension Binding: CRD Coverage Assertion Reasons Value Set (extensible)
extension:detail | S | 0..* | Extension | detail for assertion
extension |  | 3..* | Extension | Extension
Slices for extension |  |  |  | Content/Rules for all slices
extension:category |  | 1..1 | Extension | Type of detail
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "category"
value[x] |  | 0..1 | code | Value of extension Binding: CRD Coverage Detail Categories Value Set (required)
extension:code |  | 1..1 | Extension | Name of name-value pair
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "code"
value[x] |  | 0..1 | CodeableConcept | Value of extension Binding: Official CRD Coverage Detail Codes Value Set (extensible)
Additional Bindings | Purpose
Deprecated CRD Coverage Detail Codes Value Set | Extensible
extension:value |  | 1..1 | Extension | Value of name-value pair
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "value"
value[x] |  | 0..1 |  | Value of extension
valueBoolean |  |  | boolean |
valueString |  |  | string |
valueUrl |  |  | url |
valuePeriod |  |  | Period |
valueQuantity |  |  | Quantity(SimpleQuantity) |
extension:qualification |  | 0..1 | Extension | Additional info about detail
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "qualification"
value[x] |  | 0..1 | string | Value of extension
url |  | 1..1 | uri | "detail"
value[x] |  | 0..0 |  | Value of extension
extension:dependency | S | 0..* | Extension | Resources that impact this assertion
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "dependency"
value[x] |  | 0..1 | Reference(CRD Appointment with Order | CRD Appointment without Order | CRD Communication Request | CRD Device Request | CRD Medication Request | CRD Nutrition Order | CRD Service Request | CRD Vision Prescription) | Value of extension
extension:questionnaire | S C | 0..* | Extension | Questionnaire to complete
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "questionnaire"
value[x] |  | 0..1 | canonical(Questionnaire) | Value of extension
extension:date | S | 1..1 | Extension | Assertion date
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "date"
value[x] |  | 1..1 | date | Value of extension
extension:coverage-assertion-id | S | 1..1 | Extension | Coverage assertion trace number
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "coverage-assertion-id"
value[x] |  | 1..1 | string | Value of extension
extension:satisfied-pa-id | S C | 0..1 | Extension | Satisfied prior auth number
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "satisfied-pa-id"
value[x] |  | 0..1 | string | Value of extension
extension:contact | S | 0..* | Extension | Contact information
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "contact"
value[x] |  | 0..1 | ContactDetail | Value of extension
extension:expiry-date | S | 0..1 | Extension | Expiration date
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "expiry-date"
value[x] |  | 0..1 | date | Value of extension
url |  | 1..1 | uri | "http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information"
value[x] |  | 0..0 |  | Value of extension
Documentation for this format

#### Terminology Bindings (Differential)

Path | Status | Usage | ValueSet | Version | Source
Extension.extension:covered.​value[x] | Base | required | CRD Coverage Information Covered Value Set | 📦2.2.1 | This IG
Extension.extension:pa-needed.​value[x] | Base | required | CRD Coverage Information Prior Authorization Value Set | 📦2.2.1 | This IG
Extension.extension:doc-needed.​value[x] | Base | required | CRD Coverage Information Additional Documentation Value Set | 📦2.2.1 | This IG
Extension.extension:doc-purpose.​value[x] | Base | required | CRD Coverage Information Documentation Reason Value Set | 📦2.2.1 | This IG
Extension.extension:info-needed.​value[x] | Base | required | CRD Information Needed Value Set | 📦2.2.1 | This IG
Extension.extension:billingCode.​value[x] | Base | example | USCLS Codes | 📦4.0.1 | FHIR Std.
Extension.extension:reason.​value[x] | Base | extensible | CRD Coverage Assertion Reasons Value Set | 📦2.2.1 | This IG
Extension.extension:detail.​extension:category.value[x] | Base | required | CRD Coverage Detail Categories Value Set | 📦2.2.1 | This IG
Extension.extension:detail.​extension:code.value[x] | Base | extensible | Official CRD Coverage Detail Codes Value Set | 📦2.2.1 | This IG

#### Constraints

Id | Grade | Path(s) | Description | Expression
crd-ci-q1 | error | Extension | Questionnaire is only allowed when doc-needed exists | `extension.where(url='questionnaire').exists() implies extension.where(url = 'doc-needed').exists()`
crd-ci-q2 | error | Extension | If covered is set to 'not-covered', then 'pa-needed' must not exist. | `extension.where(url = 'covered' and value = 'not-covered').exists() implies extension.where(url = 'pa-needed').exists().not()`
crd-ci-q3 | error | Extension | 'info-needed' SHALL exist if and only if at least one of 'covered', 'pa-needed', or 'doc-needed' is set to 'conditional'. | `extension.where((url = 'covered' or url = 'pa-needed' or url = 'doc-needed') and value = 'conditional').count() >= 1 implies extension.where(url = 'info-needed').exists()`
crd-ci-q4 | error | Extension | If 'pa-needed' is 'satisfied', 'noauth', or 'not-covered', then 'Doc-purpose' cannot be 'withpa'. | `extension.where(url = 'pa-needed' and (value = 'satisfied' or value = 'noauth' or value = 'not-covered')) and extension.where(url = 'doc-purpose').exists() implies extension.where(url = 'doc-purpose').all(value != 'withpa')`
crd-ci-q5 | error | Extension | 'satisfied-pa-id' must exist if and only if 'pa-needed' is set to 'satisfied'. | `extension.where(url = 'pa-needed' and value = 'satisfied').exists() = extension.where(url = 'satisfied-pa-id').exists()`
crd-ci-q6 | error | Extension | If 'info-needed' is OTH, then reason must be specified | `extension.where(url = 'info-needed' and value = 'OTH').exists() implies extension.where(url = 'reason').exists()`
crd-ci-q7 | error | Extension | If reason.coding is present and is not from the extensible value set, then reason.text must be present | `extension.where(url = 'reason').empty() or extension.where(url = 'reason').value.text.exists() or extension.where(url = 'reason').value.memberOf('http://hl7.org/fhir/us/davinci-crd/ValueSet/coverageAssertionReasons')`
crd-ci-q8 | error | Extension | If doc-purpose is present with a value other than 'conditional', then reason must be present | `extension.where(url = 'doc-purpose' and value != 'conditional').exists() implies extension.where(url = 'reason').exists()`
crd-ci-q9 | error | Extension | If any of 'covered', 'pa-needed', or 'doc-needed' is set to 'indeterminate', then reason must be present to explain the issue that is preventing the payer from making a coverage determination. | `extension.where((url = 'covered' or url = 'pa-needed' or url = 'doc-needed') and value = 'indeterminate').count() >= 1 implies extension.where(url = 'reason').exists()`

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Extension | C | 0..* | Extension | CoverageInfo Constraints: crd-ci-q1, crd-ci-q2, crd-ci-q3, crd-ci-q4, crd-ci-q5, crd-ci-q6, crd-ci-q7, crd-ci-q8, crd-ci-q9
id |  | 0..1 | string | Unique id for inter-element referencing
Slices for extension |  | 4..* | Extension | Extension Slice: Unordered, Open by value:url
extension:coverage | S | 1..1 | Extension | Reference to Coverage
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "coverage"
value[x] |  | 1..1 | Reference(CRD Coverage) | Value of extension
extension:covered | S | 1..1 | Extension | covered | not-covered | conditional | indeterminate
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "covered"
value[x] |  | 1..1 | code | Value of extension Binding: CRD Coverage Information Covered Value Set (required)
extension:pa-needed | S C | 0..1 | Extension | no-auth | auth-needed | satisfied | performpa | conditional | indeterminate
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "pa-needed"
value[x] |  | 1..1 | code | Value of extension Binding: CRD Coverage Information Prior Authorization Value Set (required)
extension:doc-needed | S | 0..* | Extension | clinical | admin | patient | conditional | indeterminate
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "doc-needed"
value[x] |  | 1..1 | code | Value of extension Binding: CRD Coverage Information Additional Documentation Value Set (required)
extension:doc-purpose | S C | 0..* | Extension | withpa | withclaim | withorder | retain-doc | OTH
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "doc-purpose"
value[x] |  | 1..1 | code | Value of extension Binding: CRD Coverage Information Documentation Reason Value Set (required)
extension:info-needed | S C | 0..* | Extension | performer | location | timeframe | contract-window | detail-code | OTH
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "info-needed"
value[x] |  | 1..1 | code | Value of extension Binding: CRD Information Needed Value Set (required)
extension:billingCode | S | 0..* | Extension | Billing code
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "billingCode"
value[x] |  | 1..1 | Coding | Value of extension Binding: USCLSCodes (example)
extension:reason | S C | 0..* | Extension | Reason for assertion
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "reason"
value[x] |  | 1..1 | CodeableConcept | Value of extension Binding: CRD Coverage Assertion Reasons Value Set (extensible)
extension:detail | S | 0..* | Extension | detail for assertion
id |  | 0..1 | string | Unique id for inter-element referencing
Slices for extension |  | 3..* | Extension | Extension Slice: Unordered, Open by value:url
extension:category |  | 1..1 | Extension | Type of detail
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "category"
value[x] |  | 0..1 | code | Value of extension Binding: CRD Coverage Detail Categories Value Set (required)
extension:code |  | 1..1 | Extension | Name of name-value pair
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "code"
value[x] |  | 0..1 | CodeableConcept | Value of extension Binding: Official CRD Coverage Detail Codes Value Set (extensible)
Additional Bindings | Purpose
Deprecated CRD Coverage Detail Codes Value Set | Extensible
extension:value |  | 1..1 | Extension | Value of name-value pair
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "value"
value[x] |  | 0..1 |  | Value of extension
valueBoolean |  |  | boolean |
valueString |  |  | string |
valueUrl |  |  | url |
valuePeriod |  |  | Period |
valueQuantity |  |  | Quantity(SimpleQuantity) |
extension:qualification |  | 0..1 | Extension | Additional info about detail
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "qualification"
value[x] |  | 0..1 | string | Value of extension
url |  | 1..1 | uri | "detail"
extension:dependency | S | 0..* | Extension | Resources that impact this assertion
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "dependency"
value[x] |  | 0..1 | Reference(CRD Appointment with Order | CRD Appointment without Order | CRD Communication Request | CRD Device Request | CRD Medication Request | CRD Nutrition Order | CRD Service Request | CRD Vision Prescription) | Value of extension
extension:questionnaire | S C | 0..* | Extension | Questionnaire to complete
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "questionnaire"
value[x] |  | 0..1 | canonical(Questionnaire) | Value of extension
extension:date | S | 1..1 | Extension | Assertion date
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "date"
value[x] |  | 1..1 | date | Value of extension
extension:coverage-assertion-id | S | 1..1 | Extension | Coverage assertion trace number
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "coverage-assertion-id"
value[x] |  | 1..1 | string | Value of extension
extension:satisfied-pa-id | S C | 0..1 | Extension | Satisfied prior auth number
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "satisfied-pa-id"
value[x] |  | 0..1 | string | Value of extension
extension:contact | S | 0..* | Extension | Contact information
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "contact"
value[x] |  | 0..1 | ContactDetail | Value of extension
extension:expiry-date | S | 0..1 | Extension | Expiration date
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "expiry-date"
value[x] |  | 0..1 | date | Value of extension
url |  | 1..1 | uri | "http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information"
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Extension.extension:covered.​value[x] | Base | required | CRD Coverage Information Covered Value Set | 📦2.2.1 | This IG
Extension.extension:pa-needed.​value[x] | Base | required | CRD Coverage Information Prior Authorization Value Set | 📦2.2.1 | This IG
Extension.extension:doc-needed.​value[x] | Base | required | CRD Coverage Information Additional Documentation Value Set | 📦2.2.1 | This IG
Extension.extension:doc-purpose.​value[x] | Base | required | CRD Coverage Information Documentation Reason Value Set | 📦2.2.1 | This IG
Extension.extension:info-needed.​value[x] | Base | required | CRD Information Needed Value Set | 📦2.2.1 | This IG
Extension.extension:billingCode.​value[x] | Base | example | USCLS Codes | 📦4.0.1 | FHIR Std.
Extension.extension:reason.​value[x] | Base | extensible | CRD Coverage Assertion Reasons Value Set | 📦2.2.1 | This IG
Extension.extension:detail.​extension:category.value[x] | Base | required | CRD Coverage Detail Categories Value Set | 📦2.2.1 | This IG
Extension.extension:detail.​extension:code.value[x] | Base | extensible | Official CRD Coverage Detail Codes Value Set | 📦2.2.1 | This IG

#### Constraints

Id | Grade | Path(s) | Description | Expression
crd-ci-q1 | error | Extension | Questionnaire is only allowed when doc-needed exists | `extension.where(url='questionnaire').exists() implies extension.where(url = 'doc-needed').exists()`
crd-ci-q2 | error | Extension | If covered is set to 'not-covered', then 'pa-needed' must not exist. | `extension.where(url = 'covered' and value = 'not-covered').exists() implies extension.where(url = 'pa-needed').exists().not()`
crd-ci-q3 | error | Extension | 'info-needed' SHALL exist if and only if at least one of 'covered', 'pa-needed', or 'doc-needed' is set to 'conditional'. | `extension.where((url = 'covered' or url = 'pa-needed' or url = 'doc-needed') and value = 'conditional').count() >= 1 implies extension.where(url = 'info-needed').exists()`
crd-ci-q4 | error | Extension | If 'pa-needed' is 'satisfied', 'noauth', or 'not-covered', then 'Doc-purpose' cannot be 'withpa'. | `extension.where(url = 'pa-needed' and (value = 'satisfied' or value = 'noauth' or value = 'not-covered')) and extension.where(url = 'doc-purpose').exists() implies extension.where(url = 'doc-purpose').all(value != 'withpa')`
crd-ci-q5 | error | Extension | 'satisfied-pa-id' must exist if and only if 'pa-needed' is set to 'satisfied'. | `extension.where(url = 'pa-needed' and value = 'satisfied').exists() = extension.where(url = 'satisfied-pa-id').exists()`
crd-ci-q6 | error | Extension | If 'info-needed' is OTH, then reason must be specified | `extension.where(url = 'info-needed' and value = 'OTH').exists() implies extension.where(url = 'reason').exists()`
crd-ci-q7 | error | Extension | If reason.coding is present and is not from the extensible value set, then reason.text must be present | `extension.where(url = 'reason').empty() or extension.where(url = 'reason').value.text.exists() or extension.where(url = 'reason').value.memberOf('http://hl7.org/fhir/us/davinci-crd/ValueSet/coverageAssertionReasons')`
crd-ci-q8 | error | Extension | If doc-purpose is present with a value other than 'conditional', then reason must be present | `extension.where(url = 'doc-purpose' and value != 'conditional').exists() implies extension.where(url = 'reason').exists()`
crd-ci-q9 | error | Extension | If any of 'covered', 'pa-needed', or 'doc-needed' is set to 'indeterminate', then reason must be present to explain the issue that is preventing the payer from making a coverage determination. | `extension.where((url = 'covered' or url = 'pa-needed' or url = 'doc-needed') and value = 'indeterminate').count() >= 1 implies extension.where(url = 'reason').exists()`
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children | `hasValue() or (children().count() > id.count())`
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both | `extension.exists() != value.exists()`

Summary

Complex Extension: Captures assertions from a payer about the coverage rules for a service - in particular, whether it is covered and/or requires prior authorization.

- coverage: Reference: Reference to Coverage that assertion applies to.
- covered: code: Indicates whether the ordered/requested service is covered under patient's plan. This includes checking whether the proposed service is a benefit under the patient's plan. It MAY also involve checking whether the patient has reached their limits under the current plan period but is not required to.
- pa-needed: code: Indicates whether prior auth will be needed for coverage to be provided
- doc-needed: code: Indicates whether additional documentation needs to be captured (purpose in next element)
- doc-purpose: code: Indicates the reason(s) for the additional documentation that needs to be captured
- info-needed: code: Indicates whether information about the performer, location, and/or performance date is needed to determine coverage information
- billingCode: Coding: Billing code(s) that must be used in the eventual claim for the coverage assertion to hold
- reason: CodeableConcept: Indicates the 'reason' for the coverage assertion
- category: code: Indicates the nature of the detail, which in turn provides guidance for when it should be displayed.
- code: CodeableConcept: The type of detail or qualification expressed.
- value: boolean, string, url, Period, Quantity: The detail or qualification that applies to this coverage assertion.
- qualification: string: Additional text that qualifies/expands on the computable detail. E.g. 'Provided coverage is renewed' or 'Does not account for deductible'
- dependency: Reference: If present, indicates that the determination represented here is dependent on the content, determination, and possibly execution of the referenced order(s)
- questionnaire: canonical: A form to be filled out to gather more information.
- date: date: Date on which assertion was made.
- coverage-assertion-id: string: Trace identifier to allow tracking the guidance in source system. This identifier can also be used to re-establish cached context information when subsequently launching DTR.
- satisfied-pa-id: string: An identifier indicating that prior authorization requirements have been met
- contact: ContactDetail: Name, phone number, fax number, email address, website, or other contact information that can be used to ask questions/escalate issues related to a coverage assertion.
- expiry-date: date: Date after which the coverage assertion would no longer be valid.

Maturity: 1

Differential ViewDifferential View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Extension | C | 0..* | Extension | CoverageInfo Constraints: crd-ci-q1, crd-ci-q2, crd-ci-q3, crd-ci-q4, crd-ci-q5, crd-ci-q6, crd-ci-q7, crd-ci-q8, crd-ci-q9
extension |  | 4..* | Extension | Extension
Slices for extension |  |  |  | Content/Rules for all slices
extension:coverage | S | 1..1 | Extension | Reference to Coverage
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "coverage"
value[x] |  | 1..1 | Reference(CRD Coverage) | Value of extension
extension:covered | S | 1..1 | Extension | covered | not-covered | conditional | indeterminate
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "covered"
value[x] |  | 1..1 | code | Value of extension Binding: CRD Coverage Information Covered Value Set (required)
extension:pa-needed | S C | 0..1 | Extension | no-auth | auth-needed | satisfied | performpa | conditional | indeterminate
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "pa-needed"
value[x] |  | 1..1 | code | Value of extension Binding: CRD Coverage Information Prior Authorization Value Set (required)
extension:doc-needed | S | 0..* | Extension | clinical | admin | patient | conditional | indeterminate
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "doc-needed"
value[x] |  | 1..1 | code | Value of extension Binding: CRD Coverage Information Additional Documentation Value Set (required)
extension:doc-purpose | S C | 0..* | Extension | withpa | withclaim | withorder | retain-doc | OTH
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "doc-purpose"
value[x] |  | 1..1 | code | Value of extension Binding: CRD Coverage Information Documentation Reason Value Set (required)
extension:info-needed | S C | 0..* | Extension | performer | location | timeframe | contract-window | detail-code | OTH
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "info-needed"
value[x] |  | 1..1 | code | Value of extension Binding: CRD Information Needed Value Set (required)
extension:billingCode | S | 0..* | Extension | Billing code
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "billingCode"
value[x] |  | 1..1 | Coding | Value of extension Binding: USCLSCodes (example)
extension:reason | S C | 0..* | Extension | Reason for assertion
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "reason"
value[x] |  | 1..1 | CodeableConcept | Value of extension Binding: CRD Coverage Assertion Reasons Value Set (extensible)
extension:detail | S | 0..* | Extension | detail for assertion
extension |  | 3..* | Extension | Extension
Slices for extension |  |  |  | Content/Rules for all slices
extension:category |  | 1..1 | Extension | Type of detail
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "category"
value[x] |  | 0..1 | code | Value of extension Binding: CRD Coverage Detail Categories Value Set (required)
extension:code |  | 1..1 | Extension | Name of name-value pair
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "code"
value[x] |  | 0..1 | CodeableConcept | Value of extension Binding: Official CRD Coverage Detail Codes Value Set (extensible)
Additional Bindings | Purpose
Deprecated CRD Coverage Detail Codes Value Set | Extensible
extension:value |  | 1..1 | Extension | Value of name-value pair
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "value"
value[x] |  | 0..1 |  | Value of extension
valueBoolean |  |  | boolean |
valueString |  |  | string |
valueUrl |  |  | url |
valuePeriod |  |  | Period |
valueQuantity |  |  | Quantity(SimpleQuantity) |
extension:qualification |  | 0..1 | Extension | Additional info about detail
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "qualification"
value[x] |  | 0..1 | string | Value of extension
url |  | 1..1 | uri | "detail"
value[x] |  | 0..0 |  | Value of extension
extension:dependency | S | 0..* | Extension | Resources that impact this assertion
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "dependency"
value[x] |  | 0..1 | Reference(CRD Appointment with Order | CRD Appointment without Order | CRD Communication Request | CRD Device Request | CRD Medication Request | CRD Nutrition Order | CRD Service Request | CRD Vision Prescription) | Value of extension
extension:questionnaire | S C | 0..* | Extension | Questionnaire to complete
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "questionnaire"
value[x] |  | 0..1 | canonical(Questionnaire) | Value of extension
extension:date | S | 1..1 | Extension | Assertion date
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "date"
value[x] |  | 1..1 | date | Value of extension
extension:coverage-assertion-id | S | 1..1 | Extension | Coverage assertion trace number
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "coverage-assertion-id"
value[x] |  | 1..1 | string | Value of extension
extension:satisfied-pa-id | S C | 0..1 | Extension | Satisfied prior auth number
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "satisfied-pa-id"
value[x] |  | 0..1 | string | Value of extension
extension:contact | S | 0..* | Extension | Contact information
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "contact"
value[x] |  | 0..1 | ContactDetail | Value of extension
extension:expiry-date | S | 0..1 | Extension | Expiration date
extension |  | 0..0 |  | Extension
url |  | 1..1 | uri | "expiry-date"
value[x] |  | 0..1 | date | Value of extension
url |  | 1..1 | uri | "http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information"
value[x] |  | 0..0 |  | Value of extension
Documentation for this format

#### Terminology Bindings (Differential)

Path | Status | Usage | ValueSet | Version | Source
Extension.extension:covered.​value[x] | Base | required | CRD Coverage Information Covered Value Set | 📦2.2.1 | This IG
Extension.extension:pa-needed.​value[x] | Base | required | CRD Coverage Information Prior Authorization Value Set | 📦2.2.1 | This IG
Extension.extension:doc-needed.​value[x] | Base | required | CRD Coverage Information Additional Documentation Value Set | 📦2.2.1 | This IG
Extension.extension:doc-purpose.​value[x] | Base | required | CRD Coverage Information Documentation Reason Value Set | 📦2.2.1 | This IG
Extension.extension:info-needed.​value[x] | Base | required | CRD Information Needed Value Set | 📦2.2.1 | This IG
Extension.extension:billingCode.​value[x] | Base | example | USCLS Codes | 📦4.0.1 | FHIR Std.
Extension.extension:reason.​value[x] | Base | extensible | CRD Coverage Assertion Reasons Value Set | 📦2.2.1 | This IG
Extension.extension:detail.​extension:category.value[x] | Base | required | CRD Coverage Detail Categories Value Set | 📦2.2.1 | This IG
Extension.extension:detail.​extension:code.value[x] | Base | extensible | Official CRD Coverage Detail Codes Value Set | 📦2.2.1 | This IG

#### Constraints

Id | Grade | Path(s) | Description | Expression
crd-ci-q1 | error | Extension | Questionnaire is only allowed when doc-needed exists | `extension.where(url='questionnaire').exists() implies extension.where(url = 'doc-needed').exists()`
crd-ci-q2 | error | Extension | If covered is set to 'not-covered', then 'pa-needed' must not exist. | `extension.where(url = 'covered' and value = 'not-covered').exists() implies extension.where(url = 'pa-needed').exists().not()`
crd-ci-q3 | error | Extension | 'info-needed' SHALL exist if and only if at least one of 'covered', 'pa-needed', or 'doc-needed' is set to 'conditional'. | `extension.where((url = 'covered' or url = 'pa-needed' or url = 'doc-needed') and value = 'conditional').count() >= 1 implies extension.where(url = 'info-needed').exists()`
crd-ci-q4 | error | Extension | If 'pa-needed' is 'satisfied', 'noauth', or 'not-covered', then 'Doc-purpose' cannot be 'withpa'. | `extension.where(url = 'pa-needed' and (value = 'satisfied' or value = 'noauth' or value = 'not-covered')) and extension.where(url = 'doc-purpose').exists() implies extension.where(url = 'doc-purpose').all(value != 'withpa')`
crd-ci-q5 | error | Extension | 'satisfied-pa-id' must exist if and only if 'pa-needed' is set to 'satisfied'. | `extension.where(url = 'pa-needed' and value = 'satisfied').exists() = extension.where(url = 'satisfied-pa-id').exists()`
crd-ci-q6 | error | Extension | If 'info-needed' is OTH, then reason must be specified | `extension.where(url = 'info-needed' and value = 'OTH').exists() implies extension.where(url = 'reason').exists()`
crd-ci-q7 | error | Extension | If reason.coding is present and is not from the extensible value set, then reason.text must be present | `extension.where(url = 'reason').empty() or extension.where(url = 'reason').value.text.exists() or extension.where(url = 'reason').value.memberOf('http://hl7.org/fhir/us/davinci-crd/ValueSet/coverageAssertionReasons')`
crd-ci-q8 | error | Extension | If doc-purpose is present with a value other than 'conditional', then reason must be present | `extension.where(url = 'doc-purpose' and value != 'conditional').exists() implies extension.where(url = 'reason').exists()`
crd-ci-q9 | error | Extension | If any of 'covered', 'pa-needed', or 'doc-needed' is set to 'indeterminate', then reason must be present to explain the issue that is preventing the payer from making a coverage determination. | `extension.where((url = 'covered' or url = 'pa-needed' or url = 'doc-needed') and value = 'indeterminate').count() >= 1 implies extension.where(url = 'reason').exists()`

Snapshot View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Extension | C | 0..* | Extension | CoverageInfo Constraints: crd-ci-q1, crd-ci-q2, crd-ci-q3, crd-ci-q4, crd-ci-q5, crd-ci-q6, crd-ci-q7, crd-ci-q8, crd-ci-q9
id |  | 0..1 | string | Unique id for inter-element referencing
Slices for extension |  | 4..* | Extension | Extension Slice: Unordered, Open by value:url
extension:coverage | S | 1..1 | Extension | Reference to Coverage
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "coverage"
value[x] |  | 1..1 | Reference(CRD Coverage) | Value of extension
extension:covered | S | 1..1 | Extension | covered | not-covered | conditional | indeterminate
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "covered"
value[x] |  | 1..1 | code | Value of extension Binding: CRD Coverage Information Covered Value Set (required)
extension:pa-needed | S C | 0..1 | Extension | no-auth | auth-needed | satisfied | performpa | conditional | indeterminate
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "pa-needed"
value[x] |  | 1..1 | code | Value of extension Binding: CRD Coverage Information Prior Authorization Value Set (required)
extension:doc-needed | S | 0..* | Extension | clinical | admin | patient | conditional | indeterminate
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "doc-needed"
value[x] |  | 1..1 | code | Value of extension Binding: CRD Coverage Information Additional Documentation Value Set (required)
extension:doc-purpose | S C | 0..* | Extension | withpa | withclaim | withorder | retain-doc | OTH
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "doc-purpose"
value[x] |  | 1..1 | code | Value of extension Binding: CRD Coverage Information Documentation Reason Value Set (required)
extension:info-needed | S C | 0..* | Extension | performer | location | timeframe | contract-window | detail-code | OTH
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "info-needed"
value[x] |  | 1..1 | code | Value of extension Binding: CRD Information Needed Value Set (required)
extension:billingCode | S | 0..* | Extension | Billing code
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "billingCode"
value[x] |  | 1..1 | Coding | Value of extension Binding: USCLSCodes (example)
extension:reason | S C | 0..* | Extension | Reason for assertion
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "reason"
value[x] |  | 1..1 | CodeableConcept | Value of extension Binding: CRD Coverage Assertion Reasons Value Set (extensible)
extension:detail | S | 0..* | Extension | detail for assertion
id |  | 0..1 | string | Unique id for inter-element referencing
Slices for extension |  | 3..* | Extension | Extension Slice: Unordered, Open by value:url
extension:category |  | 1..1 | Extension | Type of detail
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "category"
value[x] |  | 0..1 | code | Value of extension Binding: CRD Coverage Detail Categories Value Set (required)
extension:code |  | 1..1 | Extension | Name of name-value pair
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "code"
value[x] |  | 0..1 | CodeableConcept | Value of extension Binding: Official CRD Coverage Detail Codes Value Set (extensible)
Additional Bindings | Purpose
Deprecated CRD Coverage Detail Codes Value Set | Extensible
extension:value |  | 1..1 | Extension | Value of name-value pair
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "value"
value[x] |  | 0..1 |  | Value of extension
valueBoolean |  |  | boolean |
valueString |  |  | string |
valueUrl |  |  | url |
valuePeriod |  |  | Period |
valueQuantity |  |  | Quantity(SimpleQuantity) |
extension:qualification |  | 0..1 | Extension | Additional info about detail
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "qualification"
value[x] |  | 0..1 | string | Value of extension
url |  | 1..1 | uri | "detail"
extension:dependency | S | 0..* | Extension | Resources that impact this assertion
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "dependency"
value[x] |  | 0..1 | Reference(CRD Appointment with Order | CRD Appointment without Order | CRD Communication Request | CRD Device Request | CRD Medication Request | CRD Nutrition Order | CRD Service Request | CRD Vision Prescription) | Value of extension
extension:questionnaire | S C | 0..* | Extension | Questionnaire to complete
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "questionnaire"
value[x] |  | 0..1 | canonical(Questionnaire) | Value of extension
extension:date | S | 1..1 | Extension | Assertion date
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "date"
value[x] |  | 1..1 | date | Value of extension
extension:coverage-assertion-id | S | 1..1 | Extension | Coverage assertion trace number
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "coverage-assertion-id"
value[x] |  | 1..1 | string | Value of extension
extension:satisfied-pa-id | S C | 0..1 | Extension | Satisfied prior auth number
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "satisfied-pa-id"
value[x] |  | 0..1 | string | Value of extension
extension:contact | S | 0..* | Extension | Contact information
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "contact"
value[x] |  | 0..1 | ContactDetail | Value of extension
extension:expiry-date | S | 0..1 | Extension | Expiration date
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..0 |  | Extension Slice: Unordered, Open by value:url
url |  | 1..1 | uri | "expiry-date"
value[x] |  | 0..1 | date | Value of extension
url |  | 1..1 | uri | "http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information"
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Extension.extension:covered.​value[x] | Base | required | CRD Coverage Information Covered Value Set | 📦2.2.1 | This IG
Extension.extension:pa-needed.​value[x] | Base | required | CRD Coverage Information Prior Authorization Value Set | 📦2.2.1 | This IG
Extension.extension:doc-needed.​value[x] | Base | required | CRD Coverage Information Additional Documentation Value Set | 📦2.2.1 | This IG
Extension.extension:doc-purpose.​value[x] | Base | required | CRD Coverage Information Documentation Reason Value Set | 📦2.2.1 | This IG
Extension.extension:info-needed.​value[x] | Base | required | CRD Information Needed Value Set | 📦2.2.1 | This IG
Extension.extension:billingCode.​value[x] | Base | example | USCLS Codes | 📦4.0.1 | FHIR Std.
Extension.extension:reason.​value[x] | Base | extensible | CRD Coverage Assertion Reasons Value Set | 📦2.2.1 | This IG
Extension.extension:detail.​extension:category.value[x] | Base | required | CRD Coverage Detail Categories Value Set | 📦2.2.1 | This IG
Extension.extension:detail.​extension:code.value[x] | Base | extensible | Official CRD Coverage Detail Codes Value Set | 📦2.2.1 | This IG

#### Constraints

Id | Grade | Path(s) | Description | Expression
crd-ci-q1 | error | Extension | Questionnaire is only allowed when doc-needed exists | `extension.where(url='questionnaire').exists() implies extension.where(url = 'doc-needed').exists()`
crd-ci-q2 | error | Extension | If covered is set to 'not-covered', then 'pa-needed' must not exist. | `extension.where(url = 'covered' and value = 'not-covered').exists() implies extension.where(url = 'pa-needed').exists().not()`
crd-ci-q3 | error | Extension | 'info-needed' SHALL exist if and only if at least one of 'covered', 'pa-needed', or 'doc-needed' is set to 'conditional'. | `extension.where((url = 'covered' or url = 'pa-needed' or url = 'doc-needed') and value = 'conditional').count() >= 1 implies extension.where(url = 'info-needed').exists()`
crd-ci-q4 | error | Extension | If 'pa-needed' is 'satisfied', 'noauth', or 'not-covered', then 'Doc-purpose' cannot be 'withpa'. | `extension.where(url = 'pa-needed' and (value = 'satisfied' or value = 'noauth' or value = 'not-covered')) and extension.where(url = 'doc-purpose').exists() implies extension.where(url = 'doc-purpose').all(value != 'withpa')`
crd-ci-q5 | error | Extension | 'satisfied-pa-id' must exist if and only if 'pa-needed' is set to 'satisfied'. | `extension.where(url = 'pa-needed' and value = 'satisfied').exists() = extension.where(url = 'satisfied-pa-id').exists()`
crd-ci-q6 | error | Extension | If 'info-needed' is OTH, then reason must be specified | `extension.where(url = 'info-needed' and value = 'OTH').exists() implies extension.where(url = 'reason').exists()`
crd-ci-q7 | error | Extension | If reason.coding is present and is not from the extensible value set, then reason.text must be present | `extension.where(url = 'reason').empty() or extension.where(url = 'reason').value.text.exists() or extension.where(url = 'reason').value.memberOf('http://hl7.org/fhir/us/davinci-crd/ValueSet/coverageAssertionReasons')`
crd-ci-q8 | error | Extension | If doc-purpose is present with a value other than 'conditional', then reason must be present | `extension.where(url = 'doc-purpose' and value != 'conditional').exists() implies extension.where(url = 'reason').exists()`
crd-ci-q9 | error | Extension | If any of 'covered', 'pa-needed', or 'doc-needed' is set to 'indeterminate', then reason must be present to explain the issue that is preventing the payer from making a coverage determination. | `extension.where((url = 'covered' or url = 'pa-needed' or url = 'doc-needed') and value = 'indeterminate').count() >= 1 implies extension.where(url = 'reason').exists()`
ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children | `hasValue() or (children().count() > id.count())`
ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both | `extension.exists() != value.exists()`

Summary

Complex Extension: Captures assertions from a payer about the coverage rules for a service - in particular, whether it is covered and/or requires prior authorization.

- coverage: Reference: Reference to Coverage that assertion applies to.
- covered: code: Indicates whether the ordered/requested service is covered under patient's plan. This includes checking whether the proposed service is a benefit under the patient's plan. It MAY also involve checking whether the patient has reached their limits under the current plan period but is not required to.
- pa-needed: code: Indicates whether prior auth will be needed for coverage to be provided
- doc-needed: code: Indicates whether additional documentation needs to be captured (purpose in next element)
- doc-purpose: code: Indicates the reason(s) for the additional documentation that needs to be captured
- info-needed: code: Indicates whether information about the performer, location, and/or performance date is needed to determine coverage information
- billingCode: Coding: Billing code(s) that must be used in the eventual claim for the coverage assertion to hold
- reason: CodeableConcept: Indicates the 'reason' for the coverage assertion
- category: code: Indicates the nature of the detail, which in turn provides guidance for when it should be displayed.
- code: CodeableConcept: The type of detail or qualification expressed.
- value: boolean, string, url, Period, Quantity: The detail or qualification that applies to this coverage assertion.
- qualification: string: Additional text that qualifies/expands on the computable detail. E.g. 'Provided coverage is renewed' or 'Does not account for deductible'
- dependency: Reference: If present, indicates that the determination represented here is dependent on the content, determination, and possibly execution of the referenced order(s)
- questionnaire: canonical: A form to be filled out to gather more information.
- date: date: Date on which assertion was made.
- coverage-assertion-id: string: Trace identifier to allow tracking the guidance in source system. This identifier can also be used to re-establish cached context information when subsequently launching DTR.
- satisfied-pa-id: string: An identifier indicating that prior authorization requirements have been met
- contact: ContactDetail: Name, phone number, fax number, email address, website, or other contact information that can be used to ask questions/escalate issues related to a coverage assertion.
- expiry-date: date: Date after which the coverage assertion would no longer be valid.

Maturity: 1

Other representations of profile: CSV, Excel, Schematron

### Notes:

#### doc-needed vs. info-needed

This extension has two properties with similar names which may cause some confusion. Each has a very distinct purpose.

'doc-needed' is used to indicate the need for additional information to be collected (typically via DTR questionnaires) for the payer to make decisions about coverage and prior authorization. It indicates the type of user who will need to provide the answers. Once those answers are provided, a decision about coverage and at least whether prior authorization is necessary should be possible.

'info-needed' is used when the information provided in the hook payload is not even sufficient to determine what questions might be asked. For example, it may be necessary to know the performer, the location, have a better sense of the timeframe for service delivery, etc. In this case, the payer is indicating that a 'useful' response will need to wait until the relevant information is available. This might be a later hook in the same system (e.g. an ''order-dispatch'' or ''appointment-book'' if needing to know the performer or location) or might mean that a decision cannot be made until the patient hits the ''encounter-start'' hook in the performing system. The extension element indicates the nature of the information needed, which should give the provider an idea of where in the workflow a decision is likely.

It is not appropriate for payers to suggest filling out questionnaires to gather information that is likely not available in the current workflow stage and that will instead be available later. E.g. Do not ask for a more detailed code, location, or performer via DTR during order-sign. However, it is reasonable to prompt for more details about those things during appointment-book when they should realistically be available. Similarly, it is reasonable to use a Questionnaire to prompt for diagnosis on order-sign, as if a diagnosis is relevant to an order, it should always be known at that point in the workflow.