3

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

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

4

2 回答 2

4

是的,这很重要——

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

从版本 2.5.1 第 2 章开始:

一个命名的段 X 可能在抽象消息语法中出现不止一次。这与本节前面描述的重复不同。

发生这种情况时,必须遵守以下规则: 如果在抽象消息语法中,命名段 X 出现在两个单独或组位置,并且 a) 出现是可选的或在单独的位置重复出现;b) 或者,无论出现是可选的还是重复出现,那么在一个组位置中,段 X 的出现必须由至少一个不同名称的必需段分隔,这样就不会存在任何关于任何个体或组位置的歧义在消息实例中出现段 X。

一个真实的例子是 ADT^A02 中的 ROL 段,一个跟随 PD1,一个跟随 PV2,但在两者之间需要 PV1。

但是,如果您正在编写某种解析器,我会警惕任何真正尊重此规则的人。

于 2017-08-10T13:49:48.387 回答
2

绝对地。段的顺序在 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,在同一个订单消息中可能有多个观察请求,例如钾和钠的订单,因此将在 OBR-1 中发送一个序列号以确保数据来自不同的订单不会混淆,例如:

ORC|...
OBR|1|12345||KA^Kalium|...
OBR|2|12346||NA^Natrium|...
于 2017-08-09T21:05:30.097 回答