0

关于 HL7 管道分隔的数据,编码字符 (|^~\&) 究竟是如何工作的?

解析原始 HL7 数据时,以下字段、字段重复、组件及其子组件的示例是否正确?

PID|1||||||||||||1234567890^somedata&moredata^TESTEMAIL@GMAIL.COM~0987654321

Field (|): 
PID13 = 1234567890^somedata&moredata^TESTEMAIL@GMAIL.COM~0987654321

Field repetition (~): 
PID13~1 = 1234567890^somedata&moredata^TESTEMAIL@GMAIL.COM
PID13~2 = 0987654321 

Component (^):
PID13.1 = 1234567890
PID13.2 = somedata&moredata
PID13.3 = TESTEMAIL@GMAIL.COM

Sub-component (&):
PID13.2.1 = somedata
PID13.2.2 = moredata
PID13.3.1 = TESTEMAIL@GMAIL.COM
PID13.3.2 = 
4

1 回答 1

3

如果不了解您尝试分配内容的左侧结构,就不可能告诉您是否正确。

然而,有一种正确的方法来解析有问题的段/字段。

这是我在这里引用的规格的链接

从 HL7v2.7 标准的第 2.5.3 节:

每个字段都分配有一个数据类型,该数据类型定义了字段的值域——它可能采用的可能值。

如果您拉起第 3.4.2.13 节(PID-13),您将看到每个组件和子组件的细分。从技术上讲,子组件和组件的含义可能因字段而异,但大多数情况下它们只是因数据类型而异。

在您的示例中,您不会将重复视为 XTN 数据类型的单独实例。我将使用数组语法重写,如下所示:

Field repetition (~): 
PID13[0] = 1234567890^somedata&moredata^TESTEMAIL@GMAIL.COM
PID13[1] = 0987654321 

Component (^):
PID13[0].1 = 1234567890
PID13[0].2 = somedata&moredata
PID13[0].3 = TESTEMAIL@GMAIL.COM

Sub-component (&):
PID13[0].2.1 = somedata
PID13[0].2.2 = moredata

同一规范第 2.6.1 节中的伪代码也可能会有所帮助

foreach occurrence in ( occurrences_of( field ) ) {
  construct_occurrence( occurrence );
  if not last ( populated occurrence ) insert repetition_separator;
    /* e.g., ~ */
}

重要的是要记住这些不同的子组件具有不同的含义,因为 PID-13 是 XTN 类型。

PID-13 是一个有问题的例子,因为从历史上看,PID-13 的顺序很重要。第一次重复是“主要的”。随着时间的推移,该字段也成为了电子邮件地址、寻呼机号码等的着陆点。所以祝你好运,试图从现实世界的数据中理解。

于 2018-03-21T21:12:45.620 回答