@redoxengine/redox-hl7-v2
Version:
A parser for hl7 version 2 messages. Creates json from v2 messages, and creates v2 messages from json.
58 lines (43 loc) • 1.62 kB
JavaScript
/**
* Packs up a segment into the appropriate HL7 version of it
* @param {Object} segmentValue The json version of the segment
* @param {String} segmentName The name of the segment ot pack up
* @param {Object} schema The schema defining how to pack up the schema
* @param {Object} delimiters The delimiters used by this message
* @return {String} The string version of the segment
*/
module.exports = function writeSegment (segmentValue, segmentName, delimiters) {
var ret = '', segmentDef, fieldValue, fields, startIndex;
var self = this;
var schema = self._schema;
delimiters = delimiters || self._delimiters;
segmentDef = schema.segments[segmentName];
ret = segmentName;
if (segmentName === 'MSH') {
startIndex = 2;
ret += delimiters.field + delimiters.component+delimiters.repetition+delimiters.escape+delimiters.subComponent;
} else {
startIndex = 0;
}
for (var i = startIndex; i < segmentDef.fields.length; i++) {
ret += delimiters.field;
// We add 1 to i since HL7 is not zero based
if (!segmentValue[i + 1]) {
continue;
}
if (segmentDef.fields[i].maxOccurs !== '1') {
fields = segmentValue[i + 1];
for (var j = 0; j < fields.length; j++ ) {
fieldValue = fields[j];
if (j > 0) {
ret += delimiters.repetition;
}
ret += self.writeField(fieldValue, segmentDef.fields[i].field, delimiters);
}
} else {
fieldValue = segmentValue[i + 1];
ret += self.writeField(fieldValue, segmentDef.fields[i].field, delimiters);
}
}
return ret;
};