<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="sgrdv-audit-event" />
  <url value="http://sante.quebec/fhir/StructureDefinition/sgrdv-audit-event" />
  <name value="SGRDVAuditEvent" />
  <title value="Événement d'audit SGRDV" />
  <status value="draft" />
  <experimental value="true" />
  <description value="Profil unique d'AuditEvent pour les journaux d'audit affaire SGRDV. Porte la direction (extension dédiée), le type de transaction (find, lock, aggregate), les agents source et destination (références vers des SGRDVAuditAgent dans le même Bundle) et la référence au payload de la transaction. Conforme à ADR-016 (Bundle collection auto-portant) et ADR-017 (profil unique avec direction en extension)." />
  <fhirVersion value="4.0.1" />
  <kind value="resource" />
  <abstract value="false" />
  <type value="AuditEvent" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/AuditEvent" />
  <derivation value="constraint" />
  <differential>
    <element id="AuditEvent.extension">
      <path value="AuditEvent.extension" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="url" />
        </discriminator>
        <ordered value="false" />
        <rules value="open" />
      </slicing>
      <min value="1" />
    </element>
    <element id="AuditEvent.extension:direction">
      <path value="AuditEvent.extension" />
      <sliceName value="direction" />
      <min value="1" />
      <max value="1" />
      <type>
        <code value="Extension" />
        <profile value="http://sante.quebec/fhir/StructureDefinition/sgrdv-audit-direction-extension" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.extension:direction.value[x]">
      <path value="AuditEvent.extension.value[x]" />
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.type">
      <path value="AuditEvent.type" />
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.type.system">
      <path value="AuditEvent.type.system" />
      <fixedUri value="http://sante.quebec/fhir/CodeSystem/sgrdv-audit-transaction-type" />
    </element>
    <element id="AuditEvent.type.code">
      <path value="AuditEvent.type.code" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.action">
      <path value="AuditEvent.action" />
      <min value="1" />
      <fixedCode value="E" />
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.recorded">
      <path value="AuditEvent.recorded" />
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.outcome">
      <path value="AuditEvent.outcome" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.agent">
      <path value="AuditEvent.agent" />
      <slicing>
        <discriminator>
          <type value="pattern" />
          <path value="type" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="2" />
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.agent:source">
      <path value="AuditEvent.agent" />
      <sliceName value="source" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.agent:source.type">
      <path value="AuditEvent.agent.type" />
      <min value="1" />
      <patternCodeableConcept>
        <coding>
          <system value="http://sante.quebec/fhir/CodeSystem/sgrdv-audit-agent-type" />
          <code value="source" />
        </coding>
      </patternCodeableConcept>
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.agent:source.who">
      <path value="AuditEvent.agent.who" />
      <min value="1" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://sante.quebec/fhir/StructureDefinition/sgrdv-audit-agent" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.agent:source.who.reference">
      <path value="AuditEvent.agent.who.reference" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.agent:source.requestor">
      <path value="AuditEvent.agent.requestor" />
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.agent:destination">
      <path value="AuditEvent.agent" />
      <sliceName value="destination" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.agent:destination.type">
      <path value="AuditEvent.agent.type" />
      <min value="1" />
      <patternCodeableConcept>
        <coding>
          <system value="http://sante.quebec/fhir/CodeSystem/sgrdv-audit-agent-type" />
          <code value="destination" />
        </coding>
      </patternCodeableConcept>
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.agent:destination.who">
      <path value="AuditEvent.agent.who" />
      <min value="1" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://sante.quebec/fhir/StructureDefinition/sgrdv-audit-agent" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.agent:destination.who.reference">
      <path value="AuditEvent.agent.who.reference" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.agent:destination.requestor">
      <path value="AuditEvent.agent.requestor" />
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.source">
      <path value="AuditEvent.source" />
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.source.observer">
      <path value="AuditEvent.source.observer" />
      <type>
        <code value="Reference" />
        <targetProfile value="http://sante.quebec/fhir/StructureDefinition/sgrdv-audit-agent" />
      </type>
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.source.observer.reference">
      <path value="AuditEvent.source.observer.reference" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.entity">
      <path value="AuditEvent.entity" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="type.code" />
        </discriminator>
        <rules value="open" />
      </slicing>
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.entity:payload">
      <path value="AuditEvent.entity" />
      <sliceName value="payload" />
      <min value="1" />
      <max value="1" />
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.entity:payload.what">
      <path value="AuditEvent.entity.what" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.entity:payload.what.reference">
      <path value="AuditEvent.entity.what.reference" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.entity:payload.type">
      <path value="AuditEvent.entity.type" />
      <min value="1" />
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.entity:payload.type.code">
      <path value="AuditEvent.entity.type.code" />
      <min value="1" />
      <patternCode value="payload" />
    </element>
  </differential>
</StructureDefinition>