Mirth 中的聚合器模式

Aggregator pattern in Mirth

我在 Mirth 中收到了大量相关的 HL7 消息。它们包含一个 ID,该 ID 对于所有相关消息始终相同,并且总是在一分钟内到达。可以同时接收多个批次。很难说批处理何时结束,但是当一分钟内没有更多消息时,可以安全地假设批处理已经完成。

我如何在 Mirth 中实现一个聚合器模式,在定义的时间间隔内没有收到任何具有相同 ID 的新消息后,它会继续读取和完成相关消息并发送完成的消息?

您可以将所有收到的消息放到一个文件夹中,并将消息 ID 存储在全局地图中。一旦新消息开始到达,其消息 ID 与映射中存储的消息 ID 不同(意味着下一个序列开始),通过发送它需要查找的消息 ID 或以其他方式触发另一个通道。之后将全局映射中的消息ID替换为新序列的消息ID。

如果这听起来太复杂,您也可以这样做,但第二个通道将不断扫描文件夹(文件 Reader)并仅从当前时间(在我看来是太模糊的限定词)。

我通过使用消息中的 ID(标识序列)作为文件名将所有消息保存在一个文件夹中来实现这一点。该文件随每条新消息更新。几个序列一起放在同一个文件夹中。

下一个频道正在使用一个简单的文件 reader,它只获取一分钟或更长时间的文件。