{
  "resourceType": "StructureDefinition",
  "id": "Appointment-verto",
  "url": "http://verto.ca/fhir/StructureDefinition/Appointment-verto",
  "version": "1.0.0",
  "name": "Appointment",
  "title": "Verto's Appointment Profile",
  "status": "active",
  "experimental": true,
  "date": "2025-01-13",
  "publisher": "Verto Health",
  "description": "Appointment Profile constrained by Verto's Digital Twin",
  "fhirVersion": "5.0.0",
  "kind": "resource",
  "abstract": false,
  "type": "Appointment",
  "baseDefinition": "http://hl7.org/fhir/R5/StructureDefinition/Appointment",
  "derivation": "constraint",
  "snapshot": {},
  "differential": {
    "element": [
      {
        "id": "Appointment",
        "path": "Appointment",
        "short": "Verto's Appointment Profile",
        "definition": "A booking of a healthcare event among patient(s), practitioner(s), etc."
      },
      {
        "id": "Appointment.identifier",
        "path": "Appointment.identifier",
        "short": "External Ids for this appointment",
        "min": 0,
        "max": "*",
        "type": [
          {
            "code": "Identifier"
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Appointment.status",
        "path": "Appointment.status",
        "short": "proposed | pending | booked | arrived | fulfilled | cancelled | noshow | entered-in-error | checked-in | waitlist",
        "min": 1,
        "max": "1",
        "type": [
          {
            "code": "code"
          }
        ],
        "mustSupport": true,
        "binding": {
          "strength": "required",
          "valueSet": "http://hl7.org/fhir/ValueSet/appointmentstatus"
        }
      },
      {
        "id": "Appointment.cancellationReason",
        "path": "Appointment.cancellationReason",
        "short": "The reason for appointment cancellation",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "CodeableConcept"
          }
        ],
        "mustSupport": true,
        "binding": {
          "strength": "preferred",
          "valueSet": "http://hl7.org/fhir/ValueSet/appointment-cancellation-reason"
        }
      },
      {
        "id": "Appointment.class",
        "path": "Appointment.class",
        "short": "Classification of service",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "CodeableConcept"
          }
        ],
        "mustSupport": true,
        "binding": {
          "strength": "example",
          "valueSet": "http://hl7.org/fhir/ValueSet/appointment-service-class"
        }
      },
      {
        "id": "Appointment.serviceCategory",
        "path": "Appointment.serviceCategory",
        "short": "A broad categorization of the service",
        "min": 0,
        "max": "*",
        "type": [
          {
            "code": "CodeableConcept"
          }
        ],
        "mustSupport": true,
        "binding": {
          "strength": "preferred",
          "valueSet": "http://hl7.org/fhir/ValueSet/service-category"
        }
      },
      {
        "id": "Appointment.serviceType",
        "path": "Appointment.serviceType",
        "short": "Specific service",
        "min": 0,
        "max": "*",
        "type": [
          {
            "code": "CodeableConcept"
          }
        ],
        "mustSupport": true,
        "binding": {
          "strength": "preferred",
          "valueSet": "http://hl7.org/fhir/ValueSet/service-type"
        }
      },
      {
        "id": "Appointment.appointmentType",
        "path": "Appointment.appointmentType",
        "short": "The type of appointment",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "CodeableConcept"
          }
        ],
        "mustSupport": true,
        "binding": {
          "strength": "preferred",
          "valueSet": "http://hl7.org/fhir/ValueSet/appointment-type"
        }
      },
      {
        "id": "Appointment.reason",
        "path": "Appointment.reason",
        "short": "Reason for appointment",
        "min": 0,
        "max": "*",
        "type": [
          {
            "code": "CodeableReference",
            "targetProfile": [
              "http://verto.ca/fhir/StructureDefinition/Condition-verto",
              "http://hl7.org/fhir/StructureDefinition/Procedure",
              "http://hl7.org/fhir/StructureDefinition/Observation",
              "http://hl7.org/fhir/StructureDefinition/ImmunizationRecommendation"
            ]
          }
        ],
        "mustSupport": true,
        "binding": {
          "strength": "preferred",
          "valueSet": "http://hl7.org/fhir/ValueSet/encounter-reason"
        }
      },
      {
        "id": "Appointment.priority",
        "path": "Appointment.priority",
        "short": "Appointment priority",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "unsignedInt"
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Appointment.description",
        "path": "Appointment.description",
        "short": "Additional appointment notes or comments",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Appointment.replaces",
        "path": "Appointment.replaces",
        "short": "Appointment that this appointment replaces",
        "min": 0,
        "max": "*",
        "type": [
          {
            "code": "Reference",
            "targetProfile": [
              "http://verto.ca/fhir/StructureDefinition/Appointment-verto"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Appointment.virtualService",
        "path": "Appointment.virtualService",
        "short": "Virtual service details",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "VirtualServiceDetail",
            "profile": [
              "http://verto.ca/fhir/StructureDefinition/VirtualServiceDetail-verto"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Appointment.previousAppointment",
        "path": "Appointment.previousAppointment",
        "short": "Previous appointment that this appointment follows",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "Reference",
            "targetProfile": [
              "http://verto.ca/fhir/StructureDefinition/Appointment-verto"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Appointment.originatingAppointment",
        "path": "Appointment.originatingAppointment",
        "short": "The original appointment that this one is based on",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "Reference",
            "targetProfile": [
              "http://hl7.org/fhir/StructureDefinition/Appointment-verto"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Appointment.start",
        "path": "Appointment.start",
        "short": "Start time of appointment",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "instant"
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Appointment.end",
        "path": "Appointment.end",
        "short": "End time of appointment",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "instant"
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Appointment.minutesDuration",
        "path": "Appointment.minutesDuration",
        "short": "Duration in minutes",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "positiveInt"
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Appointment.requestedPeriod",
        "path": "Appointment.requestedPeriod",
        "short": "Requested time period for appointment",
        "min": 0,
        "max": "*",
        "type": [
          {
            "code": "Period"
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Appointment.slot",
        "path": "Appointment.slot",
        "short": "The slots that this appointment is filling",
        "min": 0,
        "max": "*",
        "type": [
          {
            "code": "Reference",
            "targetProfile": [
              "http://verto.ca/fhir/StructureDefinition/Slot-verto"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Appointment.created",
        "path": "Appointment.created",
        "short": "Creation time",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "dateTime"
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Appointment.cancellationDate",
        "path": "Appointment.cancellationDate",
        "short": "When appointment was cancelled",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "dateTime"
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Appointment.subject",
        "path": "Appointment.subject",
        "short": "The patient for the appointment",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "Reference",
            "targetProfile": [
              "http://verto.ca/fhir/StructureDefinition/Verto's Patient Profile"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Appointment.participant",
        "path": "Appointment.participant",
        "short": "Participants involved in appointment",
        "min": 0,
        "max": "*",
        "type": [
          {
            "code": "BackboneElement"
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Appointment.participant.actor",
        "path": "Appointment.participant.actor",
        "short": "Person, Location or Resource",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "Reference",
            "targetProfile": [
              "http://hl7.org/fhir/StructureDefinition/Verto's Patient Profile",
              "http://hl7.org/fhir/StructureDefinition/Practitioner",
              "http://hl7.org/fhir/StructureDefinition/PractitionerRole",
              "http://hl7.org/fhir/StructureDefinition/RelatedPerson",
              "http://hl7.org/fhir/StructureDefinition/Device",
              "http://hl7.org/fhir/StructureDefinition/HealthcareService",
              "http://hl7.org/fhir/StructureDefinition/Location"
            ]
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Appointment.recurrenceId",
        "path": "Appointment.recurrenceId",
        "short": "Identifier of recurring appointment",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "string"
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Appointment.occurrenceChanged",
        "path": "Appointment.occurrenceChanged",
        "short": "Indicates if occurrence was changed",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "boolean"
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Appointment.recurrenceTemplate",
        "path": "Appointment.recurrenceTemplate",
        "short": "Recurring appointment template",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "BackboneElement"
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Appointment.recurrenceTemplate.recurrenceType",
        "path": "Appointment.recurrenceTemplate.recurrenceType",
        "short": "Type of recurrence",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "code"
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Appointment.recurrenceTemplate.lastOccurrenceDate",
        "path": "Appointment.recurrenceTemplate.lastOccurrenceDate",
        "short": "Date of last occurrence",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "dateTime"
          }
        ],
        "mustSupport": true
      },
      {
        "id": "Appointment.recurrenceTemplate.occurrenceCount",
        "path": "Appointment.recurrenceTemplate.occurrenceCount",
        "short": "Number of occurrences",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "positiveInt"
          }
        ],
        "mustSupport": true
      }
    ]
  }
}