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

问题描述

使用一些特殊字符 |^&~ 对 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.

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

解决方法

你试过用这个代替吗?

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

作为已经返回的值

“维生素 B12 \T\ 叶酸”

被解释为

“维生素 B12 T 叶酸”

如果它有效,您还需要以不替换任何其他不需要的“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;
    }

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...