UNPKG

@redoxengine/redox-hl7-v2

Version:

A parser for hl7 version 2 messages. Creates json from v2 messages, and creates v2 messages from json.

46 lines (33 loc) 1.25 kB
/** * Parses an individual segment in an hl7 v2 message * @param {String} segmentValue * @param {String} segmentName * @param {Object} [delimiters] Optional non default delimiters * @return {JSON} JSON version of the segment */ module.exports = function (segmentValue, segmentName, delimiters) { var ret = {}, segmentDef, fieldArray, fieldValue, fields; var self = this; var schema = self._schema; delimiters = delimiters || self._delimiters; segmentDef = schema.segments[segmentName]; fieldArray = segmentValue.split(delimiters.field); if (segmentName === 'MSH') { fieldArray.splice(1, 0, delimiters.field); } for (var i = 0; i < segmentDef.fields.length; i++) { fieldValue = fieldArray[i + 1]; if (!fieldValue) { continue; } if (segmentDef.fields[i].maxOccurs !== '1') { ret[i + 1] = []; fields = fieldValue.split(delimiters.repetition); for (var j = 0; j < fields.length; j++ ) { ret[i + 1][j] = self.parseField(fields[j], segmentDef.fields[i].field, delimiters); } } else { // We add 1 to i since HL7 is not zero based ret[i + 1] = self.parseField(fieldValue, segmentDef.fields[i].field, delimiters); } } return ret; };