2015-10-16 120 views
2

我在想什麼樣的併發模型做人來處理入站hl7消息(adt,...)並將它們保存在規範化的數據模型(關係或非sql)中。序列或併發hl7消息處理

我正在與順序的消息處理的思想(映射到nosql的分貝)和多線程轉化時掙扎/從處理它們(無論的java,.NET,):

例如:如果我處理由三葉草葉子接收和轉換的消息(轉換爲符合內部web/rest api期望的有效載荷),並設置爲內部網絡/休息api服務器(多線程Java Web應用程序),然後我不能保證我解析由於線程順序的消息。

如果我處理郵件的順序,然後映射將是緩慢的

...

+1

[IHE](http://www.ihe.net/Technical_Frameworks/)描述了使用UML序列圖和主要同步消息的消息處理事務 – xmojmr

回答

3

是否可以處理異步地取決於消息的特性的消息,你的處理邏輯。考慮這個序列:

  1. 你得到一個註冊爲新患者
  2. 你對病人
  3. 你得到一個合併消息有不同的患者
合併新病人中列出的插曲

如果您在最後一條消息之前處理最後一條消息,會發生什麼情況?你會把它當作一個錯誤嗎?因爲你在合併的病人身上有一個新的情節?

這就是爲什麼這個問題沒有簡單的答案。它取決於

1

如果發送應用程序使用MLLP,那麼您可能沒有任何選擇,只能進行順序處理。大多數MLLP客戶端會在發送下一條消息之前等待接受確認。

對於許多醫療保健用例,順序確實很重要。例如,如果發送應用程序正在生成ORU^R01消息,則它可以先發送初步結果,然後再發送最終結果。如果您將這些數據呈現給用戶,您不希望僅因爲您的應用程序碰巧無序處理消息而讓初步結果覆蓋最終結果。

歸一化數據模型和NoSQL持久層通常是矛盾的。

+0

感謝您的反饋。 – Sbham