комбинированный вложенный цикл foreach в mirth

Работа через CCDA для labs должна петля через родительский дочерний и дочерние сегменты, но Переменная для «Lab» не работает, однако» раздел «и» заголовок » работают:

var file=""; var header="";  var Lab=""; var section="";


header=msg['recordTarget']['patientRole']['patient']['name']['family'].toString()+"|"+ //last name msg['recordTarget']['patientRole']['patient']['name']['given'].toString()+"|"+ //first name msg['recordTarget']['patientRole']['patient']['administrativeGenderCode']['@code'].toString()+"|"+ //gender msg['recordTarget']['patientRole']['patient']['birthTime']['@value'].toString(); //DOB msg['component']['structuredBody']['component'][8]['section']['title'].toString()
               for each (seg in msg..component)
                {    Lab = "";
                  Lab =seg['section']['title'].toString();
                  if (section == "Results")
                 {
                   for each (seg in seg..entry..organizer)
                {

                       Lab+= seg ['code']['@code'].toString()+"|"+ //LOINC code
                       seg ['code']['@displayName'].toString()+"|"+//actText
                       seg ['effectiveTime']['@value'].toString();//collection timestamp

                          }
                       }
                } for each (seg in msg..component)
                {
                  section = "";
                  section =seg['section']['title'].toString();
                  if (section == "Results")

                 {
                   for each (seg in seg..entry..organizer..component)
                {

                       file+=header+"|"+Lab+"|"+
                       seg ['observation']['code']['@code'].toString()+"|"+ //LOINC code
                       seg ['observation']['code']['@displayName'].toString()+"|"+//actText
                       seg ['observation']['effectiveTime']['@value'].toString()+"|"+//result timestamp
                       seg ['observation']['value']['@value'].toString()+"|"+//result value
                       seg ['observation']['value']['@unit'].toString()+"|"+//result unit
                       seg ['observation']['interpretationCode']['@code'].toString()+"!!!"+"r"+"n";//interpretationCode

                          }
                       }
                }

channelMap.put("FILE",file);

1 ответ

  1. ‘for each’ является устаревшим, используйте ‘for’;

    синтаксическая ошибка в строке 2 (однострочные комментарии )
    заголовок.=..

    оператор должен быть разделен на несколько строк

     header=msg['recordTarget']['patientRole']['patient']['name']['family'].toString()+"|"+ //last name
     msg['recordTarget']['patientRole']['patient']['name']['given'].toString()+"|"+ //first name 
     msg['recordTarget']['patientRole']['patient']['administrativeGenderCode']['@code'].toString()+"|"+ //gender 
     msg['recordTarget']['patientRole']['patient']['birthTime']['@value'].toString(); //DOB 
     msg['component']['structuredBody']['component'][8]['section']['title'].toString();
    

    синтаксис dot dot работает только с литералами чисел

    556..toString()==="556"
    

    заменить все. . от. (единая точка)

    в первом разделе цикла никогда не изменяет свое начальное значение «»;
    section = = «Results» всегда принимает значение false, его последующая ветвь if никогда не выполняется.

    вы используете синтаксический анализатор xml для json ?
    я не считаю, что hou нужно вызывать toString()
    приведение выполняется автоматически (string + something преобразуется интерпретатором в string + something.toString() )

    var file="",
      header="",
      Lab="",
      section="";
    
    
    header=msg['recordTarget']['patientRole']['patient']['name']['family'].toString()+"|"+ //last name
      msg['recordTarget']['patientRole']['patient']['name']['given'].toString()+"|"+ //first name 
      msg['recordTarget']['patientRole']['patient']['administrativeGenderCode']['@code'].toString()+"|"+ //gender 
      msg['recordTarget']['patientRole']['patient']['birthTime']['@value'].toString(); //DOB 
      msg['component']['structuredBody']['component'][8]['section']['title'].toString();
    
    for(seg in msg.component){
      Lab = "";
      Lab =seg['section']['title'].toString();
      if (section == "Results"){
          for(seg in seg  .entry  .organizer){
    
         Lab+= seg ['code']['@code'].toString()+"|"+ 
            //LOINC code
          seg ['code']['@displayName'].toString()+"|"+
            //actText
          seg ['effectiveTime']['@value'].toString();
            //collection timestamp
    
        }
      }
    }
    
    for(seg in msg.component){
      section = "";
      section =seg['section']['title'].toString();
      if (section == "Results"){
       for(seg in seg.entry.organizer.component){
        file+=header+"|"+Lab+"|"+
        seg ['observation']['code']['@code'].toString()+"|"+
          //LOINC code
        seg ['observation']['code']['@displayName'].toString()+"|"+
          //actText
        seg ['observation']['effectiveTime']['@value'].toString()+"|"+
          //result timestamp
        seg ['observation']['value']['@value'].toString()+"|"+
          //result value
        seg ['observation']['value']['@unit'].toString()+"|"+
          //result unit
        seg ['observation']['interpretationCode']['@code'].toString()+"!!!"+"\r"+"\n";
          //interpretationCode
        }
      }
    }
    
    channelMap.put("FILE",file);