模板字符串在 Mirth 转换器映射中被写为文字?

Template string being written as literal in Mirth transformer mapping?

在 Mirth (v3.10) 转换器映射中将模板字符串写为文字? 我正在尝试通过将 MSH[7] 字段映射到 javascript 来填充来自 Mirth Source Transformer 的消息中的 HL7 (v2.3) MSH.7 (date/time) 字段-班轮

`${new Date().getFullYear()}` + `${new Date().getMonth()+1}`.padStart(2, "0") + `${new Date().getDate()+1}`.padStart(2, "0") + `${new Date().getHours()}`.padStart(2, "0") + `${new Date().getMinutes()}`.padStart(2, "0") + `${new Date().getSeconds()}`.padStart(2, "0")

(以 YYYMMDDHHMMSS 格式获取日期时间)但是在查看结果时(在通道目的地写入的结果文件中)我看到文字代码 作为文本而不是它应该评估的内容到(尽管我的理解是 Mirth does support 现在是字符串模板)。该步骤在编辑器中成功验证,当我在 JS 上下文中使字符串错误时出错,因此我假设(至少在那个阶段)它 被解释为 JS 代码

也试过

(`${new Date().getFullYear()}` + `${new Date().getMonth()+1}`.padStart(2, "0") + `${new Date().getDate()+1}`.padStart(2, "0") + `${new Date().getHours()}`.padStart(2, "0") + `${new Date().getMinutes()}`.padStart(2, "0") + `${new Date().getSeconds()}`.padStart(2, "0")).toString()

所以在“生成的代码”选项卡中,我看到了

tmp['MSH'][i]['MSH.7']['MSH.7.1'] = validate('', `${new Date().getFullYear()}` + `${new Date().getMonth()+1}`.padStart(2, "0") + `${new Date().getDate()+1}`.padStart(2, "0") + `${new Date().getHours()}`.padStart(2, "0") + `${new Date().getMinutes()}`.padStart(2, "0") + `${new Date().getSeconds()}`.padStart(2, "0")).toString(), new Array());

但得到了类似的结果(即使在 Node CLI 解释器上测试时两者都按预期工作)。

有经验的人知道这里会发生什么吗? (PS。是否有更简单的方法将日期时间输入该字段)?

只是一个解决方法(为什么 Mirth 不能使用 JS 模板字符串仍然未知)


仍然不知道为什么模板字符串不起作用,但在使用“参考”选项卡并查看 community forums 后,通过拖动找到了 解决方法 映射字段中的获取当前日期引用并指定所需的格式模式,如下所示。

执行此操作并重新部署频道后,我看到日期格式与我尝试的方式相同(尽管如果有人能解释为什么模板字符串计算为我标记的文字代码这是公认的答案,因为我仍然没有看到为什么它们实际上不起作用的答案)。

Mozilla Rhino 是 (Mirth) Connect 使用的 javascript 引擎。目前仍不支持模板文字。请参阅下面的列表,了解欢笑中存在和缺失的特征。检查您的 mirth 安装目录中的 server-lib 目录并查找 rhino jar 以查看哪个版本与您的 mirth 版本打包在一起。只有 mirth 3.7 及更高版本允许您设置启用某些功能所需的语言版本。语言版本为零或“默认”的旧版本 运行。

https://mozilla.github.io/rhino/compat/engines.html#ES2015-syntax-template-literals