This transaction supports the retrieval of CA:Aud audit record from the Audit Record Repository in accordance with a set of search parameters that determine the retrieved event reports.
This transaction enables an Audit Consumer to search audit events that an Audit Record Repository created via the Record Audit Event [ITI-20] FHIR Feed transaction. If the Audit Record Repository stores audit messages in other formats, it should map the audit messages into the FHIR format that can be consumed by the Retrieve ATNA Audit Event [ITI-81] transaction.
This transaction is a profiling of a standard FHIR search of the AuditEvent Resource.
Scope
The Retrieve ATNA Audit Event transaction is used to search CA:Aud events recorded in an CA:Aud Audit Record Repository. The result of this retrieval is a FHIR bundle of AuditEvent Resources that match with a set of search parameters.
Actor Roles
Actor | Role |
Audit Record Repository | Provides storage for CA:Aud audit events and responds to queries for a portion of the stored records. |
Audit Consumer | Queries for CA:Aud audit records. |
Referenced Standards
RFC2616 | IETF Hypertext Transfer Protocol – HTTP/1.1 |
RFC4627 | The application/json Media Type for JavaScript Object Notation (JSON) |
RFC6585 | IETF Additional HTTP Status Codes |
RFC3339 | Date and Time on the Internet: Timestamps |
HL7 FHIR | Release 4 http://hl7.org/fhir/R4/index.html |
Messages
Retrieve ATNA Audit Events Request Message
This is an HTTP GET parameterized search from an Audit Consumer to an Audit Record Repository. The Audit Record Repository has stored CA:Aud audit records received via Record Audit Event [ITI-20] transactions. Those messages, which are stored within a data-store, can be retrieved in accordance with specific search parameters.
Trigger Events
The Audit Consumer sends a Retrieve ATNA Audit Events message when it needs to process or analyze CA:Aud audit records.
Message Semantics
The Retrieve ATNA Audit Event message shall be an HTTP GET request sent to the Audit Record Repository. This message is a FHIR search (see http://hl7.org/fhir/R4/search.html) on AuditEvent Resources (see http://hl7.org/fhir/R4/auditevent.html).
This “search” target is formatted as:
<scheme>://<authority>/<path>/AuditEvent?date=ge[start-time]&date=le[stop-time]&<query>
where:
- <scheme> shall be either http or https. The use of http or https is a policy decision, but https is usually appropriate due to confidentiality of CA:Aud audit record content.
- <authority> shall be represented as a host (either IP address or DNS name) followed optionally by a colon and port number.
- The Audit Record Repository may use <path> to segregate the HTTP search service for AuditEvent implementation from other REST-based services.
- At least one date search parameter is required. See section Date Search Parameters.
- “&” is a conditional parameter that shall be present if the <query> parameter is present.
- <query>, if present, represents a series of encoded name-value pairs representing filters for the search. See section Additional Search Parameters.
Date Search Parameters
The date parameter shall be used to specify an upper and/or lower bound for the search. At least one date parameter shall be present. Two date parameters are recommended in every search by the Audit Consumer and shall be supported by the Audit Record Repository in order to avoid overloading the Audit Consumer. These parameters allow the Audit Consumer to specify the time frame of creation of audit records of interest and enable the Audit Consumer to constrain the number of audit records returned. The values for the date search parameters shall be in RFC3339 format.
Note: RFC3339 format is the format mandated by Syslog for time stamps and is a sub-set of the XML date-time data format used by FHIR.
For example, to search AuditEvent Resources created during the whole day of January 5, 2013:
http://example.com/ARRservice/AuditEvent?date=ge2013-01-05&date=le2013-01-05
The Audit Record Repository shall apply matching criteria to AuditEvent Resources characterized by AuditEvent.recorded field valued within the time frame specified in the Request message.
The Audit Record Repository shall apply other date matching criteria following rules defined by FHIR specification (http://hl7.org/fhir/R4/search.html).
Additional Search Parameters
The search parameters in this section may be supported by the Audit Consumer and shall be supported by the Audit Record Repository. These parameters can be used by the Audit Consumer to refine search requests.
The Audit Consumer shall encode all search parameters per RFC3986 “percent” encoding rules. Although FHIR allows unconstrained use of AND OR operators to make queries of unlimited complexity, this transaction constrains the queries allowed:
- Multiple search parameters shall only be combined using AND “&” operator.
- The OR “,” operator shall be used only within a single search parameter that has multiple values.
Additional search parameters are listed below:
- address is a parameter of string type. This parameter specifies the identifier of the network access point (NetworkAccessPointID) of the user device that creates the audit record (this could be a device id, IP address, or some other identifier associated with a device).
The value of this parameter shall contain the substring to match.
For example:
http://example.com/ARRservice/AuditEvent?date=ge2013-01-01&date=le2013-01-02&address=192.168.0.1
The Audit Record Repository shall match this parameter with the AuditEvent.agent.network.address.
- agent.identifier is a parameter of token type. This parameter identifies the user that participated in the event that originates the audit record.
For example, to search AuditEvent Resources related to the user “admin”:
http://example.com/ARRservice/AuditEvent?date=ge2013-01-01&date=le2013-01-02&agent.identifier=admin
The Audit Record Repository shall match this parameter with the AuditEvent.agent.who.identifier field.
If a patient identifier it is used, the Audit Record Repository will return only the audit records where the patient is involved in the event as a user.
- patient.identifier is a parameter of token type. This parameter specifies the identifier of the patient involved in the event as a participant or as a user. The value of this parameter can contain the namespace URI (that represents the assigning authority for the identifier) and the identifier.
For example:
The Audit Record Repository shall match this parameter with the AuditEvent.agent.who.identifier and AuditEvent.entity.what.identifier where the reference resolve to a Patient.
- entity.identifier is a parameter of token type. This parameter specifies unique identifier for the object. The parameter value should be identified in accordance to the entity type.
For example:
- ?entity.identifier=urn:oid:1.2.3.4.5|123-203-FJ
- ?entity.identifier=|123-203-FJ.
The Audit Record Repository shall match this parameter with the AuditEvent.entity.what.identifier field that is of type identifier. If a patient identifier is used the Audit Record Repository will return only audit records where the patient is involved in the event as a participant.
- entity-type is a parameter of token type. This parameter specifies the type of the object (e.g., Person, System Object, etc.). The parameter value shall contain the namespace URI http://hl7.org/fhir/audit-entity-type or http://hl7.org/fhir/resource-types defined by FHIR and a coded value. See http://hl7.org/fhir/R4/valueset-audit-entitytype.html for codes that shall be used.
The Audit Record Repository shall match this parameter with the AuditEvent.entity.type field.
- entity-role is a parameter of token type. This parameter specifies the role played by the entity (e.g., Report, Location, Query, etc.). The parameter value shall contain the namespace URI http://hl7.org/fhir/object-role defined by FHIR and a coded value. See http://hl7.org/fhir/R4/object-role for codes that shall be used.
For example, to search all the audit records related to the document entity (Report=”3”) with the unique id 12345^1.2.3.4.5 a fully specified request would be: http://example.com/ARRservice/AuditEvent?date=ge2013-01-01&date=le2013-01-02&entity-role=http://hl7.org/fhir/object-role|3&entity-id=urn:oid:1.2.3.4.5|12345
The Audit Record Repository shall match this parameter with the AuditEvent.entity.role field.
- source.identifier is a parameter of token type. This parameter identifies the source of the audit event.
For example, to search AuditEvent Resources produced by the audit source application characterized by unique ID: 1234:
http://example.com/ARRservice/AuditEvent?date=ge2013-01-01&date=le2013-01-02&source=1234
The Audit Record Repository shall match this parameter with the AuditEvent.source.observer.identifier field.
- type is a parameter of token type. This parameter represents the identifier of the specific type of event audited. The parameter value shall contain the namespace URI http://dicom.nema.org/resources/ontology/DCM and a coded value. Codes available are defined by IHE (see Record Audit Event [ITI-20] section Send Audit Resource Request Message, Trigger Events.
For example, to search AuditEvent Resources related to PHI Export Events:
The Audit Record Repository shall match this parameter with the AuditEvent.type field.
- subtype is parameter of token type. This parameter identifies the specific IHE transaction that originates the audit record. The parameter value can contain the namespace URI urn:ihe:event-type-code to search for audit messages triggered by IHE transactions with the defined audit message. Each IHE transaction that defines an CA:Aud messages, specifies a code identifying the transaction itself, and assigns this code to the EventTypeCode element within the [ITI-20] audit record.
For example, to search AuditEvent Resources related to Retrieve Document Set [ITI-43] transactions:
The Audit Record Repository shall match this parameter with the AuditEvent.subtype field.
- outcome is a parameter of token type. This parameter represents whether the event succeeded or failed. The parameter value shall contain the namespace URI http://hl7.org/fhir/audit-event-outcome and a code taken from the related value set. See http://hl7.org/fhir/R4/valueset-audit-event-outcome.html.
To search AuditEvent Resources related to failed events:
The Audit Record Repository shall match this parameter with the AuditEvent.outcome field.
The HL7® FHIR® standard provides additional search parameters. This transaction does not define specific behavior on those parameters (such as _sort, _include, etc.). See http://hl7.org/fhir/R4/search.html for details about available parameters.
Populating Expected Response Format
The HL7® FHIR® standard provides encodings for responses as either XML or JSON. The Audit Record Repository shall support both message encodings. The Audit Consumer shall support one and may optionally support both encodings. For Desired Response Encoding and format negotiation see ITI TF-2: Appendix Z.6.
Expected Actions
The Audit Record Repository (ARR) maintains a database of audit events. The Audit Record Repository retains data according to local policies, and some data may be deleted.
The Audit Record Repository shall return all the audit events stored in its database that match the query parameters, and which the requester is authorized to view (see CA:Aud Overview for further details).
When performing matching based on the search parameters, the Audit Record Repository shall:
- Select all audit records that have a time interval specified in the request URL.
- If search parameters other than those defined in section Additional Search Parameters (e.g., _sort, _include FHIR search result parameters) are specified in the request URL, then
o If the Audit Record Repository does not support the parameter, it shall be ignored;
o If the Audit Record Repository supports the parameter, the matching or other behavior shall comply with the matching rules for its datatype in FHIR.
The Audit Record Repository shall return matching resources using the Retrieve ATNA Audit Event Response Message. See section Retrieve ATNA Audit Event Response Message.
Retrieve ATNA Audit Event Response Message
The Audit Record Repository sends the Retrieve ATNA Audit Event Response message in response to a query from an Audit Consumer
Trigger Events
The Audit Record Repository creates this message when it receives and processes a Retrieve ATNA Audit Event message.
Message Semantics
When the Audit Record Repository successfully processes the search request, it shall return the matching AuditEvent Resources inside a FHIR Bundle Resource.
The “Content-Type” of the response will depend upon the response format negotiation described in ITI TF-2: Appendix Z.6.
If the date search parameter is missing (see section Date Search Parameters), the Audit Record Repository may return HTTP response code 400 - Bad Request.
If the specified search parameters do not result in any matching audit record, the Audit Record Repository shall return HTTP response of success 200, with an empty FHIR bundle.
If the requested data size is considered excessive by the Audit Record Repository, it may choose to return the results in a series of pages (see https://www.hl7.org/fhir/R4/http.html#paging).
Other HTTP response codes may be returned by the Audit Record Repository. See ITI TF-2: Appendix Z.7 Guidance on Access Denied Results.
The Audit Record Repository should complement the returned error code with a human readable description of the error condition.
Audit Record Repository may return HTTP redirect responses (responses with values of 301, 302, 303, or 307) in response to a request. Audit Consumers must follow redirects, but if a loop is detected, it may report an error.
FHIR Bundle of Audit Events Messages
When the search is successful, the body of the Response message shall contain a FHIR Bundle of AuditEvent Resources.
Example XML format:
<Bundle> |
Expected Actions
The Audit Consumer may further analyze the data received within the FHIR Bundle of AuditEvent Resources.
Security Considerations
See the general Security Considerations.
Audit Considerations
This transaction may involve the disclosure of sensitive information. Logging these retrieval transactions as a query event is appropriate.
However, CA:Aud does not require the Audit Record Repository to be able to send audit records using the Record Audit Event [ITI-20] transaction.
The following notation is used for optionality:
M | This field is mandatory. |
U | The optionality of this field is unspecialized. The optionality of the underlying standard applies. |
C | This field is mandatory if a specified condition is true. |
The Audit Record Repository shall create and store locally an audit event as follows:
| Field Name | Opt | Value Constraints |
Event | EventID | M | EV (110101, DCM, "Audit Log Used") |
EventActionCode | M | “R” (Read) | |
EventDateTime | U | not specialized | |
EventOutcomeIndicator | U | not specialized | |
EventTypeCode | M | EV(“ITI-81”, “IHE Transactions”, “Retrieve ATNA AuditEvent”) | |
Source (Document Administrator) (1) | |||
Human Requestor (0..1) | |||
Destination (Document Registry) (1) | |||
Audit Source (Document Administrator) (1) | |||
AuditEvent Message (0..n) |
Where:
Source | UserID | U | not specialized |
AlternativeUserID | M | The process ID as used within the local operating system in the local system logs. | |
UserName | U | not specialized | |
UserIsRequestor | U | not specialized | |
RoleIDCode | M | EV(110153, DCM, “Source”) | |
NetworkAccessPointTypeCode | M | “1” for machine (DNS) name, “2” for IP address | |
NetworkAccessPointID | M | The machine name or IP address. |
Human Requestor | UserID | M | Identity of the human that initiated the transaction. |
AlternativeUserID | U | not specialized | |
UserName | U | not specialized | |
UserIsRequestor | U | not specialized | |
RoleIDCode | M | Access Control role(s) the user holds that allows this transaction. | |
NetworkAccessPointTypeCode | U | not specialized | |
NetworkAccessPointID | U | not specialized |
Destination | UserID | M | SOAP endpoint URI. |
AlternativeUserID | U | not specialized | |
UserName | U | not specialized | |
UserIsRequestor | U | not specialized | |
RoleIDCode | M | EV(110152, DCM, “Destination”) | |
NetworkAccessPointTypeCode | M | “1” for machine (DNS) name, “2” for IP address | |
NetworkAccessPointID | M | The machine name or IP address. |
Audit Source | AuditSourceID | U | not specialized |
AuditEnterpriseSiteID | U | not specialized | |
AuditSourceTypeCode | U | not specialized |
AuditEvent Message | ParticipantObjectTypeCode | M | “2” (System object) |
ParticipantObjectTypeCodeRole | M | “13” (Security Resource) | |
ParticipantObjectDataLifeCycle | U | not specialized | |
ParticipantObjectIDTypeCode | M | EV(“12”, “RFC-3881”, "URI") | |
ParticipantObjectSensitivity | U | not specialized | |
ParticipantObjectID | M | The URI of the Audit log | |
ParticipantObjectName | M | “Security Audit Log” | |
ParticipantObjectQuery | U | not specialized | |
ParticipantObjectDetail | U | not specialized |