在 Mirth 数据库编写器查询中访问全局变量

问题描述

这里对 Mirth 还很陌生,我还在学习命名法、术语和架构 - 所以在这里请耐心等待 :)

使用旧版 Mirth Connect 3.4.1 设置。

问题是:有没有办法在给定通道的目标映射中访问全局变量或映射查找值,其中通道目标使用数据库编写器连接器,并且在 sql 模式下,而不是 Javascript?

目标是从原始输入消息中获取一个值,在查找中匹配它,然后将其结果用作数据库编写器中插入语句的一部分。

例如:假设消息包含属性 foo。我想查找它并将结果用作查询中的 ${bar}

INSERT INTO ... (...,mrn,name,foo,bar,... )
    VALUES (...,${mrn},${name},${foo},${bar},...))

希望这是有道理的。这在 Javascript 中可能是可行的,因为您对事物有更多的控制权,但我正在处理大量的频道,需要进行一些更改。如果可能的话,试图在这里找到一条更短的路径。

提前致谢!

解决方法

当您说“在查找中匹配”时,您的意思是在 globalMap/channelMap 数组中,还是在接收到的消息和插入语句之间执行 SQL 选择?

如果您只是想在插入语句中使用入站消息中的值,您应该能够将消息字段直接引用为 ${msg['PID']['PID.3'].toString()} 来表示 MRN。

,

从您对@workwm 的回答的评论中收集更多信息,最直接的方法是在您设置 foo 映射变量的值后在转换器中。

$co('bar',$($('foo')))
// or the equivalent,assuming foo is in the connectorMap and
// the value you want to lookup is in the globalMap
connectorMap.put('bar',globalMap.get(connectorMap.get('foo')))

也可以用局部变量简化

var foo = msg.whatever;
$co('foo',foo);
$co('bar',$(foo));

相关问答

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