This page is part of the FHIR Specification (v1.6.0:
STU
3 Ballot 4). The current version which supercedes this version is
5.0.0
.
For
a
full
list
of
available
versions,
see
the
Directory
of
published
versions
. For a full list of available versions, see the
Directory of published versions
.
Page
versions:
. Page versions:
R5
R4B
R4
R3
R2
|
|
Compartments
|
A record of an event made for purposes of maintaining a security log. Typical uses include detection of intrusion attempts and monitoring for inappropriate usage.
The audit event is based on the IHE-ATNA Audit record definitions, originally from
RFC 3881
, and now managed by DICOM (see
DICOM Part 15 Annex A5
All
actors;
such
as
applications,
processes,
and
services;
involved
in
an
auditable
event
should
record
an
AuditEvent.
This
will
likely
result
in
multiple
AuditEvent
entries
that
show
whether
privacy
and
security
safeguards,
such
as
access
control,
are
the
properly
functioning
across
an
enterprise's
system-of-systems.
Thus
it
is
typical
to
get
an
auditable
event
recorded
by
both
the
application
in
a
workflow
process,
and
the
servers
that
support
them.
For
this
reason,
duplicate
entries
are
expected,
which
is
helpful
because
it
may
aid
in
the
detecting
of,
for
example,
fewer
than
expected
actors
being
recorded
in
a
multi-actor
process
or
attributes
related
to
those
records
being
in
conflict,
which
is
an
indication
of
a
security
problem.
There
may
be
non-participating
actors
that
also
detect
a
security
relevant
event
and
thus
would
record
an
AuditEvent,
such
as
a
trusted
intermediary.
Security
relevant
events
are
not
limited
to
communications
or
RESTful
events.
They
include
software
startup
and
shutdown;
user
login
and
logout;
access
control
decisions;
configuration
events;
software
installation;
policy
rules
changes;
and
manipulation
of
data
that
exposes
the
data
to
users.
See
Audit
Event
Sub-Type
vocabulary
for
guidance
on
some
security
relevant
events.
The
content
of
an
AuditEvent
is
intended
for
use
by
Security
System
Administrators,
Security
and
Privacy
Information
Managers,
and
Records
Management
personnel.
This
content
is
not
intended
to
be
accessible
or
used
directly
by
other
healthcare
users,
such
as
Providers
or
Patients,
although
reports
generated
from
the
raw
data
would
be
useful.
An
example
is
a
Patient
centric
Accounting
of
Disclosures
or
an
Access
Report.
Servers
that
provide
support
for
Audit
Event
resources
would
not
generally
accept
update
or
delete
operations
on
the
resources,
as
this
would
compromise
the
integrity
of
the
audit
record.
Access
of
the
AuditEvent
would
typically
be
limited
to
e.g.,
security,
privacy,
or
other
system
administration
purposes.
Relationship
of
AuditEvent
and
Provenance
resources
are
often
(though
not
exclusively)
created
by
the
application
responding
to
the
create/read/query/update/delete/execute
etc.
event.
A
Provenance
resource
resource
contains
overlapping
information,
but
is
a
record-keeping
assertion
that
gathers
information
about
the
context
in
which
the
information
in
a
resource
"came
to
be"
in
its
current
state,
e.g.,
whether
it
was
created
de
novo
or
obtained
from
another
entity
in
whole,
part,
or
by
transformation.
Provenance
resources
are
prepared
by
the
application
that
initiates
the
create/update
of
the
resource,
and
may
be
persisted
with
the
AuditEvent
target
resource.
).
This resource is managed collaboratively between HL7, DICOM, and IHE.
The primary purpose of this resource is the maintenance of security audit log information. However, it can also be used for any audit logging needs and simple event-based notification.
All actors; such as applications, processes, and services; involved in an auditable event should record an AuditEvent. This will likely result in multiple AuditEvent entries that show whether privacy and security safeguards, such as access control, are the properly functioning across an enterprise's system-of-systems. Thus it is typical to get an auditable event recorded by both the application in a workflow process, and the servers that support them. For this reason, duplicate entries are expected, which is helpful because it may aid in the detecting of, for example, fewer than expected actors being recorded in a multi-actor process or attributes related to those records being in conflict, which is an indication of a security problem. There may be non-participating actors that also detect a security relevant event and thus would record an AuditEvent, such as a trusted intermediary.
Security relevant events are not limited to communications or RESTful events. They include software startup and shutdown; user login and logout; access control decisions; configuration events; software installation; policy rules changes; and manipulation of data that exposes the data to users. See Audit Event Sub-Type vocabulary for guidance on some security relevant events.
The content of an AuditEvent is intended for use by Security System Administrators, Security and Privacy Information Managers, and Records Management personnel. This content is not intended to be accessible or used directly by other healthcare users, such as Providers or Patients, although reports generated from the raw data would be useful. An example is a Patient centric Accounting of Disclosures or an Access Report. Servers that provide support for Audit Event resources would not generally accept update or delete operations on the resources, as this would compromise the integrity of the audit record. Access of the AuditEvent would typically be limited to e.g., security, privacy, or other system administration purposes.
Relationship of AuditEvent and Provenance resources are often (though not exclusively) created by the application responding to the create/read/query/update/delete/execute etc. event. A Provenance resource resource contains overlapping information, but is a record-keeping assertion that gathers information about the context in which the information in a resource "came to be" in its current state, e.g., whether it was created de novo or obtained from another entity in whole, part, or by transformation. Provenance resources are prepared by the application that initiates the create/update of the resource, and may be persisted with the AuditEvent target resource.
Structure
| Name | Flags | Card. | Type |
|
|---|---|---|---|---|
|
DomainResource |
|
||
|
Σ | 1..1 | Coding |
|
|
Σ | 0..* | Coding |
|
|
Σ | 0..1 | code |
AuditEventAction |
|
Σ | 1..1 | instant |
|
|
Σ | 0..1 | code |
AuditEventOutcome |
|
Σ | 0..1 | string |
|
|
Σ | 0..* | Coding |
PurposeOfUse |
|
1..* | BackboneElement |
|
|
|
0..* | CodeableConcept |
|
|
|
Σ | 0..1 |
Reference
(
Practitioner
|
|
|
Σ | 0..1 | Identifier |
|
|
0..1 | string |
|
|
|
0..1 | string |
|
|
|
1..1 | boolean |
|
|
|
0..1 | Reference ( Location ) | Where | |
|
0..* | uri |
|
|
|
0..1 | Coding |
|
|
|
0..1 | BackboneElement |
|
|
|
0..1 | string |
|
|
|
0..1 | code |
|
|
|
0..* | Coding |
PurposeOfUse |
|
|
1..1 | BackboneElement |
|
|
|
0..1 | string |
|
|
|
Σ | 1..1 | Identifier |
|
|
0..* | Coding |
|
|
|
I | 0..* | BackboneElement |
|
|
Σ | 0..1 | Identifier |
|
|
Σ | 0..1 | Reference ( Any ) |
|
|
0..1 | Coding |
|
|
|
0..1 | Coding |
|
|
|
0..1 | Coding |
|
|
|
0..* | Coding |
|
|
|
Σ I | 0..1 | string |
|
|
0..1 | string |
|
|
|
Σ I | 0..1 | base64Binary |
|
|
0..* | BackboneElement |
|
|
|
1..1 | string |
|
|
|
1..1 | base64Binary |
|
|
Documentation for this format
|
||||
UML
Diagram
UML Diagram
(
Legend
)
XML
Template
XML Template
<
<AuditEvent xmlns="http://hl7.org/fhir"><!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension -->
< <</type> <</subtype> < < < < <</purposeOfEvent> </event> < <</role> <|<type><!-- 1..1 Coding Type/identifier of event --></type> <subtype><!-- 0..* Coding More specific type/id for the event --></subtype> <action value="[code]"/><!-- 0..1 Type of action performed during the event --> <recorded value="[instant]"/><!-- 1..1 Time when the event occurred on source --> <outcome value="[code]"/><!-- 0..1 Whether the event succeeded or failed --> <outcomeDesc value="[string]"/><!-- 0..1 Description of the event outcome --> <purposeOfEvent><!-- 0..* Coding The purposeOfUse of the event --></purposeOfEvent> <agent> <!-- 1..* Actor involved in the event --> <role><!-- 0..* CodeableConcept Agent role in the event --></role> <reference><!-- 0..1 Reference(Practitioner|Organization|Device|Patient| RelatedPerson) Direct reference to resource --></reference><</userId> < < < <</location> < <</media> < < <<userId><!-- 0..1 Identifier Unique identifier for the user --></userId> <altId value="[string]"/><!-- 0..1 Alternative User id e.g. authentication --> <name value="[string]"/><!-- 0..1 Human-meaningful name for the agent --> <requestor value="[boolean]"/><!-- 1..1 Whether user is initiator --> <location><!-- 0..1 Reference(Location) Where --></location> <policy value="[uri]"/><!-- 0..* Policy that authorized event --> <media><!-- 0..1 Coding Type of media --></media> <network> <!-- 0..1 Logical network location for application activity --> <address value="[string]"/><!-- 0..1 Identifier for the network access point of the user device --> <type value="[code]"/><!-- 0..1 The type of network access point --> </network><</purposeOfUse> </participant> < < <</identifier> <</type><purposeOfUse><!-- 0..* Coding Reason given for this user --></purposeOfUse> </agent> <source> <!-- 1..1 Audit Event Reporter --> <site value="[string]"/><!-- 0..1 Logical source location within the enterprise --> <identifier><!-- 1..1 Identifier The identity of source detecting the event --></identifier> <type><!-- 0..* Coding The type of source where event originated --></type> </source>< <</identifier> <</reference> <</type> <</role> <</lifecycle> <</securityLabel> < < < < < <<entity> <!-- 0..* Data or objects used --> <identifier><!-- 0..1 Identifier Specific instance of object --></identifier> <reference><!-- 0..1 Reference(Any) Specific instance of resource --></reference> <type><!-- 0..1 Coding Type of entity involved --></type> <role><!-- 0..1 Coding What role the entity played --></role> <lifecycle><!-- 0..1 Coding Life-cycle stage for the entity --></lifecycle> <securityLabel><!-- 0..* Coding Security labels on the entity --></securityLabel> <name value="[string]"/><!--0..1 Descriptor for entity --> <description value="[string]"/><!-- 0..1 Descriptive text --> <query value="[base64Binary]"/><!--
0..1 Query parameters --> <detail> <!-- 0..* Additional Information about the entity --> <type value="[string]"/><!-- 1..1 Name of the property --> <value value="[base64Binary]"/><!-- 1..1 Property value --> </detail>
</object></entity> </AuditEvent>
JSON
Template
JSON Template
{
"resourceType" : "",
{
"resourceType" : "AuditEvent",
// from Resource: id, meta, implicitRules, and language
// from DomainResource: text, contained, extension, and modifierExtension
"
"
"
"
"
"
"
"
},
"
"
"|
"type" : { Coding }, // R! Type/identifier of event
"subtype" : [{ Coding }], // More specific type/id for the event
"action" : "<code>", // Type of action performed during the event
"recorded" : "<instant>", // R! Time when the event occurred on source
"outcome" : "<code>", // Whether the event succeeded or failed
"outcomeDesc" : "<string>", // Description of the event outcome
"purposeOfEvent" : [{ Coding }], // The purposeOfUse of the event
"agent" : [{ // R! Actor involved in the event
"role" : [{ CodeableConcept }], // Agent role in the event
"reference" : { Reference(Practitioner|Organization|Device|Patient|
RelatedPerson) }, // Direct reference to resource
"
"
"
"
"
"
"
"
"
"
"userId" : { Identifier }, // Unique identifier for the user
"altId" : "<string>", // Alternative User id e.g. authentication
"name" : "<string>", // Human-meaningful name for the agent
"requestor" : <boolean>, // R! Whether user is initiator
"location" : { Reference(Location) }, // Where
"policy" : ["<uri>"], // Policy that authorized event
"media" : { Coding }, // Type of media
"network" : { // Logical network location for application activity
"address" : "<string>", // Identifier for the network access point of the user device
"type" : "<code>" // The type of network access point
},
"
"purposeOfUse" : [{ Coding }] // Reason given for this user
}],
"
"
"
"
"source" : { // R! Audit Event Reporter
"site" : "<string>", // Logical source location within the enterprise
"identifier" : { Identifier }, // R! The identity of source detecting the event
"type" : [{ Coding }] // The type of source where event originated
},
"
"
"
"
"
"
"
"
"
"
"
"
"
"entity" : [{ // Data or objects used
"identifier" : { Identifier }, // Specific instance of object
"reference" : { Reference(Any) }, // Specific instance of resource
"type" : { Coding }, // Type of entity involved
"role" : { Coding }, // What role the entity played
"lifecycle" : { Coding }, // Life-cycle stage for the entity
"securityLabel" : [{ Coding }], // Security labels on the entity
"name" : "<string>", // C? Descriptor for entity
"description" : "<string>", // Descriptive text
"query" : "<base64Binary>", // C? Query parameters
"detail" : [{ // Additional Information about the entity
"type" : "<string>", // R! Name of the property
"value" : "<base64Binary>" // R! Property value
}]
}]
}
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> .[ a fhir:AuditEvent; fhir:nodeRole fhir:treeRoot; # if this is the parser root # from Resource: .id, .meta, .implicitRules, and .language # from DomainResource: .text, .contained, .extension, and .modifierExtension fhir:AuditEvent.type [ Coding ]; # 1..1 Type/identifier of event fhir:AuditEvent.subtype [ Coding ], ... ; # 0..* More specific type/id for the event fhir:AuditEvent.action [ code ]; # 0..1 Type of action performed during the event fhir:AuditEvent.recorded [ instant ]; # 1..1 Time when the event occurred on source fhir:AuditEvent.outcome [ code ]; # 0..1 Whether the event succeeded or failed fhir:AuditEvent.outcomeDesc [ string ]; # 0..1 Description of the event outcome fhir:AuditEvent.purposeOfEvent [ Coding ], ... ; # 0..* The purposeOfUse of the event fhir:AuditEvent.agent [ # 1..* Actor involved in the event fhir:AuditEvent.agent.role [ CodeableConcept ], ... ; # 0..* Agent role in the event fhir:AuditEvent.agent.reference [ Reference(Practitioner|Organization|Device|Patient|RelatedPerson) ]; # 0..1 Direct reference to resource fhir:AuditEvent.agent.userId [ Identifier ]; # 0..1 Unique identifier for the user fhir:AuditEvent.agent.altId [ string ]; # 0..1 Alternative User id e.g. authentication fhir:AuditEvent.agent.name [ string ]; # 0..1 Human-meaningful name for the agent fhir:AuditEvent.agent.requestor [ boolean ]; # 1..1 Whether user is initiator fhir:AuditEvent.agent.location [ Reference(Location) ]; # 0..1 Where fhir:AuditEvent.agent.policy [ uri ], ... ; # 0..* Policy that authorized event fhir:AuditEvent.agent.media [ Coding ]; # 0..1 Type of media fhir:AuditEvent.agent.network [ # 0..1 Logical network location for application activity fhir:AuditEvent.agent.network.address [ string ]; # 0..1 Identifier for the network access point of the user device fhir:AuditEvent.agent.network.type [ code ]; # 0..1 The type of network access point ]; fhir:AuditEvent.agent.purposeOfUse [ Coding ], ... ; # 0..* Reason given for this user ], ...; fhir:AuditEvent.source [ # 1..1 Audit Event Reporter fhir:AuditEvent.source.site [ string ]; # 0..1 Logical source location within the enterprise fhir:AuditEvent.source.identifier [ Identifier ]; # 1..1 The identity of source detecting the event fhir:AuditEvent.source.type [ Coding ], ... ; # 0..* The type of source where event originated ]; fhir:AuditEvent.entity [ # 0..* Data or objects used fhir:AuditEvent.entity.identifier [ Identifier ]; # 0..1 Specific instance of object fhir:AuditEvent.entity.reference [ Reference(Any) ]; # 0..1 Specific instance of resource fhir:AuditEvent.entity.type [ Coding ]; # 0..1 Type of entity involved fhir:AuditEvent.entity.role [ Coding ]; # 0..1 What role the entity played fhir:AuditEvent.entity.lifecycle [ Coding ]; # 0..1 Life-cycle stage for the entity fhir:AuditEvent.entity.securityLabel [ Coding ], ... ; # 0..* Security labels on the entity fhir:AuditEvent.entity.name [ string ]; # 0..1 Descriptor for entity fhir:AuditEvent.entity.description [ string ]; # 0..1 Descriptive text fhir:AuditEvent.entity.query [ base64Binary ]; # 0..1 Query parameters fhir:AuditEvent.entity.detail [ # 0..* Additional Information about the entity fhir:AuditEvent.entity.detail.type [ string ]; # 1..1 Name of the property fhir:AuditEvent.entity.detail.value [ base64Binary ]; # 1..1 Property value ], ...; ], ...; ]
Changes since DSTU2
| AuditEvent | |
| AuditEvent.type | added |
| AuditEvent.subtype | added |
| AuditEvent.action | added |
| AuditEvent.recorded | added |
| AuditEvent.outcome | added |
| AuditEvent.outcomeDesc | added |
| AuditEvent.purposeOfEvent | added |
| AuditEvent.agent | Renamed from participant to agent |
| AuditEvent.entity | Renamed from object to entity |
| AuditEvent.event | deleted |
See the Full Difference for further information
Structure
| Name | Flags | Card. | Type |
|
|---|---|---|---|---|
|
DomainResource |
|
||
|
Σ | 1..1 | Coding |
|
|
Σ | 0..* | Coding |
|
|
Σ | 0..1 | code |
AuditEventAction |
|
Σ | 1..1 | instant |
|
|
Σ | 0..1 | code |
AuditEventOutcome |
|
Σ | 0..1 | string |
|
|
Σ | 0..* | Coding |
PurposeOfUse |
|
1..* | BackboneElement |
|
|
|
0..* | CodeableConcept |
|
|
|
Σ | 0..1 |
Reference
(
Practitioner
|
|
|
Σ | 0..1 | Identifier |
|
|
0..1 | string |
|
|
|
0..1 | string |
|
|
|
1..1 | boolean |
|
|
|
0..1 | Reference ( Location ) | Where | |
|
0..* | uri |
|
|
|
0..1 | Coding |
|
|
|
0..1 | BackboneElement |
|
|
|
0..1 | string |
|
|
|
0..1 | code |
|
|
|
0..* | Coding |
PurposeOfUse |
|
|
1..1 | BackboneElement |
|
|
|
0..1 | string |
|
|
|
Σ | 1..1 | Identifier |
|
|
0..* | Coding |
|
|
|
I | 0..* | BackboneElement |
|
|
Σ | 0..1 | Identifier |
|
|
Σ | 0..1 | Reference ( Any ) |
|
|
0..1 | Coding |
|
|
|
0..1 | Coding |
|
|
|
0..1 | Coding |
|
|
|
0..* | Coding |
|
|
|
Σ I | 0..1 | string |
|
|
0..1 | string |
|
|
|
Σ I | 0..1 | base64Binary |
|
|
0..* | BackboneElement |
|
|
|
1..1 | string |
|
|
|
1..1 | base64Binary |
|
|
Documentation for this format
|
||||
XML
Template
XML Template
<
<AuditEvent xmlns="http://hl7.org/fhir"><!-- from Resource: id, meta, implicitRules, and language --> <!-- from DomainResource: text, contained, extension, and modifierExtension -->
< <</type> <</subtype> < < < < <</purposeOfEvent> </event> < <</role> <|<type><!-- 1..1 Coding Type/identifier of event --></type> <subtype><!-- 0..* Coding More specific type/id for the event --></subtype> <action value="[code]"/><!-- 0..1 Type of action performed during the event --> <recorded value="[instant]"/><!-- 1..1 Time when the event occurred on source --> <outcome value="[code]"/><!-- 0..1 Whether the event succeeded or failed --> <outcomeDesc value="[string]"/><!-- 0..1 Description of the event outcome --> <purposeOfEvent><!-- 0..* Coding The purposeOfUse of the event --></purposeOfEvent> <agent> <!-- 1..* Actor involved in the event --> <role><!-- 0..* CodeableConcept Agent role in the event --></role> <reference><!-- 0..1 Reference(Practitioner|Organization|Device|Patient| RelatedPerson) Direct reference to resource --></reference><</userId> < < < <</location> < <</media> < < <<userId><!-- 0..1 Identifier Unique identifier for the user --></userId> <altId value="[string]"/><!-- 0..1 Alternative User id e.g. authentication --> <name value="[string]"/><!-- 0..1 Human-meaningful name for the agent --> <requestor value="[boolean]"/><!-- 1..1 Whether user is initiator --> <location><!-- 0..1 Reference(Location) Where --></location> <policy value="[uri]"/><!-- 0..* Policy that authorized event --> <media><!-- 0..1 Coding Type of media --></media> <network> <!-- 0..1 Logical network location for application activity --> <address value="[string]"/><!-- 0..1 Identifier for the network access point of the user device --> <type value="[code]"/><!-- 0..1 The type of network access point --> </network><</purposeOfUse> </participant> < < <</identifier> <</type><purposeOfUse><!-- 0..* Coding Reason given for this user --></purposeOfUse> </agent> <source> <!-- 1..1 Audit Event Reporter --> <site value="[string]"/><!-- 0..1 Logical source location within the enterprise --> <identifier><!-- 1..1 Identifier The identity of source detecting the event --></identifier> <type><!-- 0..* Coding The type of source where event originated --></type> </source>< <</identifier> <</reference> <</type> <</role> <</lifecycle> <</securityLabel> < < < < < <<entity> <!-- 0..* Data or objects used --> <identifier><!-- 0..1 Identifier Specific instance of object --></identifier> <reference><!-- 0..1 Reference(Any) Specific instance of resource --></reference> <type><!-- 0..1 Coding Type of entity involved --></type> <role><!-- 0..1 Coding What role the entity played --></role> <lifecycle><!-- 0..1 Coding Life-cycle stage for the entity --></lifecycle> <securityLabel><!-- 0..* Coding Security labels on the entity --></securityLabel> <name value="[string]"/><!--0..1 Descriptor for entity --> <description value="[string]"/><!-- 0..1 Descriptive text --> <query value="[base64Binary]"/><!--
0..1 Query parameters --> <detail> <!-- 0..* Additional Information about the entity --> <type value="[string]"/><!-- 1..1 Name of the property --> <value value="[base64Binary]"/><!-- 1..1 Property value --> </detail>
</object></entity> </AuditEvent>
JSON
Template
JSON Template
{
"resourceType" : "",
{
"resourceType" : "AuditEvent",
// from Resource: id, meta, implicitRules, and language
// from DomainResource: text, contained, extension, and modifierExtension
"
"
"
"
"
"
"
"
},
"
"
"|
"type" : { Coding }, // R! Type/identifier of event
"subtype" : [{ Coding }], // More specific type/id for the event
"action" : "<code>", // Type of action performed during the event
"recorded" : "<instant>", // R! Time when the event occurred on source
"outcome" : "<code>", // Whether the event succeeded or failed
"outcomeDesc" : "<string>", // Description of the event outcome
"purposeOfEvent" : [{ Coding }], // The purposeOfUse of the event
"agent" : [{ // R! Actor involved in the event
"role" : [{ CodeableConcept }], // Agent role in the event
"reference" : { Reference(Practitioner|Organization|Device|Patient|
RelatedPerson) }, // Direct reference to resource
"
"
"
"
"
"
"
"
"
"
"userId" : { Identifier }, // Unique identifier for the user
"altId" : "<string>", // Alternative User id e.g. authentication
"name" : "<string>", // Human-meaningful name for the agent
"requestor" : <boolean>, // R! Whether user is initiator
"location" : { Reference(Location) }, // Where
"policy" : ["<uri>"], // Policy that authorized event
"media" : { Coding }, // Type of media
"network" : { // Logical network location for application activity
"address" : "<string>", // Identifier for the network access point of the user device
"type" : "<code>" // The type of network access point
},
"
"purposeOfUse" : [{ Coding }] // Reason given for this user
}],
"
"
"
"
"source" : { // R! Audit Event Reporter
"site" : "<string>", // Logical source location within the enterprise
"identifier" : { Identifier }, // R! The identity of source detecting the event
"type" : [{ Coding }] // The type of source where event originated
},
"
"
"
"
"
"
"
"
"
"
"
"
"
"entity" : [{ // Data or objects used
"identifier" : { Identifier }, // Specific instance of object
"reference" : { Reference(Any) }, // Specific instance of resource
"type" : { Coding }, // Type of entity involved
"role" : { Coding }, // What role the entity played
"lifecycle" : { Coding }, // Life-cycle stage for the entity
"securityLabel" : [{ Coding }], // Security labels on the entity
"name" : "<string>", // C? Descriptor for entity
"description" : "<string>", // Descriptive text
"query" : "<base64Binary>", // C? Query parameters
"detail" : [{ // Additional Information about the entity
"type" : "<string>", // R! Name of the property
"value" : "<base64Binary>" // R! Property value
}]
}]
}
Alternate
definitions:
Turtle Template
@prefix fhir: <http://hl7.org/fhir/> .[ a fhir:AuditEvent; fhir:nodeRole fhir:treeRoot; # if this is the parser root # from Resource: .id, .meta, .implicitRules, and .language # from DomainResource: .text, .contained, .extension, and .modifierExtension fhir:AuditEvent.type [ Coding ]; # 1..1 Type/identifier of event fhir:AuditEvent.subtype [ Coding ], ... ; # 0..* More specific type/id for the event fhir:AuditEvent.action [ code ]; # 0..1 Type of action performed during the event fhir:AuditEvent.recorded [ instant ]; # 1..1 Time when the event occurred on source fhir:AuditEvent.outcome [ code ]; # 0..1 Whether the event succeeded or failed fhir:AuditEvent.outcomeDesc [ string ]; # 0..1 Description of the event outcome fhir:AuditEvent.purposeOfEvent [ Coding ], ... ; # 0..* The purposeOfUse of the event fhir:AuditEvent.agent [ # 1..* Actor involved in the event fhir:AuditEvent.agent.role [ CodeableConcept ], ... ; # 0..* Agent role in the event fhir:AuditEvent.agent.reference [ Reference(Practitioner|Organization|Device|Patient|RelatedPerson) ]; # 0..1 Direct reference to resource fhir:AuditEvent.agent.userId [ Identifier ]; # 0..1 Unique identifier for the user fhir:AuditEvent.agent.altId [ string ]; # 0..1 Alternative User id e.g. authentication fhir:AuditEvent.agent.name [ string ]; # 0..1 Human-meaningful name for the agent fhir:AuditEvent.agent.requestor [ boolean ]; # 1..1 Whether user is initiator fhir:AuditEvent.agent.location [ Reference(Location) ]; # 0..1 Where fhir:AuditEvent.agent.policy [ uri ], ... ; # 0..* Policy that authorized event fhir:AuditEvent.agent.media [ Coding ]; # 0..1 Type of media fhir:AuditEvent.agent.network [ # 0..1 Logical network location for application activity fhir:AuditEvent.agent.network.address [ string ]; # 0..1 Identifier for the network access point of the user device fhir:AuditEvent.agent.network.type [ code ]; # 0..1 The type of network access point ]; fhir:AuditEvent.agent.purposeOfUse [ Coding ], ... ; # 0..* Reason given for this user ], ...; fhir:AuditEvent.source [ # 1..1 Audit Event Reporter fhir:AuditEvent.source.site [ string ]; # 0..1 Logical source location within the enterprise fhir:AuditEvent.source.identifier [ Identifier ]; # 1..1 The identity of source detecting the event fhir:AuditEvent.source.type [ Coding ], ... ; # 0..* The type of source where event originated ]; fhir:AuditEvent.entity [ # 0..* Data or objects used fhir:AuditEvent.entity.identifier [ Identifier ]; # 0..1 Specific instance of object fhir:AuditEvent.entity.reference [ Reference(Any) ]; # 0..1 Specific instance of resource fhir:AuditEvent.entity.type [ Coding ]; # 0..1 Type of entity involved fhir:AuditEvent.entity.role [ Coding ]; # 0..1 What role the entity played fhir:AuditEvent.entity.lifecycle [ Coding ]; # 0..1 Life-cycle stage for the entity fhir:AuditEvent.entity.securityLabel [ Coding ], ... ; # 0..* Security labels on the entity fhir:AuditEvent.entity.name [ string ]; # 0..1 Descriptor for entity fhir:AuditEvent.entity.description [ string ]; # 0..1 Descriptive text fhir:AuditEvent.entity.query [ base64Binary ]; # 0..1 Query parameters fhir:AuditEvent.entity.detail [ # 0..* Additional Information about the entity fhir:AuditEvent.entity.detail.type [ string ]; # 1..1 Name of the property fhir:AuditEvent.entity.detail.value [ base64Binary ]; # 1..1 Property value ], ...; ], ...; ]
Changes since DSTU2
| AuditEvent | |
| AuditEvent.type | added |
| AuditEvent.subtype | added |
| AuditEvent.action | added |
| AuditEvent.recorded | added |
| AuditEvent.outcome | added |
| AuditEvent.outcomeDesc | added |
| AuditEvent.purposeOfEvent | added |
| AuditEvent.agent | Renamed from participant to agent |
| AuditEvent.entity | Renamed from object to entity |
| AuditEvent.event | deleted |
See the Full Difference for further information
Alternate definitions: Master Definition (
XML
,
JSON
),
XML
Schema
/
Schematron
,
Resource
Profile
(
XML
,
(for ) +
JSON
Schema
,
ShEx
(for
Turtle
),
Questionnaire
)
| Path | Definition | Type | Reference |
|---|---|---|---|
| AuditEvent.type |
|
Extensible |
|
| AuditEvent.subtype |
|
Extensible |
|
| AuditEvent.action |
|
Required | AuditEventAction |
| AuditEvent.outcome |
|
Required | AuditEventOutcome |
|
AuditEvent.purposeOfEvent
|
|
Extensible | PurposeOfUse |
| AuditEvent.agent.role |
|
Extensible |
|
| AuditEvent.agent.media |
|
Extensible |
|
| AuditEvent.agent.network.type |
|
Required |
|
| AuditEvent.source.type |
|
Extensible |
|
| AuditEvent.entity.type |
|
Extensible |
|
| AuditEvent.entity.role |
|
Extensible |
|
| AuditEvent.entity.lifecycle |
|
Extensible |
|
| AuditEvent.entity.securityLabel |
|
Extensible |
|
on AuditEvent.entity:
name.empty() or query.empty()
)
The AuditEvent resource and the ATNA Audit record are used in many contexts throughout healthcare. The coded values defined in the "extensible" bindings above are those widely used and/or defined by DICOM, IHE or ISO, who all defined these codes to meet very specific use cases. These codes should be used when they are suitable, or other codes can be defined.
Note when using codes from a vocabulary, the displayName can be left off so as to keep the AuditEvent size small and minimize impact of a large audit log of similar entries.
The set of codes defined for this resource is expected to grow over time, and additional codes may be proposed / requested using the community input link above.
This table summarizes common event scenarios, and the codes that should be used for each case.
| Scenario | type | subtype | action | Other |
|
|
110114
|
110122
|
E
|
|
|
|
110114
|
110123
|
E
|
|
|
|
rest
|
[code]
|
*
|
|
|
|
rest
|
[code]
|
E
|
|
Audit Event Actions for RESTful operations:
| Operation | Action |
| create | C |
|
|
R |
| update | U |
| delete | D |
|
|
E |
The audit event provides the element purposeOfEvent to convey the purpose of the event and purposeOfUse to convey the reason that a particular actor (machine, person, software) was involved in the event.
PurposeOfEvent is an element at the level of AuditEvent and can convey the purpose of the activity that resulted in the event. This will occur when the system that is reporting the event is be aware of the purpose of the event. A specific example would be a radiology reporting system where a radiologist has created and is sending a finished report. This system likely knows the purpose, e.g., “treatment”. It is multi-valued because the one event may be related to multiple purposes.
It is also commonplace that the reporting system does not have information about the purpose of the event. In these cases, the event report would not have a purposeOfEvent.
It is also likely that the same event will be reported from different perspectives, e.g., by both the sender and recipient of a communication. These two different perspectives can have different knowledge regarding the purposeOfEvent.
PurposeOfUse is an element at the level of agent within AuditEvent. This describes the reason that this particular person, machine, or software is participating in the activity that resulted in the event. For example, an individual person participating in the event may assert a purpose of use from their perspective. It is also possible that they are participating for multiple reasons, and report multiple purposeOfUse.
The reporting system might not have knowledge regarding why a particular machine or person was involved, and would omit this element in those cases.
When the same event is reported from multiple perspectives, the reports can have different knowledge regarding the purpose.
Search parameters for this resource. The
common parameters
also apply. See
Searching
for
more
information
about
searching
in
REST,
messaging,
and
services.
for more information about searching in REST, messaging, and services.
| Name | Type | Description | Paths |
| action | token |
|
|
| address |
|
|
|
| agent | reference | Direct reference to resource |
AuditEvent.agent.reference
( Practitioner , Organization , Device , Patient , RelatedPerson ) |
| agent-name | string | Human-meaningful name for the agent | AuditEvent.agent.name |
| altid | token |
|
|
| date | date |
|
|
|
|
|
|
(Any) |
|
|
token |
|
|
|
|
string |
|
|
|
|
token |
|
|
|
|
|
|
|
| patient | reference |
|
( Patient ) |
| policy | uri |
|
|
|
|
|
|
|
| site | token |
|
AuditEvent.source.site |
| source | token |
|
AuditEvent.source.identifier |
| subtype | token |
|
|
| type | token |
|
|
| user | token |
|
|