@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
JavaScript
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);
});
});