__tests__/siu/index.js
import {decode} from '../../src/lib/parser'
import s12Mapping from './config/s12.json'
import s13Mapping from './config/s13.json'
import s14Mapping from './config/s14.json'
import s15Mapping from './config/s15.json'
import s17Mapping from './config/s17.json'
import s26Mapping from './config/s26.json'
it(`S12 - Notification of new appointment booking`, () => {
const s12 = `MSH|^~\\&|mllp_http_proxy|proxy00-prodaz|mllp_http_proxypartenaire|proxy00-prodpartenaire|20160923155836||SIU^S12|154779|P|2.5.1|||||FRA|UTF-8|\rSCH||49849903800^DimSolution||||100|||||^^30^20161231110000|||||10101041431^KAYSSIEH^BASSEL||||ODS|||||Booked|\rPID|||123456^^^ODS^^PI||DO BAIRRO^Dimitri^^^^^L||19920506|M|Nom usuel||Avenue des Champs-Élysées^^Paris^^75000^^^^^||0100000000^^^dimitri.dobairro@dimsolution.com^^^^~0200000000^^^^^^^|\rRGS|1\rAIG|1|||10101041431@750057689\rNTE|||My comment`;
const obj = decode(s12, s12Mapping)
expect(obj.msh.message_datetime).toEqual('20160923155836');
expect(obj.msh.message_type).toEqual('SIU');
expect(obj.msh.message_type_ref).toEqual('S12');
expect(obj.msh.message_control_id).toEqual('154779');
expect(obj.msh.principal_language_of_message).toEqual('FRA');
expect(obj.msh.character_set).toEqual('UTF-8');
expect(obj.pid.id).toEqual('123456');
expect(obj.pid.origin).toEqual('ODS');
expect(obj.pid.first_name).toEqual('Dimitri');
expect(obj.pid.last_name).toEqual('DO BAIRRO');
expect(obj.pid.birthdate).toEqual('19920506');
expect(obj.pid.gender).toEqual('M');
expect(obj.pid.gender).toEqual('M');
expect(obj.pid.street_name).toEqual('Avenue des Champs-Élysées');
expect(obj.pid.city).toEqual('Paris');
expect(obj.pid.phone[0]).toEqual('0100000000');
expect(obj.pid.phone[1]).toEqual('0200000000');
expect(obj.pid.email[0]).toEqual('dimitri.dobairro@dimsolution.com');
expect(obj.pid.email[1]).toEqual('');
expect(obj.sch.id).toEqual('49849903800');
expect(obj.sch.origin).toEqual('DimSolution');
expect(obj.sch.length).toEqual('100');
expect(obj.sch.minutes).toEqual('30');
expect(obj.sch.datetime).toEqual('10101041431');
expect(obj.sch.last_name).toEqual('KAYSSIEH');
expect(obj.sch.first_name).toEqual('BASSEL');
expect(obj.sch.source).toEqual('ODS');
expect(obj.sch.status).toEqual('Booked');
expect(obj.rgs.id).toEqual('1');
expect(obj.aig.id).toEqual('1');
expect(obj.aig.rpps_finess).toEqual('10101041431@750057689');
expect(obj.nte.comment).toEqual('My comment');
});
it(`S13 - Notification of appointment rescheduling`, () => {
const s13 = `MSH|^~\\&|mllp_http_proxy|proxy00-prodaz|mllp_http_proxypartenaire|proxy00-prodpartenaire|20160923155836||SIU^S13|154779|P|2.5.1|||||FRA|UTF-8|\rSCH||49849903800^DimSolution||||100|||||^^30^20161231110000|||||10101041431^KAYSSIEH^BASSEL||||ODS|||||Booked|\rPID|||123456^^^ODS^^PI||DO BAIRRO^Dimitri^^^^^L||19920506|M|Nom usuel||Avenue des Champs-Élysées^^Paris^^75000^^^^^||0100000000^^^dimitri.dobairro@dimsolution.com^^^^~0200000000^^^^^^^|\rRGS|1\rAIG|1|||10101041431@750057689\rNTE|||My comment`;
const obj = decode(s13, s13Mapping);
expect(obj.msh.message_datetime).toEqual('20160923155836');
expect(obj.msh.message_type).toEqual('SIU');
expect(obj.msh.message_type_ref).toEqual('S13');
expect(obj.msh.message_control_id).toEqual('154779');
expect(obj.msh.principal_language_of_message).toEqual('FRA');
expect(obj.msh.character_set).toEqual('UTF-8');
expect(obj.pid.id).toEqual('123456');
expect(obj.pid.origin).toEqual('ODS');
expect(obj.pid.first_name).toEqual('Dimitri');
expect(obj.pid.last_name).toEqual('DO BAIRRO');
expect(obj.pid.birthdate).toEqual('19920506');
expect(obj.pid.gender).toEqual('M');
expect(obj.pid.gender).toEqual('M');
expect(obj.pid.street_name).toEqual('Avenue des Champs-Élysées');
expect(obj.pid.city).toEqual('Paris');
expect(obj.pid.phone[0]).toEqual('0100000000');
expect(obj.pid.phone[1]).toEqual('0200000000');
expect(obj.pid.email[0]).toEqual('dimitri.dobairro@dimsolution.com');
expect(obj.pid.email[1]).toEqual('');
expect(obj.sch.id).toEqual('49849903800');
expect(obj.sch.origin).toEqual('DimSolution');
expect(obj.sch.length).toEqual('100');
expect(obj.sch.minutes).toEqual('30');
expect(obj.sch.datetime).toEqual('10101041431');
expect(obj.sch.last_name).toEqual('KAYSSIEH');
expect(obj.sch.first_name).toEqual('BASSEL');
expect(obj.sch.source).toEqual('ODS');
expect(obj.sch.status).toEqual('Booked');
expect(obj.rgs.id).toEqual('1');
expect(obj.aig.id).toEqual('1');
expect(obj.aig.rpps_finess).toEqual('10101041431@750057689');
expect(obj.nte.comment).toEqual('My comment');
});
it(`S14 - Notification of appointment modification`, () => {
const s14 = `MSH|^~\\&|mllp_http_proxy|proxy00-prodaz|mllp_http_proxypartenaire|proxy00-prodpartenaire|20160923155836||SIU^S14|154779|P|2.5.1|||||FRA|UTF-8|\rSCH||49849903800^DimSolution||||100|||||^^30^20161231110000|||||10101041431^KAYSSIEH^BASSEL||||ODS|||||Booked|\rPID|||123456^^^ODS^^PI||DO BAIRRO^Dimitri^^^^^L||19920506|M|Nom usuel||Avenue des Champs-Élysées^^Paris^^75000^^^^^||0100000000^^^dimitri.dobairro@dimsolution.com^^^^~0200000000^^^^^^^|\rRGS|1\rAIG|1|||10101041431@750057689\rNTE|||My comment`;
const obj = decode(s14, s14Mapping);
expect(obj.msh.message_datetime).toEqual('20160923155836');
expect(obj.msh.message_type).toEqual('SIU');
expect(obj.msh.message_type_ref).toEqual('S14');
expect(obj.msh.message_control_id).toEqual('154779');
expect(obj.msh.principal_language_of_message).toEqual('FRA');
expect(obj.msh.character_set).toEqual('UTF-8');
expect(obj.pid.id).toEqual('123456');
expect(obj.pid.origin).toEqual('ODS');
expect(obj.pid.first_name).toEqual('Dimitri');
expect(obj.pid.last_name).toEqual('DO BAIRRO');
expect(obj.pid.birthdate).toEqual('19920506');
expect(obj.pid.gender).toEqual('M');
expect(obj.pid.gender).toEqual('M');
expect(obj.pid.street_name).toEqual('Avenue des Champs-Élysées');
expect(obj.pid.city).toEqual('Paris');
expect(obj.pid.phone[0]).toEqual('0100000000');
expect(obj.pid.phone[1]).toEqual('0200000000');
expect(obj.pid.email[0]).toEqual('dimitri.dobairro@dimsolution.com');
expect(obj.pid.email[1]).toEqual('');
expect(obj.sch.id).toEqual('49849903800');
expect(obj.sch.origin).toEqual('DimSolution');
expect(obj.sch.length).toEqual('100');
expect(obj.sch.minutes).toEqual('30');
expect(obj.sch.datetime).toEqual('10101041431');
expect(obj.sch.last_name).toEqual('KAYSSIEH');
expect(obj.sch.first_name).toEqual('BASSEL');
expect(obj.sch.source).toEqual('ODS');
expect(obj.sch.status).toEqual('Booked');
expect(obj.rgs.id).toEqual('1');
expect(obj.aig.id).toEqual('1');
expect(obj.aig.rpps_finess).toEqual('10101041431@750057689');
expect(obj.nte.comment).toEqual('My comment');
});
it(`S15 - Notification of appointment cancellation`, () => {
const s15 = `MSH|^~\\&|mllp_http_proxy|proxy00-prodaz|mllp_http_proxypartenaire|proxy00-prodpartenaire|20161231110000||SIU^S15|256660|P|2.5.1|||||FRA|UTF-8|\rSCH||49849903800^DimSolution||||100|||||^^30^20161231110000|||||10101041431^KAYSSIEH^BASSEL||||ODS|||||Booked|\rPID|||123456^^^ODS^^PI||DO BAIRRO^Dimitri^^^^^L||19920506|M|Nom usuel||Avenue des Champs-Élysées^^Paris^^75000^^^^^||0100000000^^^dimitri.dobairro@dimsolution.com^^^^~0200000000^^^^^^^|\rRGS|1\rAIG|1|||10101041431@750057689\rNTE|||My comment`;
const obj = decode(s15, s15Mapping);
expect(obj.msh.message_datetime).toEqual('20161231110000');
expect(obj.msh.message_type).toEqual('SIU');
expect(obj.msh.message_type_ref).toEqual('S15');
expect(obj.msh.message_control_id).toEqual('256660');
expect(obj.msh.principal_language_of_message).toEqual('FRA');
expect(obj.msh.character_set).toEqual('UTF-8');
expect(obj.pid.id).toEqual('123456');
expect(obj.pid.origin).toEqual('ODS');
expect(obj.pid.first_name).toEqual('Dimitri');
expect(obj.pid.last_name).toEqual('DO BAIRRO');
expect(obj.pid.birthdate).toEqual('19920506');
expect(obj.pid.gender).toEqual('M');
expect(obj.pid.gender).toEqual('M');
expect(obj.pid.street_name).toEqual('Avenue des Champs-Élysées');
expect(obj.pid.city).toEqual('Paris');
expect(obj.pid.phone[0]).toEqual('0100000000');
expect(obj.pid.phone[1]).toEqual('0200000000');
expect(obj.pid.email[0]).toEqual('dimitri.dobairro@dimsolution.com');
expect(obj.pid.email[1]).toEqual('');
expect(obj.sch.id).toEqual('49849903800');
expect(obj.sch.origin).toEqual('DimSolution');
expect(obj.sch.length).toEqual('100');
expect(obj.sch.minutes).toEqual('30');
expect(obj.sch.datetime).toEqual('10101041431');
expect(obj.sch.last_name).toEqual('KAYSSIEH');
expect(obj.sch.first_name).toEqual('BASSEL');
expect(obj.sch.source).toEqual('ODS');
expect(obj.sch.status).toEqual('Booked');
expect(obj.rgs.id).toEqual('1');
expect(obj.aig.id).toEqual('1');
expect(obj.aig.rpps_finess).toEqual('10101041431@750057689');
expect(obj.nte.comment).toEqual('My comment');
});
it(`S17 - Notification of appointment deletion`, () => {
const s17 = `MSH|^~\\&|mllp_http_proxy|proxy00-prodaz|mllp_http_proxypartenaire|proxy00-prodpartenaire|20161231110000||SIU^S17|256660|P|2.5.1|||||FRA|UTF-8|\rSCH||49849903800^DimSolution||||100|||||^^30^20161231110000|||||10101041431^KAYSSIEH^BASSEL||||ODS|||||Booked|\rPID|||123456^^^ODS^^PI||DO BAIRRO^Dimitri^^^^^L||19920506|M|Nom usuel||Avenue des Champs-Élysées^^Paris^^75000^^^^^||0100000000^^^dimitri.dobairro@dimsolution.com^^^^~0200000000^^^^^^^|\rRGS|1\rAIG|1|||10101041431@750057689\rNTE|||My comment`;
const obj = decode(s17, s17Mapping);
expect(obj.msh.message_datetime).toEqual('20161231110000');
expect(obj.msh.message_type).toEqual('SIU');
expect(obj.msh.message_type_ref).toEqual('S17');
expect(obj.msh.message_control_id).toEqual('256660');
expect(obj.msh.principal_language_of_message).toEqual('FRA');
expect(obj.msh.character_set).toEqual('UTF-8');
expect(obj.pid.id).toEqual('123456');
expect(obj.pid.origin).toEqual('ODS');
expect(obj.pid.first_name).toEqual('Dimitri');
expect(obj.pid.last_name).toEqual('DO BAIRRO');
expect(obj.pid.birthdate).toEqual('19920506');
expect(obj.pid.gender).toEqual('M');
expect(obj.pid.gender).toEqual('M');
expect(obj.pid.street_name).toEqual('Avenue des Champs-Élysées');
expect(obj.pid.city).toEqual('Paris');
expect(obj.pid.phone[0]).toEqual('0100000000');
expect(obj.pid.phone[1]).toEqual('0200000000');
expect(obj.pid.email[0]).toEqual('dimitri.dobairro@dimsolution.com');
expect(obj.pid.email[1]).toEqual('');
expect(obj.sch.id).toEqual('49849903800');
expect(obj.sch.origin).toEqual('DimSolution');
expect(obj.sch.length).toEqual('100');
expect(obj.sch.minutes).toEqual('30');
expect(obj.sch.datetime).toEqual('10101041431');
expect(obj.sch.last_name).toEqual('KAYSSIEH');
expect(obj.sch.first_name).toEqual('BASSEL');
expect(obj.sch.source).toEqual('ODS');
expect(obj.sch.status).toEqual('Booked');
expect(obj.rgs.id).toEqual('1');
expect(obj.aig.id).toEqual('1');
expect(obj.aig.rpps_finess).toEqual('10101041431@750057689');
expect(obj.nte.comment).toEqual('My comment');
});
it(`S26 - Notification that patient did not show up for scheduled appointment`, () => {
const s26 = `MSH|^~\\&|mllp_http_proxy|proxy00-prodaz|mllp_http_proxypartenaire|proxy00-prodpartenaire|20161231110000||SIU^S26|256660|P|2.5.1|||||FRA|UTF-8|\rSCH||49849903800^DimSolution||||100|||||^^30^20161231110000|||||10101041431^KAYSSIEH^BASSEL||||ODS|||||Booked|\rPID|||123456^^^ODS^^PI||DO BAIRRO^Dimitri^^^^^L||19920506|M|Nom usuel||Avenue des Champs-Élysées^^Paris^^75000^^^^^||0100000000^^^dimitri.dobairro@dimsolution.com^^^^~0200000000^^^^^^^|\rRGS|1\rAIG|1|||10101041431@750057689\rNTE|||My comment`;
const obj = decode(s26, s26Mapping);
expect(obj.msh.message_datetime).toEqual('20161231110000');
expect(obj.msh.message_type).toEqual('SIU');
expect(obj.msh.message_type_ref).toEqual('S26');
expect(obj.msh.message_control_id).toEqual('256660');
expect(obj.msh.principal_language_of_message).toEqual('FRA');
expect(obj.msh.character_set).toEqual('UTF-8');
expect(obj.pid.id).toEqual('123456');
expect(obj.pid.origin).toEqual('ODS');
expect(obj.pid.first_name).toEqual('Dimitri');
expect(obj.pid.last_name).toEqual('DO BAIRRO');
expect(obj.pid.birthdate).toEqual('19920506');
expect(obj.pid.gender).toEqual('M');
expect(obj.pid.gender).toEqual('M');
expect(obj.pid.street_name).toEqual('Avenue des Champs-Élysées');
expect(obj.pid.city).toEqual('Paris');
expect(obj.pid.phone[0]).toEqual('0100000000');
expect(obj.pid.phone[1]).toEqual('0200000000');
expect(obj.pid.email[0]).toEqual('dimitri.dobairro@dimsolution.com');
expect(obj.pid.email[1]).toEqual('');
expect(obj.sch.id).toEqual('49849903800');
expect(obj.sch.origin).toEqual('DimSolution');
expect(obj.sch.length).toEqual('100');
expect(obj.sch.minutes).toEqual('30');
expect(obj.sch.datetime).toEqual('10101041431');
expect(obj.sch.last_name).toEqual('KAYSSIEH');
expect(obj.sch.first_name).toEqual('BASSEL');
expect(obj.sch.source).toEqual('ODS');
expect(obj.sch.status).toEqual('Booked');
expect(obj.rgs.id).toEqual('1');
expect(obj.aig.id).toEqual('1');
expect(obj.aig.rpps_finess).toEqual('10101041431@750057689');
expect(obj.nte.comment).toEqual('My comment');
});