<StructureDefinition xmlns="http://hl7.org/fhir">
  <url value="http://ehrrunner.com/fhir/StructureDefinition/Appointment" />
  <version value="1.0" />
  <name value="Appointment" />
  <title value="Agendamento de Consulta ou Procedimento" />
  <status value="draft" />
  <date value="2024-01-24T18:16:52.4222349+00:00" />
  <description value="Agendamento de consulta ou procedimento" />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Appointment" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Appointment" />
  <derivation value="constraint" />
  <differential>
    <element id="Appointment.meta">
      <path value="Appointment.meta" />
    </element>
    <element id="Appointment.meta.tag">
      <path value="Appointment.meta.tag" />
      <slicing>
        <discriminator>
          <type value="pattern" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
    </element>
    <element id="Appointment.meta.tag:estabelecimentoExecutante">
      <path value="Appointment.meta.tag" />
      <sliceName value="estabelecimentoExecutante" />
      <max value="1" />
    </element>
    <element id="Appointment.meta.tag:estabelecimentoExecutante.system">
      <path value="Appointment.meta.tag.system" />
      <min value="1" />
      <fixedUri value="http://ehrrunner.com/fhir/StructureDefinition/EstabelecimentoExecutante" />
    </element>
    <element id="Appointment.meta.tag:estabelecimentoExecutante.code">
      <path value="Appointment.meta.tag.code" />
      <short value="CNES do estabelecimento executante" />
      <definition value="CNES do estabelecimento executante" />
      <min value="1" />
    </element>
    <element id="Appointment.contained">
      <path value="Appointment.contained" />
      <slicing>
        <discriminator>
          <type value="pattern" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
    </element>
    <element id="Appointment.contained:organization">
      <path value="Appointment.contained" />
      <sliceName value="organization" />
      <max value="1" />
      <type>
        <code value="Resource" />
        <profile value="http://hl7.org/fhir/StructureDefinition/Organization" />
      </type>
    </element>
    <element id="Appointment.contained:organization.identifier">
      <path value="Appointment.contained.identifier" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Appointment.contained:organization.active">
      <path value="Appointment.contained.active" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:organization.type">
      <path value="Appointment.contained.type" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:organization.alias">
      <path value="Appointment.contained.alias" />
      <max value="1" />
    </element>
    <element id="Appointment.contained:organization.telecom">
      <path value="Appointment.contained.telecom" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:organization.address">
      <path value="Appointment.contained.address" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:organization.partOf">
      <path value="Appointment.contained.partOf" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:organization.contact">
      <path value="Appointment.contained.contact" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:organization.endpoint">
      <path value="Appointment.contained.endpoint" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:healthcareService">
      <path value="Appointment.contained" />
      <sliceName value="healthcareService" />
      <short value="Serviço de saúde" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Resource" />
        <profile value="http://hl7.org/fhir/StructureDefinition/HealthcareService" />
      </type>
    </element>
    <element id="Appointment.contained:healthcareService.id">
      <path value="Appointment.contained.id" />
      <min value="1" />
      <fixedString value="service1" />
    </element>
    <element id="Appointment.contained:healthcareService.providedBy">
      <path value="Appointment.contained.providedBy" />
    </element>
    <element id="Appointment.contained:healthcareService.providedBy.reference">
      <path value="Appointment.contained.providedBy.reference" />
      <min value="1" />
    </element>
    <element id="Appointment.contained:healthcareService.category">
      <path value="Appointment.contained.category" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:healthcareService.type">
      <path value="Appointment.contained.type" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:healthcareService.specialty">
      <path value="Appointment.contained.specialty" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:healthcareService.location">
      <path value="Appointment.contained.location" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Appointment.contained:healthcareService.location.reference">
      <path value="Appointment.contained.location.reference" />
      <fixedString value="location1" />
    </element>
    <element id="Appointment.contained:healthcareService.location.type">
      <path value="Appointment.contained.location.type" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:healthcareService.location.identifier">
      <path value="Appointment.contained.location.identifier" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:healthcareService.comment">
      <path value="Appointment.contained.comment" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:healthcareService.extraDetails">
      <path value="Appointment.contained.extraDetails" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:healthcareService.photo">
      <path value="Appointment.contained.photo" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:healthcareService.telecom">
      <path value="Appointment.contained.telecom" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:healthcareService.coverageArea">
      <path value="Appointment.contained.coverageArea" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:healthcareService.serviceProvisionCode">
      <path value="Appointment.contained.serviceProvisionCode" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:healthcareService.eligibility">
      <path value="Appointment.contained.eligibility" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:healthcareService.program">
      <path value="Appointment.contained.program" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:healthcareService.characteristic">
      <path value="Appointment.contained.characteristic" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:healthcareService.communication">
      <path value="Appointment.contained.communication" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:healthcareService.referralMethod">
      <path value="Appointment.contained.referralMethod" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:healthcareService.appointmentRequired">
      <path value="Appointment.contained.appointmentRequired" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:healthcareService.availableTime">
      <path value="Appointment.contained.availableTime" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:healthcareService.notAvailable">
      <path value="Appointment.contained.notAvailable" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:healthcareService.availabilityExceptions">
      <path value="Appointment.contained.availabilityExceptions" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:healthcareService.endpoint">
      <path value="Appointment.contained.endpoint" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:location">
      <path value="Appointment.contained" />
      <sliceName value="location" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Resource" />
        <profile value="http://hl7.org/fhir/StructureDefinition/Location" />
      </type>
    </element>
    <element id="Appointment.contained:location.identifier">
      <path value="Appointment.contained.identifier" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:location.status">
      <path value="Appointment.contained.status" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:location.operationalStatus">
      <path value="Appointment.contained.operationalStatus" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:location.alias">
      <path value="Appointment.contained.alias" />
      <max value="1" />
    </element>
    <element id="Appointment.contained:location.mode">
      <path value="Appointment.contained.mode" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:location.type">
      <path value="Appointment.contained.type" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:location.telecom">
      <path value="Appointment.contained.telecom" />
    </element>
    <element id="Appointment.contained:location.telecom.system">
      <path value="Appointment.contained.telecom.system" />
      <min value="1" />
      <fixedCode value="phone" />
    </element>
    <element id="Appointment.contained:location.telecom.value">
      <path value="Appointment.contained.telecom.value" />
      <min value="1" />
    </element>
    <element id="Appointment.contained:location.address">
      <path value="Appointment.contained.address" />
      <min value="1" />
    </element>
    <element id="Appointment.contained:location.physicalType">
      <path value="Appointment.contained.physicalType" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:location.managingOrganization">
      <path value="Appointment.contained.managingOrganization" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:location.partOf">
      <path value="Appointment.contained.partOf" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:location.availabilityExceptions">
      <path value="Appointment.contained.availabilityExceptions" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:location.endpoint">
      <path value="Appointment.contained.endpoint" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:practitioner">
      <path value="Appointment.contained" />
      <sliceName value="practitioner" />
      <max value="1" />
      <type>
        <code value="Resource" />
        <profile value="http://hl7.org/fhir/StructureDefinition/Practitioner" />
      </type>
    </element>
    <element id="Appointment.contained:practitioner.active">
      <path value="Appointment.contained.active" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:practitioner.name">
      <path value="Appointment.contained.name" />
      <max value="1" />
    </element>
    <element id="Appointment.contained:practitioner.telecom">
      <path value="Appointment.contained.telecom" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:practitioner.address">
      <path value="Appointment.contained.address" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:practitioner.gender">
      <path value="Appointment.contained.gender" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:practitioner.birthDate">
      <path value="Appointment.contained.birthDate" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:practitioner.photo">
      <path value="Appointment.contained.photo" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:practitioner.qualification">
      <path value="Appointment.contained.qualification" />
      <max value="0" />
    </element>
    <element id="Appointment.contained:practitioner.communication">
      <path value="Appointment.contained.communication" />
      <max value="0" />
    </element>
    <element id="Appointment.identifier">
      <path value="Appointment.identifier" />
      <slicing>
        <discriminator>
          <type value="pattern" />
          <path value="system" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <max value="1" />
    </element>
    <element id="Appointment.identifier:localIdentifier">
      <path value="Appointment.identifier" />
      <sliceName value="localIdentifier" />
      <short value="Identificador do registro no sistema de origem" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Appointment.identifier:localIdentifier.use">
      <path value="Appointment.identifier.use" />
      <max value="0" />
    </element>
    <element id="Appointment.identifier:localIdentifier.type">
      <path value="Appointment.identifier.type" />
      <max value="0" />
    </element>
    <element id="Appointment.identifier:localIdentifier.system">
      <path value="Appointment.identifier.system" />
      <short value="Identificador único do sistema de origem" />
      <definition value="URL ou OID da instância/sistema de origem - fornecido pela plataforma." />
      <min value="1" />
    </element>
    <element id="Appointment.identifier:localIdentifier.value">
      <path value="Appointment.identifier.value" />
      <short value="Identificador do registro no sistema de origem" />
      <definition value="Identificador do registro no sistema de origem" />
      <min value="1" />
    </element>
    <element id="Appointment.identifier:localIdentifier.period">
      <path value="Appointment.identifier.period" />
      <max value="0" />
    </element>
    <element id="Appointment.identifier:localIdentifier.assigner">
      <path value="Appointment.identifier.assigner" />
      <max value="0" />
    </element>
    <element id="Appointment.serviceCategory">
      <path value="Appointment.serviceCategory" />
      <max value="1" />
      <binding>
        <strength value="preferred" />
        <valueSet value="http://www.saude.gov.br/fhir/r4/CodeSystem/BRModalidadeAssistencial" />
      </binding>
    </element>
    <element id="Appointment.serviceType">
      <path value="Appointment.serviceType" />
      <short value="Procedimento(s) agendado(s)" />
      <binding>
        <strength value="preferred" />
        <description value="http://www.saude.gov.br/fhir/r4/ValueSet/BRProcedimentosNacionais-1.0" />
      </binding>
    </element>
    <element id="Appointment.specialty">
      <path value="Appointment.specialty" />
      <slicing>
        <discriminator>
          <type value="pattern" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
    </element>
    <element id="Appointment.specialty:specialty">
      <path value="Appointment.specialty" />
      <sliceName value="specialty" />
      <max value="1" />
      <binding>
        <strength value="preferred" />
        <valueSet value="http://ehrrunner.com/fhir/ValueSet/Especialidade" />
      </binding>
    </element>
    <element id="Appointment.specialty:specialtyDetail">
      <path value="Appointment.specialty" />
      <sliceName value="specialtyDetail" />
      <max value="1" />
      <binding>
        <strength value="preferred" />
        <valueSet value="http://ehrrunner.com/fhir/ValueSet/AreaAtuacao" />
      </binding>
    </element>
    <element id="Appointment.specialty:cbo">
      <path value="Appointment.specialty" />
      <sliceName value="cbo" />
      <max value="1" />
      <binding>
        <strength value="required" />
        <valueSet value="http://www.saude.gov.br/fhir/r4/ValueSet/BROcupacao-1.0" />
      </binding>
    </element>
    <element id="Appointment.reasonCode">
      <path value="Appointment.reasonCode" />
      <binding>
        <strength value="preferred" />
        <valueSet value="http://www.saude.gov.br/fhir/r4/ValueSet/BRProblemaDiagnostico" />
      </binding>
    </element>
    <element id="Appointment.reasonReference">
      <path value="Appointment.reasonReference" />
      <max value="0" />
    </element>
    <element id="Appointment.priority">
      <path value="Appointment.priority" />
      <max value="0" />
    </element>
    <element id="Appointment.supportingInformation">
      <path value="Appointment.supportingInformation" />
      <max value="0" />
    </element>
    <element id="Appointment.start">
      <path value="Appointment.start" />
      <min value="1" />
    </element>
    <element id="Appointment.basedOn">
      <path value="Appointment.basedOn" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/ServiceRequest" />
        <targetProfile value="https://ehrrunner.com/fhir/StructureDefinition/Referral" />
        <targetProfile value="https://ehrrunner.com/fhir/StructureDefinition/ServiceRequest" />
      </type>
    </element>
    <element id="Appointment.basedOn.type">
      <path value="Appointment.basedOn.type" />
      <max value="0" />
    </element>
    <element id="Appointment.basedOn.identifier">
      <path value="Appointment.basedOn.identifier" />
      <max value="0" />
    </element>
    <element id="Appointment.basedOn.display">
      <path value="Appointment.basedOn.display" />
      <max value="0" />
    </element>
    <element id="Appointment.participant">
      <path value="Appointment.participant" />
      <slicing>
        <discriminator>
          <type value="pattern" />
          <path value="$this" />
        </discriminator>
        <rules value="open" />
      </slicing>
    </element>
    <element id="Appointment.participant:patient">
      <path value="Appointment.participant" />
      <sliceName value="patient" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Appointment.participant:patient.type">
      <path value="Appointment.participant.type" />
      <min value="1" />
      <max value="1" />
      <fixedCodeableConcept>
        <coding>
          <system value="http://terminology.hl7.org/CodeSystem/v3-ParticipationType" />
          <code value="SBJ" />
        </coding>
      </fixedCodeableConcept>
    </element>
    <element id="Appointment.participant:patient.type.coding">
      <path value="Appointment.participant.type.coding" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Appointment.participant:patient.actor">
      <path value="Appointment.participant.actor" />
      <min value="1" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://ehrrunner.com/fhir/StructureDefinition/Patient" />
      </type>
    </element>
    <element id="Appointment.participant:patient.actor.reference">
      <path value="Appointment.participant.actor.reference" />
      <min value="1" />
    </element>
    <element id="Appointment.participant:patient.actor.type">
      <path value="Appointment.participant.actor.type" />
      <max value="0" />
    </element>
    <element id="Appointment.participant:patient.actor.identifier">
      <path value="Appointment.participant.actor.identifier" />
      <max value="0" />
    </element>
    <element id="Appointment.participant:patient.actor.display">
      <path value="Appointment.participant.actor.display" />
      <max value="0" />
    </element>
    <element id="Appointment.participant:patient.required">
      <path value="Appointment.participant.required" />
      <max value="0" />
    </element>
    <element id="Appointment.participant:patient.period">
      <path value="Appointment.participant.period" />
      <max value="0" />
    </element>
    <element id="Appointment.participant:healthcareService">
      <path value="Appointment.participant" />
      <sliceName value="healthcareService" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="Appointment.participant:healthcareService.type">
      <path value="Appointment.participant.type" />
      <min value="1" />
      <max value="1" />
      <fixedCodeableConcept>
        <coding>
          <system value="http://terminology.hl7.org/CodeSystem/v3-ParticipationType" />
          <code value="PPRF" />
        </coding>
      </fixedCodeableConcept>
    </element>
    <element id="Appointment.participant:healthcareService.actor">
      <path value="Appointment.participant.actor" />
      <min value="1" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/HealthcareService" />
      </type>
      <fixedReference>
        <reference value="#service1" />
      </fixedReference>
    </element>
    <element id="Appointment.participant:healthcareService.required">
      <path value="Appointment.participant.required" />
      <max value="0" />
    </element>
    <element id="Appointment.participant:healthcareService.period">
      <path value="Appointment.participant.period" />
      <max value="0" />
    </element>
    <element id="Appointment.participant:practitioner">
      <path value="Appointment.participant" />
      <sliceName value="practitioner" />
      <max value="1" />
    </element>
    <element id="Appointment.participant:practitioner.type">
      <path value="Appointment.participant.type" />
      <min value="1" />
      <max value="1" />
      <fixedCodeableConcept>
        <coding>
          <system value="http://terminology.hl7.org/CodeSystem/v3-ParticipationType" />
          <code value="PPRF" />
        </coding>
      </fixedCodeableConcept>
    </element>
    <element id="Appointment.participant:practitioner.actor">
      <path value="Appointment.participant.actor" />
      <min value="1" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Practitioner" />
      </type>
      <fixedReference>
        <reference value="#practitioner1" />
      </fixedReference>
    </element>
    <element id="Appointment.requestedPeriod">
      <path value="Appointment.requestedPeriod" />
      <max value="0" />
    </element>
  </differential>
</StructureDefinition>