<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="Notification" />
  <url value="http://ihis.sg/fhir/StructureDefinition/Notification" />
  <name value="Notification" />
  <title value="Notification Resource" />
  <status value="draft" />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="Notification" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/DomainResource" />
  <derivation value="specialization" />
  <snapshot>
    <element id="Notification">
      <path value="Notification" />
      <short value="Notification Resource" />
      <definition value="A resource representing a notification with various attributes" />
      <min value="0" />
      <max value="*" />
      <base>
        <path value="DomainResource" />
        <min value="0" />
        <max value="*" />
      </base>
      <isModifier value="false" />
    </element>
    <element id="Notification.extension">
      <path value="Notification.extension" />
      <short value="Additional information for the notification" />
      <definition value="A collection of extension elements to provide additional information about the notification" />
      <min value="0" />
      <max value="*" />
      <base>
        <path value="Extension" />
        <min value="0" />
        <max value="*" />
      </base>
      <isModifier value="false" />
    </element>
    <element id="Notification.modifierExtension">
      <path value="Notification.modifierExtension" />
      <short value="Additional information for the notification, modifying the element's meaning" />
      <definition value="A collection of modifier extension elements, used to modify the meaning of the notification" />
      <min value="0" />
      <max value="*" />
      <base>
        <path value="Extension" />
        <min value="0" />
        <max value="*" />
      </base>
      <isModifier value="true" />
    </element>
    <element id="Notification.notificationContext">
      <path value="Notification.notificationContext" />
      <short value="Context of the notification" />
      <definition value="The specific context or domain of the notification (e.g., Appointments)" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="Notification.channelType">
      <path value="Notification.channelType" />
      <short value="Channel type for notification" />
      <definition value="The method of notification delivery (e.g., push-notification, email)" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="Notification.recipient">
      <path value="Notification.recipient" />
      <short value="Recipients of the notification" />
      <definition value="A list of recipients for the notification" />
      <min value="1" />
      <max value="*" />
      <type>
        <code value="BackboneElement" />
      </type>
    </element>
    <element id="Notification.recipient.type">
      <path value="Notification.recipient.type" />
      <short value="Type of recipient identifier" />
      <definition value="The type of identifier used to specify the recipient (e.g., device-user-id)" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="Notification.recipient.userIdentifier">
      <path value="Notification.recipient.userIdentifier" />
      <short value="User identifier details" />
      <definition value="The user identifier for the recipient" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Identifier" />
      </type>
    </element>
    <element id="Notification.pushNotificationAttribute">
      <path value="Notification.pushNotificationAttribute" />
      <short value="Attributes specific to push notifications" />
      <definition value="Push notification specific attributes such as filtering and badge count" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="BackboneElement" />
      </type>
    </element>
    <element id="Notification.pushNotificationAttribute.deviceFilterCriteria">
      <path value="Notification.pushNotificationAttribute.deviceFilterCriteria" />
      <short value="Criteria for device filtering" />
      <definition value="Criteria used to filter devices for push notifications" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="Notification.pushNotificationAttribute.badge">
      <path value="Notification.pushNotificationAttribute.badge" />
      <short value="Badge count for notification" />
      <definition value="The badge count for the push notification" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="Notification.priority">
      <path value="Notification.priority" />
      <short value="Notification priority" />
      <definition value="The priority of the notification" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="Notification.additionalInfo">
      <path value="Notification.additionalInfo" />
      <short value="Additional information for the notification" />
      <definition value="Additional notes or details for the notification" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="Notification.title">
      <path value="Notification.title" />
      <short value="Title of the notification" />
      <definition value="The title of the notification" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="Notification.content">
      <path value="Notification.content" />
      <short value="Content of the notification" />
      <definition value="The body content of the notification" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="string" />
      </type>
    </element>
  </snapshot>
  <differential>
    <element id="Notification">
      <path value="Notification" />
      <short value="Notification Resource" />
      <definition value="A resource representing a notification with various attributes" />
    </element>
    <element id="Notification.extension">
      <path value="Notification.extension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <rules value="open" />
      </slicing>
    </element>
    <element id="Notification.modifierExtension">
      <path value="Notification.modifierExtension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <rules value="open" />
      </slicing>
    </element>
    <element id="Notification.notificationContext">
      <path value="Notification.notificationContext" />
      <short value="Context of the notification" />
      <definition value="The specific context or domain of the notification (e.g., Appointments)" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="Notification.channelType">
      <path value="Notification.channelType" />
      <short value="Channel type for notification" />
      <definition value="The method of notification delivery (e.g., push-notification, email)" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="Notification.recipient">
      <path value="Notification.recipient" />
      <short value="Recipients of the notification" />
      <min value="1" />
      <max value="*" />
      <type>
        <code value="BackboneElement" />
      </type>
    </element>
    <element id="Notification.recipient.type">
      <path value="Notification.recipient.type" />
      <short value="Type of recipient identifier" />
      <definition value="The type of identifier used to specify the recipient (e.g., device-user-id)" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="Notification.recipient.userIdentifier">
      <path value="Notification.recipient.userIdentifier" />
      <short value="User identifier details" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Identifier" />
      </type>
    </element>
    <element id="Notification.pushNotificationAttribute">
      <path value="Notification.pushNotificationAttribute" />
      <short value="Attributes specific to push notifications" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="BackboneElement" />
      </type>
    </element>
    <element id="Notification.pushNotificationAttribute.deviceFilterCriteria">
      <path value="Notification.pushNotificationAttribute.deviceFilterCriteria" />
      <short value="Criteria for device filtering" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="Notification.pushNotificationAttribute.badge">
      <path value="Notification.pushNotificationAttribute.badge" />
      <short value="Badge count for notification" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="Notification.priority">
      <path value="Notification.priority" />
      <short value="Notification priority" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="string" />
      </type>
      <binding>
        <strength value="required" />
        <valueSet value="http://hl7.org/fhir/ValueSet/request-priority" />
      </binding>
    </element>
    <element id="Notification.additionalInfo">
      <path value="Notification.additionalInfo" />
      <short value="Additional information for the notification" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="Notification.title">
      <path value="Notification.title" />
      <short value="Title of the notification" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="Notification.content">
      <path value="Notification.content" />
      <short value="Content of the notification" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="string" />
      </type>
    </element>
  </differential>
</StructureDefinition>