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: http://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
textS0..1Narrative
contained0..*Resource
extensionI0..*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
endΣ0..1instant
minutesDuration0..1positiveInt
slotI0..*Reference(Slot)
createdS0..1dateTime
commentS0..1string
patientInstruction0..1string
id0..1string
extensionI0..*Extension
referenceS Σ I0..1string
typeΣ0..1uriBinding
id0..1string
extensionI0..*Extension
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemS Σ0..1uri
valueS Σ0..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(Organization)
displayΣ0..1string
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
typeS Σ0..*CodeableConceptBinding
id0..1string
extensionI0..*Extension
referenceS Σ I0..1string
typeΣ0..1uriBinding
id0..1string
extensionI0..*Extension
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemS Σ1..1uri
valueS Σ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(Organization)
displayΣ0..1string
requiredΣ0..1codeBinding
statusΣ1..1codeBinding
periodI0..1Period
requestedPeriodI0..*Period
idΣ0..1string
metaΣ0..1Meta
implicitRulesΣ ?!0..1uri
language0..1codeBinding
textS0..1Narrative
contained0..*Resource
extensionI0..*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
endΣ0..1instant
minutesDuration0..1positiveInt
slotI0..*Reference(Slot)
createdS0..1dateTime
commentS0..1string
patientInstruction0..1string
id0..1string
extensionI0..*Extension
referenceS Σ I0..1string
typeΣ0..1uriBinding
id0..1string
extensionI0..*Extension
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemS Σ0..1uri
valueS Σ0..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(Organization)
displayΣ0..1string
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
typeS Σ0..*CodeableConceptBinding
id0..1string
extensionI0..*Extension
referenceS Σ I0..1string
typeΣ0..1uriBinding
id0..1string
extensionI0..*Extension
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemS Σ1..1uri
valueS Σ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(Organization)
displayΣ0..1string
requiredΣ0..1codeBinding
statusΣ1..1codeBinding
periodI0..1Period
requestedPeriodI0..*Period
idΣ0..1string
metaΣ0..1Meta
implicitRulesΣ ?!0..1uri
language0..1codeBinding
textS0..1Narrative
contained0..*Resource
extensionI0..*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
endΣ0..1instant
minutesDuration0..1positiveInt
slotI0..*Reference(Slot)
createdS0..1dateTime
commentS0..1string
patientInstruction0..1string
id0..1string
extensionI0..*Extension
referenceS Σ I0..1string
typeΣ0..1uriBinding
id0..1string
extensionI0..*Extension
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemS Σ0..1uri
valueS Σ0..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(Organization)
displayΣ0..1string
id0..1string
extensionI0..*Extension
modifierExtensionΣ ?! I0..*Extension
typeS Σ0..*CodeableConceptBinding
id0..1string
extensionI0..*Extension
referenceS Σ I0..1string
typeΣ0..1uriBinding
id0..1string
extensionI0..*Extension
useΣ ?!0..1codeBinding
typeΣ0..1CodeableConceptBinding
systemS Σ1..1uri
valueS Σ1..1string
periodΣ I0..1Period
assignerΣ I0..1Reference(Organization)
displayΣ0..1string
requiredΣ0..1codeBinding
statusΣ1..1codeBinding
periodI0..1Period
requestedPeriodI0..*Period
Appointment..
Appointment.text..
Appointment.status..
Appointment.description..
Appointment.start..
Appointment.end..
Appointment.minutesDuration..
Appointment.created..
Appointment.comment..
Appointment.patientInstruction..
Appointment.basedOnReference(ServiceRequest)1..1
Appointment.basedOn.reference..
Appointment.basedOn.identifier..
Appointment.basedOn.identifier.system..
Appointment.basedOn.identifier.value..
Appointment.participant..
Appointment.participant.type..
Appointment.participant.actorReference(Patient | PractitionerRole | Location)..
Appointment.participant.actor.reference..
Appointment.participant.actor.identifier..
Appointment.participant.actor.identifier.system1..
Appointment.participant.actor.identifier.value1..

{
    "resourceType": "StructureDefinition",
    "id": "CA-eReC-Appointment",
    "url": "http://fhir.infoway-inforoute.ca/io/CA-eReC/StructureDefinition/CA-eReC-Appointment",
    "version": "1.0.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.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",
                "comment": "𝗦𝗨𝗣𝗣𝗢𝗥𝗧: One of end or minutesDuration must be supported."
            },
            {
                "id": "Appointment.minutesDuration",
                "path": "Appointment.minutesDuration",
                "comment": "𝗦𝗨𝗣𝗣𝗢𝗥𝗧: One of end or minutesDuration must be supported."
            },
            {
                "id": "Appointment.created",
                "path": "Appointment.created",
                "mustSupport": true
            },
            {
                "id": "Appointment.comment",
                "path": "Appointment.comment",
                "mustSupport": true
            },
            {
                "id": "Appointment.patientInstruction",
                "path": "Appointment.patientInstruction",
                "comment": "If systems are capturing instructions to a patient independently from other comments, they SHOULD use the patientInstruction field."
            },
            {
                "id": "Appointment.basedOn",
                "path": "Appointment.basedOn",
                "min": 1,
                "max": "1",
                "type":  [
                    {
                        "code": "Reference",
                        "targetProfile":  [
                            "http://fhir.infoway-inforoute.ca/io/CA-eReC/StructureDefinition/CA-eReC-ServiceRequest"
                        ],
                        "aggregation":  [
                            "referenced"
                        ]
                    }
                ],
                "mustSupport": true
            },
            {
                "id": "Appointment.basedOn.reference",
                "path": "Appointment.basedOn.reference",
                "mustSupport": true
            },
            {
                "id": "Appointment.basedOn.identifier",
                "path": "Appointment.basedOn.identifier",
                "mustSupport": true
            },
            {
                "id": "Appointment.basedOn.identifier.system",
                "path": "Appointment.basedOn.identifier.system",
                "mustSupport": true
            },
            {
                "id": "Appointment.basedOn.identifier.value",
                "path": "Appointment.basedOn.identifier.value",
                "mustSupport": true
            },
            {
                "id": "Appointment.participant",
                "path": "Appointment.participant",
                "mustSupport": true
            },
            {
                "id": "Appointment.participant.type",
                "path": "Appointment.participant.type",
                "mustSupport": true
            },
            {
                "id": "Appointment.participant.actor",
                "path": "Appointment.participant.actor",
                "type":  [
                    {
                        "code": "Reference",
                        "targetProfile":  [
                            "http://fhir.infoway-inforoute.ca/io/CA-eReC/StructureDefinition/CA-eReC-Patient",
                            "http://fhir.infoway-inforoute.ca/io/CA-eReC/StructureDefinition/CA-eReC-PractitionerRole",
                            "http://fhir.infoway-inforoute.ca/io/CA-eReC/StructureDefinition/CA-eReC-Location"
                        ],
                        "aggregation":  [
                            "referenced"
                        ]
                    }
                ],
                "mustSupport": true
            },
            {
                "id": "Appointment.participant.actor.reference",
                "path": "Appointment.participant.actor.reference",
                "mustSupport": true
            },
            {
                "id": "Appointment.participant.actor.identifier",
                "path": "Appointment.participant.actor.identifier",
                "mustSupport": true
            },
            {
                "id": "Appointment.participant.actor.identifier.system",
                "path": "Appointment.participant.actor.identifier.system",
                "min": 1,
                "mustSupport": true
            },
            {
                "id": "Appointment.participant.actor.identifier.value",
                "path": "Appointment.participant.actor.identifier.value",
                "min": 1,
                "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"

.identifier

  • MAY be populated to share business identifers used to reference this resource in subsequent messages
  • identifier.system and identifier.value SHALL be mustSupport whenever there is a reference or identifier present

.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

  • 𝗦𝗨𝗣𝗣𝗢𝗥𝗧: One of end or minutesDuration must be supported
  • 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

  • 𝗦𝗨𝗣𝗣𝗢𝗥𝗧: One of end or minutesDuration must be supported
  • 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
  • If systems are capturing instructions to a patient independently from other comments, they SHOULD use the patientInstruction field.

.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, this element SHALL either:
    • .reference a resource included in the message as a Bundle.entry, or
    • include an .identifier previously known to both systems

.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 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 either:
  • .reference a resource included in the message as a Bundle.entry
  • include an .identifier previously known to both systems