HL7 V2 中的段顺序是否重要?

Does the order of segments in HL7 V2 matter?

我知道字段和组件的顺序很重要,但是 HL7 消息中段的顺序又如何呢? 他们显然都必须在开头有 MSH,但是 HL7 指南中是否有任何内容明确指出 hl7 段必须按特定顺序排列。 当然,文档在描述消息类型时按特定顺序列出段,但这不就是它被写下来的顺序吗?您是否需要按相同顺序发送消息(分组项目除外)? 我还以为如果按消息中的顺序设置顺序,PID-1就无关紧要了。

我很想听听任何意见,但我特别想听听可以参考一些说明这一点的文档的人的意见。

当然可以。段的顺序在 HL7 标准中定义。

例如(我使用的是国际版本 2.4)4.4.1 ORM ‑ general order message (event O01) 关于订单输入的部分显示了以下作为 ORM 订单消息的结构(格式不理想)

ORM^O01^ORM_O01
MSH
[{NTE}]
[
 PID
 [PD1]
 [{NTE}]
 [
   PV1
   [PV2]]
   [{IN1
     [IN2]
     [IN3]
   }]
   [GT1]
   [{AL1}]
  ]
  {
   ORC
   [
    <OBR|RQD|RQ1| RXO|ODS|ODT>
      [{NTE}]
      [CTD]
      [{DG1}]
      [{
        OBX
        [{NTE}]
      }]
    ]
    [{FT1}]
    [{CTI}]
    [BLG]
   }

方括号表示可能的重复,大括号表示段是可选的(例如,紧跟在 MSH 之后,您可以有 0、1 或 n 个 NTE 段。)

要成为有效的 ORM 消息,OBR 段应位于 ORC 段之后,而 ORC 段本身应位于 PID 等之后。因此,例如不允许在 PID 段之前发送 OBR 段(参见层结构,观察请求属于一个订单公共部分,该部分本身与特定于患者的患者就诊相关。)

您提到的 PID-1 字段不是一个很好的例子,因为大多数消息只有一个 PID 段,因此 PID-1 是 1。 (我不知道包含多个 PID 段的消息,如果有人知道 HL7 规范中的具体示例,请添加到评论中)。但是如果你看一下 OBR-1,在同一个订单消息中可以有多个观察请求,例如 Kalium 和 Natrium 的订单,因此 OBR-1 中会发送一个序列号以确保数据来自不同的顺序没有混淆,例如:

ORC|...
OBR|1|12345||KA^Kalium|...
OBR|2|12346||NA^Natrium|...

是的,这很重要 -

有一个特定的要求,即所需的段位于两个相同的段之间。

从版本 2.5.1 第 2 章开始:

A named segment X may occur more than once in an abstract message syntax. This differs from repetition described earlier in this section.

When this occurs, the following rules must be adhered to: If, within an abstract message syntax, a named segment X appears in two individual or group locations, and a) Either appearance is optional or repeating in an individual location; b) or, either appearance is optional or repeating, in a group location then, the occurrences of segment X must be separated by at least one required segment of a different name so that no ambiguity can exist as to the individual or group location of any occurrence of segment X in a message instance.

一个现实世界的例子是ADT^A02中的ROL段,一个在PD1之后,一个在PV2之后,但是两者之间需要PV1。

不过,如果您正在编写某种解析器,我会对任何真正遵守此规则的人保持警惕。