Basic Audit Log Patterns (BALP)
1.1.3 - Trial-Implementation International flag

This page is part of the IHE Basic Audit Log Patterns (BALP) (v1.1.3: Publication) based on FHIR (HL7® FHIR® Standard) R4. This is the current published version. For a full list of available versions, see the Directory of published versions

Resource Profile: Basic AuditEvent for a successful Query

Official URL: https://profiles.ihe.net/ITI/BALP/StructureDefinition/IHE.BasicAudit.Query Version: 1.1.3
Active as of 2024-02-14 Computable Name: Query

A basic AuditEvent profile for when a RESTful Query / Search action happens successfully.

  • Given a RESTful Query is requested
  • And the request does not have a Patient subject indicated
    • The requestor logging the event would potentially not know they have requested Patient specific data
    • The data objects may not be patient specific kind of objects
    • when the request is Patient specific then PatientQuery is used
  • And the request is authorized
  • When successful
    • Note a failure AuditEvent may follow this pattern, but would not be a successful outcome and should have an OperationOutcome
    • Note success may result in zero or more results. The number of results and the content of the results are not recorded.
  • And the results are not Patient specific
    • when the results are Patient specific then PatientQuery are used
  • Then the AuditEvent recorded will conform
    • The raw search request is base64 encoded and placed in the .entity[query].query element. The base64 encoding of the raw search request enables preserving exactly what was requested, including possibly malicious patterns. This enables detection of malicious or malformed requests.
    • The cleaned search may be recorded (not base64) in the .entity[query].description. The cleaned search request would have removed parameters that were not understood/supported. The cleaned search request in the .description element enables more efficient processing.

Note: the pattern defined in DICOM and IHE have the client is identified as the Source Role ID, and the server is identified as the Destination Role ID. This represents the query parameters are flowing from the client to the server. This may not be so obvious, as the data actually flows the opposite direction. This pattern is established and thus followed here.

Usage:

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

This structure is derived from AuditEvent

NameFlagsCard.TypeDescription & Constraintsdoco
.. AuditEvent 0..*AuditEventEvent record kept for security purposes
... type 1..1CodingType/identifier of event
Required Pattern: At least the following
.... system1..1uriIdentity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/audit-event-type
.... code1..1codeSymbol in syntax defined by the system
Fixed Value: rest
... Slices for subtype 1..*CodingMore specific type/id for the event
Slice: Unordered, Open by value:$this
.... subtype:anySearch 1..1CodingMore specific type/id for the event
Binding: all Searches (required)
... action 0..1codeType of action performed during the event
Required Pattern: E
... outcome 1..1codeWhether the event succeeded or failed
Required Pattern: 0
... Slices for agent 2..*BackboneElementActor involved in the event
Slice: Unordered, Open by pattern:type
.... agent:client 1..1BackboneElementActor involved in the event
..... type 1..1CodeableConceptHow agent participated
Required Pattern: At least the following
...... coding1..*CodingCode defined by a terminology system
Fixed Value: (complex)
....... system1..1uriIdentity of the terminology system
Fixed Value: http://dicom.nema.org/resources/ontology/DCM
....... code1..1codeSymbol in syntax defined by the system
Fixed Value: 110153
..... who 1..1Reference(PractitionerRole | Practitioner | Organization | Device | Patient | RelatedPerson)Identifier of who
..... media 0..0
..... network 1..1BackboneElementLogical network location for application activity
.... agent:server 1..1BackboneElementActor involved in the event
..... type 1..1CodeableConceptHow agent participated
Required Pattern: At least the following
...... coding1..*CodingCode defined by a terminology system
Fixed Value: (complex)
....... system1..1uriIdentity of the terminology system
Fixed Value: http://dicom.nema.org/resources/ontology/DCM
....... code1..1codeSymbol in syntax defined by the system
Fixed Value: 110152
..... who 1..1Reference(PractitionerRole | Practitioner | Organization | Device | Patient | RelatedPerson)Identifier of who
..... media 0..0
..... network 1..1BackboneElementLogical network location for application activity
.... agent:user 0..1BackboneElementActor involved in the event
..... type 1..1CodeableConceptHow agent participated
Required Pattern: At least the following
...... coding1..*CodingCode defined by a terminology system
Fixed Value: (complex)
....... system1..1uriIdentity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/v3-ParticipationType
....... code1..1codeSymbol in syntax defined by the system
Fixed Value: IRCP
..... role S0..*CodeableConceptAgent role in the event
..... who 1..1Reference(PractitionerRole | Practitioner | Organization | Device | Patient | RelatedPerson)Identifier of who
..... name S0..1stringHuman friendly name for the agent
..... requestor 1..1booleanWhether user is initiator
Required Pattern: true
..... media 0..0
..... network 0..0
..... purposeOfUse S0..*CodeableConceptReason given for this user
... source S1..1BackboneElementAudit Event Reporter
... Slices for entity 1..*BackboneElementData or objects used
Slice: Unordered, Open by pattern:type
.... entity:transaction 0..1BackboneElementData or objects used
..... what
...... identifier
....... value 1..1stringthe value of X-Request-Id
..... type 1..1CodingType of entity involved
Required Pattern: At least the following
...... system1..1uriIdentity of the terminology system
Fixed Value: https://profiles.ihe.net/ITI/BALP/CodeSystem/BasicAuditEntityType
...... code1..1codeSymbol in syntax defined by the system
Fixed Value: XrequestId
.... entity:query 1..1BackboneElementData or objects used
..... what 0..0
..... type 1..1CodingType of entity involved
Required Pattern: At least the following
...... system1..1uriIdentity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/audit-entity-type
...... code1..1codeSymbol in syntax defined by the system
Fixed Value: 2
..... role 1..1CodingWhat role the entity played
Required Pattern: At least the following
...... system1..1uriIdentity of the terminology system
Fixed Value: http://terminology.hl7.org/CodeSystem/object-role
...... code1..1codeSymbol in syntax defined by the system
Fixed Value: 24
..... lifecycle 0..0
..... securityLabel 0..*Codingmay contain the security labels on the Bundle search set returned
..... query 1..1base64BinaryQuery parameters
..... detail 0..0

doco Documentation for this format

Terminology Bindings (Differential)

PathConformanceValueSetURI
AuditEvent.subtype:anySearchrequiredAllSearchVS
https://profiles.ihe.net/ITI/BALP/ValueSet/AllSearchVS
from this IG

 

Other representations of profile: CSV, Excel, Schematron