IMessagePersistenceService in assembly SanteDB.Core.Api version 2.1.151.0
Summary
Identifies a service which maintains a log of messages received to ensure that actions are only processed once
Description
In a health context, certain types of messages which represent data triggers (such as an admit, discharge, order, etc.) may trigger a business process which, in turn, kicks off another business process. Sometimes this process can take a long time to complete, or (due to network issues) the caller may disconnect prior to receiving a response. This service is responsible for storing that a message has been received by the SanteDB infrastructure and is currently being (or was already) processed, and allows SanteDB to simply return the already executed message back to the caller.
Note: This service is only currently used by the HL7v2 service
Operations
Implementations
None
Example Implementation
/// Example ImplementationusingSanteDB.Core.Services;/// Other usings herepublicclassMyMessagePersistenceService:SanteDB.Core.Services.IMessagePersistenceService { publicString ServiceName =>"My own IMessagePersistenceService service"; /// <summary> /// Get the current state of a message processing by the unique identifier of the message /// </summary>publicMessageStateGetMessageState(String messageId){thrownewSystem.NotImplementedException(); } /// <summary> /// Instructs the message persistence service to store an inbound message /// </summary>publicvoidPersistMessage(String messageId,Stream message){thrownewSystem.NotImplementedException(); } /// <summary> /// Persist metadata about the message /// </summary>publicvoidPersistMessageInfo(MessageInfo message){thrownewSystem.NotImplementedException(); } /// <summary> /// Get the response to the supplied request message identifier /// </summary>publicStreamGetMessageResponseMessage(String messageId){thrownewSystem.NotImplementedException(); } /// <summary> /// Get a message body by message identifier /// </summary>publicStreamGetMessage(String messageId){thrownewSystem.NotImplementedException(); } /// <summary> /// Persist the result of a message request (i.e. the result of the request) /// </summary>publicvoidPersistResultMessage(String messageId,String respondsToId,Stream response){thrownewSystem.NotImplementedException(); } /// <summary> /// Get all message ids between the specified time(s) /// </summary>publicIEnumerable<String> GetMessageIds(DateTime from,DateTime to){thrownewSystem.NotImplementedException(); } /// <summary> /// Get message extended attributes /// </summary>publicMessageInfoGetMessageInfo(String messageId){thrownewSystem.NotImplementedException(); }}