【问题标题】:How to use Escape character in hl7 message如何在 hl7 消息中使用转义字符
【发布时间】:2019-04-22 13:12:30
【问题描述】:

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

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”。

谁能帮我打印正确的信息。

【问题讨论】:

    标签: java hl7 mirth hl7-v2


    【解决方案1】:

    您可以参考 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\一个\两个"

    变成

    "\E\home\E\one\E\two"

    关于第二期:

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

    在读取值时,您必须反转该过程。这意味着,您应该将\E\ 替换为\ 以获取原始值。

    【讨论】:

      【解决方案2】:

      正如@Amit Joshi 提到的,这与 HL7 转义有关。您可能想尝试将转义字符更改为反斜杠以外的字符,因为您的客户似乎无论如何都没有关注它,因此不太可能出现在您的消息中。

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

      【讨论】:

      • 好点。但在这种情况下,这个新角色不应该是价值的一部分,应该像我的回答中提到的那样进行转义。 +1。
      • 虽然根据 HL7 规范这是有效的,但数量惊人的医疗保健系统不支持更改控制字符。
      • 如果你密切关注原帖,图书馆会自动转义,而下游系统没有转义,因此我建议将转义字符更改为不太可能出现在消息中的内容.它会被图书馆逃脱,所以不用担心,但下游似乎已经忽略了它,所以改变它不会有什么坏处。
      猜你喜欢
      • 2020-12-29
      • 1970-01-01
      • 1970-01-01
      • 2016-11-25
      • 1970-01-01
      • 2011-07-15
      • 1970-01-01
      • 1970-01-01
      • 2018-12-23
      相关资源
      最近更新 更多