0

I have DB from where I'm getting my data of measurements. This is my code for looping through my measurements and adding them to OBX segments:

//getting MeasurementsData
    var data = msg['measurements_measurement_data'].toString();
    logger.info(data);  
    
    //inserting data in dictionary
    var dictMeasurements = {};
    for (var measurement in data) {
        dictMeasurements[measurement] = data[measurement];
    }
    
    var dictSize = Object.keys(dictMeasurements).length;
    var measureResult;
    var measureType;
    var counter = 1;
    
    //Creating OBX measurements segments
    while (counter <= dictSize) {
        for (var key in dictMeasurements) {
            //measure and result of measure
            measureType = key;
            measureResult = dictMeasurements[key];
    
            createSegment('OBX', tmp, counter);
            
            tmp['OBX'][counter]['OBX.1']['OBX.1.1'] = counter;
            //ST-string or NM-numeric
            tmp['OBX'][counter]['OBX.2']['OBX.2.1'] = isNumeric(measureResult);
            tmp['OBX'][counter]['OBX.3']['OBX.3.1'] = ('ABI.' + measureType);
            tmp['OBX'][counter]['OBX.3']['OBX.3.2'] = measureType;
            tmp['OBX'][counter]['OBX.5']['OBX.5.1'] = measureResult;
            tmp['OBX'][counter]['OBX.11']['OBX.11.1'] = 'F';
            counter++;
        }
    }

If I run this code locally, it returns what I want (measurement type and its result), like:
cuffSizeArmLeft 1
cuffSizeArmRight
1
diaArmLeft 66
diaArmRight 66

But when I run it on MirthConnect chanel I get every letter from measure type in it's own column:

ST|ABI.0^0||{||||||F
OBX|2|ST|ABI.1^1||"||||||F
OBX|3|ST|ABI.2^2||c||||||F
OBX|4|ST|ABI.3^3||u||||||F
OBX|5|ST|ABI.4^4||f||||||F
OBX|6|ST|ABI.5^5||f||||||F
OBX|7|ST|ABI.6^6||S||||||F
OBX|8|ST|ABI.7^7||i||||||F
OBX|9|ST|ABI.8^8||z||||||F
OBX|10|ST|ABI.9^9||e||||||F
OBX|11|ST|ABI.10^10||A||||||F
OBX|12|ST|ABI.11^11||r||||||F
OBX|13|ST|ABI.12^12||m||||||F
OBX|14|ST|ABI.13^13||L||||||F
OBX|15|ST|ABI.14^14||e||||||F
OBX|16|ST|ABI.15^15||f||||||F
OBX|17|ST|ABI.16^16||t||||||F
OBX|18|ST|ABI.17^17||"||||||F

  • and my key in for loop is returning some numbers instead of measurement type, like it does locally.

This is similar question, but it didn't helped me. Creating OBX segments from multiple DB rows

My another problem is that my function "isNumeric", is always returning a ST(string) instead a NM(numeric) type. Locally runs perfect.

function isNumeric(result) {
    var reg = /^\d*\.?\d+$/;
    if (typeof(result) == 'number') { return 'NM'; }
    else { return 'ST'; }
}

console.log(isNumeric(140));  //return NM
console.log(isNumeric('test')); //return ST

Thanks for your help!

tGitm
  • 45
  • 8

0 Answers0