'Repeate'、'Component' 和 'Sub-Component' 在 HL7 中是什么意思?

What does 'Repeate', 'Component' and 'Sub-Component' mean in HL7?

我根据找到的文档为 HL7 构建了一个解析器,并认为它运行良好——直到我获得测试数据示例。我根据以下假设构建它:

根据我的测试数据,这些假设似乎不太准确。谁能帮我弄清楚解释这些的正确方法是什么?

分隔符在 MSH-1/2 字段中定义,并且可能因消息而异。如果您正在编写解析器,那么您需要阅读实际的规范。请参阅 HL7 Version 2.9 Messaging Standard 第 2 章。它包含有关正确解析的详细说明,包括伪代码和流程图。

由于您正在构建解析器,我将详细介绍一些细节。

请参考this参考:

(x0D)   Segment separator
|       Field separator, aka pipe
^       Component separator, aka hat
&       Sub-component separator
~       Field repeat separator
\       Escape character

The segment separator is not negotiable. It is always a carriage return (ASCII 13 or HEX 0D). The others are suggested values only, but usually used as indicated above. The HL7 standard lets you choose your own as long as you show them in the MSH segment.

The MSH is the first segment of all HL7 messages (except HL7 batch messages). The field separator is presented as the 4th character in the message and it also represents the first field of the MSH segment. Since the first field of the MSH is typically only a pipe,’|’, counting MSH fields becomes tricky. Field 2 of the MSH (MSH-2) contains the other separator characters in this order: component, field repeat, escape, and sub-component.

Thus, the following is an example of the beginning of an HL7 message: MSH|^~\&|…

如上所述:

  • ~表示为这个特定字段提供了多个值。所以,就编程语言而言,它是数组或列表或类似的数据结构。你的假设是正确的。
  • ^ 表示给定字段的组成部分。这意味着,一个字段可能有多个组件。所有这些组件 combine 代表最终值。我认为这应该与编程语言术语中的数组无关。这里的例子是人名。整个人名是单个数据,分为姓氏、名字等。如您所见,这不是数组。这不是多个值;这是拆分为多个子值的单个值。因此,您可以将其视为 classstruct,而不是数组,如 Composition.
  • &是子组件,与上述组件类似,不同之处在于,它进一步将给定组件中的数据拆分为子组件。同样,我认为这应该与特定语言 classstruct 而不是数组相关联。

此外,上面列出的字符是默认字符,最常用于所述目的。但是,它们是可以改变的。基本上,这些字符在 MSH(2) 中的每条消息中定义。请注意,第一个字段始终是字段分隔符 (|),这是不可协商的。所以下一个(第二个)字段包含编码字符。在编写解析器时,您应该从此处读取编码字符并进一步相应地使用它们。

字符的顺序也定义为here:

2.24.1.2 Encoding characters (ST) 00002 Definition: This field contains the four characters in the following order: the component separator, repetition separator, escape character, and subcomponent separator. Recommended values are ^~\&, (ASCII 94, 126, 92, and 38, respectively).

请参考那些讨论 HL7 Escape Sequences, , and 使用的其他答案。