如何替换 Mirth Transformer 脚本中的 \T\?

How do you replace \T\ in a Mirth Transformer script?

HL7 消息使用一些特殊字符进行编码 |^&~ 然而,有时 OBR.4 中的测试名称包含 & 字符,根据 HL7 标准,它应编码为 \T\ 并由解析器替换为 &。不幸的是 \T 在 RegEx 中表示 tab 字符,我无法制定可以将 Vitamin B12 \T\ Folate 转换为 Vitamin B12 & Folate.

的表达式

尝试使用

var value = msg['OBR']['OBR.4'][OBR.4.2]; // returns "Vitamin B12 \T\ Folate"
value = value.replace(/\T\/g, value)

但是上面抛出异常TypeError: INVALID_CHARACTER_ERR: An invalid or illegal XML character is specified..

替换 RegEx 表达式是否需要以不同的方式表达才能在 Mirth 中工作?

你试过用这个代替吗?

value = value.replace(/T/g, "&");

已经是返回值

"Vitamin B12 \T\ Folate"

被解释为

"Vitamin B12 T Folate"

如果可行,您还需要以不替换任何其他不需要的“T”的方式处理此问题。

诀窍是确保字符串是 JavaScript 字符串而不是 Java 字符串。这是我最终创建的一个有效的函数

function _replaceHL7EncodedCharacters(value) {
        value = value.toString(); // convert to Javascript string
        value = value.replace(/\T\/g, '&');
        value = value.replace(/\R\/g, '~');
        value = value.replace(/\E\/g, '\');
        value = value.replace(/\F\/g, '|');
        value = value.replace(/\S\/g, '^');

        return value;
    }