Sidebar

Can I send an RTF document into Centricity?

0 votes
845 views
asked Aug 2, 2017 by gary-t-8719 (14,860 points)

1 Answer

0 votes
Yes, In order to send an MDM document into centricity the text in OBX 5 will need to be combined into one OBX segment. In the code bellow, a "\par " tag was used between each OBX that was combined.

In order for the code to work you will need to setup two System Variables as follows.

Name: rtfHeader

Content: {\E\rtf1\E\fbidis\E\ansi\E\ansicpg1252\E\deff0\E\deflang1033\E\deflangfe1033{\E\fonttbl{\E\f0\E\fswiss\E\fprq2\E\fcharset0 Arial;}}~{\E\colortbl ;\E\red0\E\green0\E\blue0;}~\E\viewkind4\E\uc1\E\pard\E\ltrpar\E\cf1\E\f0\E\fs20

Note: Make sure there is a space at the end of the rftHeader content.

Name: rftParagraph

Content: \par

Note: Make sure there is a space at the end of the "\par " content.

QIE Mapping Code:

var rtfHeader = qie.getVariable('rtfHeader');
var rtfFooter = '}';
var rtfParagraph = qie.getVariable('rtfParagraph');

var obx5Values = source.getAllNodes('OBX');
var newObx5Value = '';
var obx32Map = qie.newParameterMap();
var obxBaseMap = qie.newParameterMap();
var keys = [];
var i;
var maxLength = 60000;
var exceedsMaxLength = false;
var obxSegment;
for (i = 0; i < obx5Values.length; i++) {
   obxSegment = qie.parseHL7String(obx5Values[i]);
   var obx32value = obxSegment.getNode('OBX-3.2');
   var obx5Value = obxSegment.getNode('OBX-5');
   // Check if in map.
   if (obx32Map.get(obx32value) === null){
      // If not in map then add obx segment back and add to map.
      obx32Map.put(obx32value, obx5Value);
      obxBaseMap.put(obx32value, obxSegment);
      keys.push('' + obx32value);
      //message.addChild('/', 'OBX', obxSegment.getNode('/'));
   } else {
      //var tempValue = obx32Map.get(obx32value) + '~' + obx5Value;
      var tempValue = obx32Map.get(obx32value) + rtfParagraph + obx5Value;
      if (tempValue.length > maxLength) {
         exceedsMaxLength = true;
         break;
      }
      obx32Map.put(obx32value, tempValue);
      // If in map then add obx-5 to current obx segment
      //message.setNode('OBX[@3.2=' + obx32value + ']-5', message.getNode('OBX[@3.2=' + obx32value + ']-5') + ' ~ ' + obx5Value);
   }
}
if (!exceedsMaxLength) {
   qie.debug("Have not exceeded, so we will combine the OBX segments.");
   message.removeAllNodes('OBX');
   for (i = 0; i < keys.length; i++) {
      var key = keys[i];
      var content = StringUtils.replace(obx32Map.get(key), '\r\n', rtfParagraph);
      content = StringUtils.replace(content, '\r', rtfParagraph);
      content = StringUtils.replace(content, '\n', rtfParagraph);
      
      obxSegment = qie.parseHL7String(obxBaseMap.get(key));
      qie.debug(key);
      
      if (StringUtils.equalsIgnoreCase(key, 'Radiology Report')) {
         obxSegment.setNode('OBX-3', 'NO_REF');
         obxSegment.setNode('OBX-5', rtfHeader + content + rtfFooter);
      } else {
         obxSegment.setNode('OBX-5', content);
      }
      
      message.addChild('/', 'OBX', obxSegment);
   }
} else {
   qie.debug("Danger Will Robinson, you have exceeded your OBX-5 length, so we are not going to change the message.");

}
answered Aug 2, 2017 by gary-t-8719 (14,860 points)
edited Aug 2, 2017 by gary-t-8719
...