【问题标题】:sequencial or concurrent hl7 message processing顺序或并发 hl7 消息处理
【发布时间】:2016-01-15 05:23:52
【问题描述】:
我想知道人们使用哪种并发模型来处理入站 hl7 消息(adt、...)并将它们保存在规范化数据模型(关系或无 sql)中。
在从(java、.net 等)转换/处理它们时,我正在努力考虑顺序消息处理(映射到 nosql db)和多线程:
示例:如果我处理由 clover Leaf 接收和转换的消息(转换为符合内部 web/rest api 预期有效负载),并设置为内部 web/rest api 服务器(多线程 java web 应用程序),那么我由于线程,不能保证我按顺序解析消息。
如果我按顺序处理消息,那么映射会很慢......
【问题讨论】:
-
IHE 描述了使用 UML 序列图的消息处理事务,其中大部分是同步消息
标签:
hl7
mirth
hapi
hl7-v2
c-cda
【解决方案1】:
是否可以异步处理消息取决于消息的特性,以及您的处理逻辑。考虑这个顺序:
- 您会获得一个新患者的登记信息
- 您会看到针对患者的情节
- 您会收到一条合并消息,将新患者与其他患者合并
如果您在倒数第二条消息之前处理最后一条消息,会发生什么?您会因为合并患者有新的情节而将其视为错误吗?
这就是为什么这个问题没有简单的答案。视情况而定
【解决方案2】:
如果发送应用程序使用 MLLP,那么您可能别无选择,只能进行顺序处理。大多数 MLLP 客户端会在发送下一条消息之前等待接受确认。
对于许多医疗保健用例,顺序确实很重要。例如,如果发送应用程序正在生成 ORU^R01 消息,那么它可以先发送初步结果,然后再发送最终结果。如果您将这些数据呈现给用户,您不希望仅仅因为您的应用程序碰巧无序地处理消息而让初步结果覆盖最终结果。
规范化数据模型和 NoSQL 持久层在术语上通常是矛盾的。