DRAFT - The specification is currently in development and subject to significant change. It is not ready for limited roll-out or production level use.

Appointment (CA:eReC)

Structure Definition: Appointment Profile

Canonical URL: https://fhir.infoway-inforoute.ca/io/CA-eReC/StructureDefinition/CA-eReC-Appointment

Simplifier project page: Appointment

Derived from: Appointment (R4)

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work

idΣ0..1string
metaΣ0..1Meta
implicitRulesΣ ?!0..1uri
language0..1codeBinding
text0..1Narrative
contained0..*Resource
virtualServiceI0..*Extension
modifierExtension?! I0..*Extension
identifierΣ0..*Identifier
statusS Σ ?!1..1codeBinding
cancelationReasonΣ0..1CodeableConcept
serviceCategoryΣ0..*CodeableConcept
serviceTypeΣ0..*CodeableConcept
specialtyΣ0..*CodeableConceptBinding
appointmentTypeΣ0..1CodeableConceptBinding
reasonCodeΣ0..*CodeableConceptBinding
reasonReferenceI0..*Reference(Condition | Procedure | Observation | ImmunizationRecommendation)
priority0..1unsignedInt
descriptionS0..1string
supportingInformationI0..*Reference(Resource)
startS Σ0..1instant
endS Σ0..1instant
minutesDuration0..1positiveInt
slotI0..*Reference(Slot)
createdS0..1dateTime
commentS0..1string
patientInstructionS0..1string
basedOnI0..*Reference(ServiceRequest)
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
typeΣ0..*CodeableConceptBinding
actorS Σ I0..1Reference(Patient | PractitionerRole | Location)
requiredΣ0..1codeBinding
statusS Σ1..1codeBinding
periodI0..1Period
requestedPeriodI0..*Period
textS
idΣ0..1string
metaΣ0..1Meta
implicitRulesΣ ?!0..1uri
language0..1codeBinding
text0..1Narrative
contained0..*Resource
virtualServiceI0..*Extension
modifierExtension?! I0..*Extension
identifierΣ0..*Identifier
statusS Σ ?!1..1codeBinding
cancelationReasonΣ0..1CodeableConcept
serviceCategoryΣ0..*CodeableConcept
serviceTypeΣ0..*CodeableConcept
specialtyΣ0..*CodeableConceptBinding
appointmentTypeΣ0..1CodeableConceptBinding
reasonCodeΣ0..*CodeableConceptBinding
reasonReferenceI0..*Reference(Condition | Procedure | Observation | ImmunizationRecommendation)
priority0..1unsignedInt
descriptionS0..1string
supportingInformationI0..*Reference(Resource)
startS Σ0..1instant
endS Σ0..1instant
minutesDuration0..1positiveInt
slotI0..*Reference(Slot)
createdS0..1dateTime
commentS0..1string
patientInstructionS0..1string
basedOnI0..*Reference(ServiceRequest)
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
typeΣ0..*CodeableConceptBinding
actorS Σ I0..1Reference(Patient | PractitionerRole | Location)
requiredΣ0..1codeBinding
statusS Σ1..1codeBinding
periodI0..1Period
requestedPeriodI0..*Period
textS
idΣ0..1string
metaΣ0..1Meta
implicitRulesΣ ?!0..1uri
language0..1codeBinding
text0..1Narrative
contained0..*Resource
virtualServiceI0..*Extension
modifierExtension?! I0..*Extension
identifierΣ0..*Identifier
statusS Σ ?!1..1codeBinding
cancelationReasonΣ0..1CodeableConcept
serviceCategoryΣ0..*CodeableConcept
serviceTypeΣ0..*CodeableConcept
specialtyΣ0..*CodeableConceptBinding
appointmentTypeΣ0..1CodeableConceptBinding
reasonCodeΣ0..*CodeableConceptBinding
reasonReferenceI0..*Reference(Condition | Procedure | Observation | ImmunizationRecommendation)
priority0..1unsignedInt
descriptionS0..1string
supportingInformationI0..*Reference(Resource)
startS Σ0..1instant
endS Σ0..1instant
minutesDuration0..1positiveInt
slotI0..*Reference(Slot)
createdS0..1dateTime
commentS0..1string
patientInstructionS0..1string
basedOnI0..*Reference(ServiceRequest)
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
typeΣ0..*CodeableConceptBinding
actorS Σ I0..1Reference(Patient | PractitionerRole | Location)
requiredΣ0..1codeBinding
statusS Σ1..1codeBinding
periodI0..1Period
requestedPeriodI0..*Period
textS
Appointment..
Appointment.meta..
Appointment.extensionExtension..
Appointment.text..
Appointment.status..
Appointment.description..
Appointment.start..
Appointment.end..
Appointment.created..
Appointment.comment..
Appointment.patientInstruction..
Appointment.basedOnReference(ServiceRequest)..
Appointment.participant..
Appointment.participant.actorReference(Patient | PractitionerRole | Location)..
Appointment.participant.status..

{
    "resourceType": "StructureDefinition",
    "id": "CA-eReC-Appointment",
    "url": "https://fhir.infoway-inforoute.ca/io/CA-eReC/StructureDefinition/CA-eReC-Appointment",
    "version": "0.1.0",
    "name": "Appointment",
    "status": "draft",
    "description": "The resource involves booking one (or a series) of appointment(s) between the patient and the practitioner(s) for a specific date/time. The encounter may be a scheduled referral or an econsult.",
    "fhirVersion": "4.0.1",
    "kind": "resource",
    "abstract": false,
    "type": "Appointment",
    "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Appointment",
    "derivation": "constraint",
    "differential": {
        "element":  [
            {
                "id": "Appointment.meta",
                "path": "Appointment.meta",
                "comment": "The MustSupport flag on this element has been relaxed in this version until further confirmation of the use of meta.profile (outside of use for certain validation suites) and impact can be assessed by the working group."
            },
            {
                "id": "Appointment.extension:virtualService",
                "path": "Appointment.extension",
                "sliceName": "virtualService",
                "type":  [
                    {
                        "code": "Extension",
                        "profile":  [
                            "http://hl7.org/fhir/5.0/StructureDefinition/extension-Appointment.virtualService"
                        ]
                    }
                ]
            },
            {
                "id": "Appointment.text",
                "path": "Appointment.text",
                "mustSupport": true
            },
            {
                "id": "Appointment.status",
                "path": "Appointment.status",
                "mustSupport": true
            },
            {
                "id": "Appointment.description",
                "path": "Appointment.description",
                "mustSupport": true
            },
            {
                "id": "Appointment.start",
                "path": "Appointment.start",
                "mustSupport": true
            },
            {
                "id": "Appointment.end",
                "path": "Appointment.end",
                "mustSupport": true
            },
            {
                "id": "Appointment.created",
                "path": "Appointment.created",
                "mustSupport": true
            },
            {
                "id": "Appointment.comment",
                "path": "Appointment.comment",
                "mustSupport": true
            },
            {
                "id": "Appointment.patientInstruction",
                "path": "Appointment.patientInstruction",
                "mustSupport": true
            },
            {
                "id": "Appointment.basedOn",
                "path": "Appointment.basedOn",
                "type":  [
                    {
                        "code": "Reference",
                        "targetProfile":  [
                            "https://fhir.infoway-inforoute.ca/io/CA-eReC/StructureDefinition/CA-eReC-ServiceRequest"
                        ],
                        "aggregation":  [
                            "referenced"
                        ]
                    }
                ]
            },
            {
                "id": "Appointment.participant",
                "path": "Appointment.participant",
                "mustSupport": true
            },
            {
                "id": "Appointment.participant.actor",
                "path": "Appointment.participant.actor",
                "type":  [
                    {
                        "code": "Reference",
                        "targetProfile":  [
                            "https://fhir.infoway-inforoute.ca/io/CA-eReC/StructureDefinition/CA-eReC-Patient",
                            "https://fhir.infoway-inforoute.ca/io/CA-eReC/StructureDefinition/CA-eReC-PractitionerRole",
                            "https://fhir.infoway-inforoute.ca/io/CA-eReC/StructureDefinition/CA-eReC-Location"
                        ],
                        "aggregation":  [
                            "referenced"
                        ]
                    }
                ],
                "mustSupport": true
            },
            {
                "id": "Appointment.participant.status",
                "path": "Appointment.participant.status",
                "mustSupport": true
            }
        ]
    }
}

Usage

The Appointment resource is used to represent a meeting planned in response to a ServiceRequest. References to other resources are used to convey the details of the appointment including ServiceRequest the appointment is based on (Appointment.basedOn) and participants (Appointment.participant.actor) in the appointment such as a Patient, PractitionerRole, or HealthcareService. Systems SHALL support start and SHALL support one of end or minutesDuration or both.

Notes

.id

  • used to uniquely identify the resource
  • if a persistent identity for the resource is not available to use when constructing a message Bundle for transmission via Direct Messaging, a UUID SHOULD be used in this element (with a corresponding value in Bundle.entry.fullUrl)

.text

  • used to provide human readable human readable that can be pasted into other systems with complete information about the appointment
  • where populated:
    • .text.div SHALL include a full text summary of the appointment
    • .text.status, populate with the fixed code "generated"

.status

  • typically populated with "booked" (or "cancelled" if unbooked)

.description

  • title of the appointment (e.g. the Subject on an appointment in MS Outlook)

.start

  • populate with the appointment start time
  • format: YYYY-MM-DDThh:mm:ss.sss+zz:zz (e.g. 2015-02-07T13:28:17.239+02:00 or 2017-01-01T00:00:00Z).

.end

  • populate with the appointment end time
  • format: YYYY-MM-DDThh:mm:ss.sss+zz:zz (e.g. 2015-02-07T13:28:17.239+02:00 or 2017-01-01T00:00:00Z).

.minutesDuration

  • duration of appointment in minutes
  • populate with a positive integer

.created

  • populate with the date that this appointment was initially created (NOT the time of the appointment itself)

.comment

  • additional comments and details about the appointment (i.e. the Body of an appointment in MS Outlook)

.patientInstruction

  • detailed information and instructions for the patient

.basedOn

  • associates the Appointment with the ServiceRequest being performed
  • SHALL be populated with a reference to the ServiceRequest being performed
  • if the Appointment is being transmitted via messaging, the referenced ServiceRequest resource SHALL be included in the message as a Bundle.entry

.participant

  • repeating element identifies one or more participants in the appointment where

    • .participant.type is a value from ParticipantType(extensible)
    • .participant.actor a reference to one of:
      • the Patient being seen > SHALL be the same as the ServiceRequest.subject
      • the HealthcareService providing the appointment > SHALL be same as the ServiceRequest.performer if both are present
      • the PractitionerRole seeing the patient
      • the Location of the appointment
    • .participant.status is expected to be "accepted" for a booked appointment
  • Note:

    • if an Appointment is being transmitted via messaging, referenced Patient, PractitionerRole and Location resources SHALL be included in the message as a Bundle.entry
    • HealthcareService SHOULD typically be an external reference