<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="backport-subscription-status-r4" />
  <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-category">
    <valueString value="Foundation.Other" />
  </extension>
  <url value="http://hl7.org/fhir/uv/subscriptions-backport/StructureDefinition/backport-subscription-status-r4" />
  <version value="1.1.0" />
  <name value="BackportSubscriptionStatusR4" />
  <title value="R4 Backported R5 SubscriptionStatus" />
  <status value="active" />
  <date value="2023-01-09T22:29:01+00:00" />
  <publisher value="HL7 FHIR Infrastructure WG" />
  <contact>
    <name value="HL7 FHIR Infrastructure WG" />
    <telecom>
      <system value="url" />
      <value value="https://hl7.org/Special/committees/fiwg" />
    </telecom>
  </contact>
  <contact>
    <name value="Gino Canessa" />
    <telecom>
      <system value="email" />
      <value value="mailto:gino.canessa@microsoft.com" />
    </telecom>
  </contact>
  <contact>
    <name value="Eric Haas" />
    <telecom>
      <system value="email" />
      <value value="mailto:ehaas@healthedatainc.com" />
    </telecom>
  </contact>
  <description value="Profile on Parameters for topic-based subscription notifications in R4." />
  <jurisdiction>
    <coding>
      <system value="http://unstats.un.org/unsd/methods/m49/m49.htm" />
      <code value="001" />
      <display value="World" />
    </coding>
  </jurisdiction>
  <fhirVersion value="4.0.1" />
  <mapping>
    <identity value="v2" />
    <uri value="http://hl7.org/v2" />
    <name value="HL7 v2 Mapping" />
  </mapping>
  <mapping>
    <identity value="rim" />
    <uri value="http://hl7.org/v3" />
    <name value="RIM Mapping" />
  </mapping>
  <mapping>
    <identity value="w5" />
    <uri value="http://hl7.org/fhir/fivews" />
    <name value="FiveWs Pattern Mapping" />
  </mapping>
  <kind value="resource" />
  <abstract value="false" />
  <type value="Parameters" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/Parameters" />
  <derivation value="constraint" />
  <differential>
    <element id="Parameters">
      <path value="Parameters" />
      <short value="Parameter containing subscription status information" />
    </element>
    <element id="Parameters.parameter">
      <path value="Parameters.parameter" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="name" />
        </discriminator>
        <description value="Slice on parameter name" />
        <ordered value="false" />
        <rules value="open" />
      </slicing>
      <short value="Slices containing subscription status information" />
      <min value="3" />
    </element>
    <element id="Parameters.parameter:subscription">
      <path value="Parameters.parameter" />
      <sliceName value="subscription" />
      <short value="Parameter containing the reference to a subscription" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:subscription.name">
      <path value="Parameters.parameter.name" />
      <short value="Slice discriminator: the reference to a subscription" />
      <fixedString value="subscription" />
    </element>
    <element id="Parameters.parameter:subscription.value[x]">
      <path value="Parameters.parameter.value[x]" />
      <short value="Reference to the Subscription responsible for this notification" />
      <definition value="The reference to the Subscription which generated this notification." />
      <min value="1" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/Subscription" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:topic">
      <path value="Parameters.parameter" />
      <sliceName value="topic" />
      <short value="Parameter containing the canonical reference to a subscription topic" />
      <min value="0" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:topic.name">
      <path value="Parameters.parameter.name" />
      <short value="Slice discriminator: the canonical reference to a subscription topic" />
      <fixedString value="topic" />
    </element>
    <element id="Parameters.parameter:topic.value[x]">
      <path value="Parameters.parameter.value[x]" />
      <short value="Canonical reference to the SubscriptionTopic this notification relates to" />
      <definition value="Canonical reference to the SubscriptionTopic for the Subscription which generated this notification." />
      <comment value="This value SHOULD NOT be present when using `empty` payloads, MAY be present when using id-only payloads, and SHOULD be present when using `full-resource` payloads." />
      <type>
        <code value="canonical" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:status">
      <path value="Parameters.parameter" />
      <sliceName value="status" />
      <short value="Parameter containing the subscription status" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:status.name">
      <path value="Parameters.parameter.name" />
      <short value="Slice discriminator: the subscription status" />
      <fixedString value="status" />
    </element>
    <element id="Parameters.parameter:status.value[x]">
      <path value="Parameters.parameter.value[x]" />
      <short value="Status of the subscription when this notification was generated" />
      <definition value="The status of the subscription, which marks the server state for managing the subscription." />
      <min value="1" />
      <type>
        <code value="code" />
      </type>
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="http://hl7.org/fhir/ValueSet/subscription-status" />
      </binding>
    </element>
    <element id="Parameters.parameter:type">
      <path value="Parameters.parameter" />
      <sliceName value="type" />
      <short value="Parameter containing the type of event for this notification" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:type.name">
      <path value="Parameters.parameter.name" />
      <short value="Slice discriminator: the type of event for this notification" />
      <fixedString value="type" />
    </element>
    <element id="Parameters.parameter:type.value[x]">
      <path value="Parameters.parameter.value[x]" />
      <short value="The type of event being conveyed with this notificaiton." />
      <min value="1" />
      <type>
        <code value="code" />
      </type>
      <mustSupport value="true" />
      <binding>
        <strength value="required" />
        <valueSet value="http://hl7.org/fhir/ValueSet/subscription-notification-type" />
      </binding>
    </element>
    <element id="Parameters.parameter:eventsSinceSubscriptionStart">
      <path value="Parameters.parameter" />
      <sliceName value="eventsSinceSubscriptionStart" />
      <short value="Parameter containing the number of events since this subscription started" />
      <min value="0" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:eventsSinceSubscriptionStart.name">
      <path value="Parameters.parameter.name" />
      <short value="Slice discriminator: the number of events since this subscription started" />
      <fixedString value="events-since-subscription-start" />
    </element>
    <element id="Parameters.parameter:eventsSinceSubscriptionStart.value[x]">
      <path value="Parameters.parameter.value[x]" />
      <short value="Events since the Subscription was created" />
      <definition value="The total number of actual events which have been generated since the Subscription was created (inclusive of this notification) - regardless of how many have been successfully communicated. This number is NOT incremented for handshake and heartbeat notifications." />
      <type>
        <code value="string" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:notificationEvent">
      <path value="Parameters.parameter" />
      <sliceName value="notificationEvent" />
      <short value="Parameter containing the event notification details" />
      <min value="0" />
      <max value="*" />
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:notificationEvent.name">
      <path value="Parameters.parameter.name" />
      <short value="Parameter containing notification event details" />
      <fixedString value="notification-event" />
    </element>
    <element id="Parameters.parameter:notificationEvent.part">
      <path value="Parameters.parameter.part" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="name" />
        </discriminator>
        <description value="Slice on notification event parameter name" />
        <ordered value="false" />
        <rules value="open" />
      </slicing>
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:notificationEvent.part:eventNumber">
      <path value="Parameters.parameter.part" />
      <sliceName value="eventNumber" />
      <short value="Parameter containing the event number" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="BackboneElement" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:notificationEvent.part:eventNumber.name">
      <path value="Parameters.parameter.part.name" />
      <short value="Slice discriminator: the event number" />
      <fixedString value="event-number" />
    </element>
    <element id="Parameters.parameter:notificationEvent.part:eventNumber.value[x]">
      <path value="Parameters.parameter.part.value[x]" />
      <short value="Event number" />
      <definition value="The sequential number of this event in this subscription context." />
      <min value="1" />
      <type>
        <code value="string" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:notificationEvent.part:eventTimestamp">
      <path value="Parameters.parameter.part" />
      <sliceName value="eventTimestamp" />
      <short value="Parameter containing the event timestamp" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="BackboneElement" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:notificationEvent.part:eventTimestamp.name">
      <path value="Parameters.parameter.part.name" />
      <short value="Slice discriminator: the event timestamp" />
      <fixedString value="timestamp" />
    </element>
    <element id="Parameters.parameter:notificationEvent.part:eventTimestamp.value[x]">
      <path value="Parameters.parameter.part.value[x]" />
      <short value="The instant this event occurred" />
      <definition value="The actual time this event occured on the server." />
      <type>
        <code value="instant" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:notificationEvent.part:eventFocus">
      <path value="Parameters.parameter.part" />
      <sliceName value="eventFocus" />
      <short value="Parameter containing the event focus" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="BackboneElement" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:notificationEvent.part:eventFocus.name">
      <path value="Parameters.parameter.part.name" />
      <short value="Slice discriminator: the event focus" />
      <fixedString value="focus" />
    </element>
    <element id="Parameters.parameter:notificationEvent.part:eventFocus.value[x]">
      <path value="Parameters.parameter.part.value[x]" />
      <short value="The focus of this event" />
      <definition value="The focus of this event. While this will usually be a reference to the focus resource of the event, it MAY contain a reference to a non-FHIR object." />
      <type>
        <code value="Reference" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:notificationEvent.part:eventAdditionalContext">
      <path value="Parameters.parameter.part" />
      <sliceName value="eventAdditionalContext" />
      <short value="Parameter containing additional context for this event" />
      <min value="0" />
      <max value="*" />
      <type>
        <code value="BackboneElement" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:notificationEvent.part:eventAdditionalContext.name">
      <path value="Parameters.parameter.part.name" />
      <short value="Slice discriminator: additional context for this event" />
      <fixedString value="additional-context" />
    </element>
    <element id="Parameters.parameter:notificationEvent.part:eventAdditionalContext.value[x]">
      <path value="Parameters.parameter.part.value[x]" />
      <short value="Additional context for this event" />
      <definition value="Additional context information for this event. Generally, this will contain references to additional resources included with the event (e.g., the Patient relevant to an Encounter), however it MAY refer to non-FHIR objects." />
      <type>
        <code value="Reference" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:error">
      <path value="Parameters.parameter" />
      <sliceName value="error" />
      <short value="Parameter containing errors on the subscription" />
      <min value="0" />
      <max value="*" />
      <mustSupport value="true" />
    </element>
    <element id="Parameters.parameter:error.name">
      <path value="Parameters.parameter.name" />
      <short value="Slice discriminator: errors on the subscription" />
      <fixedString value="error" />
    </element>
    <element id="Parameters.parameter:error.value[x]">
      <path value="Parameters.parameter.value[x]" />
      <short value="An error on the subscription" />
      <definition value="A record of errors that occurred when the server processed a notification." />
      <type>
        <code value="CodeableConcept" />
      </type>
      <mustSupport value="true" />
    </element>
  </differential>
</StructureDefinition>