【问题标题】:Accessing global variables inside a Mirth database writer query在 Mirth 数据库编写器查询中访问全局变量
【发布时间】:2021-02-02 18:46:02
【问题描述】:

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

使用较旧的 Mirth Connect 3.4.1 设置。

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

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

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

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

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

提前致谢!

【问题讨论】:

    标签: mirth


    【解决方案1】:

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

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

    【讨论】:

    • 我想从原始 msg 中获取一个值,并使用它作为键从全局通道映射中查找相应的数据集。我已经通过部署 JS 脚本填充了地图,但据我所知,实际访问该地图以进行查找的唯一方法是数据库编写器使用的是 .JS,而不是 SQL。很好奇是否有某种方法可以让 SQL 留在原处,并将 JS 查找的结果用作 SQL 语句中的参数。不过,认为这必须是在 JS 中完成的查询。没什么大不了的,我想只是想保持它(太)简单:)
    【解决方案2】:

    从您对@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));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-11
      相关资源
      最近更新 更多