Как передать переменные между 2 шаблонами кода типа функции - PullRequest
0 голосов
/ 14 апреля 2019

Мой канал получает сообщения HL7, и у меня есть 2 преобразователя в моем канале. Я собираю все данные из сообщения HL7 в одном преобразователе, например:

- var vACCNo= msg['PID']['PID.17']['PID.17.1'].toString();
- var vSTATE=msg['PID']['PID.11']['PID.11.4'].toString();
  • .... Во втором преобразователе я помещаю все эти данные во внешнюю БД в виде оператора вставки, например вставки в значения таблицы x (vACCNo, vSTATE ....).

В приведенной выше конструкции без каких-либо действий данные, полученные в первом преобразователе, доступны во втором, и это работает.

Теперь я планирую избавиться от этих 2 преобразователей и перенести их в шаблоны кода, где я планирую создать отдельную функцию для каждого из этих преобразователей.

Но как мне передать переменные, записанные в первой функции, во вторую?

Спасибо

1 Ответ

0 голосов
/ 16 апреля 2019

Когда вы говорите 2 трансформатора, я предполагаю, что вы имеете в виду два шага в одном и том же трансформаторе? Различные шаги трансформера компилируются в одну и ту же функцию javascript, поэтому они совместно используют одну и ту же переменную context / scope. Для фактической передачи значений другому преобразователю (например, от исходного преобразователя к конечному преобразователю) обычно вы должны использовать для этого channelMap.

В вашей (предполагаемой) ситуации вы можете добавить все свои переменные в объект, который вы возвращаете из первой функции. Передайте объект второй функции.

Шаблоны кодов

function getValues(msg) {
    var fieldWithComplicatedAssignment = '';
    var result = {
        vACCNo: msg['PID']['PID.17']['PID.17.1'].toString(),
        vSTATE: msg['PID']['PID.11']['PID.11.4'].toString(),
        fieldWithComplicatedAssignment: fieldWithComplicatedAssignment
    };
    if (optionalCondition) {
        result.optionalField = '';
    }
    return result;
}

function insertIntoDB(obj) {
    // insert into table x values (obj.vACCNo, obj.vSTATE....)
    // return a result status indicating succeeded or failure (or
    // just throw an error from this function)
}

Ступеньки трансформатора

  1. var obj = getValues(msg);
  2. var result = insertIntoDb(obj);
...