UNPKG

@redoxengine/redox-hl7-v2

Version:

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

315 lines (300 loc) 5.76 kB
var json = { "MSH": { "0": "MSH", "1": "|", "2": "^~&", "3": { "1": "HMS03" }, "4": { "1": "NCA" }, "5": { "1": "EPIC" }, "6": { "1": "NCA" }, "7": { "1": "200909261522" }, "9": { "1": "DFT", "2": "P03" }, "10": "152210", "11": { "1": "T" }, "12": { "1": "2.5" } }, "EVN": { "0": "EVN", "1": "P03", "6": { "1": "200909261607" } }, "PID": { "0": "PID", "3": [ { "1": "11401562", "2": "", "3": "", "4": { "1": "1013" }, "5": "MRN" } ], "5": [ { "1": { "1": "HALL" }, "2": "MARCUS", "3": "A" } ], "7": { "1": "19341230" }, "8": "F", "11": [ { "1": { "1": "1234 Some Street" }, "2": "", "3": "Davis", "4": "CA", "5": "95616" } ], "13": [ { "1": "800123456" } ], "18": { "1": "SSC313010" }, "19": "05138985" }, "PV1": { "0": "PV1", "3": { "1": "NW4" }, "7": [ { "1": "2331", "2": { "1": "SEEGER, THOMAS" }, "3": "A", "4": "", "5": "", "6": "", "7": "", "8": "", "9": { "1": "1003" }, "10": "", "11": "", "12": "", "13": "PRN" } ], "19": { "1": "86210313010" }, "44": { "1": "20150501" } }, "FINANCIAL": [ { "FT1": { "0": "FT1", "1": "1", "2": "691234", "4": { "1": { "1": "20090923" }, "2": { "1": "20090923" } }, "6": "CG", "7": { "1": "84460", "2": "", "3": "PROC" }, "10": "1", "11": { "1": { "1": "125.10" } }, "13": { "1": "MED", "2": "", "3": "SRCA" }, "19": [ { "1": "123.12", "2": "", "3": "I9" } ], "20": [ { "1": "2331", "2": { "1": "SEEGER" }, "3": "THOMAS", "4": "A", "5": "", "6": "", "7": "", "8": "", "9": { "1": "NPI" }, "10": "1003", "11": "", "12": "", "13": "", "14": { "1": "PRN" } } ], "21": [ { "1": "2335", "2": { "1": "COOPER" }, "3": "GEORGE", "4": "A", "5": "", "6": "", "7": "", "8": "", "9": { "1": "NPI" }, "10": "1003", "11": "", "12": "", "13": "", "14": { "1": "PRN" } } ], "23": { "1": "1024123" }, "25": { "1": "99213", "2": "Office Visit", "3": "ICD9" }, "26": [ { "1": "MOD1" }, { "1": "MOD2" } ], "29": { "1": "61519-1234-12-01", "2": "NDC Description" } } } ] }; var outputHL7 = 'MSH|^~\\&|HMS03|NCA|EPIC|NCA|200909261522||DFT^P03|152210|T|2.5|||||||||\r\ EVN|P03|||||200909261607|\r\ PID|||11401562^^^1013^MRN||HALL^MARCUS^A||19341230|F|||1234 Some Street^^Davis^CA^95616||800123456|||||SSC313010|05138985||||||||||||||||||||\r\ PV1|||NW4||||2331^SEEGER, THOMAS^A^^^^^^1003^^^^PRN||||||||||||86210313010|||||||||||||||||||||||||20150501||||||||\r\ FT1|1|691234||20090923^20090923||CG|84460^^PROC|||1|125.10||MED^^SRCA||||||123.12^^I9|2331^SEEGER^THOMAS^A^^^^^NPI^1003^^^^PRN|2335^COOPER^GEORGE^A^^^^^NPI^1003^^^^PRN||1024123||99213^Office Visit^ICD9|MOD1~MOD2|||61519-1234-12-01^NDC Description||\r\ '; var ack = 'MSH|^~\\&|MIRTH||REDOX|RDX|20150915004731||ACK^S12|20150915004731|T|2.3|||||||||\rMSA|AA|1||||\r'; var ackJSON = { "MSH": { "0": "MSH", "1": "|", "2": "^~\\&", "3": { "1": "MIRTH" }, "5": { "1": "REDOX" }, "6": { "1": "RDX" }, "7": { "1": "20150915004731" }, "9": { "1": "ACK", "2": "S12" }, "10": "20150915004731", "11": { "1": "T" }, "12": { "1": "2.3" } }, "MSA": { "0": "MSA", "1": "AA", "2": "1" } }; describe('Generate an hl7 message', function() { var generator; before(function () { var v2 = require('../../'); generator = new v2.Generator(); }); it('should write an hl7 message', function () { var hl7 = generator.write(json); expect(hl7).to.equal(outputHL7); }); it('should write an ACK message', function () { var hl7 = generator.write(ackJSON); expect(hl7).to.equal(ack); }); it('should write using alternate delimiters', function () { var generator = new v2.Generator(null, { field: '*', component: '@', repetition: '+', subComponent: '$', escape: '\\' }); outputHL7 = outputHL7.replace(/\|/g, '*').replace(/\^/g, '@').replace(/~/g, '+').replace(/&/g, '$'); json.MSH[1] = '*'; json.MSH[2] = '@+\\$'; var hl7 = generator.write(json); expect(hl7).to.equal(outputHL7); }); });