代码之家  ›  专栏  ›  技术社区  ›  Bensonius

HL7加速器尾部分隔符预期行为

  •  1
  • Bensonius  · 技术社区  · 10 年前

    考虑HL7v2消息中的以下PV1段。

    PV1|1|E|MYLOC||||55555^Doctor^Doc^D^^Dr^^DOCT|||||||HO||||ER||BC|||||||||||||||||||VALUE||REG|||201406270627||||||||55555^Doctor^Secondary^H^^Dr^^DOCT2|

    那里有52个字段。我们的Meditech系统总是在这个接口上发送字段52(PV1_52_OtherHealthcareProvider),在这里表示为 55555^Doctor^Secondary^H^^Dr^^DOCT2 .我把它设置好了 允许尾随分隔符 如您所见,此段中有一个尾随分隔符, 然而 这是在段中的最后一个字段之后,该字段恰好包含上面显示的数据。

    这种情况将一直存在,Meditech总是在这个接口上附加一个尾随分隔符。

    其他段中没有一个在final字段中有数据,所以我们没有遇到这个问题,尽管它们有尾随分隔符。在PV1段,我们收到一个错误:

    Error happened in body during parsing 
    Error # 1
    Segment Id: PV1
    Sequence Number: 1
    Error Number: 100
    Error Description: Segment sequence error (Unexpected end of message body found)
    Encoding System: HL79999
    

    事实证明,这是由于尾随分隔符,因为手动删除分隔符并重新提交时,不会发生错误。如果我修改模式以添加 笨蛋 (PV1_53_ExtraField)字段,则允许消息。

    我的问题是: 允许尾随分隔符 在这种情况下?是否应该允许在 全部的 或者它只适用于最后一个字段没有数据的段(即:段末尾的额外字段)?

    2 回复  |  直到 10 年前
        1
  •  2
  •   Community Egal    7 年前

    尽管是偶数 HL7 Messaging Standard Version 2.6 没有用其他字段扩展PV1段,因此您的原始代码仅支持52个段字段是正确的

    1. 使用自定义字段和自定义段扩展HL7消息传递协议是完全有效的,前提是所有相关方都同意此扩展,并将其记录在 HL7符合性声明 (你可以找到一些解释链接 here here )

    2. 您的解析和消息处理代码应该与协议的旧版本和某些未来版本兼容。段的数量、它们的名称和顺序以及字段的数量和字段中组件的数量可以动态地确定和处理。消息语法就是为了支持它而设计的 “无论HL7版本字段MSH-12包含什么,PV1段中将有52个字段” 不是很好的方法,因为它不会扩展

    ..在这种情况下,允许尾随分隔符的预期行为是什么?。。

    预期的行为是,应用程序不会崩溃,不会阻止数据处理,如果数据通过代码传输到另一个系统,则不应删除不理解的字段(它或多或少是在HL7规范中写的)

        2
  •  1
  •   Vikas Bhardwaj    10 年前

    在接收管道上,段中的最后一个字段后不能有分隔符。看起来这是HL7加速器中的一个bug。仅当分隔符在定义的字段数内时,该属性似乎对发送端有一定影响。

    我建议在接收管道组件中处理此问题,并在Microsoft支持下提出