在HL7中,“重复”,“组件”和“子组件”是什么意思?

问题描述 投票:1回答:2

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

  • ~是“重复”字符。基本上意味着传递的字段的值是给定值的数组。
  • ^表示该字段由数组表示,但是期望数组项用于构建最终值。
  • &^相似,但是是^内的嵌套数组。

鉴于我拥有的测试数据,这些假设看起来并不十分准确。有人可以帮我弄清楚什么是正确的解释方法吗?

java hl7 hl7-v3
2个回答
1
投票

您在构建解析器时,我将介绍更多细节。

请参考this参考:

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

段分隔符不可协商。它始终是回车符(ASCII 13或HEX 0D)。其他仅是建议值,但通常如上所述使用。 HL7标准允许您选择自己的名称,只要您在MSH段中显示它们即可。

MSH是所有HL7消息(HL7批处理消息除外)的第一段。字段分隔符在消息中显示为第四个字符,它也表示MSH段的第一个字段。由于MSH的第一个字段通常只是一个管道,“ |”,因此计算MSH字段变得很棘手。 MSH(MSH-2)的字段2按此顺序包含其他分隔符:组件,字段重复,转义和子组件。

因此,以下是HL7消息开头的示例:MSH | ^〜\&|…

如上所述:

  • << [~表示为此特定字段提供了多个值。因此,就编程语言而言,它是一个数组或列表或类似的数据结构。您的假设是正确的。
  • << [^代表给定字段的组成部分。这意味着一个字段可能具有多个组成部分。所有这些成分
  • combine代表最终值。我认为这与编程语言中的数组无关。这里的例子是人名。整个人名是按姓氏,给定名称等形式拆分的单个数据。如您所见,这不是数组。这不是多个值;这是将单个值拆分为多个子值。因此,您可以将其视为classstruct,而不是Composition中的数组。
  • &是子组件,与上述组件相似,不同之处在于,它进一步将数据拆分为子组件中的给定组件。同样,我认为这应该与特定于语言的classstruct而不是数组相关联。
  • 此外,以上列出的字符是默认字符,最常用于所述目的。但是,它们可以更改。基本上,这些字符在MSH(2)中的每个消息中定义。请注意,第一个字段始终是不可协商的字段分隔符(MSH(2))。因此,下一个(第二个)字段包含编码字符。在编写解析器时,应从此处读取编码字符,并相应地进一步使用它们。字符的顺序也被定义为|

    2.24.1.2编码字符(ST)00002定义:该字段按以下顺序包含四个字符:组件分隔符,重复分隔符,转义符和子组件分隔符。推荐值为^〜\&(分别为ASCII 94、126、92和38)。

    请参考这些其他讨论的关于hereHL7 Escape Sequencesconventions的讨论。

  • 1
    投票
    © www.soinside.com 2019 - 2024. All rights reserved.