Строка шаблона записывается как литерал в отображении Mirth transformer?

#mirth

#веселье

Вопрос:

Строка шаблона записывается как литерал в отображении трансформатора Mirth (v3.10)? Я пытаюсь заполнить поле HL7 (v2.3) MSH.7 (дата / время) в сообщении от преобразователя источника Mirth, сопоставив поле MSH [7] с однострочным javascript

 `${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")
 

введите описание изображения здесь
(чтобы получить дату и время в формате ГГГГМДДХХМ ММСС), но при просмотре результата (в результирующем файле, который записывается в пункт назначения канала) я вижу буквальный код как текст, а не то, что он должен оценивать (хотя, насколько я понимаю, Mirth теперь поддерживает строковые шаблоны). Шаг успешно проверяется в редакторе и выдает ошибку, когда я делаю строку неправильной в контексте 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. есть ли более простой способ ввести дату и время в это поле)?

Комментарии:

1. В том сообщении на форуме, на которое вы ссылались, я объяснил, почему строки шаблонов по-прежнему не поддерживаются. Движком javasript от Mirth является Mozilla Rhino, и они все еще не поддерживаются в Rhino. В нижней части сообщения на форуме mirth есть ссылки на проблемы Rhino, которые все еще открыты в отношении строк шаблонов.

Ответ №1:

Mozilla Rhino — это движок javascript, используемый (Mirth) Connect. Литералы шаблона в настоящее время по-прежнему не поддерживаются. Ниже приведен список функций, которые присутствуют и отсутствуют в mirth. Проверьте каталог server-lib в вашем каталоге установки mirth и найдите rhino jar, чтобы узнать, какая версия поставляется с вашей версией mirth. Только версии mirth 3.7 и выше позволяют установить языковую версию, необходимую для включения некоторых функций. Более старые версии работают с языковой версией, равной нулю или «по умолчанию».

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

Ответ №2:

Просто обходной путь (почему Mirth не может использовать строки шаблона JS, пока неизвестно)


До сих пор не знаю, почему строка шаблона не работает, но, немного поиграв с вкладкой ссылок и просмотрев форумы сообщества, нашел обходной путь, перетащив ссылку «Получить текущую дату» в поле сопоставления и указав желаемый шаблон формата, как показано ниже.

введите описание изображения здесь

После выполнения этого и повторного развертывания канала я вижу дату, отформатированную так, как я пытался сделать (хотя, если кто-нибудь может объяснить, почему строка шаблона вычисляется до буквального кода, я бы пометил это как принятый ответ, потому что я до сих пор не видел ответа на вопрос, почему они на самом деле не работают).