<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="AppointmentVirtualService" />
  <url value="http://fhir.infoway-inforoute.ca/io/ca-ext/StructureDefinition/Appointment-virtualService" />
  <name value="AppointmentVirtualService" />
  <title value="Appointment Virtual Service" />
  <status value="draft" />
  <description value="The extension is used to represent the Appointment R5 virtual service element which is of the new type VirtualServiceDetail." />
  <fhirVersion value="4.0.1" />
  <kind value="complex-type" />
  <abstract value="false" />
  <context>
    <type value="element" />
    <expression value="Appointment" />
  </context>
  <type value="Extension" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Extension" />
  <derivation value="constraint" />
  <differential>
    <element id="Extension">
      <path value="Extension" />
      <definition value="To represent the Appointment R5 virtual service element which is of the new type VirtualServiceDetail." />
    </element>
    <element id="Extension.extension:channelType">
      <path value="Extension.extension" />
      <sliceName value="channelType" />
      <short value="Channel Type" />
      <min value="0" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Extension.extension:channelType.url">
      <path value="Extension.extension.url" />
      <fixedUri value="channelType" />
    </element>
    <element id="Extension.extension:channelType.value[x]">
      <path value="Extension.extension.value[x]" />
      <short value="Channel Type" />
      <type>
        <code value="Coding" />
      </type>
      <binding>
        <strength value="extensible" />
        <valueSet value="https://fhir.infoway-inforoute.ca/ValueSet/visitmodalitycode" />
      </binding>
    </element>
    <element id="Extension.extension:address[x]">
      <path value="Extension.extension" />
      <sliceName value="address[x]" />
      <short value="Contact address/number" />
      <min value="0" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Extension.extension:address[x].extension:purpose">
      <path value="Extension.extension.extension" />
      <sliceName value="purpose" />
      <short value="The type of contact" />
      <definition value="The purpose/type of contact." />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="Extension.extension:address[x].extension:purpose.value[x]">
      <path value="Extension.extension.extension.value[x]" />
      <short value="The type of contact" />
      <definition value="The purpose/type of contact." />
      <base>
        <path value="Extension.value[x]" />
        <min value="0" />
        <max value="1" />
      </base>
      <type>
        <code value="CodeableConcept" />
      </type>
      <binding>
        <strength value="preferred" />
        <description value="The purpose for which an extended contact detail should be used." />
        <valueSet value="http://terminology.hl7.org/ValueSet/contactentity-type" />
      </binding>
    </element>
    <element id="Extension.extension:address[x].extension:name">
      <path value="Extension.extension.extension" />
      <sliceName value="name" />
      <short value="Name of an individual to contact" />
      <definition value="The name of an individual to contact, some types of contact detail are usually blank." />
      <min value="0" />
      <max value="*" />
    </element>
    <element id="Extension.extension:address[x].extension:name.value[x]">
      <path value="Extension.extension.extension.value[x]" />
      <short value="Name of an individual to contact" />
      <definition value="The name of an individual to contact, some types of contact detail are usually blank." />
      <base>
        <path value="Extension.value[x]" />
        <min value="0" />
        <max value="1" />
      </base>
      <type>
        <code value="HumanName" />
      </type>
    </element>
    <element id="Extension.extension:address[x].extension:telecom">
      <path value="Extension.extension.extension" />
      <sliceName value="telecom" />
      <short value="Contact details (e.g.phone/fax/url)" />
      <definition value="The contact details application for the purpose defined." />
      <min value="0" />
      <max value="*" />
    </element>
    <element id="Extension.extension:address[x].extension:telecom.value[x]">
      <path value="Extension.extension.extension.value[x]" />
      <short value="Contact details (e.g.phone/fax/url)" />
      <definition value="The contact details application for the purpose defined." />
      <base>
        <path value="Extension.value[x]" />
        <min value="0" />
        <max value="1" />
      </base>
      <type>
        <code value="ContactPoint" />
      </type>
    </element>
    <element id="Extension.extension:address[x].extension:address">
      <path value="Extension.extension.extension" />
      <sliceName value="address" />
      <short value="Address for the contact" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="Extension.extension:address[x].extension:address.value[x]">
      <path value="Extension.extension.extension.value[x]" />
      <short value="Address for the contact" />
      <base>
        <path value="Extension.value[x]" />
        <min value="0" />
        <max value="1" />
      </base>
      <type>
        <code value="Address" />
      </type>
    </element>
    <element id="Extension.extension:address[x].extension:organization">
      <path value="Extension.extension.extension" />
      <sliceName value="organization" />
      <short value="This contact detail is handled/monitored by a specific organization" />
      <definition value="This contact detail is handled/monitored by a specific organization. If the name is provided in the contact, then it is referring to the named individual within this organization." />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="Extension.extension:address[x].extension:organization.value[x]">
      <path value="Extension.extension.extension.value[x]" />
      <short value="This contact detail is handled/monitored by a specific organization" />
      <definition value="This contact detail is handled/monitored by a specific organization. If the name is provided in the contact, then it is referring to the named individual within this organization." />
      <base>
        <path value="Extension.value[x]" />
        <min value="0" />
        <max value="1" />
      </base>
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Organization" />
      </type>
    </element>
    <element id="Extension.extension:address[x].extension:period">
      <path value="Extension.extension.extension" />
      <sliceName value="period" />
      <short value="Period that this contact was valid for usage" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="Extension.extension:address[x].extension:period.value[x]">
      <path value="Extension.extension.extension.value[x]" />
      <short value="Period that this contact was valid for usage" />
      <base>
        <path value="Extension.value[x]" />
        <min value="0" />
        <max value="1" />
      </base>
      <type>
        <code value="Period" />
      </type>
    </element>
    <element id="Extension.extension:address[x].url">
      <path value="Extension.extension.url" />
      <fixedUri value="address" />
    </element>
    <element id="Extension.extension:address[x].value[x]">
      <path value="Extension.extension.value[x]" />
      <short value="Contact address/number" />
      <type>
        <code value="url" />
      </type>
      <type>
        <code value="string" />
      </type>
      <type>
        <code value="ContactPoint" />
      </type>
    </element>
    <element id="Extension.extension:additionalInfo">
      <path value="Extension.extension" />
      <sliceName value="additionalInfo" />
      <short value="Address to see alternative connection details" />
      <min value="0" />
      <max value="*" />
    </element>
    <element id="Extension.extension:additionalInfo.url">
      <path value="Extension.extension.url" />
      <fixedUri value="additionalInfo" />
    </element>
    <element id="Extension.extension:additionalInfo.value[x]">
      <path value="Extension.extension.value[x]" />
      <short value="Address to see alternative connection details" />
      <type>
        <code value="url" />
      </type>
    </element>
    <element id="Extension.extension:maxParticipants">
      <path value="Extension.extension" />
      <sliceName value="maxParticipants" />
      <short value="Maximum number of participants supported by the virtual service" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="Extension.extension:maxParticipants.url">
      <path value="Extension.extension.url" />
      <fixedUri value="maxParticipants" />
    </element>
    <element id="Extension.extension:maxParticipants.value[x]">
      <path value="Extension.extension.value[x]" />
      <short value="Maximum number of participants supported by the virtual service" />
      <type>
        <code value="positiveInt" />
      </type>
    </element>
    <element id="Extension.extension:sessionKey">
      <path value="Extension.extension" />
      <sliceName value="sessionKey" />
      <short value="Session Key required by the virtual service" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="Extension.extension:sessionKey.url">
      <path value="Extension.extension.url" />
      <fixedUri value="sessionKey" />
    </element>
    <element id="Extension.extension:sessionKey.value[x]">
      <path value="Extension.extension.value[x]" />
      <short value="Session Key required by the virtual service" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="Extension.url">
      <path value="Extension.url" />
      <fixedUri value="http://fhir.infoway-inforoute.ca/io/CA-eReC/StructureDefinition/CA-eReC-ext-AppointmentVirtualService" />
    </element>
    <element id="Extension.value[x]">
      <path value="Extension.value[x]" />
      <max value="0" />
    </element>
  </differential>
</StructureDefinition>