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!