0

我的频道正在接收 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....)。

在上面的设计中,没有做任何事情,在第一个变压器中捕获的数据在第二个变压器中可用并且它可以工作。

现在我计划摆脱这两个转换器并将它们移动到代码模板中,我计划在其中为每个转换器创建一个单独的函数。

但是我如何将第一个函数中捕获的变量传递给第二个函数?

谢谢

4

1 回答 1

0

当您说 2 个变压器时,我假设您的意思是同一个变压器中的两个步骤?不同的转换器步骤编译成相同的 javascript 函数,因此它们共享相同的变量上下文/范围。要将值实际传递给不同的转换器(例如从源转换器到目标转换器),通常您会为此使用 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);
于 2019-04-15T21:55:28.720 回答