{
  "resourceType": "StructureDefinition",
  "url": "https://example.org/fhir/StructureDefinition/Appointment",
  "name": "Appointment",
  "status": "draft",
  "date": "2022-12-20T12:19:32.7242267+00:00",
  "fhirVersion": "4.0.1",
  "kind": "resource",
  "abstract": false,
  "type": "Appointment",
  "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Appointment",
  "derivation": "constraint",
  "differential": {
    "element": [
      {
        "id": "Appointment.implicitRules",
        "path": "Appointment.implicitRules",
        "max": "0"
      },
      {
        "id": "Appointment.language",
        "path": "Appointment.language",
        "max": "0"
      },
      {
        "id": "Appointment.text",
        "path": "Appointment.text",
        "max": "0"
      },
      {
        "id": "Appointment.contained",
        "path": "Appointment.contained",
        "max": "0"
      },
      {
        "id": "Appointment.extension",
        "path": "Appointment.extension",
        "slicing": {
          "discriminator": [
            {
              "type": "value",
              "path": "url"
            }
          ],
          "rules": "open"
        },
        "min": 0
      },
      {
        "id": "Appointment.extension:agenda",
        "path": "Appointment.extension",
        "sliceName": "agenda",
        "comment": "Agenda\r\n\r\nThere can be no stigma associated with the use of extensions by any application, project, or standard - regardless of the institution or jurisdiction that uses or defines the extensions.  The use of extensions is what allows the FHIR specification to retain a core level of simplicity for everyone.",
        "min": 0,
        "max": "1",
        "type": [
          {
            "code": "Extension",
            "profile": [
              "https://example.org/fhir/StructureDefinition/agenda"
            ]
          }
        ],
        "isModifier": false
      },
      {
        "id": "Appointment.extension:agenda.id",
        "path": "Appointment.extension.id",
        "max": "0"
      },
      {
        "id": "Appointment.extension:agenda.value[x]",
        "path": "Appointment.extension.value[x]",
        "type": [
          {
            "code": "Coding"
          }
        ]
      },
      {
        "id": "Appointment.extension:agenda.value[x].id",
        "path": "Appointment.extension.value[x].id",
        "max": "0"
      },
      {
        "id": "Appointment.extension:agenda.value[x].system",
        "path": "Appointment.extension.value[x].system",
        "max": "0"
      },
      {
        "id": "Appointment.extension:agenda.value[x].version",
        "path": "Appointment.extension.value[x].version",
        "max": "0"
      },
      {
        "id": "Appointment.extension:agenda.value[x].userSelected",
        "path": "Appointment.extension.value[x].userSelected",
        "max": "0"
      },
      {
        "id": "Appointment.identifier",
        "path": "Appointment.identifier",
        "max": "0"
      },
      {
        "id": "Appointment.status",
        "path": "Appointment.status",
        "comment": "Estado de la cita. \r\n\r\nIf the Appointment's status is \"cancelled\" then all participants are expected to have their calendars released for the appointment period, and as such any Slots that were marked as BUSY can be re-set to FREE.\n\nThis element is labeled as a modifier because the status contains the code entered-in-error that mark the Appointment as not currently valid."
      },
      {
        "id": "Appointment.cancelationReason",
        "path": "Appointment.cancelationReason",
        "comment": "Notas de cancelación \r\n\r\nNot all terminology uses fit this general pattern. In some cases, models should not use CodeableConcept and use Coding directly and provide their own structure for managing text, codings, translations and the relationship between elements and pre- and post-coordination."
      },
      {
        "id": "Appointment.cancelationReason.id",
        "path": "Appointment.cancelationReason.id",
        "max": "0"
      },
      {
        "id": "Appointment.cancelationReason.coding.id",
        "path": "Appointment.cancelationReason.coding.id",
        "max": "0"
      },
      {
        "id": "Appointment.cancelationReason.coding.system",
        "path": "Appointment.cancelationReason.coding.system",
        "max": "0"
      },
      {
        "id": "Appointment.cancelationReason.coding.version",
        "path": "Appointment.cancelationReason.coding.version",
        "max": "0"
      },
      {
        "id": "Appointment.cancelationReason.coding.userSelected",
        "path": "Appointment.cancelationReason.coding.userSelected",
        "max": "0"
      },
      {
        "id": "Appointment.cancelationReason.text",
        "path": "Appointment.cancelationReason.text",
        "max": "0"
      },
      {
        "id": "Appointment.serviceCategory",
        "path": "Appointment.serviceCategory",
        "comment": "Tipo de atención (Prestación)\r\n\r\nNot all terminology uses fit this general pattern. In some cases, models should not use CodeableConcept and use Coding directly and provide their own structure for managing text, codings, translations and the relationship between elements and pre- and post-coordination."
      },
      {
        "id": "Appointment.serviceCategory.id",
        "path": "Appointment.serviceCategory.id",
        "max": "0"
      },
      {
        "id": "Appointment.serviceCategory.coding.id",
        "path": "Appointment.serviceCategory.coding.id",
        "max": "0"
      },
      {
        "id": "Appointment.serviceCategory.coding.system",
        "path": "Appointment.serviceCategory.coding.system",
        "max": "0"
      },
      {
        "id": "Appointment.serviceCategory.coding.version",
        "path": "Appointment.serviceCategory.coding.version",
        "max": "0"
      },
      {
        "id": "Appointment.serviceCategory.coding.userSelected",
        "path": "Appointment.serviceCategory.coding.userSelected",
        "max": "0"
      },
      {
        "id": "Appointment.serviceCategory.text",
        "path": "Appointment.serviceCategory.text",
        "max": "0"
      },
      {
        "id": "Appointment.serviceType",
        "path": "Appointment.serviceType",
        "comment": "Prestación\r\n\r\nFor a provider to provider appointment the code \"FOLLOWUP\" may be appropriate, as this is expected to be discussing some patient that was seen in the past."
      },
      {
        "id": "Appointment.serviceType.id",
        "path": "Appointment.serviceType.id",
        "max": "0"
      },
      {
        "id": "Appointment.serviceType.coding.id",
        "path": "Appointment.serviceType.coding.id",
        "max": "0"
      },
      {
        "id": "Appointment.serviceType.coding.system",
        "path": "Appointment.serviceType.coding.system",
        "max": "0"
      },
      {
        "id": "Appointment.serviceType.coding.version",
        "path": "Appointment.serviceType.coding.version",
        "max": "0"
      },
      {
        "id": "Appointment.serviceType.coding.userSelected",
        "path": "Appointment.serviceType.coding.userSelected",
        "max": "0"
      },
      {
        "id": "Appointment.serviceType.text",
        "path": "Appointment.serviceType.text",
        "max": "0"
      },
      {
        "id": "Appointment.specialty",
        "path": "Appointment.specialty",
        "max": "0"
      },
      {
        "id": "Appointment.specialty.id",
        "path": "Appointment.specialty.id",
        "max": "0"
      },
      {
        "id": "Appointment.specialty.coding.id",
        "path": "Appointment.specialty.coding.id",
        "max": "0"
      },
      {
        "id": "Appointment.specialty.coding.system",
        "path": "Appointment.specialty.coding.system",
        "max": "0"
      },
      {
        "id": "Appointment.specialty.coding.version",
        "path": "Appointment.specialty.coding.version",
        "max": "0"
      },
      {
        "id": "Appointment.specialty.coding.userSelected",
        "path": "Appointment.specialty.coding.userSelected",
        "max": "0"
      },
      {
        "id": "Appointment.specialty.text",
        "path": "Appointment.specialty.text",
        "max": "0"
      },
      {
        "id": "Appointment.appointmentType",
        "path": "Appointment.appointmentType",
        "max": "0"
      },
      {
        "id": "Appointment.reasonCode",
        "path": "Appointment.reasonCode",
        "comment": "Motivo agenda\r\n\r\nNot all terminology uses fit this general pattern. In some cases, models should not use CodeableConcept and use Coding directly and provide their own structure for managing text, codings, translations and the relationship between elements and pre- and post-coordination."
      },
      {
        "id": "Appointment.reasonCode.id",
        "path": "Appointment.reasonCode.id",
        "max": "0"
      },
      {
        "id": "Appointment.reasonCode.coding.id",
        "path": "Appointment.reasonCode.coding.id",
        "max": "0"
      },
      {
        "id": "Appointment.reasonCode.coding.system",
        "path": "Appointment.reasonCode.coding.system",
        "max": "0"
      },
      {
        "id": "Appointment.reasonCode.coding.version",
        "path": "Appointment.reasonCode.coding.version",
        "max": "0"
      },
      {
        "id": "Appointment.reasonCode.coding.userSelected",
        "path": "Appointment.reasonCode.coding.userSelected",
        "max": "0"
      },
      {
        "id": "Appointment.reasonCode.text",
        "path": "Appointment.reasonCode.text",
        "max": "0"
      },
      {
        "id": "Appointment.reasonReference",
        "path": "Appointment.reasonReference",
        "max": "0"
      },
      {
        "id": "Appointment.reasonReference.id",
        "path": "Appointment.reasonReference.id",
        "max": "0"
      },
      {
        "id": "Appointment.reasonReference.reference",
        "path": "Appointment.reasonReference.reference",
        "max": "0"
      },
      {
        "id": "Appointment.reasonReference.identifier.id",
        "path": "Appointment.reasonReference.identifier.id",
        "max": "0"
      },
      {
        "id": "Appointment.reasonReference.identifier.type.id",
        "path": "Appointment.reasonReference.identifier.type.id",
        "max": "0"
      },
      {
        "id": "Appointment.reasonReference.identifier.type.coding.id",
        "path": "Appointment.reasonReference.identifier.type.coding.id",
        "max": "0"
      },
      {
        "id": "Appointment.reasonReference.identifier.type.coding.system",
        "path": "Appointment.reasonReference.identifier.type.coding.system",
        "max": "0"
      },
      {
        "id": "Appointment.reasonReference.identifier.type.coding.version",
        "path": "Appointment.reasonReference.identifier.type.coding.version",
        "max": "0"
      },
      {
        "id": "Appointment.reasonReference.identifier.type.coding.userSelected",
        "path": "Appointment.reasonReference.identifier.type.coding.userSelected",
        "max": "0"
      },
      {
        "id": "Appointment.reasonReference.identifier.type.text",
        "path": "Appointment.reasonReference.identifier.type.text",
        "max": "0"
      },
      {
        "id": "Appointment.reasonReference.identifier.system",
        "path": "Appointment.reasonReference.identifier.system",
        "max": "0"
      },
      {
        "id": "Appointment.reasonReference.identifier.value",
        "path": "Appointment.reasonReference.identifier.value",
        "max": "0"
      },
      {
        "id": "Appointment.reasonReference.identifier.period",
        "path": "Appointment.reasonReference.identifier.period",
        "max": "0"
      },
      {
        "id": "Appointment.reasonReference.identifier.assigner",
        "path": "Appointment.reasonReference.identifier.assigner",
        "max": "0"
      },
      {
        "id": "Appointment.reasonReference.display",
        "path": "Appointment.reasonReference.display",
        "max": "0"
      },
      {
        "id": "Appointment.priority",
        "path": "Appointment.priority",
        "comment": "Prioridad\r\n\r\nSeeking implementer feedback on this property and how interoperable it is.\r\rUsing an extension to record a CodeableConcept for named values may be tested at a future connectathon."
      },
      {
        "id": "Appointment.description",
        "path": "Appointment.description",
        "max": "0"
      },
      {
        "id": "Appointment.supportingInformation",
        "path": "Appointment.supportingInformation",
        "comment": "Centro de la cita (referencia Organization)\r\n\r\nReferences SHALL be a reference to an actual FHIR resource, and SHALL be resolveable (allowing for access control, temporary unavailability, etc.). Resolution can be either by retrieval from the URL, or, where applicable by resource type, by treating an absolute reference as a canonical URL and looking it up in a local registry/repository.",
        "max": "1"
      },
      {
        "id": "Appointment.start",
        "path": "Appointment.start",
        "comment": "Fecha Inicio\r\n\r\nNote: This is intended for where precisely observed times are required, typically system logs etc., and not human-reported times - for them, see date and dateTime (which can be as precise as instant, but is not required to be) below. Time zone is always required"
      },
      {
        "id": "Appointment.end",
        "path": "Appointment.end",
        "comment": "Fecha Fin\r\n\r\nNote: This is intended for where precisely observed times are required, typically system logs etc., and not human-reported times - for them, see date and dateTime (which can be as precise as instant, but is not required to be) below. Time zone is always required"
      },
      {
        "id": "Appointment.minutesDuration",
        "path": "Appointment.minutesDuration",
        "comment": "Duración (Fin - Inicio)\r\n\r\n32 bit number; for values larger than this, use decimal"
      },
      {
        "id": "Appointment.slot",
        "path": "Appointment.slot",
        "comment": "Fecha hueco\r\n\r\nReferences SHALL be a reference to an actual FHIR resource, and SHALL be resolveable (allowing for access control, temporary unavailability, etc.). Resolution can be either by retrieval from the URL, or, where applicable by resource type, by treating an absolute reference as a canonical URL and looking it up in a local registry/repository."
      },
      {
        "id": "Appointment.slot.id",
        "path": "Appointment.slot.id",
        "max": "0"
      },
      {
        "id": "Appointment.slot.reference",
        "path": "Appointment.slot.reference",
        "max": "0"
      },
      {
        "id": "Appointment.slot.identifier.id",
        "path": "Appointment.slot.identifier.id",
        "max": "0"
      },
      {
        "id": "Appointment.slot.identifier.type.id",
        "path": "Appointment.slot.identifier.type.id",
        "max": "0"
      },
      {
        "id": "Appointment.slot.identifier.type.coding.id",
        "path": "Appointment.slot.identifier.type.coding.id",
        "max": "0"
      },
      {
        "id": "Appointment.slot.identifier.type.coding.system",
        "path": "Appointment.slot.identifier.type.coding.system",
        "max": "0"
      },
      {
        "id": "Appointment.slot.identifier.type.coding.version",
        "path": "Appointment.slot.identifier.type.coding.version",
        "max": "0"
      },
      {
        "id": "Appointment.slot.identifier.type.coding.userSelected",
        "path": "Appointment.slot.identifier.type.coding.userSelected",
        "max": "0"
      },
      {
        "id": "Appointment.slot.identifier.type.text",
        "path": "Appointment.slot.identifier.type.text",
        "max": "0"
      },
      {
        "id": "Appointment.slot.identifier.period",
        "path": "Appointment.slot.identifier.period",
        "max": "0"
      },
      {
        "id": "Appointment.slot.identifier.assigner",
        "path": "Appointment.slot.identifier.assigner",
        "max": "0"
      },
      {
        "id": "Appointment.slot.display",
        "path": "Appointment.slot.display",
        "max": "0"
      },
      {
        "id": "Appointment.created",
        "path": "Appointment.created",
        "comment": "Fecha grabación\r\n\r\nThis property is required for many use cases where the age of an appointment is considered in processing workflows for scheduling and billing of appointments."
      },
      {
        "id": "Appointment.comment",
        "path": "Appointment.comment",
        "max": "0"
      },
      {
        "id": "Appointment.patientInstruction",
        "path": "Appointment.patientInstruction",
        "max": "0"
      },
      {
        "id": "Appointment.basedOn",
        "path": "Appointment.basedOn",
        "max": "0"
      },
      {
        "id": "Appointment.participant",
        "path": "Appointment.participant",
        "comment": "Paciente / Practitioner"
      },
      {
        "id": "Appointment.participant.id",
        "path": "Appointment.participant.id",
        "max": "0"
      },
      {
        "id": "Appointment.participant.type.id",
        "path": "Appointment.participant.type.id",
        "max": "0"
      },
      {
        "id": "Appointment.participant.type.text",
        "path": "Appointment.participant.type.text",
        "max": "0"
      },
      {
        "id": "Appointment.participant.actor.id",
        "path": "Appointment.participant.actor.id",
        "max": "0"
      },
      {
        "id": "Appointment.participant.actor.reference",
        "path": "Appointment.participant.actor.reference",
        "max": "0"
      },
      {
        "id": "Appointment.participant.actor.type",
        "path": "Appointment.participant.actor.type",
        "max": "0"
      },
      {
        "id": "Appointment.participant.actor.identifier.id",
        "path": "Appointment.participant.actor.identifier.id",
        "max": "0"
      },
      {
        "id": "Appointment.participant.actor.identifier.type.id",
        "path": "Appointment.participant.actor.identifier.type.id",
        "max": "0"
      },
      {
        "id": "Appointment.participant.actor.identifier.type.coding.id",
        "path": "Appointment.participant.actor.identifier.type.coding.id",
        "max": "0"
      },
      {
        "id": "Appointment.participant.actor.identifier.type.coding.version",
        "path": "Appointment.participant.actor.identifier.type.coding.version",
        "max": "0"
      },
      {
        "id": "Appointment.participant.actor.identifier.type.coding.display",
        "path": "Appointment.participant.actor.identifier.type.coding.display",
        "max": "0"
      },
      {
        "id": "Appointment.participant.actor.identifier.type.coding.userSelected",
        "path": "Appointment.participant.actor.identifier.type.coding.userSelected",
        "max": "0"
      },
      {
        "id": "Appointment.participant.actor.identifier.type.text",
        "path": "Appointment.participant.actor.identifier.type.text",
        "max": "0"
      },
      {
        "id": "Appointment.participant.actor.identifier.period",
        "path": "Appointment.participant.actor.identifier.period",
        "max": "0"
      },
      {
        "id": "Appointment.participant.actor.identifier.assigner",
        "path": "Appointment.participant.actor.identifier.assigner",
        "max": "0"
      },
      {
        "id": "Appointment.participant.actor.display",
        "path": "Appointment.participant.actor.display",
        "max": "0"
      },
      {
        "id": "Appointment.participant.required",
        "path": "Appointment.participant.required",
        "max": "0"
      },
      {
        "id": "Appointment.participant.period",
        "path": "Appointment.participant.period",
        "max": "0"
      },
      {
        "id": "Appointment.requestedPeriod",
        "path": "Appointment.requestedPeriod",
        "max": "0"
      }
    ]
  }
}