<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="PROFILE-IDMS-AUDITEVENT" />
  <url value="https://health.gov.on.ca/idms/fhir/StructureDefinition/IDMS-AuditEvent" />
  <version value="1.0.0" />
  <name value="IDMSAuditEvent" />
  <title value="IDMS - AuditEvent" />
  <status value="active" />
  <description value="This profile is for an Audit Event, the only one being a Request Status Change." />
  <fhirVersion value="5.0.0" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="AuditEvent" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/AuditEvent" />
  <derivation value="constraint" />
  <differential>
    <element id="AuditEvent.category">
      <path value="AuditEvent.category" />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="AuditEvent.code">
      <path value="AuditEvent.code" />
      <definition value="#### **_`IDMS:  The type of audit event.`_**" />
    </element>
    <element id="AuditEvent.code.extension">
      <path value="AuditEvent.code.extension" />
      <min value="0" />
      <max value="0" />
    </element>
    <element id="AuditEvent.code.coding">
      <path value="AuditEvent.code.coding" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="AuditEvent.code.coding.extension">
      <path value="AuditEvent.code.coding.extension" />
      <max value="0" />
    </element>
    <element id="AuditEvent.code.coding.system">
      <path value="AuditEvent.code.coding.system" />
      <max value="0" />
    </element>
    <element id="AuditEvent.code.coding.version">
      <path value="AuditEvent.code.coding.version" />
      <max value="0" />
    </element>
    <element id="AuditEvent.code.coding.code">
      <path value="AuditEvent.code.coding.code" />
      <definition value="#### **_`IDMS:  This will always be 'AUDIT-EVENT-STATUS-CHANGE'.`_**" />
      <min value="1" />
      <max value="1" />
      <fixedCode value="AUDIT-EVENT-STATUS-CHANGE" />
    </element>
    <element id="AuditEvent.code.coding.display">
      <path value="AuditEvent.code.coding.display" />
      <max value="0" />
    </element>
    <element id="AuditEvent.code.coding.userSelected">
      <path value="AuditEvent.code.coding.userSelected" />
      <max value="0" />
    </element>
    <element id="AuditEvent.code.text">
      <path value="AuditEvent.code.text" />
      <max value="0" />
    </element>
    <element id="AuditEvent.action">
      <path value="AuditEvent.action" />
      <max value="0" />
    </element>
    <element id="AuditEvent.severity">
      <path value="AuditEvent.severity" />
      <max value="0" />
    </element>
    <element id="AuditEvent.occurred[x]">
      <path value="AuditEvent.occurred[x]" />
      <max value="1" />
    </element>
    <element id="AuditEvent.recorded">
      <path value="AuditEvent.recorded" />
      <definition value="#### **_`IDMS:  When the Request Status changed.`_**" />
    </element>
    <element id="AuditEvent.outcome">
      <path value="AuditEvent.outcome" />
      <max value="0" />
    </element>
    <element id="AuditEvent.authorization">
      <path value="AuditEvent.authorization" />
      <max value="0" />
    </element>
    <element id="AuditEvent.basedOn">
      <path value="AuditEvent.basedOn" />
      <definition value="#### **_`IDMS:  Reference to the ServiceRequest that changed.`_**" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://hl7.org/fhir/StructureDefinition/ServiceRequest" />
      </type>
    </element>
    <element id="AuditEvent.patient">
      <path value="AuditEvent.patient" />
      <max value="0" />
    </element>
    <element id="AuditEvent.encounter">
      <path value="AuditEvent.encounter" />
      <max value="0" />
    </element>
    <element id="AuditEvent.agent">
      <path value="AuditEvent.agent" />
      <definition value="#### **_`IDMS:  Who made the change.  This is a refence to a PractitionerRole .`_**" />
    </element>
    <element id="AuditEvent.agent.extension">
      <path value="AuditEvent.agent.extension" />
      <max value="0" />
    </element>
    <element id="AuditEvent.agent.modifierExtension">
      <path value="AuditEvent.agent.modifierExtension" />
      <max value="0" />
    </element>
    <element id="AuditEvent.agent.type">
      <path value="AuditEvent.agent.type" />
      <max value="0" />
    </element>
    <element id="AuditEvent.agent.role">
      <path value="AuditEvent.agent.role" />
      <max value="0" />
    </element>
    <element id="AuditEvent.agent.requestor">
      <path value="AuditEvent.agent.requestor" />
      <max value="0" />
    </element>
    <element id="AuditEvent.agent.location">
      <path value="AuditEvent.agent.location" />
      <max value="0" />
    </element>
    <element id="AuditEvent.agent.policy">
      <path value="AuditEvent.agent.policy" />
      <max value="0" />
    </element>
    <element id="AuditEvent.agent.network[x]">
      <path value="AuditEvent.agent.network[x]" />
      <max value="0" />
    </element>
    <element id="AuditEvent.agent.authorization">
      <path value="AuditEvent.agent.authorization" />
      <max value="0" />
    </element>
    <element id="AuditEvent.source">
      <path value="AuditEvent.source" />
      <definition value="#### **_`IDMS:  This R5 mandatory, it is always 'DIRECT' .`_**" />
    </element>
    <element id="AuditEvent.source.extension">
      <path value="AuditEvent.source.extension" />
      <max value="0" />
    </element>
    <element id="AuditEvent.source.modifierExtension">
      <path value="AuditEvent.source.modifierExtension" />
      <max value="0" />
    </element>
    <element id="AuditEvent.source.site">
      <path value="AuditEvent.source.site" />
      <max value="0" />
    </element>
    <element id="AuditEvent.source.observer.extension">
      <path value="AuditEvent.source.observer.extension" />
      <max value="0" />
    </element>
    <element id="AuditEvent.source.observer.reference">
      <path value="AuditEvent.source.observer.reference" />
      <max value="0" />
    </element>
    <element id="AuditEvent.source.observer.type">
      <path value="AuditEvent.source.observer.type" />
      <max value="0" />
    </element>
    <element id="AuditEvent.source.observer.identifier">
      <path value="AuditEvent.source.observer.identifier" />
      <max value="0" />
    </element>
    <element id="AuditEvent.source.observer.display">
      <path value="AuditEvent.source.observer.display" />
      <max value="0" />
    </element>
    <element id="AuditEvent.source.observer.text">
      <path value="AuditEvent.source.observer.text" />
      <definition value="#### **_`IDMS:  This R5 mandatory, it is always 'DIRECT' .`_**" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="AuditEvent.source.type">
      <path value="AuditEvent.source.type" />
      <max value="0" />
    </element>
    <element id="AuditEvent.entity">
      <path value="AuditEvent.entity" />
      <definition value="#### **_`IDMS:  The new Status  (just the display not the code)' .`_**" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="AuditEvent.entity.extension">
      <path value="AuditEvent.entity.extension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="0" />
    </element>
    <element id="AuditEvent.entity.extension:sharePointFileName">
      <path value="AuditEvent.entity.extension" />
      <sliceName value="sharePointFileName" />
      <definition value="#### **_`IDMS: The File Name in SharePoint.`_**" />
      <min value="0" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="https://health.gov.on.ca/idms/fhir/StructureDefinition/Extension-SharePoint-File-Name" />
      </type>
    </element>
    <element id="AuditEvent.entity.modifierExtension">
      <path value="AuditEvent.entity.modifierExtension" />
      <max value="0" />
    </element>
    <element id="AuditEvent.entity.what">
      <path value="AuditEvent.entity.what" />
      <definition value="#### **_`IDMS:  This is reference to a Binary that contains a PDF with a snapshot of the request at this time' .`_**" />
    </element>
    <element id="AuditEvent.entity.role">
      <path value="AuditEvent.entity.role" />
      <definition value="#### **_`IDMS:  The type of entity,  Submission or Screening'  `_**" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="AuditEvent.entity.role.extension">
      <path value="AuditEvent.entity.role.extension" />
      <max value="0" />
    </element>
    <element id="AuditEvent.entity.role.coding">
      <path value="AuditEvent.entity.role.coding" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="AuditEvent.entity.role.coding.extension">
      <path value="AuditEvent.entity.role.coding.extension" />
      <max value="0" />
    </element>
    <element id="AuditEvent.entity.role.coding.system">
      <path value="AuditEvent.entity.role.coding.system" />
      <min value="1" />
      <fixedUri value="https://health.gov.on.ca/idms/fhir/CodeSystem/IDMS-Internal" />
    </element>
    <element id="AuditEvent.entity.role.coding.version">
      <path value="AuditEvent.entity.role.coding.version" />
      <max value="0" />
    </element>
    <element id="AuditEvent.entity.role.coding.code">
      <path value="AuditEvent.entity.role.coding.code" />
      <min value="1" />
      <binding>
        <strength value="required" />
        <description value="Audit Entity Type" />
        <valueSet value="https://health.gov.on.ca/idms/fhir/ValueSet/Audit-Entity-Type" />
      </binding>
    </element>
    <element id="AuditEvent.entity.role.coding.display">
      <path value="AuditEvent.entity.role.coding.display" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="AuditEvent.entity.role.coding.userSelected">
      <path value="AuditEvent.entity.role.coding.userSelected" />
      <max value="0" />
    </element>
    <element id="AuditEvent.entity.role.text">
      <path value="AuditEvent.entity.role.text" />
      <max value="0" />
    </element>
    <element id="AuditEvent.entity.securityLabel">
      <path value="AuditEvent.entity.securityLabel" />
      <max value="0" />
    </element>
    <element id="AuditEvent.entity.query">
      <path value="AuditEvent.entity.query" />
      <max value="0" />
    </element>
    <element id="AuditEvent.entity.detail">
      <path value="AuditEvent.entity.detail" />
      <definition value="#### **_`IDMS:  For Status changes there needs to have 'STATUS' and optionally 'COMMENT' .`_**" />
    </element>
    <element id="AuditEvent.entity.detail.extension">
      <path value="AuditEvent.entity.detail.extension" />
      <max value="0" />
    </element>
    <element id="AuditEvent.entity.detail.modifierExtension">
      <path value="AuditEvent.entity.detail.modifierExtension" />
      <max value="0" />
    </element>
    <element id="AuditEvent.entity.detail.type">
      <path value="AuditEvent.entity.detail.type" />
    </element>
    <element id="AuditEvent.entity.detail.type.extension">
      <path value="AuditEvent.entity.detail.type.extension" />
      <max value="0" />
    </element>
    <element id="AuditEvent.entity.detail.type.coding">
      <path value="AuditEvent.entity.detail.type.coding" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="AuditEvent.entity.detail.type.coding.extension">
      <path value="AuditEvent.entity.detail.type.coding.extension" />
      <max value="0" />
    </element>
    <element id="AuditEvent.entity.detail.type.coding.system">
      <path value="AuditEvent.entity.detail.type.coding.system" />
      <max value="0" />
    </element>
    <element id="AuditEvent.entity.detail.type.coding.version">
      <path value="AuditEvent.entity.detail.type.coding.version" />
      <max value="0" />
    </element>
    <element id="AuditEvent.entity.detail.type.coding.code">
      <path value="AuditEvent.entity.detail.type.coding.code" />
      <definition value="#### **_`IDMS:  For Status changes there are 4 codes 'REQUIREMENT-DATE',  'REQUIREMENT-STATUS',   'STATUS' and 'COMMENT' .`_**" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="AuditEvent.entity.detail.type.coding.display">
      <path value="AuditEvent.entity.detail.type.coding.display" />
      <max value="0" />
    </element>
    <element id="AuditEvent.entity.detail.type.coding.userSelected">
      <path value="AuditEvent.entity.detail.type.coding.userSelected" />
      <max value="0" />
    </element>
    <element id="AuditEvent.entity.detail.type.text">
      <path value="AuditEvent.entity.detail.type.text" />
      <definition value="#### **_`IDMS:  This is always 'Status' .`_**" />
      <min value="1" />
      <max value="1" />
    </element>
    <element id="AuditEvent.entity.detail.value[x]">
      <path value="AuditEvent.entity.detail.value[x]" />
      <definition value="#### **_`IDMS:  The Status display value'    `_**" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="AuditEvent.entity.agent">
      <path value="AuditEvent.entity.agent" />
      <max value="0" />
    </element>
  </differential>
</StructureDefinition>