The audit log in clinical interfaces

Find, inspect and replay clinical messages with their acknowledgments.

The audit log pairs each recorded HL7 message with its acknowledgment and indexes clinical identifiers for search. Use it to verify delivery, inspect parsed and raw content, trace a message across systems and resubmit stored payloads.

This page shows how the audit log is used in healthcare work. The full reference is in the audit log, audit log views, resubmitting messages and the Python API.

Review messages and acknowledgments

An MLLP channel records each HL7 message it receives and the ACK it sent back. An outgoing MLLP connection records each message it sent and the ACK it received. The message and its acknowledgment form one exchange paired by the MSH-10 control ID.

Open it from Monitoring > Audit log in the Dashboard, or from the Audit log link on any channel's or connection's own row, which opens the log already filtered to that one interface.

Search by patient identifier

The search box takes free text and looks inside payloads, so a patient identifier - an MRN from PID-3 - or an MSH-10 control ID returns the whole exchange it appears in, not just the single event that mentions it. The result shows the message arrival and acknowledgment together.

Inspect a message

A message body opens in two tabs, Raw and Parsed. Parsed renders the HL7 message as a tree, with segments and fields named and navigable, right beside the raw wire form - the tree is for reading what the message says, the wire form is for comparing byte for byte with what the sender claims to have sent.

Trace one message

From any event, Open flow draws the whole journey of that one message as a diagram - the channel it arrived on, the service that handled it, every destination it was sent to and any resubmission, across every system it touched. The diagram pans, zooms and replays the events in order, and the flow search takes an MSH-10 control ID, a correlation ID or an event ID and works out which one it was given. Use this view to inspect the steps after message acceptance.

Find outstanding exchanges

The Outstanding filter lists sent messages awaiting acknowledgment, oldest first. This identifies destinations whose acknowledgments have exceeded the expected time.

Resubmit messages

When payload retention is enabled, a failed message can be sent again from its audit event. The classification column distinguishes transient failures such as timeouts and refused connections from permanent failures such as validation errors and unknown identifiers. The resubmit form accepts an edited payload for permanent failures.

A hop resend delivers the stored payload to one selected destination in a multi-destination flow. The complete procedure is on resubmitting messages.

Querying from Python

Your own services can run every search this page describes - self.audit answers the same questions in code and the AI agent lookups are built on top of it:

# Zato
from zato.common.audit_log.api import AuditSource

# Search the events related to one patient's messages.
events = self.audit.search(source=AuditSource.MLLP_Channel, query='12345678')

# Read the newest event time of each HL7 channel.
last_seen = self.audit.last_seen(AuditSource.MLLP_Channel)

The filters, the shape of what comes back and reading full payloads are on the audit log Python API.

Configure PHI retention

Message payloads are protected health information, and the audit log treats them as the sensitive part of the record. Payload retention is configured separately from event retention - the record of what happened can be kept for a quarter while the message contents expire after a week:

export Zato_Audit_Log_Retention_Days=90
export Zato_Audit_Log_Content_Retention_Days=7
  • Failed events retain their payloads for investigation.
  • Opening a message body records the user, message and screen under the Log access source.
  • The per-channel Log messages toggle writes full payloads to the server log outside these controls. Use it for development traffic.

The full retention configuration, including per-source windows and archiving before deletion, is in the audit log reference.

AI agent traffic has a separate record. The MCP audit log stores request and response sizes instead of their payloads. Its metadata can contain identifying values and requires the corresponding access controls and retention policy.

Learn more


Schedule a meaningful demo

Book a demo with an expert who will help you build meaningful systems that match your ambitions

"We evaluated 12 integration platforms and Zato was the only one to score 100%."

Philip Zuñiga, Assistant Professor, University of the Philippines