rimiti/hl7-object-parser

View on GitHub
__tests__/siu/index.js

Summary

Maintainability
F
1 mo
Test Coverage
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');
});