首页 > 解决方案 > 为什么我的 mirth 代码没有从每个 DG1 段中捕获代码?

问题描述

我已经编写了这段代码以从每个 DG1 段中捕获代码,但它捕获“未定义”并插入 DB

for each (seg in msg.children()){ 
    if(seg.name().toString()=="DG1"){
      var vSET_ID =msg['DG1']['DG1.1'].toString();
    if(vSET_ID==1){
      var vPriCode = msg['DG1']['DG1.3']['DG1.3.1'].toString(),50);
    if(vSET_ID==2){
      var vSecCode1 = msg['DG1']['DG1.3']['DG1.3.1'].toString(),50);

谢谢

标签: javascriptmirthhl7-v2mirth-connect

解决方案


您的代码中有许多语法和逻辑错误。如果您打算在数据库编写器中使用它们,则必须将它们保存到 Map 变量(channelMap 或 connectorMap 在这里有意义。)如果您想从 DG1 段的第一次和第二次出现中捕获 DG1.3.1 ,您可能希望避免在转换器中使用 Javascript 步骤,并尝试用两个 Mapper 步骤替换您的代码,其中:

  1. 第一步
    • 变量:= vPriCode
    • 映射:= msg['DG1'][0]['DG1.3']['DG1.3.1'].toString()
  2. 第二步
    • 变量:= vSecCode
    • 映射:= msg['DG1'][1]['DG1.3']['DG1.3.1'].toString()

这些变量现在应该可以在数据库编写器的目标映射拖放部分中使用。这确实假设 SetID 按顺序出现。

(本来打算发截图的,但是我的名声不够高。)


推荐阅读