Da Vinci - Coverage Requirements Discovery
2.2.0-snapshot - STU 2.2 Peer Review

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.0-snapshot 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

## Resource Profile: CRD Appointment without Order

Official URL: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/profile-appointment-no-order | Version: 2.2.0-snapshot | Highlight text changes?
Standards status: Trial-use Active as of 2026-02-19 | Maturity Level: 1 | Computable Name: CRDAppointmentNoOrder
Other Identifiers: OID:2.16.840.1.113883.4.642.40.18.42.4

An appointment where the details of what the appointment is being booked for are provided inline and there is no associated ServiceRequest

### Usage

CRD Clients SHALL use either this Appointment with Order profile and/or the with-order to provide `appointments` context objects to CRD Servers when invoking the appointment-book hook as well as to resolve other references to Appointment resources. §prof-1

This profile conveys the details of the appointment within the resource itself and does not make reference to a ServiceRequest.

Information provided in Must Support elements will commonly be required for CRD Servers to perform coverage requirements discovery.

Usages:

- Use this Profile: CRD CDSHooks Additional Orders Response (Logical Definition), CRD CDSHooks Alternate Request Response (Logical Definition), CRD CDSHooks Coverage Information Response (Logical Definition), CRD Bundle of Appointments and CRD Bundle of Request Resources
- Refer to this Profile: Coverage Information and CRD Encounter
- CapabilityStatements using this Profile: CRD Client USCDI 1, CRD Client USCDI 3 and CRD Client USCDI 4

You can also check for usages in the FHIR IG Statistics

### Formal Views of Profile Content

Description Differentials, Snapshots, and other representations.

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

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Appointment | C | 0..* | CRDAppointmentBase | A booking of a healthcare event among patient(s), practitioner(s), related person(s) and/or device(s) for a specific date/time. This may result in one or more Encounter(s) Constraints: app-2, app-3, app-4, crd-apt1, crd-apt2
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
contained | S | 0..* | Resource | Contained, inline Resources
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url
extension:Coverage-Information | S C | 0..* | (Complex) | CoverageInfo URL: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information 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
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
identifier | S Σ | 0..* | Identifier | External Ids for this item
status | ?!S Σ | 1..1 | code | Appointment status Binding: AppointmentStatus (required): The free/busy status of an appointment. Example General: proposed
Slices for serviceCategory | S Σ | 0..* | CodeableConcept | A broad categorization of the service that is to be performed during this appointment Slice: Unordered, Open by value:$this Binding: ServiceCategory (example)
serviceCategory:us-core | S Σ | 0..* | CodeableConcept | A broad categorization of the service that is to be performed during this appointment Binding: USCoreServiceRequestCategoryCodes (7.0.0) (required)
serviceCategory:encounterType | S Σ | 0..1 | CodeableConcept | inpatient, outpatient, etc. Binding: ActEncounterCode (3.0.0) (required)
serviceCategory:serviceType | S Σ | 0..1 | CodeableConcept | X-ray, Lab, consulation, surgical, etc. Binding: X12 Service Type (required)
serviceType | S Σ | 0..* | CodeableConcept | Codes to identify requested services. (CPT, SNOMED CT or LOINC) Binding: CRD Service Request Codes Value Set (extensible): Codes describing the type of Service
Slices for extension |  |  |  | Content/Rules for all slices
extension:BillingOptions | S | 0..* | CodeableConcept | Expected Billing Code(s) URL: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-billing-options Binding: CRD Billing Codes Value Set (extensible)
specialty | S Σ | 0..* | CodeableConcept | The specialty of a practitioner that would be required to perform the service requested in this appointment Binding: PracticeSettingCodeValueSet (preferred)
appointmentType | S Σ | 0..1 | CodeableConcept | The style of appointment or patient that has been booked in the slot (not service type) Binding: hl7VS-appointmentReasonCodes (preferred)
reasonReference | S | 0..* | Reference(Condition | Procedure | Observation | ImmunizationRecommendation) | Reason the appointment is to take place (resource)
start | S Σ C | 0..1 | instant | When appointment is to take place
end | S Σ C | 0..1 | instant | When appointment is to conclude
Slices for participant | C | 2..* | BackboneElement | Participants involved in appointment Slice: Unordered, Open by value:type, profile:actor.resolve() Constraints: app-1
participant:All Slices |  |  |  | Content/Rules for all slices
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
actor | S Σ | 0..1 | Reference(Patient | Practitioner | PractitionerRole | RelatedPerson | Device | HealthcareService | Location) | Person, Location/HealthcareService or Device
status | S Σ | 1..1 | code | accepted | declined | tentative | needs-action Binding: ParticipationStatus (required): The Participation status of an appointment.
participant:Patient | S C | 1..1 | BackboneElement | Participants involved in appointment Constraints: app-1
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
actor | S Σ | 0..1 | Reference(CRD Patient) | Person, Location/HealthcareService or Device
status | S Σ | 1..1 | code | accepted | declined | tentative | needs-action Binding: ParticipationStatus (required): The Participation status of an appointment.
participant:PrimaryPerformer | S C | 1..* | BackboneElement | Participants involved in appointment Constraints: app-1
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
type | Σ | 1..1 | CodeableConcept | Role of participant in the appointment Binding: ParticipantType (extensible): Role of participant in encounter. Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
coding |  | 1..* | Coding | Code defined by a terminology system Fixed Value: (Complex)
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://terminology.hl7.org/CodeSystem/v3-ParticipationType
version |  | 0..1 | string | Version of the system - if relevant
code |  | 1..1 | code | Symbol in syntax defined by the system Fixed Value: PPRF
display |  | 0..1 | string | Representation defined by the system
userSelected |  | 0..1 | boolean | If this coding was chosen directly by the user
text |  | 0..1 | string | Plain text representation of the concept
actor | S Σ | 0..1 | Reference(CRD Practitioner | HRex PractitionerRole Profile | CRD Location) | Person, Location/HealthcareService or Device
status | S Σ | 1..1 | code | accepted | declined | tentative | needs-action Binding: ParticipationStatus (required): The Participation status of an appointment.
requestedPeriod | S C | 0..1 | Period | Potential date/time interval(s) requested to allocate the appointment within
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Appointment.status | Base | required | AppointmentStatus | 📍4.0.1 | FHIR Std.
Appointment.serviceCategory | Base | example | Service category | 📍4.0.1 | FHIR Std.
Appointment.serviceCategory:us-core | Base | required | US Core ServiceRequest Category Codes | 📍7.0.0 | US Core v7.0
Appointment.serviceCategory:encounterType | Base | required | ActEncounterCode | 📍3.0.0 | THO v7.0
Appointment.serviceCategory:serviceType | Base | required | X12 Service Type | 📦2.2.0-snapshot | This IG
Appointment.serviceType | Base | extensible | CRD Service Request Codes Value Set | 📦2.2.0-snapshot | This IG
Appointment.specialty | Base | preferred | Practice Setting Code Value Set | 📍4.0.1 | FHIR Std.
Appointment.appointmentType | Base | preferred | hl7VS-appointmentReasonCodes | 📦2.0.0 | THO v7.0
Appointment.participant.​status | Base | required | ParticipationStatus | 📍4.0.1 | FHIR Std.
Appointment.participant:Patient.​status | Base | required | ParticipationStatus | 📍4.0.1 | FHIR Std.
Appointment.participant:PrimaryPerformer.​type | Base | extensible | Participant type | 📍4.0.1 | FHIR Std.
Appointment.participant:PrimaryPerformer.​status | Base | required | ParticipationStatus | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
app-1 | error | Appointment.participant, Appointment.participant:Patient, Appointment.participant:PrimaryPerformer | Either the type or actor on the participant SHALL be specified | `type.exists() or actor.exists()`
app-2 | error | Appointment | Either start and end are specified, or neither | `start.exists() = end.exists()`
app-3 | error | Appointment | Only proposed or cancelled appointments can be missing start/end dates | `(start.exists() and end.exists()) or (status in ('proposed' | 'cancelled' | 'waitlist'))`
app-4 | error | Appointment | Cancelation reason is only used for appointments that have been cancelled, or no-show | `Appointment.cancelationReason.exists() implies (Appointment.status='no-show' or Appointment.status='cancelled')`
crd-apt1 | error | Appointment | Must have either start or requestedPeriod.start | `start.exists() or requestedPeriod.start.exists()`
crd-apt2 | error | Appointment | Must have either end or requestedPeriod.end | `end.exists() or requestedPeriod.end.exists()`
crd-ci-q1 | error | Appointment.extension:Coverage-Information | Questionnaire is only allowed when doc-needed exists | `extension.where(url='questionnaire').exists() implies extension.where(url = 'doc-needed').exists()`
crd-ci-q2 | error | Appointment.extension:Coverage-Information | 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 | Appointment.extension:Coverage-Information | '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 | Appointment.extension:Coverage-Information | 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 | Appointment.extension:Coverage-Information | '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 | Appointment.extension:Coverage-Information | 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 | Appointment.extension:Coverage-Information | 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 | Appointment.extension:Coverage-Information | 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()`
dom-2 | error | Appointment | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | Appointment | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource | `contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()`
dom-4 | error | Appointment | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated | `contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()`
dom-5 | error | Appointment | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | Appointment | A resource should have narrative for robust management | `text.`div`.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()`

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Appointment |  | 0..* | CRDAppointmentBase | A booking of a healthcare event among patient(s), practitioner(s), related person(s) and/or device(s) for a specific date/time. This may result in one or more Encounter(s)
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url
extension:Coverage-Information | S | 0..* | (Complex) | CoverageInfo URL: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information
identifier | S | 0..* | Identifier | External Ids for this item
Slices for serviceCategory | S | 0..* | CodeableConcept | A broad categorization of the service that is to be performed during this appointment Slice: Unordered, Open by value:$this
serviceCategory:us-core | S | 0..* | CodeableConcept | A broad categorization of the service that is to be performed during this appointment Binding: USCoreServiceRequestCategoryCodes (7.0.0) (required)
serviceCategory:encounterType | S | 0..1 | CodeableConcept | inpatient, outpatient, etc. Binding: ActEncounterCode (3.0.0) (required)
serviceCategory:serviceType | S | 0..1 | CodeableConcept | X-ray, Lab, consulation, surgical, etc. Binding: X12 Service Type (required)
serviceType | S | 0..* | CodeableConcept | Codes to identify requested services. (CPT, SNOMED CT or LOINC) Binding: CRD Service Request Codes Value Set (extensible): Codes describing the type of Service
Slices for extension |  |  |  | Content/Rules for all slices
extension:BillingOptions | S | 0..* | CodeableConcept | Expected Billing Code(s) URL: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-billing-options Binding: CRD Billing Codes Value Set (extensible)
specialty | S | 0..* | CodeableConcept | The specialty of a practitioner that would be required to perform the service requested in this appointment
appointmentType | S | 0..1 | CodeableConcept | The style of appointment or patient that has been booked in the slot (not service type)
reasonReference | S | 0..* | Reference(Condition | Procedure | Observation | ImmunizationRecommendation) | Reason the appointment is to take place (resource)
Documentation for this format

#### Terminology Bindings (Differential)

Path | Status | Usage | ValueSet | Version | Source
Appointment.serviceCategory:us-core | Base | required | US Core ServiceRequest Category Codes | 📍7.0.0 | US Core v7.0
Appointment.serviceCategory:encounterType | Base | required | ActEncounterCode | 📍3.0.0 | THO v7.0
Appointment.serviceCategory:serviceType | Base | required | X12 Service Type | 📦2.2.0-snapshot | This IG
Appointment.serviceType | Base | extensible | CRD Service Request Codes Value Set | 📦2.2.0-snapshot | This IG

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Appointment | C | 0..* | CRDAppointmentBase | A booking of a healthcare event among patient(s), practitioner(s), related person(s) and/or device(s) for a specific date/time. This may result in one or more Encounter(s) Constraints: app-2, app-3, app-4, crd-apt1, crd-apt2
id | Σ | 0..1 | id | Logical id of this artifact
meta | Σ | 0..1 | Meta | Metadata about the resource
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
language |  | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
Additional Bindings | Purpose
AllLanguages | Max Binding
text |  | 0..1 | Narrative | Text summary of the resource, for human interpretation This profile does not constrain the narrative in regard to content, language, or traceability to data elements
contained | S | 0..* | Resource | Contained, inline Resources
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url
extension:Coverage-Information | S C | 0..* | (Complex) | CoverageInfo URL: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information 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
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
identifier | S Σ | 0..* | Identifier | External Ids for this item
status | ?!S Σ | 1..1 | code | Appointment status Binding: AppointmentStatus (required): The free/busy status of an appointment. Example General: proposed
cancelationReason | Σ | 0..1 | CodeableConcept | The coded reason for the appointment being cancelled Binding: AppointmentCancellationReason (example)
Slices for serviceCategory | S Σ | 0..* | CodeableConcept | A broad categorization of the service that is to be performed during this appointment Slice: Unordered, Open by value:$this Binding: ServiceCategory (example)
serviceCategory:us-core | S Σ | 0..* | CodeableConcept | A broad categorization of the service that is to be performed during this appointment Binding: USCoreServiceRequestCategoryCodes (7.0.0) (required)
serviceCategory:encounterType | S Σ | 0..1 | CodeableConcept | inpatient, outpatient, etc. Binding: ActEncounterCode (3.0.0) (required)
serviceCategory:serviceType | S Σ | 0..1 | CodeableConcept | X-ray, Lab, consulation, surgical, etc. Binding: X12 Service Type (required)
serviceType | S Σ | 0..* | CodeableConcept | Codes to identify requested services. (CPT, SNOMED CT or LOINC) Binding: CRD Service Request Codes Value Set (extensible): Codes describing the type of Service
id |  | 0..1 | string | Unique id for inter-element referencing
Slices for extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
extension:BillingOptions | S | 0..* | CodeableConcept | Expected Billing Code(s) URL: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-billing-options Binding: CRD Billing Codes Value Set (extensible)
coding | Σ | 0..* | Coding | Code defined by a terminology system
text | Σ | 0..1 | string | Plain text representation of the concept
specialty | S Σ | 0..* | CodeableConcept | The specialty of a practitioner that would be required to perform the service requested in this appointment Binding: PracticeSettingCodeValueSet (preferred)
appointmentType | S Σ | 0..1 | CodeableConcept | The style of appointment or patient that has been booked in the slot (not service type) Binding: hl7VS-appointmentReasonCodes (preferred)
reasonCode | Σ | 0..* | CodeableConcept | Coded reason this appointment is scheduled Binding: EncounterReasonCodes (preferred): The Reason for the appointment to take place.
reasonReference | S | 0..* | Reference(Condition | Procedure | Observation | ImmunizationRecommendation) | Reason the appointment is to take place (resource)
priority |  | 0..1 | unsignedInt | Used to make informed decisions if needing to re-prioritize
description |  | 0..1 | string | Shown on a subject line in a meeting request, or appointment list
supportingInformation |  | 0..* | Reference(Resource) | Additional information to support the appointment
start | S Σ C | 0..1 | instant | When appointment is to take place
end | S Σ C | 0..1 | instant | When appointment is to conclude
minutesDuration |  | 0..1 | positiveInt | Can be less than start/end (e.g. estimate)
slot |  | 0..* | Reference(Slot) | The slots that this appointment is filling
created |  | 0..1 | dateTime | The date that this appointment was initially created
comment |  | 0..1 | string | Additional comments
patientInstruction |  | 0..1 | string | Detailed information and instructions for the patient
basedOn |  | 0..* | Reference(ServiceRequest) | The service request this appointment is allocated to assess
Slices for participant | C | 2..* | BackboneElement | Participants involved in appointment Slice: Unordered, Open by value:type, profile:actor.resolve() Constraints: app-1
participant:All Slices |  |  |  | Content/Rules for all slices
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
type | Σ | 0..* | CodeableConcept | Role of participant in the appointment Binding: ParticipantType (extensible): Role of participant in encounter.
actor | S Σ | 0..1 | Reference(Patient | Practitioner | PractitionerRole | RelatedPerson | Device | HealthcareService | Location) | Person, Location/HealthcareService or Device
required | Σ | 0..1 | code | required | optional | information-only Binding: ParticipantRequired (required): Is the Participant required to attend the appointment.
status | S Σ | 1..1 | code | accepted | declined | tentative | needs-action Binding: ParticipationStatus (required): The Participation status of an appointment.
period |  | 0..1 | Period | Participation period of the actor
participant:Patient | S C | 1..1 | BackboneElement | Participants involved in appointment Constraints: app-1
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
type | Σ | 0..* | CodeableConcept | Role of participant in the appointment Binding: ParticipantType (extensible): Role of participant in encounter.
actor | S Σ | 0..1 | Reference(CRD Patient) | Person, Location/HealthcareService or Device
required | Σ | 0..1 | code | required | optional | information-only Binding: ParticipantRequired (required): Is the Participant required to attend the appointment.
status | S Σ | 1..1 | code | accepted | declined | tentative | needs-action Binding: ParticipationStatus (required): The Participation status of an appointment.
period |  | 0..1 | Period | Participation period of the actor
participant:PrimaryPerformer | S C | 1..* | BackboneElement | Participants involved in appointment Constraints: app-1
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
type | Σ | 1..1 | CodeableConcept | Role of participant in the appointment Binding: ParticipantType (extensible): Role of participant in encounter. Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
coding |  | 1..* | Coding | Code defined by a terminology system Fixed Value: (Complex)
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://terminology.hl7.org/CodeSystem/v3-ParticipationType
version |  | 0..1 | string | Version of the system - if relevant
code |  | 1..1 | code | Symbol in syntax defined by the system Fixed Value: PPRF
display |  | 0..1 | string | Representation defined by the system
userSelected |  | 0..1 | boolean | If this coding was chosen directly by the user
text |  | 0..1 | string | Plain text representation of the concept
actor | S Σ | 0..1 | Reference(CRD Practitioner | HRex PractitionerRole Profile | CRD Location) | Person, Location/HealthcareService or Device
required | Σ | 0..1 | code | required | optional | information-only Binding: ParticipantRequired (required): Is the Participant required to attend the appointment.
status | S Σ | 1..1 | code | accepted | declined | tentative | needs-action Binding: ParticipationStatus (required): The Participation status of an appointment.
period |  | 0..1 | Period | Participation period of the actor
requestedPeriod | S C | 0..1 | Period | Potential date/time interval(s) requested to allocate the appointment within
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Appointment.language | Base | preferred | Common Languages | 📍4.0.1 | FHIR Std.
Appointment.status | Base | required | AppointmentStatus | 📍4.0.1 | FHIR Std.
Appointment.cancelationReason | Base | example | Appointment cancellation reason | 📍4.0.1 | FHIR Std.
Appointment.serviceCategory | Base | example | Service category | 📍4.0.1 | FHIR Std.
Appointment.serviceCategory:us-core | Base | required | US Core ServiceRequest Category Codes | 📍7.0.0 | US Core v7.0
Appointment.serviceCategory:encounterType | Base | required | ActEncounterCode | 📍3.0.0 | THO v7.0
Appointment.serviceCategory:serviceType | Base | required | X12 Service Type | 📦2.2.0-snapshot | This IG
Appointment.serviceType | Base | extensible | CRD Service Request Codes Value Set | 📦2.2.0-snapshot | This IG
Appointment.specialty | Base | preferred | Practice Setting Code Value Set | 📍4.0.1 | FHIR Std.
Appointment.appointmentType | Base | preferred | hl7VS-appointmentReasonCodes | 📦2.0.0 | THO v7.0
Appointment.reasonCode | Base | preferred | Encounter Reason Codes | 📍4.0.1 | FHIR Std.
Appointment.participant.​type | Base | extensible | Participant type | 📍4.0.1 | FHIR Std.
Appointment.participant.​required | Base | required | ParticipantRequired | 📍4.0.1 | FHIR Std.
Appointment.participant.​status | Base | required | ParticipationStatus | 📍4.0.1 | FHIR Std.
Appointment.participant:Patient.​type | Base | extensible | Participant type | 📍4.0.1 | FHIR Std.
Appointment.participant:Patient.​required | Base | required | ParticipantRequired | 📍4.0.1 | FHIR Std.
Appointment.participant:Patient.​status | Base | required | ParticipationStatus | 📍4.0.1 | FHIR Std.
Appointment.participant:PrimaryPerformer.​type | Base | extensible | Participant type | 📍4.0.1 | FHIR Std.
Appointment.participant:PrimaryPerformer.​required | Base | required | ParticipantRequired | 📍4.0.1 | FHIR Std.
Appointment.participant:PrimaryPerformer.​status | Base | required | ParticipationStatus | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
app-1 | error | Appointment.participant, Appointment.participant:Patient, Appointment.participant:PrimaryPerformer | Either the type or actor on the participant SHALL be specified | `type.exists() or actor.exists()`
app-2 | error | Appointment | Either start and end are specified, or neither | `start.exists() = end.exists()`
app-3 | error | Appointment | Only proposed or cancelled appointments can be missing start/end dates | `(start.exists() and end.exists()) or (status in ('proposed' | 'cancelled' | 'waitlist'))`
app-4 | error | Appointment | Cancelation reason is only used for appointments that have been cancelled, or no-show | `Appointment.cancelationReason.exists() implies (Appointment.status='no-show' or Appointment.status='cancelled')`
crd-apt1 | error | Appointment | Must have either start or requestedPeriod.start | `start.exists() or requestedPeriod.start.exists()`
crd-apt2 | error | Appointment | Must have either end or requestedPeriod.end | `end.exists() or requestedPeriod.end.exists()`
crd-ci-q1 | error | Appointment.extension:Coverage-Information | Questionnaire is only allowed when doc-needed exists | `extension.where(url='questionnaire').exists() implies extension.where(url = 'doc-needed').exists()`
crd-ci-q2 | error | Appointment.extension:Coverage-Information | 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 | Appointment.extension:Coverage-Information | '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 | Appointment.extension:Coverage-Information | 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 | Appointment.extension:Coverage-Information | '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 | Appointment.extension:Coverage-Information | 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 | Appointment.extension:Coverage-Information | 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 | Appointment.extension:Coverage-Information | 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()`
dom-2 | error | Appointment | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | Appointment | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource | `contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()`
dom-4 | error | Appointment | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated | `contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()`
dom-5 | error | Appointment | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | Appointment | A resource should have narrative for robust management | `text.`div`.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

Must-Support: 11 elements

Extensions

This structure refers to these extensions:

- http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information
- http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-billing-options

Slices

This structure defines the following Slices:

- The element 1 is sliced based on the value of Appointment.serviceCategory

Maturity: 1

Key Elements View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Appointment | C | 0..* | CRDAppointmentBase | A booking of a healthcare event among patient(s), practitioner(s), related person(s) and/or device(s) for a specific date/time. This may result in one or more Encounter(s) Constraints: app-2, app-3, app-4, crd-apt1, crd-apt2
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
contained | S | 0..* | Resource | Contained, inline Resources
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url
extension:Coverage-Information | S C | 0..* | (Complex) | CoverageInfo URL: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information 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
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
identifier | S Σ | 0..* | Identifier | External Ids for this item
status | ?!S Σ | 1..1 | code | Appointment status Binding: AppointmentStatus (required): The free/busy status of an appointment. Example General: proposed
Slices for serviceCategory | S Σ | 0..* | CodeableConcept | A broad categorization of the service that is to be performed during this appointment Slice: Unordered, Open by value:$this Binding: ServiceCategory (example)
serviceCategory:us-core | S Σ | 0..* | CodeableConcept | A broad categorization of the service that is to be performed during this appointment Binding: USCoreServiceRequestCategoryCodes (7.0.0) (required)
serviceCategory:encounterType | S Σ | 0..1 | CodeableConcept | inpatient, outpatient, etc. Binding: ActEncounterCode (3.0.0) (required)
serviceCategory:serviceType | S Σ | 0..1 | CodeableConcept | X-ray, Lab, consulation, surgical, etc. Binding: X12 Service Type (required)
serviceType | S Σ | 0..* | CodeableConcept | Codes to identify requested services. (CPT, SNOMED CT or LOINC) Binding: CRD Service Request Codes Value Set (extensible): Codes describing the type of Service
Slices for extension |  |  |  | Content/Rules for all slices
extension:BillingOptions | S | 0..* | CodeableConcept | Expected Billing Code(s) URL: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-billing-options Binding: CRD Billing Codes Value Set (extensible)
specialty | S Σ | 0..* | CodeableConcept | The specialty of a practitioner that would be required to perform the service requested in this appointment Binding: PracticeSettingCodeValueSet (preferred)
appointmentType | S Σ | 0..1 | CodeableConcept | The style of appointment or patient that has been booked in the slot (not service type) Binding: hl7VS-appointmentReasonCodes (preferred)
reasonReference | S | 0..* | Reference(Condition | Procedure | Observation | ImmunizationRecommendation) | Reason the appointment is to take place (resource)
start | S Σ C | 0..1 | instant | When appointment is to take place
end | S Σ C | 0..1 | instant | When appointment is to conclude
Slices for participant | C | 2..* | BackboneElement | Participants involved in appointment Slice: Unordered, Open by value:type, profile:actor.resolve() Constraints: app-1
participant:All Slices |  |  |  | Content/Rules for all slices
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
actor | S Σ | 0..1 | Reference(Patient | Practitioner | PractitionerRole | RelatedPerson | Device | HealthcareService | Location) | Person, Location/HealthcareService or Device
status | S Σ | 1..1 | code | accepted | declined | tentative | needs-action Binding: ParticipationStatus (required): The Participation status of an appointment.
participant:Patient | S C | 1..1 | BackboneElement | Participants involved in appointment Constraints: app-1
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
actor | S Σ | 0..1 | Reference(CRD Patient) | Person, Location/HealthcareService or Device
status | S Σ | 1..1 | code | accepted | declined | tentative | needs-action Binding: ParticipationStatus (required): The Participation status of an appointment.
participant:PrimaryPerformer | S C | 1..* | BackboneElement | Participants involved in appointment Constraints: app-1
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
type | Σ | 1..1 | CodeableConcept | Role of participant in the appointment Binding: ParticipantType (extensible): Role of participant in encounter. Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
coding |  | 1..* | Coding | Code defined by a terminology system Fixed Value: (Complex)
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://terminology.hl7.org/CodeSystem/v3-ParticipationType
version |  | 0..1 | string | Version of the system - if relevant
code |  | 1..1 | code | Symbol in syntax defined by the system Fixed Value: PPRF
display |  | 0..1 | string | Representation defined by the system
userSelected |  | 0..1 | boolean | If this coding was chosen directly by the user
text |  | 0..1 | string | Plain text representation of the concept
actor | S Σ | 0..1 | Reference(CRD Practitioner | HRex PractitionerRole Profile | CRD Location) | Person, Location/HealthcareService or Device
status | S Σ | 1..1 | code | accepted | declined | tentative | needs-action Binding: ParticipationStatus (required): The Participation status of an appointment.
requestedPeriod | S C | 0..1 | Period | Potential date/time interval(s) requested to allocate the appointment within
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Appointment.status | Base | required | AppointmentStatus | 📍4.0.1 | FHIR Std.
Appointment.serviceCategory | Base | example | Service category | 📍4.0.1 | FHIR Std.
Appointment.serviceCategory:us-core | Base | required | US Core ServiceRequest Category Codes | 📍7.0.0 | US Core v7.0
Appointment.serviceCategory:encounterType | Base | required | ActEncounterCode | 📍3.0.0 | THO v7.0
Appointment.serviceCategory:serviceType | Base | required | X12 Service Type | 📦2.2.0-snapshot | This IG
Appointment.serviceType | Base | extensible | CRD Service Request Codes Value Set | 📦2.2.0-snapshot | This IG
Appointment.specialty | Base | preferred | Practice Setting Code Value Set | 📍4.0.1 | FHIR Std.
Appointment.appointmentType | Base | preferred | hl7VS-appointmentReasonCodes | 📦2.0.0 | THO v7.0
Appointment.participant.​status | Base | required | ParticipationStatus | 📍4.0.1 | FHIR Std.
Appointment.participant:Patient.​status | Base | required | ParticipationStatus | 📍4.0.1 | FHIR Std.
Appointment.participant:PrimaryPerformer.​type | Base | extensible | Participant type | 📍4.0.1 | FHIR Std.
Appointment.participant:PrimaryPerformer.​status | Base | required | ParticipationStatus | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
app-1 | error | Appointment.participant, Appointment.participant:Patient, Appointment.participant:PrimaryPerformer | Either the type or actor on the participant SHALL be specified | `type.exists() or actor.exists()`
app-2 | error | Appointment | Either start and end are specified, or neither | `start.exists() = end.exists()`
app-3 | error | Appointment | Only proposed or cancelled appointments can be missing start/end dates | `(start.exists() and end.exists()) or (status in ('proposed' | 'cancelled' | 'waitlist'))`
app-4 | error | Appointment | Cancelation reason is only used for appointments that have been cancelled, or no-show | `Appointment.cancelationReason.exists() implies (Appointment.status='no-show' or Appointment.status='cancelled')`
crd-apt1 | error | Appointment | Must have either start or requestedPeriod.start | `start.exists() or requestedPeriod.start.exists()`
crd-apt2 | error | Appointment | Must have either end or requestedPeriod.end | `end.exists() or requestedPeriod.end.exists()`
crd-ci-q1 | error | Appointment.extension:Coverage-Information | Questionnaire is only allowed when doc-needed exists | `extension.where(url='questionnaire').exists() implies extension.where(url = 'doc-needed').exists()`
crd-ci-q2 | error | Appointment.extension:Coverage-Information | 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 | Appointment.extension:Coverage-Information | '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 | Appointment.extension:Coverage-Information | 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 | Appointment.extension:Coverage-Information | '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 | Appointment.extension:Coverage-Information | 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 | Appointment.extension:Coverage-Information | 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 | Appointment.extension:Coverage-Information | 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()`
dom-2 | error | Appointment | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | Appointment | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource | `contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()`
dom-4 | error | Appointment | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated | `contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()`
dom-5 | error | Appointment | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | Appointment | A resource should have narrative for robust management | `text.`div`.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()`

Differential View

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Appointment |  | 0..* | CRDAppointmentBase | A booking of a healthcare event among patient(s), practitioner(s), related person(s) and/or device(s) for a specific date/time. This may result in one or more Encounter(s)
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url
extension:Coverage-Information | S | 0..* | (Complex) | CoverageInfo URL: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information
identifier | S | 0..* | Identifier | External Ids for this item
Slices for serviceCategory | S | 0..* | CodeableConcept | A broad categorization of the service that is to be performed during this appointment Slice: Unordered, Open by value:$this
serviceCategory:us-core | S | 0..* | CodeableConcept | A broad categorization of the service that is to be performed during this appointment Binding: USCoreServiceRequestCategoryCodes (7.0.0) (required)
serviceCategory:encounterType | S | 0..1 | CodeableConcept | inpatient, outpatient, etc. Binding: ActEncounterCode (3.0.0) (required)
serviceCategory:serviceType | S | 0..1 | CodeableConcept | X-ray, Lab, consulation, surgical, etc. Binding: X12 Service Type (required)
serviceType | S | 0..* | CodeableConcept | Codes to identify requested services. (CPT, SNOMED CT or LOINC) Binding: CRD Service Request Codes Value Set (extensible): Codes describing the type of Service
Slices for extension |  |  |  | Content/Rules for all slices
extension:BillingOptions | S | 0..* | CodeableConcept | Expected Billing Code(s) URL: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-billing-options Binding: CRD Billing Codes Value Set (extensible)
specialty | S | 0..* | CodeableConcept | The specialty of a practitioner that would be required to perform the service requested in this appointment
appointmentType | S | 0..1 | CodeableConcept | The style of appointment or patient that has been booked in the slot (not service type)
reasonReference | S | 0..* | Reference(Condition | Procedure | Observation | ImmunizationRecommendation) | Reason the appointment is to take place (resource)
Documentation for this format

#### Terminology Bindings (Differential)

Path | Status | Usage | ValueSet | Version | Source
Appointment.serviceCategory:us-core | Base | required | US Core ServiceRequest Category Codes | 📍7.0.0 | US Core v7.0
Appointment.serviceCategory:encounterType | Base | required | ActEncounterCode | 📍3.0.0 | THO v7.0
Appointment.serviceCategory:serviceType | Base | required | X12 Service Type | 📦2.2.0-snapshot | This IG
Appointment.serviceType | Base | extensible | CRD Service Request Codes Value Set | 📦2.2.0-snapshot | This IG

Snapshot ViewView

Name | Flags | Card. | Type | Description & Constraints Filter: Bindings Constraints Obligations
--- | --- | --- | --- | ---
Appointment | C | 0..* | CRDAppointmentBase | A booking of a healthcare event among patient(s), practitioner(s), related person(s) and/or device(s) for a specific date/time. This may result in one or more Encounter(s) Constraints: app-2, app-3, app-4, crd-apt1, crd-apt2
id | Σ | 0..1 | id | Logical id of this artifact
meta | Σ | 0..1 | Meta | Metadata about the resource
implicitRules | ?!Σ | 0..1 | uri | A set of rules under which this content was created
language |  | 0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
Additional Bindings | Purpose
AllLanguages | Max Binding
text |  | 0..1 | Narrative | Text summary of the resource, for human interpretation This profile does not constrain the narrative in regard to content, language, or traceability to data elements
contained | S | 0..* | Resource | Contained, inline Resources
Slices for extension |  | 0..* | Extension | Extension Slice: Unordered, Open by value:url
extension:Coverage-Information | S C | 0..* | (Complex) | CoverageInfo URL: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information 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
modifierExtension | ?! | 0..* | Extension | Extensions that cannot be ignored
identifier | S Σ | 0..* | Identifier | External Ids for this item
status | ?!S Σ | 1..1 | code | Appointment status Binding: AppointmentStatus (required): The free/busy status of an appointment. Example General: proposed
cancelationReason | Σ | 0..1 | CodeableConcept | The coded reason for the appointment being cancelled Binding: AppointmentCancellationReason (example)
Slices for serviceCategory | S Σ | 0..* | CodeableConcept | A broad categorization of the service that is to be performed during this appointment Slice: Unordered, Open by value:$this Binding: ServiceCategory (example)
serviceCategory:us-core | S Σ | 0..* | CodeableConcept | A broad categorization of the service that is to be performed during this appointment Binding: USCoreServiceRequestCategoryCodes (7.0.0) (required)
serviceCategory:encounterType | S Σ | 0..1 | CodeableConcept | inpatient, outpatient, etc. Binding: ActEncounterCode (3.0.0) (required)
serviceCategory:serviceType | S Σ | 0..1 | CodeableConcept | X-ray, Lab, consulation, surgical, etc. Binding: X12 Service Type (required)
serviceType | S Σ | 0..* | CodeableConcept | Codes to identify requested services. (CPT, SNOMED CT or LOINC) Binding: CRD Service Request Codes Value Set (extensible): Codes describing the type of Service
id |  | 0..1 | string | Unique id for inter-element referencing
Slices for extension |  | 0..* | Extension | Additional content defined by implementations Slice: Unordered, Open by value:url
extension:BillingOptions | S | 0..* | CodeableConcept | Expected Billing Code(s) URL: http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-billing-options Binding: CRD Billing Codes Value Set (extensible)
coding | Σ | 0..* | Coding | Code defined by a terminology system
text | Σ | 0..1 | string | Plain text representation of the concept
specialty | S Σ | 0..* | CodeableConcept | The specialty of a practitioner that would be required to perform the service requested in this appointment Binding: PracticeSettingCodeValueSet (preferred)
appointmentType | S Σ | 0..1 | CodeableConcept | The style of appointment or patient that has been booked in the slot (not service type) Binding: hl7VS-appointmentReasonCodes (preferred)
reasonCode | Σ | 0..* | CodeableConcept | Coded reason this appointment is scheduled Binding: EncounterReasonCodes (preferred): The Reason for the appointment to take place.
reasonReference | S | 0..* | Reference(Condition | Procedure | Observation | ImmunizationRecommendation) | Reason the appointment is to take place (resource)
priority |  | 0..1 | unsignedInt | Used to make informed decisions if needing to re-prioritize
description |  | 0..1 | string | Shown on a subject line in a meeting request, or appointment list
supportingInformation |  | 0..* | Reference(Resource) | Additional information to support the appointment
start | S Σ C | 0..1 | instant | When appointment is to take place
end | S Σ C | 0..1 | instant | When appointment is to conclude
minutesDuration |  | 0..1 | positiveInt | Can be less than start/end (e.g. estimate)
slot |  | 0..* | Reference(Slot) | The slots that this appointment is filling
created |  | 0..1 | dateTime | The date that this appointment was initially created
comment |  | 0..1 | string | Additional comments
patientInstruction |  | 0..1 | string | Detailed information and instructions for the patient
basedOn |  | 0..* | Reference(ServiceRequest) | The service request this appointment is allocated to assess
Slices for participant | C | 2..* | BackboneElement | Participants involved in appointment Slice: Unordered, Open by value:type, profile:actor.resolve() Constraints: app-1
participant:All Slices |  |  |  | Content/Rules for all slices
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
type | Σ | 0..* | CodeableConcept | Role of participant in the appointment Binding: ParticipantType (extensible): Role of participant in encounter.
actor | S Σ | 0..1 | Reference(Patient | Practitioner | PractitionerRole | RelatedPerson | Device | HealthcareService | Location) | Person, Location/HealthcareService or Device
required | Σ | 0..1 | code | required | optional | information-only Binding: ParticipantRequired (required): Is the Participant required to attend the appointment.
status | S Σ | 1..1 | code | accepted | declined | tentative | needs-action Binding: ParticipationStatus (required): The Participation status of an appointment.
period |  | 0..1 | Period | Participation period of the actor
participant:Patient | S C | 1..1 | BackboneElement | Participants involved in appointment Constraints: app-1
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
type | Σ | 0..* | CodeableConcept | Role of participant in the appointment Binding: ParticipantType (extensible): Role of participant in encounter.
actor | S Σ | 0..1 | Reference(CRD Patient) | Person, Location/HealthcareService or Device
required | Σ | 0..1 | code | required | optional | information-only Binding: ParticipantRequired (required): Is the Participant required to attend the appointment.
status | S Σ | 1..1 | code | accepted | declined | tentative | needs-action Binding: ParticipationStatus (required): The Participation status of an appointment.
period |  | 0..1 | Period | Participation period of the actor
participant:PrimaryPerformer | S C | 1..* | BackboneElement | Participants involved in appointment Constraints: app-1
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
modifierExtension | ?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized
type | Σ | 1..1 | CodeableConcept | Role of participant in the appointment Binding: ParticipantType (extensible): Role of participant in encounter. Required Pattern: At least the following
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
coding |  | 1..* | Coding | Code defined by a terminology system Fixed Value: (Complex)
id |  | 0..1 | string | Unique id for inter-element referencing
extension |  | 0..* | Extension | Additional content defined by implementations
system |  | 1..1 | uri | Identity of the terminology system Fixed Value: http://terminology.hl7.org/CodeSystem/v3-ParticipationType
version |  | 0..1 | string | Version of the system - if relevant
code |  | 1..1 | code | Symbol in syntax defined by the system Fixed Value: PPRF
display |  | 0..1 | string | Representation defined by the system
userSelected |  | 0..1 | boolean | If this coding was chosen directly by the user
text |  | 0..1 | string | Plain text representation of the concept
actor | S Σ | 0..1 | Reference(CRD Practitioner | HRex PractitionerRole Profile | CRD Location) | Person, Location/HealthcareService or Device
required | Σ | 0..1 | code | required | optional | information-only Binding: ParticipantRequired (required): Is the Participant required to attend the appointment.
status | S Σ | 1..1 | code | accepted | declined | tentative | needs-action Binding: ParticipationStatus (required): The Participation status of an appointment.
period |  | 0..1 | Period | Participation period of the actor
requestedPeriod | S C | 0..1 | Period | Potential date/time interval(s) requested to allocate the appointment within
Documentation for this format

#### Terminology Bindings

Path | Status | Usage | ValueSet | Version | Source
Appointment.language | Base | preferred | Common Languages | 📍4.0.1 | FHIR Std.
Appointment.status | Base | required | AppointmentStatus | 📍4.0.1 | FHIR Std.
Appointment.cancelationReason | Base | example | Appointment cancellation reason | 📍4.0.1 | FHIR Std.
Appointment.serviceCategory | Base | example | Service category | 📍4.0.1 | FHIR Std.
Appointment.serviceCategory:us-core | Base | required | US Core ServiceRequest Category Codes | 📍7.0.0 | US Core v7.0
Appointment.serviceCategory:encounterType | Base | required | ActEncounterCode | 📍3.0.0 | THO v7.0
Appointment.serviceCategory:serviceType | Base | required | X12 Service Type | 📦2.2.0-snapshot | This IG
Appointment.serviceType | Base | extensible | CRD Service Request Codes Value Set | 📦2.2.0-snapshot | This IG
Appointment.specialty | Base | preferred | Practice Setting Code Value Set | 📍4.0.1 | FHIR Std.
Appointment.appointmentType | Base | preferred | hl7VS-appointmentReasonCodes | 📦2.0.0 | THO v7.0
Appointment.reasonCode | Base | preferred | Encounter Reason Codes | 📍4.0.1 | FHIR Std.
Appointment.participant.​type | Base | extensible | Participant type | 📍4.0.1 | FHIR Std.
Appointment.participant.​required | Base | required | ParticipantRequired | 📍4.0.1 | FHIR Std.
Appointment.participant.​status | Base | required | ParticipationStatus | 📍4.0.1 | FHIR Std.
Appointment.participant:Patient.​type | Base | extensible | Participant type | 📍4.0.1 | FHIR Std.
Appointment.participant:Patient.​required | Base | required | ParticipantRequired | 📍4.0.1 | FHIR Std.
Appointment.participant:Patient.​status | Base | required | ParticipationStatus | 📍4.0.1 | FHIR Std.
Appointment.participant:PrimaryPerformer.​type | Base | extensible | Participant type | 📍4.0.1 | FHIR Std.
Appointment.participant:PrimaryPerformer.​required | Base | required | ParticipantRequired | 📍4.0.1 | FHIR Std.
Appointment.participant:PrimaryPerformer.​status | Base | required | ParticipationStatus | 📍4.0.1 | FHIR Std.

#### Constraints

Id | Grade | Path(s) | Description | Expression
app-1 | error | Appointment.participant, Appointment.participant:Patient, Appointment.participant:PrimaryPerformer | Either the type or actor on the participant SHALL be specified | `type.exists() or actor.exists()`
app-2 | error | Appointment | Either start and end are specified, or neither | `start.exists() = end.exists()`
app-3 | error | Appointment | Only proposed or cancelled appointments can be missing start/end dates | `(start.exists() and end.exists()) or (status in ('proposed' | 'cancelled' | 'waitlist'))`
app-4 | error | Appointment | Cancelation reason is only used for appointments that have been cancelled, or no-show | `Appointment.cancelationReason.exists() implies (Appointment.status='no-show' or Appointment.status='cancelled')`
crd-apt1 | error | Appointment | Must have either start or requestedPeriod.start | `start.exists() or requestedPeriod.start.exists()`
crd-apt2 | error | Appointment | Must have either end or requestedPeriod.end | `end.exists() or requestedPeriod.end.exists()`
crd-ci-q1 | error | Appointment.extension:Coverage-Information | Questionnaire is only allowed when doc-needed exists | `extension.where(url='questionnaire').exists() implies extension.where(url = 'doc-needed').exists()`
crd-ci-q2 | error | Appointment.extension:Coverage-Information | 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 | Appointment.extension:Coverage-Information | '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 | Appointment.extension:Coverage-Information | 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 | Appointment.extension:Coverage-Information | '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 | Appointment.extension:Coverage-Information | 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 | Appointment.extension:Coverage-Information | 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 | Appointment.extension:Coverage-Information | 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()`
dom-2 | error | Appointment | If the resource is contained in another resource, it SHALL NOT contain nested Resources | `contained.contained.empty()`
dom-3 | error | Appointment | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource | `contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()`
dom-4 | error | Appointment | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated | `contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()`
dom-5 | error | Appointment | If a resource is contained in another resource, it SHALL NOT have a security label | `contained.meta.security.empty()`
dom-6 | best practice | Appointment | A resource should have narrative for robust management | `text.`div`.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

Must-Support: 11 elements

Extensions

This structure refers to these extensions:

- http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-coverage-information
- http://hl7.org/fhir/us/davinci-crd/StructureDefinition/ext-billing-options

Slices

This structure defines the following Slices:

- The element 1 is sliced based on the value of Appointment.serviceCategory

Maturity: 1

Other representations of profile: CSV, Excel, Schematron