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。
不过,如果您正在编写某种解析器,我会对任何真正遵守此规则的人保持警惕。
我知道字段和组件的顺序很重要,但是 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。
不过,如果您正在编写某种解析器,我会对任何真正遵守此规则的人保持警惕。