Sidebar

How can I create a ADT HL7 message from a CDA

0 votes
686 views
asked Apr 5, 2017 by brandon-w-8204 (33,270 points)

1 Answer

0 votes

// Message is the cda for this to work.
var cda = qie.parseXMLString(message.getNode('/'));
// create temp ADT


var tempADT = qie.parseHL7String(null);
// MSH
tempADT.setNode('MSH-3', channelCache.getValue('MSH3'));
tempADT.setNode('MSH-7', qie.formatDate('yyyyMMddHHmmss'));
tempADT.setNode('MSH-9', 'ADT^A04');
tempADT.setNode('MSH-10', qie.formatDate('yyyyMMddHHmmssSSS'));
tempADT.setNode('MSH-11', 'P');
tempADT.setNode('MSH-12', '2.3.1');
tempADT.setNode('MSH-15', 'AL');
tempADT.setNode('MSH-16', 'AL');
// EVN
tempADT.addChild('/', 'EVN', 'EVN');
tempADT.setNode('EVN-1', 'A04');
tempADT.setNode('EVN-2', qie.formatDate('yyyyMMddHHmmss'));
// PID
tempADT.addChild('/', 'PID', 'PID');
tempADT.setNode('PID-3', cda.getNode('/ClinicalDocument/recordTarget/patientRole/id/@extension'));
// PID-5 Patient Name (Last^First^Middle)
tempADT.setNode(
   'PID-5',
   cda.getNode('/ClinicalDocument/recordTarget/patientRole/patient/name/family') + '^' +
   cda.getNode('/ClinicalDocument/recordTarget/patientRole/patient/name/given')
);
// PID-7 DOB
tempADT.setNode('PID-7', cda.getNode('/ClinicalDocument/recordTarget/patientRole/patient/birthTime/@value'));
// PID-8 Sex
tempADT.setNode('PID-8', cda.getNode('/ClinicalDocument/recordTarget/patientRole/patient/administrativeGenderCode/@code'));
// PID-11 Address (address1^address2^city^state^zip^country)
tempADT.setNode(
   'PID-11',
   cda.getNode('/ClinicalDocument/recordTarget/patientRole/addr/streetAddressLine') + '^^' +
   cda.getNode('/ClinicalDocument/recordTarget/patientRole/addr/city') + '^' +
   cda.getNode('/ClinicalDocument/recordTarget/patientRole/addr/state') + '^' +
   cda.getNode('/ClinicalDocument/recordTarget/patientRole/addr/postalCode') + '^' +
   cda.getNode('/ClinicalDocument/recordTarget/patientRole/addr/country')
);
// PID-13 Home Phone (phone^^^email)
tempADT.setNode(
   'PID-13',
   cda.getNode('/ClinicalDocument/recordTarget/patientRole/telecom[@use="HP"]/@value').replaceAll('tel:', '').replaceAll('\\+1-', '')
);
// PID-14 Work Phone
tempADT.setNode(
   'PID-14',
   cda.getNode('/ClinicalDocument/recordTarget/patientRole/telecom[@use="WP"]/@value').replaceAll('tel:', '').replaceAll('\\+1-', '')
);

// PID-16 Marital Status?
// PID-19 SSN?
message = qie.createHL7Message();
message.setNode('/', tempADT);
 

answered Apr 5, 2017 by brandon-w-8204 (33,270 points)
...