我想知道人们使用什么样的并发模型来处理入站hl7消息(adt,…)并将它们保存在规范化的数据模型(关系或no-sql)中。
我正在与顺序消息处理(映射到nosql数据库)和多线程的想法作斗争,当从(java, .net等)转换/处理它们时:
示例:如果我处理由三叶草接收和转换的消息(转换为符合内部web/rest api预期有效负载),并设置为内部web/rest api服务器(多线程java web应用程序),那么我不能保证由于线程,我正在顺序解析消息。
如果我顺序处理消息,那么映射将会很慢…
是否可以异步处理消息取决于消息的特征和处理逻辑。考虑这个序列:
- 你得到一个新病人的注册
- 你会得到一个针对患者的发作记录
- 您将获得一条合并消息,将新患者与其他患者合并
如果在处理最后一条消息之前处理最后一条消息,会发生什么?你会不会因为合并后的病人出现了新症状就把它当作一个错误来处理?
这就是为什么这个问题没有简单的答案。这取决于
如果发送应用程序正在使用MLLP,那么您可能别无选择,只能进行顺序处理。大多数MLLP客户端在发送下一条消息之前将等待接受确认。
对于许多医疗保健用例,顺序很重要。例如,如果发送应用程序正在生成ORU^R01消息,那么它可以先发送初步结果,然后再发送最终结果。如果您正在向用户呈现这些数据,您不会希望仅仅因为应用程序碰巧无序地处理消息而允许初步结果覆盖最终结果。
规范化数据模型和NoSQL持久层在术语上通常是矛盾的。