Audit Dispatch Service

IAuditDispatchService in assembly SanteDB.Core.Api version 3.0.1980.0

Summary

Represents a service that dispatches audits to a central repository

Description

The auditing of access to clinical data is of the utmost importance. SanteDB generates and stores audits locally using an IRepositoryService for AuditEventData. However, many implementations will have centralized audit repositories for collecting audits from various health systems in a central place. Such collection is useful to establishing overall patterns of access across systems in an HIE (for example)

The audit dispatching service is responsible for sending AuditEventData instances to remote audit repositories. The service's responsibilities are:

  1. Ensure that the AuditEventData instance is complete and contains relevant information for this node

  2. Transform the AuditEventData class into the appropriate format (IETF RFC3881, FHIR, etc.)

  3. Ensure the delivery of the audit to the central repository

Operations

OperationResponse/ReturnInput/ParameterDescription

SendAudit

void

AuditEventData audit

Sends the audit to the central authority

Implementations

SynchronizationAuditDispatcher - (SanteDB.Client.Disconnected)

Represents an audit dispatcher which uses the administrative queue for the dispatching of audits.

Description

In order to reduce the number of audits which are sent to the central environment, a dispatcher is used. This allows only audits relevant audits to be sent to the central server via ISynchronizationQueueManager

Service Registration

...
<section xsi:type="ApplicationServiceContextConfigurationSection" threadPoolSize="4">
	<serviceProviders>
		...
		<add type="SanteDB.Client.Disconnected.Services.SynchronizationAuditDispatcher, SanteDB.Client.Disconnected, Version=3.0.1980.0, Culture=neutral, PublicKeyToken=null" />
		...
	</serviceProviders>

IHE ATNA Audit Dispatcher - (SanteDB.Messaging.Atna)

Represents an audit service that communicates Audits via an IHE ATNA transport

Description

This implementation of the IAuditDispatchService is responsible for creating and dispatching audits in one of the appropriate formats for IHE Audit Trail and Node Authentication audits.

The specific formats of audits supported are:

The audits can be sent via a variety of transports including:

  • UDP Syslog

  • TCP Syslog

  • Secure (TLS) TCP Syslog

  • HTTP POST

  • File System Settings

The configuration of this service is described in AtnaConfigurationSection

Service Registration

...
<section xsi:type="ApplicationServiceContextConfigurationSection" threadPoolSize="4">
	<serviceProviders>
		...
		<add type="SanteDB.Messaging.Atna.AtnaAuditService, SanteDB.Messaging.Atna, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null" />
		...
	</serviceProviders>

FhirAuditDispatcher - (SanteDB.Messaging.FHIR)

Audit dispatch service which sends audits using HL7 FHIR

Description

This implementation of the IAuditDispatchService is responsible for dispatching audits to a central FHIR repository which supports the FHIR auditing specification.

This dispatcher is configured using the FhirDispatcherTargetConfiguration class where the dispatcher name is audit. The dispatcher configuration may include authentication/authorization parameters for the solution, as well as authenticators or proxy information.

Service Registration

...
<section xsi:type="ApplicationServiceContextConfigurationSection" threadPoolSize="4">
	<serviceProviders>
		...
		<add type="SanteDB.Messaging.FHIR.Auditing.FhirAuditDispatcher, SanteDB.Messaging.FHIR, Version=3.0.1982.0, Culture=neutral, PublicKeyToken=null" />
		...
	</serviceProviders>

Example Implementation

/// Example Implementation
using SanteDB.Core.Services;
/// Other usings here
public class MyAuditDispatchService : SanteDB.Core.Services.IAuditDispatchService { 
	public String ServiceName => "My own IAuditDispatchService service";
	/// <summary>
	/// Sends the audit to the central authority
	/// </summary>
	public void SendAudit(AuditEventData audit){
		throw new System.NotImplementedException();
	}
}

References

Last updated