如何在hl7消息中使用转义符

时间:2018-11-20 06:04:15

标签: java hl7 mirth hl7-v2

我正在使用ca.uhn.hl7v2.util.Terser创建hl7消息。对于hl7字段之一,我需要设置以下值   “ \ home \ one \ two”。

HL7消息类型为MDM_T02(版本为2.3.1)。因为如果我尝试使用

,则“ \”是hl7消息中的转义字符
public void methodOne() {
   MDM_T02 mdmt02  = new MDM_T02();
   Terser terser = new Terser(mdmt02);
   terser.set("OBX-5-1", "\\\\usne-server\\Pathology\\Quantum"); 
}

在hl7消息中,OBX-5-1打印为“ \ E \ E \ usne-server \ E \ Pathology \ E \ Quantum”。

有人可以帮我打印正确的消息吗?

2 个答案:

答案 0 :(得分:3)

您可以参考HL7转义序列herehere的描述。

  

HL7定义了字符序列来表示HL7消息中其他不允许的“特殊”字符。这些序列以消息的转义字符(通常为“ \”)开头和结尾,并包含一个标识字符,后跟0个或多个字符。 HL7的最常见用途   HL7是由美国国家标准协会(ANSI)认可的标准制定组织,旨在制定基于共识的标准,代表医疗保健系统利益相关者的董事会观点。 HL7已编译了一组消息表单...更多    转义序列是转义HL7定义的分隔符。

Character   Description Conversion
\Cxxyy\     Single-byte character set escape sequence with two hexadecimal values not converted
\E\         Escape character converted to escape character (e.g., ‘\’)
\F\         Field separator converted to field separator character (e.g., ‘|’)
\H\         Start highlighting not converted
\Mxxyyzz\   Multi-byte character set escape sequence with two or three hexadecimal values (zz is optional) not converted
\N\         Normal text (end highlighting) not converted
\R\         Repetition separator converted to repetition separator character (e.g., ‘~’)
\S\         Component separator converted to component separator character (e.g., ‘^’)
\T\         Subcomponent separator converted to subcomponent separator character (e.g., ‘&’)
\Xdd…\      Hexadecimal data (dd must be hexadecimal characters) converted to the characters identified by each pair of digits
\Zdd…\      Locally defined escape sequence not converted

如果\是数据的一部分,则需要使用\E\对其进行转义。

所以您的价值:

  

“ \ home \ one \ two”

成为

  

“ \ E \ home \ E \ one \ E \ two”

关于第二期:

  

在hl7消息中,OBX-5-1打印为“ \ E \ E \ usne-server \ E \ Pathology \ E \ Quantum”

在读取值时,必须逆转该过程。也就是说,您应将\E\替换为\,以获得原始值。

答案 1 :(得分:1)

@Amit Joshi所述,这与HL7转义有关。您可能希望尝试将转义字符更改为一个反斜杠,该反斜杠不太可能出现在您的消息中,因为您的客户端似乎始终没有跟随它。

这将是MSH-2中的第三个字符。