Interface Engine
An Interface Engine (or Message Broker) is a term used to refer to a kind of middleware application which is used to transform/ route/ clone/ translate messages.
The same interface engine can sometimes play a role of a Gateway, and in other scenarios just be a Bridge or an Intermediary. The key distinction are the business level scenarios, interactions and use cases. If an interface engine is required to perform business rules and application level responsibilities, than it's a Gateway and is listed as the Receiver in the HL7 Message. If it just needs to transform from one ITS to another, it's a Bridge. If it needs to transform from one Transport Protocol to another, it's an Intermediary.
Therefore what determines when an interface engine is required to be a Gateway/Bridge/Intermediary are the use cases encoutered in healthcare enterprise environments. Then, if the application takes up this responsibility (and they need to do so based on the business rules), they need to comply to certain rules which are listed and specified in the ATS. For example, if an application is required to transform from HL7v2 to HL7v3 standard, they are required to play a role of a Gateway. If it cannot do that, they need to drop the request (i.e. Bridge cannot do that).
- (Miroslav) Message Broker is yet again another interface engine that distributes the incomming messages to specified destinations according to the business rules. A Message Broker is usually required to perform a Bridge functionality. However, the question is, what role the Message Broker is playing if it needs to send an incomming HL7 message to x additional locations (e.g. as the notification message to 3rd party that a lab order took place). It needs to change a HL7 message, list itself as the sender - therefore it's the Gateway role?