<StructureDefinition xmlns="http://hl7.org/fhir">
  <id value="AuditEventLoggingInt" />
  <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-category">
    <valueString value="Foundation.Security" />
  </extension>
  <extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-security-category">
    <valueCode value="not-classified" />
  </extension>
  <url value="https://fhir.cambio.se/StructureDefinition/AuditEventLoggingInt" />
  <version value="1.0.0" />
  <name value="AuditEventLoggingInt" />
  <title value="AuditEventLoggingInt" />
  <status value="draft" />
  <description value="This is an AuditEvent profile used for logging. The mustSupport-flag indicates that a producer of resources conforming to this profile SHALL include this data if it is known to them." />
  <fhirVersion value="4.0.1" />
  <mapping>
    <identity value="workflow" />
    <uri value="http://hl7.org/fhir/workflow" />
    <name value="Workflow Pattern" />
  </mapping>
  <mapping>
    <identity value="rim" />
    <uri value="http://hl7.org/v3" />
    <name value="RIM Mapping" />
  </mapping>
  <mapping>
    <identity value="dicom" />
    <uri value="http://nema.org/dicom" />
    <name value="DICOM Tag Mapping" />
  </mapping>
  <mapping>
    <identity value="w5" />
    <uri value="http://hl7.org/fhir/fivews" />
    <name value="FiveWs Pattern Mapping" />
  </mapping>
  <mapping>
    <identity value="w3c.prov" />
    <uri value="http://www.w3.org/ns/prov" />
    <name value="W3C PROV" />
  </mapping>
  <mapping>
    <identity value="fhirprovenance" />
    <uri value="http://hl7.org/fhir/provenance" />
    <name value="FHIR Provenance Mapping" />
  </mapping>
  <kind value="resource" />
  <abstract value="false" />
  <type value="AuditEvent" />
  <baseDefinition value="http://hl7.org/fhir/StructureDefinition/AuditEvent" />
  <derivation value="constraint" />
  <differential>
    <element id="AuditEvent.action">
      <path value="AuditEvent.action" />
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.agent">
      <path value="AuditEvent.agent" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="type" />
        </discriminator>
        <description value="Slice for agent.type." />
        <ordered value="false" />
        <rules value="closed" />
      </slicing>
    </element>
    <element id="AuditEvent.agent.type">
      <path value="AuditEvent.agent.type" />
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.agent.who">
      <path value="AuditEvent.agent.who" />
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.agent:application">
      <path value="AuditEvent.agent" />
      <sliceName value="application" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="AuditEvent.agent:application.type">
      <path value="AuditEvent.agent.type" />
      <min value="1" />
      <patternCodeableConcept>
        <coding>
          <code value="110150" />
        </coding>
      </patternCodeableConcept>
    </element>
    <element id="AuditEvent.agent:clinician">
      <path value="AuditEvent.agent" />
      <sliceName value="clinician" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="AuditEvent.agent:clinician.type">
      <path value="AuditEvent.agent.type" />
      <min value="1" />
      <patternCodeableConcept>
        <coding>
          <code value="AUCG" />
        </coding>
      </patternCodeableConcept>
    </element>
    <element id="AuditEvent.agent:careunit">
      <path value="AuditEvent.agent" />
      <sliceName value="careunit" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="AuditEvent.agent:careunit.type">
      <path value="AuditEvent.agent.type" />
      <min value="1" />
      <patternCodeableConcept>
        <coding>
          <code value="PROV" />
        </coding>
      </patternCodeableConcept>
    </element>
    <element id="AuditEvent.entity">
      <path value="AuditEvent.entity" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="type" />
        </discriminator>
        <description value="Slice for entity.type." />
        <ordered value="false" />
        <rules value="closed" />
      </slicing>
    </element>
    <element id="AuditEvent.entity.what">
      <path value="AuditEvent.entity.what" />
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.entity.type">
      <path value="AuditEvent.entity.type" />
      <mustSupport value="true" />
    </element>
    <element id="AuditEvent.entity.detail">
      <path value="AuditEvent.entity.detail" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="type" />
        </discriminator>
        <description value="Slice for entity.detail." />
        <ordered value="false" />
        <rules value="closed" />
      </slicing>
    </element>
    <element id="AuditEvent.entity.detail.value[x]">
      <path value="AuditEvent.entity.detail.value[x]" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="AuditEvent.entity.detail:storedquery">
      <path value="AuditEvent.entity.detail" />
      <sliceName value="storedquery" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="AuditEvent.entity.detail:httpmethod">
      <path value="AuditEvent.entity.detail" />
      <sliceName value="httpmethod" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="AuditEvent.entity:patient">
      <path value="AuditEvent.entity" />
      <sliceName value="patient" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="what.identifier.system" />
        </discriminator>
        <description value="Slice for entity.type." />
        <ordered value="false" />
        <rules value="open" />
      </slicing>
      <min value="0" />
      <max value="*" />
    </element>
    <element id="AuditEvent.entity:patient.type">
      <path value="AuditEvent.entity.type" />
      <min value="1" />
      <patternCoding>
        <code value="1" />
      </patternCoding>
    </element>
    <element id="AuditEvent.entity:patient.role">
      <path value="AuditEvent.entity.role" />
      <patternCoding>
        <code value="1" />
      </patternCoding>
    </element>
    <element id="AuditEvent.entity:patient.detail.value[x]">
      <path value="AuditEvent.entity.detail.value[x]" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="AuditEvent.entity:patient/personnummer">
      <path value="AuditEvent.entity" />
      <sliceName value="patient/personnummer" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="AuditEvent.entity:patient/personnummer.what.identifier.system">
      <path value="AuditEvent.entity.what.identifier.system" />
      <patternUri value="http://electronichealth.se/identifier/personnummer" />
    </element>
    <element id="AuditEvent.entity:patient/personnummer.detail.value[x]">
      <path value="AuditEvent.entity.detail.value[x]" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="AuditEvent.entity:patient/samordningsnummer">
      <path value="AuditEvent.entity" />
      <sliceName value="patient/samordningsnummer" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="AuditEvent.entity:patient/samordningsnummer.what.identifier.system">
      <path value="AuditEvent.entity.what.identifier.system" />
      <patternUri value="http://electronichealth.se/identifier/samordningsnummer" />
    </element>
    <element id="AuditEvent.entity:patient/samordningsnummer.detail.value[x]">
      <path value="AuditEvent.entity.detail.value[x]" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="AuditEvent.entity:patient/nationelltReservnummer">
      <path value="AuditEvent.entity" />
      <sliceName value="patient/nationelltReservnummer" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="AuditEvent.entity:patient/nationelltReservnummer.what.identifier.system">
      <path value="AuditEvent.entity.what.identifier.system" />
      <patternUri value="http://electronichealth.se/identifier/nationelltReservnummer" />
    </element>
    <element id="AuditEvent.entity:patient/nationelltReservnummer.detail.value[x]">
      <path value="AuditEvent.entity.detail.value[x]" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="AuditEvent.entity:apiRequest">
      <path value="AuditEvent.entity" />
      <sliceName value="apiRequest" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="AuditEvent.entity:apiRequest.type">
      <path value="AuditEvent.entity.type" />
      <min value="1" />
      <patternCoding>
        <code value="4" />
      </patternCoding>
    </element>
    <element id="AuditEvent.entity:apiRequest.detail">
      <path value="AuditEvent.entity.detail" />
      <slicing>
        <discriminator>
          <type value="value" />
          <path value="type" />
        </discriminator>
        <description value="Slice for entity.detail." />
        <ordered value="false" />
        <rules value="closed" />
      </slicing>
    </element>
    <element id="AuditEvent.entity:apiRequest.detail.value[x]">
      <path value="AuditEvent.entity.detail.value[x]" />
      <type>
        <code value="string" />
      </type>
    </element>
    <element id="AuditEvent.entity:apiRequest.detail:storedquery">
      <path value="AuditEvent.entity.detail" />
      <sliceName value="storedquery" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="AuditEvent.entity:apiRequest.detail:storedquery.type">
      <path value="AuditEvent.entity.detail.type" />
      <fixedString value="Stored query name" />
    </element>
    <element id="AuditEvent.entity:apiRequest.detail:httpmethod">
      <path value="AuditEvent.entity.detail" />
      <sliceName value="httpmethod" />
      <min value="0" />
      <max value="1" />
    </element>
    <element id="AuditEvent.entity:apiRequest.detail:httpmethod.type">
      <path value="AuditEvent.entity.detail.type" />
      <fixedString value="HTTP method" />
    </element>
  </differential>
</StructureDefinition>