<channel version="3.2.1">
  <id>5545c8bd-2cf7-48e4-bf9c-388549369721</id>
  <nextMetaDataId>5</nextMetaDataId>
  <name>UW_MACLAB_Aug2015</name>
  <description></description>
  <enabled>true</enabled>
  <lastModified>
    <time>1446768420655</time>
    <timezone>America/Los_Angeles</timezone>
  </lastModified>
  <revision>66</revision>
  <sourceConnector version="3.2.1">
    <metaDataId>0</metaDataId>
    <name>sourceConnector</name>
    <properties class="com.mirth.connect.connectors.file.FileReceiverProperties" version="3.2.1">
      <pluginProperties/>
      <pollConnectorProperties version="3.2.1">
        <pollingType>interval</pollingType>
        <pollingHour>0</pollingHour>
        <pollingMinute>0</pollingMinute>
        <pollingFrequency>15000</pollingFrequency>
      </pollConnectorProperties>
      <sourceConnectorProperties version="3.2.1">
        <responseVariable>None</responseVariable>
        <respondAfterProcessing>true</respondAfterProcessing>
        <processBatch>true</processBatch>
        <firstResponse>true</firstResponse>
        <resourceIds class="linked-hash-set">
          <string>Default Resource</string>
        </resourceIds>
      </sourceConnectorProperties>
      <scheme>FILE</scheme>
      <host>D:/HealthLevel Data/uw/listener-13C06E45-A7BC-460F-8185-3F16A99EB544/source/</host>
      <fileFilter>*.h*</fileFilter>
      <regex>false</regex>
      <directoryRecursion>true</directoryRecursion>
      <ignoreDot>true</ignoreDot>
      <anonymous>true</anonymous>
      <username>anonymous</username>
      <password>anonymous</password>
      <timeout>10000</timeout>
      <secure>true</secure>
      <passive>true</passive>
      <validateConnection>true</validateConnection>
      <afterProcessingAction>MOVE</afterProcessingAction>
      <moveToDirectory>D:/HealthLevel Data/uw/listener-13C06E45-A7BC-460F-8185-3F16A99EB544/RawHL7done/</moveToDirectory>
      <moveToFileName>${originalFilename}</moveToFileName>
      <errorReadingAction>MOVE</errorReadingAction>
      <errorResponseAction>MOVE</errorResponseAction>
      <errorMoveToDirectory>D:/HealthLevel Data/uw/listener-13C06E45-A7BC-460F-8185-3F16A99EB544/RawHL7error/</errorMoveToDirectory>
      <errorMoveToFileName>${originalFilename}</errorMoveToFileName>
      <checkFileAge>false</checkFileAge>
      <fileAge>1000</fileAge>
      <fileSizeMinimum>0</fileSizeMinimum>
      <fileSizeMaximum></fileSizeMaximum>
      <ignoreFileSizeMaximum>true</ignoreFileSizeMaximum>
      <sortBy>date</sortBy>
      <binary>false</binary>
      <charsetEncoding>DEFAULT_ENCODING</charsetEncoding>
    </properties>
    <transformer version="3.2.1">
      <steps>
        <step>
          <sequenceNumber>0</sequenceNumber>
          <name>Variable Declaration</name>
          <script>var errorDir = &quot;D:/HealthLevel Data/uw/listener-13C06E45-A7BC-460F-8185-3F16A99EB544/rawhl7error/&quot;;
var fileDir = &quot;D:/HealthLevel Data/uw/psv/process/unprocessed/&quot;;
var fileName = &quot;maclab_uw_&quot;;




var newFileName=&quot;&quot;;
var MIN = 15;
var pipeBatch=&quot;&quot;;
// import java sql package to use prepared statements
importPackage(java.sql);
importPackage(java.io);

// Get Message ChildIndex
function getCI(seg)
{
	return seg.childIndex();
}

// Get Segment Name
function getSN(index)
{
	return (msg.children()[index]).name();
}

// Check source segement is same as the target Segment
function isSeg(src,tgt)
{
	return src == tgt ;
}

function getVal(index,sub,ssub, sssub)
{
	var segName = getSN(index);

	if (sssub)
	{
		if (sssub == 0)
			return msg.children()[index][segName+&apos;.&apos;+sub][segName+&apos;.&apos;+sub+&apos;.&apos;+ssub].toString();
		else
			return msg.children()[index][segName+&apos;.&apos;+sub][segName+&apos;.&apos;+sub+&apos;.&apos;+ssub][segName+&apos;.&apos;+sub+&apos;.&apos;+ssub+&apos;.&apos;+sssub].toString();	
	}
	else
	if(ssub == 0)
	{
//		logger.info(index+&quot;,&quot;+sub+&quot;,&quot;+ssub);
		var fieldLen = (msg.children()[index][segName+&apos;.&apos;+sub]).children().length();
		var res=&quot;&quot;;
		if(fieldLen &gt;= 1)
			res = (SerializerFactory.getSerializer(&apos;HL7V2&apos;).fromXML((msg.children()[index][segName+&apos;.&apos;+sub])));
		return res;
	}
	else
		return msg.children()[index][segName+&apos;.&apos;+sub][segName+&apos;.&apos;+sub+&apos;.&apos;+ssub].toString();

	return &apos;&apos;;	
}


function converttoformattedtimestamp (tmpts)
{
	var tmp2 = tmpts.substr(0,4) + &apos;-&apos; + tmpts.substr(4, 2) + &apos;-&apos; + tmpts.substr(6,2) + &apos; &apos; + tmpts.substr(8, 2) +&apos;:&apos; + tmpts.substr(10,2)+&apos;:&apos; + tmpts.substr(12,2) ;

//logger.info(tmp2.toString());

	return (tmp2.toString());
}

function handler_msh(rec, msg)
{
	rec.msgsendingapp = msg[&apos;MSH&apos;][&apos;MSH.3&apos;][&apos;MSH.3.1&apos;].toString();
	rec.msgsendingfacility = msg[&apos;MSH&apos;][&apos;MSH.4&apos;][&apos;MSH.4.1&apos;].toString();
	rec.msgtype = msg[&apos;MSH&apos;][&apos;MSH.9&apos;][&apos;MSH.9.1&apos;].toString();
	rec.msgtrigger = msg[&apos;MSH&apos;][&apos;MSH.9&apos;][&apos;MSH.9.2&apos;].toString();
	rec.ts_msg = converttoformattedtimestamp (msg[&apos;MSH&apos;][&apos;MSH.7&apos;][&apos;MSH.7.1&apos;].toString());

	rec.security = msg[&apos;MSH&apos;][&apos;MSH.8&apos;][&apos;MSH.8.1&apos;].toString();
}

function handler_pid(rec, msg)
{
	// PID Segment Entries
	rec.empi = msg[&apos;PID&apos;][&apos;PID.2&apos;][&apos;PID.2.1&apos;].toString();
	var numofMRNs = msg[&apos;PID&apos;][&apos;PID.3&apos;].length();
	rec.mrn = msg[&apos;PID&apos;][&apos;PID.3&apos;][numofMRNs-1][&apos;PID.3.1&apos;].toString();
	
	rec.dob = msg[&apos;PID&apos;][&apos;PID.7&apos;][&apos;PID.7.1&apos;].toString();
	rec.sex = msg[&apos;PID&apos;][&apos;PID.8&apos;][&apos;PID.8.1&apos;].toString();
	var numrace = msg[&apos;PID&apos;][&apos;PID.10&apos;].length();
	if (numrace &gt;= 1)
	{
		rec.race = msg[&apos;PID&apos;][&apos;PID.10&apos;][numrace-1][&apos;PID.10.1&apos;].toString();
	}
	var numaddresses = msg[&apos;PID&apos;][&apos;PID.11&apos;].length();
	if (numaddresses &gt;= 1)
	{
		rec.city = msg[&apos;PID&apos;][&apos;PID.11&apos;][numaddresses-1][&apos;PID.11.3&apos;].toString();
		rec.zip = msg[&apos;PID&apos;][&apos;PID.11&apos;][numaddresses-1][&apos;PID.11.5&apos;].toString();	
		rec.county = msg[&apos;PID&apos;][&apos;PID.11&apos;][numaddresses-1][&apos;PID.11.9&apos;].toString();
	}
	rec.language = msg[&apos;PID&apos;][&apos;PID.15&apos;][&apos;PID.15.1&apos;].toString();
	rec.ms = msg[&apos;PID&apos;][&apos;PID.16&apos;][&apos;PID.16.1&apos;].toString();
	rec.religion = msg[&apos;PID&apos;][&apos;PID.17&apos;][&apos;PID.17.1&apos;].toString();
	rec.ethnicgroup = msg[&apos;PID&apos;][&apos;PID.22&apos;][&apos;PID.22.1&apos;].toString();
	rec.birthorder = msg[&apos;PID&apos;][&apos;PID.25&apos;][&apos;PID.25.1&apos;].toString();
	rec.death = msg[&apos;PID&apos;][&apos;PID.30&apos;][&apos;PID.30.1&apos;].toString();

	if (rec.msgtype &amp;&amp; rec.msgtype == &apos;ADT&apos;)
		rec.har = msg[&apos;PID&apos;][&apos;PID.18&apos;][&apos;PID.18.1&apos;].toString();
	else
		rec.visitnumber = msg[&apos;PID&apos;][&apos;PID.18&apos;][&apos;PID.18.1&apos;].toString();
		
	rec.info = &apos;PATIENT_DEM&apos;;
	
	AddToBuffer(rec);
	//clean all, EXCEPT identifiers.
	rec.info = &apos;&apos;;
	rec.dob = &apos;&apos;;
	rec.sex = &apos;&apos;;
	rec.race = &apos;&apos;;	
	rec.language = &apos;&apos;;
     rec.ms = &apos;&apos;;
     rec.religion = &apos;&apos;;
	rec.city = &apos;&apos;;
	rec.zip = &apos;&apos;;
	rec.county = &apos;&apos;;
	rec.ethnicgroup = &apos;&apos;;
	rec.birthorder = &apos;&apos;;
	rec.death = &apos;&apos;;
		
	// check if the above list cleanup matches setup
}

function handler_pd1(rec, msg)
{
	// PID Segment Entries
	var PCPcount = msg[&apos;PD1&apos;][&apos;PD1.4&apos;].length();
	if (PCPcount &gt;= 1)
	{
		rec.staff_first = msg[&apos;PD1&apos;][&apos;PD1.4&apos;][PCPCount-1][&apos;PD1.4.3&apos;].toString();
		rec.staff_last = msg[&apos;PD1&apos;][&apos;PD1.4&apos;][PCPCount-1][&apos;PD1.4.2&apos;].toString();
		rec.staff_middle = msg[&apos;PD1&apos;][&apos;PD1.4&apos;][PCPCount-1][&apos;PD1.4.4&apos;].toString();
		rec.info = &apos;STAFF&apos;;
		rec.staff_role = &apos;PCP&apos;;

		AddToBuffer(rec);

		rec.staff_first = &apos;&apos;;
		rec.staff_last = &apos;&apos;;
		rec.staff_middle = &apos;&apos;;
		rec.staff_role = &apos;&apos;;
		rec.info = &apos;&apos; ;
	}
		
	// check if the above list cleanup matches setup
}

function handler_pv1(rec, msg)
{
	
	var pv1len = msg[&apos;PV1&apos;].length();
	if (pv1len &lt;= 0)
	{
		return;
	}
	
	rec.patientclass = msg[&apos;PV1&apos;][&apos;PV1.2&apos;][&apos;PV1.2.1&apos;].toString();
	rec.patientlocation = msg[&apos;PV1&apos;][&apos;PV1.3&apos;][&apos;PV1.3.1&apos;].toString();
	rec.patientroom = msg[&apos;PV1&apos;][&apos;PV1.3&apos;][&apos;PV1.3.2&apos;].toString();
	rec.admittype = msg[&apos;PV1&apos;][&apos;PV1.4&apos;][&apos;PV1.4.1&apos;].toString();
	rec.patienttype = msg[&apos;PV1&apos;][&apos;PV1.18&apos;][&apos;PV1.18.1&apos;].toString();
	rec.hospitalservice = msg[&apos;PV1&apos;][&apos;PV1.10&apos;][&apos;PV1.10.1&apos;].toString();
	rec.servicingfacility = msg[&apos;PV1&apos;][&apos;PV1.39&apos;][&apos;PV1.39.1&apos;].toString();
	rec.vip = msg[&apos;PV1&apos;][&apos;PV1.16&apos;][&apos;PV1.16.1&apos;].toString();

	var visitnum = msg[&apos;PV1&apos;][&apos;PV1.19&apos;][&apos;PV1.19.1&apos;].toString();
	if (visitnum != &apos;&apos;) // if visit is present, then use, otherwise, ignore
		rec.visitnumber = visitnum;
		
	rec.info = &apos;PATIENT_VISIT&apos;;
	
	AddToBuffer(rec);

	rec.patientclass = &apos;&apos; ;
	rec.patientlocation = &apos;&apos; ;
	rec.admittype = &apos;&apos; ;
	rec.patienttype = &apos;&apos; ;
	rec.hospitalservice = &apos;&apos; ;
	rec.servicingfacility = &apos;&apos; ;
	rec.vip = &apos;&apos; ;
	rec.info = &apos;&apos;;
	
	var AdmitMDCount = msg[&apos;PV1&apos;][&apos;PV1.7&apos;].length();
	if (AdmitMDCount &gt;= 1)
	{
		rec.info = &apos;STAFF&apos;;
		rec.staff_first = msg[&apos;PV1&apos;][&apos;PV1.7&apos;][AdmitMDCount-1][&apos;PV1.7.3&apos;].toString();
		rec.staff_last = msg[&apos;PV1&apos;][&apos;PV1.7&apos;][AdmitMDCount-1][&apos;PV1.7.2&apos;].toString();
		rec.staff_middle = msg[&apos;PV1&apos;][&apos;PV1.7&apos;][AdmitMDCount-1][&apos;PV1.7.4&apos;].toString();
		rec.staff_role = &apos;Admitting MD&apos;;

		AddToBuffer(rec);

		rec.staff_first = &apos;&apos;;
		rec.staff_last = &apos;&apos;;
		rec.staff_middle = &apos;&apos;;
		rec.staff_role = &apos;&apos;;
		rec.info = &apos;&apos; ;		
	}

	var RefMDCount = msg[&apos;PV1&apos;][&apos;PV1.8&apos;].length();
	if (RefMDCount &gt;= 1)
	{
		rec.info = &apos;STAFF&apos;;
		rec.staff_first = msg[&apos;PV1&apos;][&apos;PV1.8&apos;][RefMDCount-1][&apos;PV1.8.3&apos;].toString();
		rec.staff_last = msg[&apos;PV1&apos;][&apos;PV1.8&apos;][RefMDCount-1][&apos;PV1.8.2&apos;].toString();
		rec.staff_middle = msg[&apos;PV1&apos;][&apos;PV1.8&apos;][RefMDCount-1][&apos;PV1.8.4&apos;].toString();
		rec.staff_role = &apos;Referring MD&apos;;

		AddToBuffer(rec);

		rec.staff_first = &apos;&apos;;
		rec.staff_last = &apos;&apos;;
		rec.staff_middle = &apos;&apos;;
		rec.staff_role = &apos;&apos;;
		rec.info = &apos;&apos; ;		
	}

	var ConsultingMDCount = msg[&apos;PV1&apos;][&apos;PV1.9&apos;].length();
	if (ConsultingMDCount &gt;= 1)
	{
		rec.info = &apos;STAFF&apos;;
		rec.staff_first = msg[&apos;PV1&apos;][&apos;PV1.9&apos;][ConsultingMDCount-1][&apos;PV1.9.3&apos;].toString();
		rec.staff_last = msg[&apos;PV1&apos;][&apos;PV1.9&apos;][ConsultingMDCount-1][&apos;PV1.9.2&apos;].toString();
		rec.staff_middle = msg[&apos;PV1&apos;][&apos;PV1.9&apos;][ConsultingMDCount-1][&apos;PV1.9.4&apos;].toString();
		rec.staff_role = &apos;Consulting MD&apos;;

		AddToBuffer(rec);

		rec.staff_first = &apos;&apos;;
		rec.staff_last = &apos;&apos;;
		rec.staff_middle = &apos;&apos;;
		rec.staff_role = &apos;&apos;;
		rec.info = &apos;&apos; ;		
	}	
	
	rec.ts_when = converttoformattedtimestamp(msg[&apos;PV1&apos;][&apos;PV1.44&apos;][&apos;PV1.44.1&apos;].toString() )  ;
	if (rec.ts_when != &apos;&apos;)
	{
		rec.workflow_state = &apos;ts_admit&apos;;
		rec.info = &apos;WORKFLOWSTATE&apos;;
		AddToBuffer (rec);
		rec.info = &apos;&apos; ;
		rec.workflow_state = &apos;&apos;;
	}

	rec.ts_when = converttoformattedtimestamp(msg[&apos;PV1&apos;][&apos;PV1.45&apos;][&apos;PV1.45.1&apos;].toString() )  ;
	if (rec.ts_when != &apos;&apos;)
	{
		rec.workflow_state = &apos;ts_discharge&apos;;
		rec.info = &apos;WORKFLOWSTATE&apos;;
		AddToBuffer (rec);
		rec.info = &apos;&apos; ;
		rec.workflow_state = &apos;&apos;;
	}
	
	
}

function handler_pv2(rec, msg)
{
	rec.hospitalservice = msg[&apos;PV2&apos;][&apos;PV2.12&apos;][&apos;PV2.12.1&apos;].toString();
	rec.ts_when = converttoformattedtimestamp(msg[&apos;PV2&apos;][&apos;PV2.8&apos;][&apos;PV2.8.1&apos;].toString() )  ;
	if (rec.ts_when != &apos;&apos;)
	{
		rec.workflow_state = &apos;ts_scheduledfor&apos;;
		rec.info = &apos;WORKFLOWSTATE&apos;;
		AddToBuffer (rec);
		rec.info = &apos;&apos; ;
		rec.workflow_state = &apos;&apos;;
	}

}

function handler_in1(rec, msg)
{
	var len = parseInt(msg[&apos;IN1&apos;].length());
	rec.info = &apos;PAYER&apos;;
	for (i=0; i&lt; len;i++)
	{
		rec.attribute_value =  msg[&apos;IN1&apos;][i][&apos;IN1.4&apos;][&apos;IN1.4.1&apos;].toString() ;
		rec.value_status =  msg[&apos;IN1&apos;][i][&apos;IN1.22&apos;][&apos;IN1.22.1&apos;].toString() ;
		rec.ts_when =  converttoformattedtimestamp(msg[&apos;IN1&apos;][i][&apos;IN1.29&apos;][&apos;IN1.29.1&apos;].toString()) ;
		AddToBuffer (rec);
	}
	rec.info = &apos;&apos;;
	rec.attribute_value =  &apos;&apos;;
	rec.value_status =  &apos;&apos;;
	rec.ts_when =  &apos;&apos;;
}

function handler_al1(rec, msg)
{
	var len = parseInt(msg[&apos;AL1&apos;].length());
	for (i=0; i&lt; len;i++)
	{
		rec.info = &apos;CONDITION&apos;;
		rec.attribute_name = &apos;ALLERGY&apos;;
		rec.value_status =msg[&apos;AL1&apos;][i] ? msg[&apos;AL1&apos;][i][&apos;AL1.2&apos;][&apos;AL1.2.1&apos;].toString() : &apos;&apos;;
		rec.attribute_id = msg[&apos;AL1&apos;][i] ? msg[&apos;AL1&apos;][i][&apos;AL1.3&apos;][&apos;AL1.3.1&apos;].toString(): &apos;&apos;;
		rec.attribute_value = msg[&apos;AL1&apos;][i] ? msg[&apos;AL1&apos;][i][&apos;AL1.3&apos;][&apos;AL1.3.2&apos;].toString(): &apos;&apos;;
		AddToBuffer (rec);
	}
	rec.value_status = &apos;&apos;;
	rec.attribute_id = &apos;&apos;;
	rec.attribute_value = &apos;&apos;;
	rec.info = &apos;&apos;;
	rec.attribute_name = &apos;&apos;;
}

function handler_obr_maclab (rec, msg)
{
	var obrlen = parseInt(msg[&apos;OBR&apos;].length());
	if (obrlen &gt; 0)
	{
		rec.obr31 = msg[&apos;OBR&apos;][0][&apos;OBR.3&apos;][&apos;OBR.3.1&apos;].toString(); // set up the case id
		rec.casenumber = msg[&apos;OBR&apos;][0][&apos;OBR.3&apos;][&apos;OBR.3.1&apos;].toString(); // set up the case id
		var obrIndex = 	getCI(msg[&apos;OBR&apos;][0]);	

		// Observation Time
		rec.obr71 = getVal(obrIndex,7,1);
		rec.serviceline = getVal(obrIndex, 24, 1);
		
		rec.info = &apos;CASEDATA&apos;;
		AddToBuffer (rec);
		rec.serviceline = &apos;&apos;;
		rec.obr71 = &apos;&apos;
		
		rec.info = &apos;WORKFLOWSTATE&apos;;
		rec.workflow_state = &apos;ts_dos&apos;;
		rec.ts_when = converttoformattedtimestamp(getVal(obrIndex,7,1));
		AddToBuffer (rec);
		rec.info = &apos;&apos;;
		rec.workflow_state = &apos;&apos;;

		rec.staff_role = &apos;Primary Attending MD&apos; ;
		rec.staff_first = getVal(obrIndex, 32, 3);
		rec.staff_last = getVal(obrIndex, 32, 2);
		rec.info = &apos;STAFF&apos;;
		AddToBuffer (rec);
		rec.staff_role = &apos;&apos; ;
		rec.staff_first = &apos;&apos;;
		rec.staff_last = &apos;&apos;;
		//rec.ts_when = &apos;&apos;;
		rec.info = &apos;&apos;;
	}
}

function sub_handler_vitals (rec, msg, i)
{
	rec.ts_when = converttoformattedtimestamp(msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.14&apos;][&apos;OBX.14.1&apos;].toString() : &apos;&apos;);
	// var savephase_ts = &apos;&apos;;
	// if (savephase_ts != rec.ts_when) // stick in the phase only if new timestamp.
	// {
		// rec.workflow_state = &apos;ts_phase_&apos;+ (msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.1&apos;].toString() : &apos;&apos;);
		
		// rec.info = &apos;WORKFLOWSTATE&apos;;
		// AddToBuffer (rec) ;
		// rec.workflow_state = &apos;&apos;;
	// }

	rec.info = &apos;CONDITION&apos;;

	rec.attribute_name = &apos;Phase Number&apos;;
	rec.attribute_value = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.1&apos;].toString() : &apos;&apos;;
	rec.attribute_unit = &apos;&apos;;
//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
	//AddToBuffer (rec) ;

	rec.attribute_name = &apos;SpO2&apos;;
	rec.attribute_value = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.2&apos;].toString() : &apos;&apos;;
	rec.attribute_unit = &apos;&apos;;
//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
	AddToBuffer (rec) ;

	rec.attribute_name = &apos;HR&apos;;
	rec.attribute_value = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.3&apos;].toString() : &apos;&apos;;
	rec.attribute_unit = &apos;&apos;;
//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
	AddToBuffer (rec) ;

	rec.attribute_name = &apos;Blood Pressure&apos;; //BP goes in as a pair of values
	rec.attribute_value = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.4&apos;].toString() : &apos;&apos;;
	rec.attribute_unit = &apos;&apos;;
//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
	//AddToBuffer (rec) ;

	rec.attribute_value2 = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.5&apos;].toString() : &apos;&apos;;
	rec.attribute_unit = &apos;&apos;;
//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
	AddToBuffer (rec) ;
	rec.attribute_value2 = &apos;&apos;;
	
	rec.attribute_name = &apos;Mean Pressure&apos;;
	rec.attribute_value = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.6&apos;].toString() : &apos;&apos;;
	rec.attribute_unit = &apos;&apos;;
//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
	AddToBuffer (rec) ;

	rec.attribute_name = &apos;Respiration Rate&apos;;
	rec.attribute_value = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.7&apos;].toString() : &apos;&apos;;
	rec.attribute_unit = &apos;bpm&apos;;
//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
	AddToBuffer (rec) ;

	rec.attribute_name = &apos;Temp&apos;;
	rec.attribute_value = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.9&apos;].toString() : &apos;&apos;;
	rec.attribute_unit = &apos;cel&apos;;
//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
	AddToBuffer (rec) ;

	rec.attribute_name = &apos;Level of Consciousness&apos;;
	rec.attribute_value = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.11&apos;].toString() : &apos;&apos;;
	rec.attribute_unit = &apos;&apos;;
//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
	AddToBuffer (rec) ;

	rec.attribute_name = &apos;Pressure Source&apos;;
	rec.attribute_value = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.12&apos;].toString() : &apos;&apos;;
	rec.attribute_unit = &apos;&apos;;
//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
	AddToBuffer (rec) ;

	rec.attribute_name = &apos;Inspired EtCO2&apos;;
	rec.attribute_value = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.13&apos;].toString() : &apos;&apos;;
	rec.attribute_unit = &apos;mmHg&apos;;
//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
	AddToBuffer (rec) ;

	rec.attribute_name = &apos;Expired EtCO2&apos;;
	rec.attribute_value = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.14&apos;].toString() : &apos;&apos;;
	rec.attribute_unit = &apos;mmHg&apos;;
//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
	AddToBuffer (rec) ;

	rec.attribute_name = &apos;&apos;;
	rec.attribute_value = &apos;&apos;;
	rec.attribute_unit = &apos;&apos;;	
}


function sub_handler_event_general(rec, msg, i)
{
	//pullfromGeneralEventLog (rec);
	var str = rec.obx51
	if (str)
	{
		rec.info = &apos;&apos;;
		rec.attribute_name = &apos;&apos; ;
		rec.attribute_value = &apos;&apos;;
		rec.workflow_state = &apos;&apos;;
	
		switch (str)
		{
			case &quot;Cath Lab 4&quot;:
			case &quot;Cath Lab 3&quot;:
			case &quot;Cath Lab 2&quot;:
			case &quot;Cath Lab 1&quot;:
			case &quot;Hybrid OR&quot;:
			case &quot;Hybrid OR 15&quot;:
			case &quot;Hybrid OR 16&quot;:
				rec.room_name = str;
				rec.info = &apos;CASEDATA&apos;;
					//ts_when is already set up from 14,1
				AddToBuffer(rec);
				rec.room_name= &apos;&apos;;
				rec.info = &apos;&apos;;
				break;

			case &quot;Patient Arrives&quot;:
			case &quot;Patient on Table&quot;:
			case &quot;Patient Ready&quot;:
			case &quot;Physician Present / No Page Needed&quot;:
			case &quot;Physician Called&quot;:
			case &quot;Physician Arrived&quot;:
			case &quot;Case Start&quot;:
			case &quot;Case End&quot;:
			case &quot;Access&quot;:
				rec.workflow_state = str;
				rec.info = &apos;WORKFLOWSTATE&apos;;
					//ts_when is already set up from 14,1
				AddToBuffer(rec);
				rec.workflow_state = &apos;&apos;;
				rec.info = &apos;&apos;;
				//logger.info(&quot;sworkflowstate: &quot;+rec.workflow_state);
				break;
		
			case &quot;Time Out Performed and The Following Verified:&quot;:
			case &quot;_______TIME OUT PERFORMED_______&quot;:
				rec.workflow_state = &apos;Timeout Performed&apos;;
				rec.info = &apos;WORKFLOWSTATE&apos;;
					//ts_when is already set up from 14,1
				AddToBuffer(rec);
				rec.workflow_state = &apos;&apos;;
				rec.info = &apos;&apos;;
				break;

			default:
				var tmpst = rec.obx51;
				rec.info=&apos;EVENT&apos;;
			
				if (tmpst)
				{
					//logger.info(&quot;access:&quot;+ tmpst);
					if (tmpst.substring(0, 21) == &quot;Percutaneous Puncture&quot;)
					{
						rec.info = &quot;DOCUMENTATION&quot;;
						rec.attribute_name = &quot;ACCESS_LOCATION&quot;;
						rec.attribute_value = tmpst;
					}
				}
			
				AddToBuffer(rec);			
				rec.info = &apos;&apos;;
				rec.attribute_name = &apos;&apos;;
				rec.attribute_value = &apos;&apos;;
				break;
		} // switch
		
		if (rec.info != &apos;&apos;)
		{
			//AddToBuffer(rec);
			rec.info = &apos;&apos;;
			rec.attribute_name = &apos;&apos; ;
			rec.attribute_value = &apos;&apos;;
			rec.workflow_state = &apos;&apos;;
		}
	}

}




	
function handler_obx_maclab(rec, msg)
{
	var len = parseInt(msg[&apos;OBX&apos;].length());
	var savephase_ts = &apos;&apos;;
//logger.info(&apos;obx len:&apos;+len.toString());
	
	for (i=0; i&lt; len;i++)
	{
		rec.obx31 = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.3&apos;][&apos;OBX.3.1&apos;].toString() : &apos;&apos;;//getVal(j,3,1);
		//rec.casenumber = msg[&apos;OBX&apos;][i][&apos;OBX.3&apos;][&apos;OBX.3.1&apos;].toString() ;
		rec.obx51 = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.1&apos;].toString() ;
		rec.obx52 = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.2&apos;].toString() ;
		rec.obx53 = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.3&apos;].toString() ;
		rec.obx54 = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.4&apos;].toString() ;
		rec.obx55 = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.5&apos;].toString() ;
		rec.obx56 = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.6&apos;].toString() ;
		rec.obx57 = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.7&apos;].toString() ;
		rec.obx58 = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.8&apos;].toString() ;
		rec.obx59 = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.9&apos;].toString() ;
		rec.obx510 = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.10&apos;].toString() ;
		rec.obx511 = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.11&apos;].toString() ;
		rec.obx111 = msg[&apos;OBX&apos;][i][&apos;OBX.11&apos;][&apos;OBX.11.1&apos;].toString() ;
	
		var tmpts = msg[&apos;OBX&apos;][i][&apos;OBX.14&apos;][&apos;OBX.14.1&apos;].toString() ;
		rec.ts_when =  converttoformattedtimestamp(tmpts);

		if (rec.obx31 == &apos;HOSPINFO-LOC&apos;)
		{
			rec.info = &apos;CASEDATA&apos;;
			rec.room_name = rec.obx51;
			AddToBuffer (rec);
			rec.room_name = &apos;&apos;;
			rec.info = &apos;&apos;;
		}
		
		rec.obx_status = rec.obx111;

		var obxinfo = &apos;&apos;;
		//logger.info(&quot;Info&quot; + rec.obx31.substr(0,4));

		if (rec.obx31.substr(0,4) == &quot;TIME&quot;)	
		{
			obxinfo = &apos;EVENT_WORKFLOW&apos;;
		//logger.info(rec.obx31.substr(0,4) + &apos;-----&apos; + rec.obx31);	
		}
		else
		{
			obxinfo = rec.obx31.toUpperCase();//obxinfo = rec.obx31;
		//logger.info(&quot;else condition: &quot;+obxinfo);					
		}

//logger.info(&apos;obxinfo:&apos;+obxinfo);
	
		switch (obxinfo.toUpperCase())
		{
			case &quot;CS-SCORE-PRE&quot;:
			case &quot;CS-SCORE-POST&quot;:
				rec.info = &apos;CONDITION&apos;;
				rec.attribute_name = (obxinfo == &quot;CS-SCORE-PRE&quot; ) ? &apos;Aldrete Score Pre&apos; : &apos;Aldrete Score Post&apos;;
				//rec.attribute_name = &apos;Aldrete Score&apos;;
				rec.attribute_value = rec.obx51;
				rec.attribute_unit = &apos;&apos;;
	//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
				AddToBuffer (rec) ;	
				rec.info = &apos;&apos;;
				rec.attribute_name = &apos;&apos;;
				rec.attribute_value = &apos;&apos;;
				break;
			
			case &quot;EVENT&quot;:
				sub_handler_event_general(rec, msg, i);
				break;

			case &apos;EVENT_WORKFLOW&apos;:
				rec.workflow_state = rec.obx31;
				//ts_when is already set up from obx 14,1
				rec.info = &apos;WORKFLOWSTATE&apos;
				AddToBuffer(rec);
				rec.workflow_state = &apos;&apos;;
				rec.info = &apos;&apos;;
				break;
			
			case &apos;EVENT_VITALS&apos;:
				sub_handler_vitals(rec, msg, i);			
				break;
			
			case &quot;CUSTOM_FIELD&quot;:
				rec.info = &apos;CUSTOM_FIELD&apos;
				rec.attribute_guid = msg[&apos;OBX&apos;][i][&apos;OBX.3&apos;][&apos;OBX.3.2&apos;].toString() ;
				rec.attribute_name = msg[&apos;OBX&apos;][i][&apos;OBX.3&apos;][&apos;OBX.3.3&apos;].toString() ;
				rec.attribute_value = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.1&apos;].toString() ;						
				rec.attribute_group = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.3&apos;].toString() ;						
				AddToBuffer(rec);
				rec.attribute_guid = &apos;&apos;;
				rec.attribute_name = &apos;&apos;;
				rec.attribute_value = &apos;&apos;;						
				rec.attribute_group = &apos;&apos;;
				break;

			case &quot;EVENT_CONTRAST&quot;:
				rec.info = &apos;CONTRAST&apos;;
				rec.attribute_name = rec.obx51;
				rec.attribute_value = rec.obx52;
				AddToBuffer(rec);
				rec.info = &apos;&apos;;
				rec.attribute_name = &apos;&apos;;
				rec.attribute_value = &apos;&apos;;
				break;

			case &quot;EVENT_PERSONNEL&quot;:
				rec.info = &apos;STAFF&apos;;
					// when obx 3 = Event_Personnel, then obx5 has details including roles
				rec.staff_first = rec.obx53;//getVal(j,5,3);
				rec.staff_last = rec.obx52;//getVal(j,5,2);
				rec.staff_role = rec.obx56;//getVal(j,5,6);
				rec.staff_when = rec.obx57;
				rec.staff_internalid = rec.obx59;
				//rec.staff_intid = getVal(j,5,10);
				AddToBuffer(rec);
				rec.info = &apos;&apos;;
					// when obx 3 = Event_Personnel, then obx5 has details including roles
				rec.staff_first = &apos;&apos;;
				rec.staff_last = &apos;&apos;;
				rec.staff_role = &apos;&apos;;
				rec.staff_internalid = &apos;&apos;;
				break;
			
			case &quot;EVENT_MEDICATION&quot;:
				rec.info = &quot;MEDICATION&quot;;
				rec.med_name = rec.obx51;//getVal(j,5,1);
				rec.med_qty = rec.obx52;//getVal(j,5,2);
				rec.med_path = rec.obx53;//getVal(j,5,3);
				rec.med_type = rec.obx55;//getVal(j,5,5);
				rec.med_unit = msg[&apos;OBX&apos;][i][&apos;OBX.6&apos;][&apos;OBX.6.1&apos;].toString() ;//getVal(j,6,1);
				rec.med_orderedby = rec.obx59;
				rec.med_givenby = rec.obx511;
				AddToBuffer(rec);	
				rec.info = &apos;&apos;;
				rec.med_name = &apos;&apos;;
				rec.med_qty = &apos;&apos;;
				rec.med_path = &apos;&apos;;
				rec.med_type = &apos;&apos;;
				rec.med_unit = &apos;&apos;;
				rec.med_orderedby = &apos;&apos;;
				rec,med_givenby = &apos;&apos;;
				break;	

			case &quot;EVENT_INVENTORY&quot;:
				rec.info = &apos;INVENTORY&apos;
				rec.item_name = rec.obx51	;//getVal(j,5,1);
				rec.item_code = rec.obx52	;//getVal(j,5,2);
				rec.item_size = rec.obx53	;
				rec.item_maker = rec.obx54	;
				rec.item_serialnumber = rec.obx55;
				rec.item_lotnumber = rec.obx56;
				rec.item_barcode = rec.obx57	;
				rec.item_type = rec.obx58	;//getVal(j,5,8);
				rec.item_invid1 = rec.obx59	;//getVal(j,5,9);
				rec.item_apcbillcode = rec.obx510;//getVal(j,5,9);
				rec.item_invid2 = rec.obx511	;//getVal(j,5,11);
				AddToBuffer(rec)	;
				rec.info = &apos;&apos;				;
				rec.item_name = &apos;&apos;			;
				rec.item_code = &apos;&apos;			;
				rec.item_size = &apos;&apos;			;
				rec.item_maker = &apos;&apos;			;
				rec.item_serialnumber = &apos;&apos;	;
				rec.lot_number = &apos;&apos;			;
				rec.item_barcode = &apos;&apos;		;
				rec.item_type = &apos;&apos;			;
				rec.item_invid1 = &apos;&apos;		;
				rec.item_apcbillcode = &apos;&apos;	;
				rec.item_invid2 = &apos;&apos;		;
				break;

			case &quot;EVENT_PROCEDURE&quot;:
				rec.info = &apos;PERFORMED_PROCEDURE&apos;;
				rec.perf_procname = rec.obx51;//getVal(j,5,1);
				AddToBuffer(rec);
				rec.perf_procname = &apos;&apos;;
				rec.info = &apos;&apos;;
				break;

			case &quot;EVENT_COMPLICATION&quot;:
				rec.info = &apos;COMPLICATION&apos;;
				rec.complication_name = rec.obx51;//getVal(j,5,1);
				AddToBuffer(rec);
				rec.complication_name = &apos;&apos;;
				rec.info = &apos;&apos;;
				break;

			default:
				rec.info = obxinfo ;
				AddToBuffer(rec);
				rec.info = &apos;&apos; ;	
		} // end of switch

		rec.obx51 = &apos;&apos;;
		rec.obx52 = &apos;&apos;;
		rec.obx53 = &apos;&apos;;
		rec.obx54 = &apos;&apos;;
		rec.obx55 = &apos;&apos;;
		rec.obx56 = &apos;&apos;;
		rec.obx57 = &apos;&apos;;
		rec.obx58 = &apos;&apos;;
		rec.obx59 = &apos;&apos;;
		rec.obx510 = &apos;&apos;;
		rec.obx511 = &apos;&apos;;		
		rec.obx111 = &apos;&apos;;
		rec.local_id = &apos;&apos; ;
		rec.local_name = &apos;&apos;;
		rec.local_system = &apos;&apos;;
		rec.attribute_id = &apos;&apos;;
		rec.attribute_name = &apos;&apos;;
		rec.coding_system = &apos;&apos;;
		rec.attribute_value = &apos;&apos;;
		rec.attribute_units = &apos;&apos;;	
		rec.value_status = &apos;&apos;;	
	}// end of for all obx segments
} // end of function handler_obx_maclab

try
{

	var rec = {};

	handler_msh (rec, msg);
	//handler_evn (rec, msg);
	handler_pid (rec, msg);
	//handler_pd1 (rec, msg);
	//handler_pv1 (rec, msg);
	//handler_pv2 (rec, msg);
	handler_obr_maclab (rec, msg);
	handler_obx_maclab (rec, msg);
	//handler_al1(rec, msg);
	//handler_in1(rec, msg);
	
	writeContent();		
}
catch(exception)
{
	var dateString = DateUtil.getCurrentDate(&apos;yyyyMMddHHmmss&apos;);	
	var hl7 = SerializerFactory.getSerializer(&apos;HL7V2&apos;).fromXML(msg);

	FileUtil.write(errorDir+&apos;Error_&apos;+dateString+&apos;.hl7&apos;, false, hl7);

	throw(exception);
}</script>
          <type>JavaScript</type>
          <data>
            <entry>
              <string>Script</string>
              <string>var errorDir = &quot;D:/HealthLevel Data/uw/listener-13C06E45-A7BC-460F-8185-3F16A99EB544/rawhl7error/&quot;;
var fileDir = &quot;D:/HealthLevel Data/uw/psv/process/unprocessed/&quot;;
var fileName = &quot;maclab_uw_&quot;;




var newFileName=&quot;&quot;;
var MIN = 15;
var pipeBatch=&quot;&quot;;
// import java sql package to use prepared statements
importPackage(java.sql);
importPackage(java.io);

// Get Message ChildIndex
function getCI(seg)
{
	return seg.childIndex();
}

// Get Segment Name
function getSN(index)
{
	return (msg.children()[index]).name();
}

// Check source segement is same as the target Segment
function isSeg(src,tgt)
{
	return src == tgt ;
}

function getVal(index,sub,ssub, sssub)
{
	var segName = getSN(index);

	if (sssub)
	{
		if (sssub == 0)
			return msg.children()[index][segName+&apos;.&apos;+sub][segName+&apos;.&apos;+sub+&apos;.&apos;+ssub].toString();
		else
			return msg.children()[index][segName+&apos;.&apos;+sub][segName+&apos;.&apos;+sub+&apos;.&apos;+ssub][segName+&apos;.&apos;+sub+&apos;.&apos;+ssub+&apos;.&apos;+sssub].toString();	
	}
	else
	if(ssub == 0)
	{
//		logger.info(index+&quot;,&quot;+sub+&quot;,&quot;+ssub);
		var fieldLen = (msg.children()[index][segName+&apos;.&apos;+sub]).children().length();
		var res=&quot;&quot;;
		if(fieldLen &gt;= 1)
			res = (SerializerFactory.getSerializer(&apos;HL7V2&apos;).fromXML((msg.children()[index][segName+&apos;.&apos;+sub])));
		return res;
	}
	else
		return msg.children()[index][segName+&apos;.&apos;+sub][segName+&apos;.&apos;+sub+&apos;.&apos;+ssub].toString();

	return &apos;&apos;;	
}


function converttoformattedtimestamp (tmpts)
{
	var tmp2 = tmpts.substr(0,4) + &apos;-&apos; + tmpts.substr(4, 2) + &apos;-&apos; + tmpts.substr(6,2) + &apos; &apos; + tmpts.substr(8, 2) +&apos;:&apos; + tmpts.substr(10,2)+&apos;:&apos; + tmpts.substr(12,2) ;

//logger.info(tmp2.toString());

	return (tmp2.toString());
}

function handler_msh(rec, msg)
{
	rec.msgsendingapp = msg[&apos;MSH&apos;][&apos;MSH.3&apos;][&apos;MSH.3.1&apos;].toString();
	rec.msgsendingfacility = msg[&apos;MSH&apos;][&apos;MSH.4&apos;][&apos;MSH.4.1&apos;].toString();
	rec.msgtype = msg[&apos;MSH&apos;][&apos;MSH.9&apos;][&apos;MSH.9.1&apos;].toString();
	rec.msgtrigger = msg[&apos;MSH&apos;][&apos;MSH.9&apos;][&apos;MSH.9.2&apos;].toString();
	rec.ts_msg = converttoformattedtimestamp (msg[&apos;MSH&apos;][&apos;MSH.7&apos;][&apos;MSH.7.1&apos;].toString());

	rec.security = msg[&apos;MSH&apos;][&apos;MSH.8&apos;][&apos;MSH.8.1&apos;].toString();
}

function handler_pid(rec, msg)
{
	// PID Segment Entries
	rec.empi = msg[&apos;PID&apos;][&apos;PID.2&apos;][&apos;PID.2.1&apos;].toString();
	var numofMRNs = msg[&apos;PID&apos;][&apos;PID.3&apos;].length();
	rec.mrn = msg[&apos;PID&apos;][&apos;PID.3&apos;][numofMRNs-1][&apos;PID.3.1&apos;].toString();
	
	rec.dob = msg[&apos;PID&apos;][&apos;PID.7&apos;][&apos;PID.7.1&apos;].toString();
	rec.sex = msg[&apos;PID&apos;][&apos;PID.8&apos;][&apos;PID.8.1&apos;].toString();
	var numrace = msg[&apos;PID&apos;][&apos;PID.10&apos;].length();
	if (numrace &gt;= 1)
	{
		rec.race = msg[&apos;PID&apos;][&apos;PID.10&apos;][numrace-1][&apos;PID.10.1&apos;].toString();
	}
	var numaddresses = msg[&apos;PID&apos;][&apos;PID.11&apos;].length();
	if (numaddresses &gt;= 1)
	{
		rec.city = msg[&apos;PID&apos;][&apos;PID.11&apos;][numaddresses-1][&apos;PID.11.3&apos;].toString();
		rec.zip = msg[&apos;PID&apos;][&apos;PID.11&apos;][numaddresses-1][&apos;PID.11.5&apos;].toString();	
		rec.county = msg[&apos;PID&apos;][&apos;PID.11&apos;][numaddresses-1][&apos;PID.11.9&apos;].toString();
	}
	rec.language = msg[&apos;PID&apos;][&apos;PID.15&apos;][&apos;PID.15.1&apos;].toString();
	rec.ms = msg[&apos;PID&apos;][&apos;PID.16&apos;][&apos;PID.16.1&apos;].toString();
	rec.religion = msg[&apos;PID&apos;][&apos;PID.17&apos;][&apos;PID.17.1&apos;].toString();
	rec.ethnicgroup = msg[&apos;PID&apos;][&apos;PID.22&apos;][&apos;PID.22.1&apos;].toString();
	rec.birthorder = msg[&apos;PID&apos;][&apos;PID.25&apos;][&apos;PID.25.1&apos;].toString();
	rec.death = msg[&apos;PID&apos;][&apos;PID.30&apos;][&apos;PID.30.1&apos;].toString();

	if (rec.msgtype &amp;&amp; rec.msgtype == &apos;ADT&apos;)
		rec.har = msg[&apos;PID&apos;][&apos;PID.18&apos;][&apos;PID.18.1&apos;].toString();
	else
		rec.visitnumber = msg[&apos;PID&apos;][&apos;PID.18&apos;][&apos;PID.18.1&apos;].toString();
		
	rec.info = &apos;PATIENT_DEM&apos;;
	
	AddToBuffer(rec);
	//clean all, EXCEPT identifiers.
	rec.info = &apos;&apos;;
	rec.dob = &apos;&apos;;
	rec.sex = &apos;&apos;;
	rec.race = &apos;&apos;;	
	rec.language = &apos;&apos;;
     rec.ms = &apos;&apos;;
     rec.religion = &apos;&apos;;
	rec.city = &apos;&apos;;
	rec.zip = &apos;&apos;;
	rec.county = &apos;&apos;;
	rec.ethnicgroup = &apos;&apos;;
	rec.birthorder = &apos;&apos;;
	rec.death = &apos;&apos;;
		
	// check if the above list cleanup matches setup
}

function handler_pd1(rec, msg)
{
	// PID Segment Entries
	var PCPcount = msg[&apos;PD1&apos;][&apos;PD1.4&apos;].length();
	if (PCPcount &gt;= 1)
	{
		rec.staff_first = msg[&apos;PD1&apos;][&apos;PD1.4&apos;][PCPCount-1][&apos;PD1.4.3&apos;].toString();
		rec.staff_last = msg[&apos;PD1&apos;][&apos;PD1.4&apos;][PCPCount-1][&apos;PD1.4.2&apos;].toString();
		rec.staff_middle = msg[&apos;PD1&apos;][&apos;PD1.4&apos;][PCPCount-1][&apos;PD1.4.4&apos;].toString();
		rec.info = &apos;STAFF&apos;;
		rec.staff_role = &apos;PCP&apos;;

		AddToBuffer(rec);

		rec.staff_first = &apos;&apos;;
		rec.staff_last = &apos;&apos;;
		rec.staff_middle = &apos;&apos;;
		rec.staff_role = &apos;&apos;;
		rec.info = &apos;&apos; ;
	}
		
	// check if the above list cleanup matches setup
}

function handler_pv1(rec, msg)
{
	
	var pv1len = msg[&apos;PV1&apos;].length();
	if (pv1len &lt;= 0)
	{
		return;
	}
	
	rec.patientclass = msg[&apos;PV1&apos;][&apos;PV1.2&apos;][&apos;PV1.2.1&apos;].toString();
	rec.patientlocation = msg[&apos;PV1&apos;][&apos;PV1.3&apos;][&apos;PV1.3.1&apos;].toString();
	rec.patientroom = msg[&apos;PV1&apos;][&apos;PV1.3&apos;][&apos;PV1.3.2&apos;].toString();
	rec.admittype = msg[&apos;PV1&apos;][&apos;PV1.4&apos;][&apos;PV1.4.1&apos;].toString();
	rec.patienttype = msg[&apos;PV1&apos;][&apos;PV1.18&apos;][&apos;PV1.18.1&apos;].toString();
	rec.hospitalservice = msg[&apos;PV1&apos;][&apos;PV1.10&apos;][&apos;PV1.10.1&apos;].toString();
	rec.servicingfacility = msg[&apos;PV1&apos;][&apos;PV1.39&apos;][&apos;PV1.39.1&apos;].toString();
	rec.vip = msg[&apos;PV1&apos;][&apos;PV1.16&apos;][&apos;PV1.16.1&apos;].toString();

	var visitnum = msg[&apos;PV1&apos;][&apos;PV1.19&apos;][&apos;PV1.19.1&apos;].toString();
	if (visitnum != &apos;&apos;) // if visit is present, then use, otherwise, ignore
		rec.visitnumber = visitnum;
		
	rec.info = &apos;PATIENT_VISIT&apos;;
	
	AddToBuffer(rec);

	rec.patientclass = &apos;&apos; ;
	rec.patientlocation = &apos;&apos; ;
	rec.admittype = &apos;&apos; ;
	rec.patienttype = &apos;&apos; ;
	rec.hospitalservice = &apos;&apos; ;
	rec.servicingfacility = &apos;&apos; ;
	rec.vip = &apos;&apos; ;
	rec.info = &apos;&apos;;
	
	var AdmitMDCount = msg[&apos;PV1&apos;][&apos;PV1.7&apos;].length();
	if (AdmitMDCount &gt;= 1)
	{
		rec.info = &apos;STAFF&apos;;
		rec.staff_first = msg[&apos;PV1&apos;][&apos;PV1.7&apos;][AdmitMDCount-1][&apos;PV1.7.3&apos;].toString();
		rec.staff_last = msg[&apos;PV1&apos;][&apos;PV1.7&apos;][AdmitMDCount-1][&apos;PV1.7.2&apos;].toString();
		rec.staff_middle = msg[&apos;PV1&apos;][&apos;PV1.7&apos;][AdmitMDCount-1][&apos;PV1.7.4&apos;].toString();
		rec.staff_role = &apos;Admitting MD&apos;;

		AddToBuffer(rec);

		rec.staff_first = &apos;&apos;;
		rec.staff_last = &apos;&apos;;
		rec.staff_middle = &apos;&apos;;
		rec.staff_role = &apos;&apos;;
		rec.info = &apos;&apos; ;		
	}

	var RefMDCount = msg[&apos;PV1&apos;][&apos;PV1.8&apos;].length();
	if (RefMDCount &gt;= 1)
	{
		rec.info = &apos;STAFF&apos;;
		rec.staff_first = msg[&apos;PV1&apos;][&apos;PV1.8&apos;][RefMDCount-1][&apos;PV1.8.3&apos;].toString();
		rec.staff_last = msg[&apos;PV1&apos;][&apos;PV1.8&apos;][RefMDCount-1][&apos;PV1.8.2&apos;].toString();
		rec.staff_middle = msg[&apos;PV1&apos;][&apos;PV1.8&apos;][RefMDCount-1][&apos;PV1.8.4&apos;].toString();
		rec.staff_role = &apos;Referring MD&apos;;

		AddToBuffer(rec);

		rec.staff_first = &apos;&apos;;
		rec.staff_last = &apos;&apos;;
		rec.staff_middle = &apos;&apos;;
		rec.staff_role = &apos;&apos;;
		rec.info = &apos;&apos; ;		
	}

	var ConsultingMDCount = msg[&apos;PV1&apos;][&apos;PV1.9&apos;].length();
	if (ConsultingMDCount &gt;= 1)
	{
		rec.info = &apos;STAFF&apos;;
		rec.staff_first = msg[&apos;PV1&apos;][&apos;PV1.9&apos;][ConsultingMDCount-1][&apos;PV1.9.3&apos;].toString();
		rec.staff_last = msg[&apos;PV1&apos;][&apos;PV1.9&apos;][ConsultingMDCount-1][&apos;PV1.9.2&apos;].toString();
		rec.staff_middle = msg[&apos;PV1&apos;][&apos;PV1.9&apos;][ConsultingMDCount-1][&apos;PV1.9.4&apos;].toString();
		rec.staff_role = &apos;Consulting MD&apos;;

		AddToBuffer(rec);

		rec.staff_first = &apos;&apos;;
		rec.staff_last = &apos;&apos;;
		rec.staff_middle = &apos;&apos;;
		rec.staff_role = &apos;&apos;;
		rec.info = &apos;&apos; ;		
	}	
	
	rec.ts_when = converttoformattedtimestamp(msg[&apos;PV1&apos;][&apos;PV1.44&apos;][&apos;PV1.44.1&apos;].toString() )  ;
	if (rec.ts_when != &apos;&apos;)
	{
		rec.workflow_state = &apos;ts_admit&apos;;
		rec.info = &apos;WORKFLOWSTATE&apos;;
		AddToBuffer (rec);
		rec.info = &apos;&apos; ;
		rec.workflow_state = &apos;&apos;;
	}

	rec.ts_when = converttoformattedtimestamp(msg[&apos;PV1&apos;][&apos;PV1.45&apos;][&apos;PV1.45.1&apos;].toString() )  ;
	if (rec.ts_when != &apos;&apos;)
	{
		rec.workflow_state = &apos;ts_discharge&apos;;
		rec.info = &apos;WORKFLOWSTATE&apos;;
		AddToBuffer (rec);
		rec.info = &apos;&apos; ;
		rec.workflow_state = &apos;&apos;;
	}
	
	
}

function handler_pv2(rec, msg)
{
	rec.hospitalservice = msg[&apos;PV2&apos;][&apos;PV2.12&apos;][&apos;PV2.12.1&apos;].toString();
	rec.ts_when = converttoformattedtimestamp(msg[&apos;PV2&apos;][&apos;PV2.8&apos;][&apos;PV2.8.1&apos;].toString() )  ;
	if (rec.ts_when != &apos;&apos;)
	{
		rec.workflow_state = &apos;ts_scheduledfor&apos;;
		rec.info = &apos;WORKFLOWSTATE&apos;;
		AddToBuffer (rec);
		rec.info = &apos;&apos; ;
		rec.workflow_state = &apos;&apos;;
	}

}

function handler_in1(rec, msg)
{
	var len = parseInt(msg[&apos;IN1&apos;].length());
	rec.info = &apos;PAYER&apos;;
	for (i=0; i&lt; len;i++)
	{
		rec.attribute_value =  msg[&apos;IN1&apos;][i][&apos;IN1.4&apos;][&apos;IN1.4.1&apos;].toString() ;
		rec.value_status =  msg[&apos;IN1&apos;][i][&apos;IN1.22&apos;][&apos;IN1.22.1&apos;].toString() ;
		rec.ts_when =  converttoformattedtimestamp(msg[&apos;IN1&apos;][i][&apos;IN1.29&apos;][&apos;IN1.29.1&apos;].toString()) ;
		AddToBuffer (rec);
	}
	rec.info = &apos;&apos;;
	rec.attribute_value =  &apos;&apos;;
	rec.value_status =  &apos;&apos;;
	rec.ts_when =  &apos;&apos;;
}

function handler_al1(rec, msg)
{
	var len = parseInt(msg[&apos;AL1&apos;].length());
	for (i=0; i&lt; len;i++)
	{
		rec.info = &apos;CONDITION&apos;;
		rec.attribute_name = &apos;ALLERGY&apos;;
		rec.value_status =msg[&apos;AL1&apos;][i] ? msg[&apos;AL1&apos;][i][&apos;AL1.2&apos;][&apos;AL1.2.1&apos;].toString() : &apos;&apos;;
		rec.attribute_id = msg[&apos;AL1&apos;][i] ? msg[&apos;AL1&apos;][i][&apos;AL1.3&apos;][&apos;AL1.3.1&apos;].toString(): &apos;&apos;;
		rec.attribute_value = msg[&apos;AL1&apos;][i] ? msg[&apos;AL1&apos;][i][&apos;AL1.3&apos;][&apos;AL1.3.2&apos;].toString(): &apos;&apos;;
		AddToBuffer (rec);
	}
	rec.value_status = &apos;&apos;;
	rec.attribute_id = &apos;&apos;;
	rec.attribute_value = &apos;&apos;;
	rec.info = &apos;&apos;;
	rec.attribute_name = &apos;&apos;;
}

function handler_obr_maclab (rec, msg)
{
	var obrlen = parseInt(msg[&apos;OBR&apos;].length());
	if (obrlen &gt; 0)
	{
		rec.obr31 = msg[&apos;OBR&apos;][0][&apos;OBR.3&apos;][&apos;OBR.3.1&apos;].toString(); // set up the case id
		rec.casenumber = msg[&apos;OBR&apos;][0][&apos;OBR.3&apos;][&apos;OBR.3.1&apos;].toString(); // set up the case id
		var obrIndex = 	getCI(msg[&apos;OBR&apos;][0]);	

		// Observation Time
		rec.obr71 = getVal(obrIndex,7,1);
		rec.serviceline = getVal(obrIndex, 24, 1);
		
		rec.info = &apos;CASEDATA&apos;;
		AddToBuffer (rec);
		rec.serviceline = &apos;&apos;;
		rec.obr71 = &apos;&apos;
		
		rec.info = &apos;WORKFLOWSTATE&apos;;
		rec.workflow_state = &apos;ts_dos&apos;;
		rec.ts_when = converttoformattedtimestamp(getVal(obrIndex,7,1));
		AddToBuffer (rec);
		rec.info = &apos;&apos;;
		rec.workflow_state = &apos;&apos;;

		rec.staff_role = &apos;Primary Attending MD&apos; ;
		rec.staff_first = getVal(obrIndex, 32, 3);
		rec.staff_last = getVal(obrIndex, 32, 2);
		rec.info = &apos;STAFF&apos;;
		AddToBuffer (rec);
		rec.staff_role = &apos;&apos; ;
		rec.staff_first = &apos;&apos;;
		rec.staff_last = &apos;&apos;;
		//rec.ts_when = &apos;&apos;;
		rec.info = &apos;&apos;;
	}
}

function sub_handler_vitals (rec, msg, i)
{
	rec.ts_when = converttoformattedtimestamp(msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.14&apos;][&apos;OBX.14.1&apos;].toString() : &apos;&apos;);
	// var savephase_ts = &apos;&apos;;
	// if (savephase_ts != rec.ts_when) // stick in the phase only if new timestamp.
	// {
		// rec.workflow_state = &apos;ts_phase_&apos;+ (msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.1&apos;].toString() : &apos;&apos;);
		
		// rec.info = &apos;WORKFLOWSTATE&apos;;
		// AddToBuffer (rec) ;
		// rec.workflow_state = &apos;&apos;;
	// }

	rec.info = &apos;CONDITION&apos;;

	rec.attribute_name = &apos;Phase Number&apos;;
	rec.attribute_value = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.1&apos;].toString() : &apos;&apos;;
	rec.attribute_unit = &apos;&apos;;
//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
	//AddToBuffer (rec) ;

	rec.attribute_name = &apos;SpO2&apos;;
	rec.attribute_value = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.2&apos;].toString() : &apos;&apos;;
	rec.attribute_unit = &apos;&apos;;
//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
	AddToBuffer (rec) ;

	rec.attribute_name = &apos;HR&apos;;
	rec.attribute_value = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.3&apos;].toString() : &apos;&apos;;
	rec.attribute_unit = &apos;&apos;;
//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
	AddToBuffer (rec) ;

	rec.attribute_name = &apos;Blood Pressure&apos;; //BP goes in as a pair of values
	rec.attribute_value = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.4&apos;].toString() : &apos;&apos;;
	rec.attribute_unit = &apos;&apos;;
//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
	//AddToBuffer (rec) ;

	rec.attribute_value2 = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.5&apos;].toString() : &apos;&apos;;
	rec.attribute_unit = &apos;&apos;;
//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
	AddToBuffer (rec) ;
	rec.attribute_value2 = &apos;&apos;;
	
	rec.attribute_name = &apos;Mean Pressure&apos;;
	rec.attribute_value = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.6&apos;].toString() : &apos;&apos;;
	rec.attribute_unit = &apos;&apos;;
//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
	AddToBuffer (rec) ;

	rec.attribute_name = &apos;Respiration Rate&apos;;
	rec.attribute_value = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.7&apos;].toString() : &apos;&apos;;
	rec.attribute_unit = &apos;bpm&apos;;
//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
	AddToBuffer (rec) ;

	rec.attribute_name = &apos;Temp&apos;;
	rec.attribute_value = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.9&apos;].toString() : &apos;&apos;;
	rec.attribute_unit = &apos;cel&apos;;
//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
	AddToBuffer (rec) ;

	rec.attribute_name = &apos;Level of Consciousness&apos;;
	rec.attribute_value = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.11&apos;].toString() : &apos;&apos;;
	rec.attribute_unit = &apos;&apos;;
//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
	AddToBuffer (rec) ;

	rec.attribute_name = &apos;Pressure Source&apos;;
	rec.attribute_value = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.12&apos;].toString() : &apos;&apos;;
	rec.attribute_unit = &apos;&apos;;
//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
	AddToBuffer (rec) ;

	rec.attribute_name = &apos;Inspired EtCO2&apos;;
	rec.attribute_value = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.13&apos;].toString() : &apos;&apos;;
	rec.attribute_unit = &apos;mmHg&apos;;
//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
	AddToBuffer (rec) ;

	rec.attribute_name = &apos;Expired EtCO2&apos;;
	rec.attribute_value = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.14&apos;].toString() : &apos;&apos;;
	rec.attribute_unit = &apos;mmHg&apos;;
//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
	AddToBuffer (rec) ;

	rec.attribute_name = &apos;&apos;;
	rec.attribute_value = &apos;&apos;;
	rec.attribute_unit = &apos;&apos;;	
}


function sub_handler_event_general(rec, msg, i)
{
	//pullfromGeneralEventLog (rec);
	var str = rec.obx51
	if (str)
	{
		rec.info = &apos;&apos;;
		rec.attribute_name = &apos;&apos; ;
		rec.attribute_value = &apos;&apos;;
		rec.workflow_state = &apos;&apos;;
	
		switch (str)
		{
			case &quot;Cath Lab 4&quot;:
			case &quot;Cath Lab 3&quot;:
			case &quot;Cath Lab 2&quot;:
			case &quot;Cath Lab 1&quot;:
			case &quot;Hybrid OR&quot;:
			case &quot;Hybrid OR 15&quot;:
			case &quot;Hybrid OR 16&quot;:
				rec.room_name = str;
				rec.info = &apos;CASEDATA&apos;;
					//ts_when is already set up from 14,1
				AddToBuffer(rec);
				rec.room_name= &apos;&apos;;
				rec.info = &apos;&apos;;
				break;

			case &quot;Patient Arrives&quot;:
			case &quot;Patient on Table&quot;:
			case &quot;Patient Ready&quot;:
			case &quot;Physician Present / No Page Needed&quot;:
			case &quot;Physician Called&quot;:
			case &quot;Physician Arrived&quot;:
			case &quot;Case Start&quot;:
			case &quot;Case End&quot;:
			case &quot;Access&quot;:
				rec.workflow_state = str;
				rec.info = &apos;WORKFLOWSTATE&apos;;
					//ts_when is already set up from 14,1
				AddToBuffer(rec);
				rec.workflow_state = &apos;&apos;;
				rec.info = &apos;&apos;;
				//logger.info(&quot;sworkflowstate: &quot;+rec.workflow_state);
				break;
		
			case &quot;Time Out Performed and The Following Verified:&quot;:
			case &quot;_______TIME OUT PERFORMED_______&quot;:
				rec.workflow_state = &apos;Timeout Performed&apos;;
				rec.info = &apos;WORKFLOWSTATE&apos;;
					//ts_when is already set up from 14,1
				AddToBuffer(rec);
				rec.workflow_state = &apos;&apos;;
				rec.info = &apos;&apos;;
				break;

			default:
				var tmpst = rec.obx51;
				rec.info=&apos;EVENT&apos;;
			
				if (tmpst)
				{
					//logger.info(&quot;access:&quot;+ tmpst);
					if (tmpst.substring(0, 21) == &quot;Percutaneous Puncture&quot;)
					{
						rec.info = &quot;DOCUMENTATION&quot;;
						rec.attribute_name = &quot;ACCESS_LOCATION&quot;;
						rec.attribute_value = tmpst;
					}
				}
			
				AddToBuffer(rec);			
				rec.info = &apos;&apos;;
				rec.attribute_name = &apos;&apos;;
				rec.attribute_value = &apos;&apos;;
				break;
		} // switch
		
		if (rec.info != &apos;&apos;)
		{
			//AddToBuffer(rec);
			rec.info = &apos;&apos;;
			rec.attribute_name = &apos;&apos; ;
			rec.attribute_value = &apos;&apos;;
			rec.workflow_state = &apos;&apos;;
		}
	}

}




	
function handler_obx_maclab(rec, msg)
{
	var len = parseInt(msg[&apos;OBX&apos;].length());
	var savephase_ts = &apos;&apos;;
//logger.info(&apos;obx len:&apos;+len.toString());
	
	for (i=0; i&lt; len;i++)
	{
		rec.obx31 = msg[&apos;OBX&apos;][i] ? msg[&apos;OBX&apos;][i][&apos;OBX.3&apos;][&apos;OBX.3.1&apos;].toString() : &apos;&apos;;//getVal(j,3,1);
		//rec.casenumber = msg[&apos;OBX&apos;][i][&apos;OBX.3&apos;][&apos;OBX.3.1&apos;].toString() ;
		rec.obx51 = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.1&apos;].toString() ;
		rec.obx52 = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.2&apos;].toString() ;
		rec.obx53 = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.3&apos;].toString() ;
		rec.obx54 = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.4&apos;].toString() ;
		rec.obx55 = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.5&apos;].toString() ;
		rec.obx56 = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.6&apos;].toString() ;
		rec.obx57 = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.7&apos;].toString() ;
		rec.obx58 = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.8&apos;].toString() ;
		rec.obx59 = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.9&apos;].toString() ;
		rec.obx510 = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.10&apos;].toString() ;
		rec.obx511 = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.11&apos;].toString() ;
		rec.obx111 = msg[&apos;OBX&apos;][i][&apos;OBX.11&apos;][&apos;OBX.11.1&apos;].toString() ;
	
		var tmpts = msg[&apos;OBX&apos;][i][&apos;OBX.14&apos;][&apos;OBX.14.1&apos;].toString() ;
		rec.ts_when =  converttoformattedtimestamp(tmpts);

		if (rec.obx31 == &apos;HOSPINFO-LOC&apos;)
		{
			rec.info = &apos;CASEDATA&apos;;
			rec.room_name = rec.obx51;
			AddToBuffer (rec);
			rec.room_name = &apos;&apos;;
			rec.info = &apos;&apos;;
		}
		
		rec.obx_status = rec.obx111;

		var obxinfo = &apos;&apos;;
		//logger.info(&quot;Info&quot; + rec.obx31.substr(0,4));

		if (rec.obx31.substr(0,4) == &quot;TIME&quot;)	
		{
			obxinfo = &apos;EVENT_WORKFLOW&apos;;
		//logger.info(rec.obx31.substr(0,4) + &apos;-----&apos; + rec.obx31);	
		}
		else
		{
			obxinfo = rec.obx31.toUpperCase();//obxinfo = rec.obx31;
		//logger.info(&quot;else condition: &quot;+obxinfo);					
		}

//logger.info(&apos;obxinfo:&apos;+obxinfo);
	
		switch (obxinfo.toUpperCase())
		{
			case &quot;CS-SCORE-PRE&quot;:
			case &quot;CS-SCORE-POST&quot;:
				rec.info = &apos;CONDITION&apos;;
				rec.attribute_name = (obxinfo == &quot;CS-SCORE-PRE&quot; ) ? &apos;Aldrete Score Pre&apos; : &apos;Aldrete Score Post&apos;;
				//rec.attribute_name = &apos;Aldrete Score&apos;;
				rec.attribute_value = rec.obx51;
				rec.attribute_unit = &apos;&apos;;
	//logger.info(&apos;name:&apos;+rec.attribute_name+&apos;, value=&apos;+rec.attribute_value);
				AddToBuffer (rec) ;	
				rec.info = &apos;&apos;;
				rec.attribute_name = &apos;&apos;;
				rec.attribute_value = &apos;&apos;;
				break;
			
			case &quot;EVENT&quot;:
				sub_handler_event_general(rec, msg, i);
				break;

			case &apos;EVENT_WORKFLOW&apos;:
				rec.workflow_state = rec.obx31;
				//ts_when is already set up from obx 14,1
				rec.info = &apos;WORKFLOWSTATE&apos;
				AddToBuffer(rec);
				rec.workflow_state = &apos;&apos;;
				rec.info = &apos;&apos;;
				break;
			
			case &apos;EVENT_VITALS&apos;:
				sub_handler_vitals(rec, msg, i);			
				break;
			
			case &quot;CUSTOM_FIELD&quot;:
				rec.info = &apos;CUSTOM_FIELD&apos;
				rec.attribute_guid = msg[&apos;OBX&apos;][i][&apos;OBX.3&apos;][&apos;OBX.3.2&apos;].toString() ;
				rec.attribute_name = msg[&apos;OBX&apos;][i][&apos;OBX.3&apos;][&apos;OBX.3.3&apos;].toString() ;
				rec.attribute_value = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.1&apos;].toString() ;						
				rec.attribute_group = msg[&apos;OBX&apos;][i][&apos;OBX.5&apos;][&apos;OBX.5.3&apos;].toString() ;						
				AddToBuffer(rec);
				rec.attribute_guid = &apos;&apos;;
				rec.attribute_name = &apos;&apos;;
				rec.attribute_value = &apos;&apos;;						
				rec.attribute_group = &apos;&apos;;
				break;

			case &quot;EVENT_CONTRAST&quot;:
				rec.info = &apos;CONTRAST&apos;;
				rec.attribute_name = rec.obx51;
				rec.attribute_value = rec.obx52;
				AddToBuffer(rec);
				rec.info = &apos;&apos;;
				rec.attribute_name = &apos;&apos;;
				rec.attribute_value = &apos;&apos;;
				break;

			case &quot;EVENT_PERSONNEL&quot;:
				rec.info = &apos;STAFF&apos;;
					// when obx 3 = Event_Personnel, then obx5 has details including roles
				rec.staff_first = rec.obx53;//getVal(j,5,3);
				rec.staff_last = rec.obx52;//getVal(j,5,2);
				rec.staff_role = rec.obx56;//getVal(j,5,6);
				rec.staff_when = rec.obx57;
				rec.staff_internalid = rec.obx59;
				//rec.staff_intid = getVal(j,5,10);
				AddToBuffer(rec);
				rec.info = &apos;&apos;;
					// when obx 3 = Event_Personnel, then obx5 has details including roles
				rec.staff_first = &apos;&apos;;
				rec.staff_last = &apos;&apos;;
				rec.staff_role = &apos;&apos;;
				rec.staff_internalid = &apos;&apos;;
				break;
			
			case &quot;EVENT_MEDICATION&quot;:
				rec.info = &quot;MEDICATION&quot;;
				rec.med_name = rec.obx51;//getVal(j,5,1);
				rec.med_qty = rec.obx52;//getVal(j,5,2);
				rec.med_path = rec.obx53;//getVal(j,5,3);
				rec.med_type = rec.obx55;//getVal(j,5,5);
				rec.med_unit = msg[&apos;OBX&apos;][i][&apos;OBX.6&apos;][&apos;OBX.6.1&apos;].toString() ;//getVal(j,6,1);
				rec.med_orderedby = rec.obx59;
				rec.med_givenby = rec.obx511;
				AddToBuffer(rec);	
				rec.info = &apos;&apos;;
				rec.med_name = &apos;&apos;;
				rec.med_qty = &apos;&apos;;
				rec.med_path = &apos;&apos;;
				rec.med_type = &apos;&apos;;
				rec.med_unit = &apos;&apos;;
				rec.med_orderedby = &apos;&apos;;
				rec,med_givenby = &apos;&apos;;
				break;	

			case &quot;EVENT_INVENTORY&quot;:
				rec.info = &apos;INVENTORY&apos;
				rec.item_name = rec.obx51	;//getVal(j,5,1);
				rec.item_code = rec.obx52	;//getVal(j,5,2);
				rec.item_size = rec.obx53	;
				rec.item_maker = rec.obx54	;
				rec.item_serialnumber = rec.obx55;
				rec.item_lotnumber = rec.obx56;
				rec.item_barcode = rec.obx57	;
				rec.item_type = rec.obx58	;//getVal(j,5,8);
				rec.item_invid1 = rec.obx59	;//getVal(j,5,9);
				rec.item_apcbillcode = rec.obx510;//getVal(j,5,9);
				rec.item_invid2 = rec.obx511	;//getVal(j,5,11);
				AddToBuffer(rec)	;
				rec.info = &apos;&apos;				;
				rec.item_name = &apos;&apos;			;
				rec.item_code = &apos;&apos;			;
				rec.item_size = &apos;&apos;			;
				rec.item_maker = &apos;&apos;			;
				rec.item_serialnumber = &apos;&apos;	;
				rec.lot_number = &apos;&apos;			;
				rec.item_barcode = &apos;&apos;		;
				rec.item_type = &apos;&apos;			;
				rec.item_invid1 = &apos;&apos;		;
				rec.item_apcbillcode = &apos;&apos;	;
				rec.item_invid2 = &apos;&apos;		;
				break;

			case &quot;EVENT_PROCEDURE&quot;:
				rec.info = &apos;PERFORMED_PROCEDURE&apos;;
				rec.perf_procname = rec.obx51;//getVal(j,5,1);
				AddToBuffer(rec);
				rec.perf_procname = &apos;&apos;;
				rec.info = &apos;&apos;;
				break;

			case &quot;EVENT_COMPLICATION&quot;:
				rec.info = &apos;COMPLICATION&apos;;
				rec.complication_name = rec.obx51;//getVal(j,5,1);
				AddToBuffer(rec);
				rec.complication_name = &apos;&apos;;
				rec.info = &apos;&apos;;
				break;

			default:
				rec.info = obxinfo ;
				AddToBuffer(rec);
				rec.info = &apos;&apos; ;	
		} // end of switch

		rec.obx51 = &apos;&apos;;
		rec.obx52 = &apos;&apos;;
		rec.obx53 = &apos;&apos;;
		rec.obx54 = &apos;&apos;;
		rec.obx55 = &apos;&apos;;
		rec.obx56 = &apos;&apos;;
		rec.obx57 = &apos;&apos;;
		rec.obx58 = &apos;&apos;;
		rec.obx59 = &apos;&apos;;
		rec.obx510 = &apos;&apos;;
		rec.obx511 = &apos;&apos;;		
		rec.obx111 = &apos;&apos;;
		rec.local_id = &apos;&apos; ;
		rec.local_name = &apos;&apos;;
		rec.local_system = &apos;&apos;;
		rec.attribute_id = &apos;&apos;;
		rec.attribute_name = &apos;&apos;;
		rec.coding_system = &apos;&apos;;
		rec.attribute_value = &apos;&apos;;
		rec.attribute_units = &apos;&apos;;	
		rec.value_status = &apos;&apos;;	
	}// end of for all obx segments
} // end of function handler_obx_maclab

try
{

	var rec = {};

	handler_msh (rec, msg);
	//handler_evn (rec, msg);
	handler_pid (rec, msg);
	//handler_pd1 (rec, msg);
	//handler_pv1 (rec, msg);
	//handler_pv2 (rec, msg);
	handler_obr_maclab (rec, msg);
	handler_obx_maclab (rec, msg);
	//handler_al1(rec, msg);
	//handler_in1(rec, msg);
	
	writeContent();		
}
catch(exception)
{
	var dateString = DateUtil.getCurrentDate(&apos;yyyyMMddHHmmss&apos;);	
	var hl7 = SerializerFactory.getSerializer(&apos;HL7V2&apos;).fromXML(msg);

	FileUtil.write(errorDir+&apos;Error_&apos;+dateString+&apos;.hl7&apos;, false, hl7);

	throw(exception);
}</string>
            </entry>
          </data>
        </step>
        <step>
          <sequenceNumber>1</sequenceNumber>
          <name>File Scripts</name>
          <script>//Insert record into the file
function AddToBuffer(rec)
{
	var body = getRecord(rec);
	pipeBatch += body;
}

// Check Whether File Exists or not.
function fileDoesNotExist()
{
	var f = new File(fileDir+newFileName);
	return !f.exists();
}


// Write the record to the file
function writeContent()
{
	// Writing the pipe delimted file to the file directory
	var newdate = DateUtil.getCurrentDate(&apos;yyyy/MM/dd HH:mm&apos;);
	var oldConf = globalChannelMap.get(&quot;old&quot;);
	var olddate = oldConf.date;
	newFileName= fileName+DateUtil.convertDate(&apos;yyyy/MM/dd HH:mm&apos;, &apos;yyyyMMddHHmm&apos;, olddate)+&quot;.psv&quot;;
	// If file is a new one after deployment or execeeds certian minutes create new file
	if(fileDoesNotExist() || ((new Date(newdate).getTime() - new Date(olddate).getTime())/60000 &gt; MIN) )
	{
		logger.info(&quot;Creating New File&quot;);
		newFileName= fileName + DateUtil.convertDate(&apos;yyyy/MM/dd HH:mm&apos;, &apos;yyyyMMddHHmm&apos;, newdate)+&quot;.psv&quot;;
		var header= getHeader();
		// Write header to file
		pipeBatch = header+pipeBatch;
		// Change Config Data
		oldConf.date = newdate;
		globalChannelMap.put(&quot;old&quot;,oldConf);
	}
	FileUtil.write(fileDir+newFileName,true,pipeBatch);
}


// Convert the record into a valid Pipe Delimited Record
function getPipeData(rec)
{
	return (SerializerFactory.getSerializer(&apos;HL7V2&apos;).fromXML(rec)).replace(&quot;REC|&quot;,&quot;&quot;)+&quot;\r\n&quot;;
}


// Create Header
function getHeader()
{
	//var incMsg = SerializerFactory.getSerializer(&apos;HL7V2&apos;).fromXML(&quot;|||||||||||||||insurancename|insurance_type|IN1segmentsequence#&quot;);
	var header = new XML(&quot;&lt;REC/&gt;&quot;);

	header[&apos;REC&apos;][&apos;REC.1&apos;] = &quot;msgsendingapp&quot;;
	header[&apos;REC&apos;][&apos;REC.2&apos;] = &quot;msgsendingfacility&quot;;
	header[&apos;REC&apos;][&apos;REC.3&apos;] = &quot;msgtype&quot;;
	header[&apos;REC&apos;][&apos;REC.4&apos;] = &quot;msgtrigger&quot;;
	header[&apos;REC&apos;][&apos;REC.5&apos;] = &quot;ts_msg&quot;;
	header[&apos;REC&apos;][&apos;REC.6&apos;] = &quot;security&quot;;

	header[&apos;REC&apos;][&apos;REC.7&apos;] = &quot;EMPI&quot;;
	header[&apos;REC&apos;][&apos;REC.8&apos;] = &quot;Patient_Id&quot;;
	header[&apos;REC&apos;][&apos;REC.9&apos;] = &quot;dob&quot;;
	header[&apos;REC&apos;][&apos;REC.10&apos;] = &quot;sex&quot;;
	header[&apos;REC&apos;][&apos;REC.11&apos;] = &quot;race&quot;;
	header[&apos;REC&apos;][&apos;REC.12&apos;] = &quot;city&quot;;
	header[&apos;REC&apos;][&apos;REC.13&apos;] = &quot;zip&quot;;
	header[&apos;REC&apos;][&apos;REC.14&apos;] = &quot;county&quot;;
	header[&apos;REC&apos;][&apos;REC.15&apos;] = &quot;language&quot;;
	header[&apos;REC&apos;][&apos;REC.16&apos;] = &quot;marital_status&quot;;
	header[&apos;REC&apos;][&apos;REC.17&apos;] = &quot;religion&quot;;
	header[&apos;REC&apos;][&apos;REC.18&apos;] = &quot;ethnicgroup&quot;;
	header[&apos;REC&apos;][&apos;REC.19&apos;] = &quot;birthorder&quot;;
	header[&apos;REC&apos;][&apos;REC.20&apos;] = &quot;death&quot;;
	
	header[&apos;REC&apos;][&apos;REC.21&apos;] = &quot;har&quot;;
	header[&apos;REC&apos;][&apos;REC.22&apos;] = &quot;visitnumber&quot;;

	header[&apos;REC&apos;][&apos;REC.23&apos;] = &quot;info&quot;;
	
	header[&apos;REC&apos;][&apos;REC.24&apos;] = &quot;patientclass&quot;;
	header[&apos;REC&apos;][&apos;REC.25&apos;] = &quot;patientlocation&quot;;
	header[&apos;REC&apos;][&apos;REC.26&apos;] = &quot;patientroom&quot;;
	header[&apos;REC&apos;][&apos;REC.27&apos;] = &quot;admittype&quot;;
	header[&apos;REC&apos;][&apos;REC.28&apos;] = &quot;patienttype&quot;;
	header[&apos;REC&apos;][&apos;REC.29&apos;] = &quot;hospitalservice&quot;;
	header[&apos;REC&apos;][&apos;REC.30&apos;] = &quot;servicingfacility&quot;;
	header[&apos;REC&apos;][&apos;REC.31&apos;] = &quot;vip&quot;;
	
	header[&apos;REC&apos;][&apos;REC.32&apos;] = &quot;staff_role&quot;;
	header[&apos;REC&apos;][&apos;REC.33&apos;] = &quot;staff_first&quot;;
	header[&apos;REC&apos;][&apos;REC.34&apos;] = &quot;staff_middle&quot;;
	header[&apos;REC&apos;][&apos;REC.35&apos;] = &quot;staff_last&quot;;

	header[&apos;REC&apos;][&apos;REC.36&apos;] = &quot;workflow_state&quot;;
	header[&apos;REC&apos;][&apos;REC.37&apos;] = &quot;ts_when&quot;;   

	header[&apos;REC&apos;][&apos;REC.38&apos;] = &quot;orccontrol&quot;;
	header[&apos;REC&apos;][&apos;REC.39&apos;] = &quot;orcstatus&quot;;
	header[&apos;REC&apos;][&apos;REC.40&apos;] = &quot;priority&quot;;
	header[&apos;REC&apos;][&apos;REC.41&apos;] = &quot;enteringorganization&quot;;
	
	header[&apos;REC&apos;][&apos;REC.42&apos;] = &quot;placerorder&quot;;
	header[&apos;REC&apos;][&apos;REC.43&apos;] = &quot;fillerorder&quot;;
	header[&apos;REC&apos;][&apos;REC.44&apos;] = &quot;fillerissuer&quot;;

	header[&apos;REC&apos;][&apos;REC.45&apos;] = &quot;cptcode&quot;; 
	header[&apos;REC&apos;][&apos;REC.46&apos;] = &quot;cptname&quot;; 
	header[&apos;REC&apos;][&apos;REC.47&apos;] = &quot;ordercode&quot;; 
	header[&apos;REC&apos;][&apos;REC.48&apos;] = &quot;ordertext&quot;; 
	header[&apos;REC&apos;][&apos;REC.49&apos;] = &quot;ordercodingsystem&quot;; 
	header[&apos;REC&apos;][&apos;REC.50&apos;] = &quot;reasonforstudy&quot;; 
	header[&apos;REC&apos;][&apos;REC.51&apos;] = &quot;relevantclinicalinfo&quot;; 
	header[&apos;REC&apos;][&apos;REC.52&apos;] = &quot;performingresource&quot;; 
	header[&apos;REC&apos;][&apos;REC.53&apos;] = &quot;department&quot;; 
	

	header[&apos;REC&apos;][&apos;REC.54&apos;] = &quot;local_id&quot;; 
	header[&apos;REC&apos;][&apos;REC.55&apos;] = &quot;local_name&quot;; 
	header[&apos;REC&apos;][&apos;REC.56&apos;] = &quot;local_system&quot;; 

	header[&apos;REC&apos;][&apos;REC.57&apos;] = &quot;attribute_id&quot;; 
	header[&apos;REC&apos;][&apos;REC.58&apos;] = &quot;attribute_name&quot;; 
	header[&apos;REC&apos;][&apos;REC.59&apos;] = &quot;coding_system&quot;; 

	header[&apos;REC&apos;][&apos;REC.60&apos;] = &quot;attribute_value&quot;;
	header[&apos;REC&apos;][&apos;REC.61&apos;] = &quot;attribute_units&quot;;
	header[&apos;REC&apos;][&apos;REC.62&apos;] = &quot;reference_range&quot;; 
	header[&apos;REC&apos;][&apos;REC.63&apos;] = &quot;abnormal_flag&quot;;
	header[&apos;REC&apos;][&apos;REC.64&apos;] = &quot;value_status&quot;;

	header[&apos;REC&apos;][&apos;REC.65&apos;] = &quot;obr31&quot;;
	header[&apos;REC&apos;][&apos;REC.66&apos;] = &quot;attribute_value2&quot;;

	header[&apos;REC&apos;][&apos;REC.67&apos;] = &quot;casenumber&quot;;
	header[&apos;REC&apos;][&apos;REC.68&apos;] = &quot;obr71&quot;;
	header[&apos;REC&apos;][&apos;REC.69&apos;] = &quot;obx51&quot;;
	header[&apos;REC&apos;][&apos;REC.70&apos;] = &quot;obx52&quot;;
	header[&apos;REC&apos;][&apos;REC.71&apos;] = &quot;obx53&quot;;
	header[&apos;REC&apos;][&apos;REC.72&apos;] = &quot;obx54&quot;;
	header[&apos;REC&apos;][&apos;REC.73&apos;] = &quot;obx55&quot;;
	header[&apos;REC&apos;][&apos;REC.74&apos;] = &quot;obx56&quot;;
	header[&apos;REC&apos;][&apos;REC.75&apos;] = &quot;obx57&quot;;
	header[&apos;REC&apos;][&apos;REC.76&apos;] = &quot;obx58&quot;;
	header[&apos;REC&apos;][&apos;REC.77&apos;] = &quot;obx59&quot;;
	header[&apos;REC&apos;][&apos;REC.78&apos;] = &quot;obx510&quot;;
	header[&apos;REC&apos;][&apos;REC.79&apos;] = &quot;obx511&quot;;
	header[&apos;REC&apos;][&apos;REC.80&apos;] = &quot;obx111&quot;;
	header[&apos;REC&apos;][&apos;REC.81&apos;] = &quot;room_name&quot;;
	header[&apos;REC&apos;][&apos;REC.82&apos;] = &quot;serviceline&quot;;
	header[&apos;REC&apos;][&apos;REC.83&apos;] = &quot;perf_proc&quot;;
	header[&apos;REC&apos;][&apos;REC.84&apos;] = &quot;attribute_group&quot;;

	header[&apos;REC&apos;][&apos;REC.85&apos;] = &quot;med_name&quot;;
	header[&apos;REC&apos;][&apos;REC.86&apos;] = &quot;med_qty&quot;;
	header[&apos;REC&apos;][&apos;REC.87&apos;] = &quot;med_path&quot;;
	header[&apos;REC&apos;][&apos;REC.88&apos;] = &quot;med_type&quot;;
	header[&apos;REC&apos;][&apos;REC.89&apos;] = &quot;med_unit&quot;;

	header[&apos;REC&apos;][&apos;REC.90&apos;] = &quot;item_name&quot;;
	header[&apos;REC&apos;][&apos;REC.91&apos;] = &quot;item_code&quot;;
	header[&apos;REC&apos;][&apos;REC.92&apos;] = &quot;item_type&quot;;
	header[&apos;REC&apos;][&apos;REC.93&apos;] = &quot;item_invid1&quot;;
	header[&apos;REC&apos;][&apos;REC.94&apos;] = &quot;item_invid2&quot;;
	header[&apos;REC&apos;][&apos;REC.95&apos;] = &quot;item_maker&quot;;

	header[&apos;REC&apos;][&apos;REC.100&apos;] = &quot;complication_name&quot;;

	header[&apos;REC&apos;][&apos;REC.101&apos;] = &quot;staff_internalid&quot;;
	header[&apos;REC&apos;][&apos;REC.102&apos;] = &quot;med_orderedby&quot;;
	header[&apos;REC&apos;][&apos;REC.103&apos;] = &quot;med_givenby&quot;;

	header[&apos;REC&apos;][&apos;REC.104&apos;] = &quot;item_size&quot;;
	header[&apos;REC&apos;][&apos;REC.105&apos;] = &quot;item_serialnumber&quot;;
	header[&apos;REC&apos;][&apos;REC.106&apos;] = &quot;lot_number&quot;;
	header[&apos;REC&apos;][&apos;REC.107&apos;] = &quot;item_barcode&quot;;
	header[&apos;REC&apos;][&apos;REC.108&apos;] = &quot;item_apcbillcode&quot;;

	return getPipeData(header);
}


// Create Record
function getRecord(record)
{
	// Create Record to be inserted in the File
	var rec = new XML(&quot;&lt;REC/&gt;&quot;);
	rec[&apos;REC&apos;][&apos;record.1&apos;] = record.msgsendingapp ? record.msgsendingapp : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.2&apos;] = record.msgsendingfacility ? record.msgsendingfacility : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.3&apos;] = record.msgtype ? record.msgtype : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.4&apos;] = record.msgtrigger ? record.msgtrigger : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.5&apos;] = record.ts_msg ? record.ts_msg : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.6&apos;] = record.security ? record.security : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;record.7&apos;] = record.empi ? record.empi : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.8&apos;] = record.mrn ? record.mrn : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.9&apos;] = record.dob ? record.dob : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.10&apos;] = record.sex ? record.sex : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.11&apos;] = record.race ? record.race : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.12&apos;] = record.city ? record.city : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.13&apos;] = record.zip ? record.zip : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.14&apos;] = record.county ? record.county : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.15&apos;] = record.language ? record.language : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.16&apos;] = record.ms ? record.ms : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.17&apos;] = record.religion ? record.religion : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.18&apos;] = record.ethnicgroup ? record.ethnicgroup : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.19&apos;] = record.birthorder ? record.birthorder : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.20&apos;] = record.death ? record.death : &apos;&apos;;
	
	rec[&apos;REC&apos;][&apos;record.21&apos;] = record.har ? record.har : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.22&apos;] = record.visitnumber ? record.visitnumber : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;record.23&apos;] = record.info ? record.info : &apos;&apos;;
	
	rec[&apos;REC&apos;][&apos;record.24&apos;] = record.patientclass ? record.patientclass : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.25&apos;] = record.patientlocation ? record.patientlocation : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.26&apos;] = record.patientroom ? record.patientroom : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.27&apos;] = record.admittype ? record.admittype : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.28&apos;] = record.patienttype ? record.patienttype : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.29&apos;] = record.hospitalservice ? record.hospitalservice : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.30&apos;] = record.servicingfacility ? record.servicingfacility : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.31&apos;] = record.vip ? record.vip : &apos;&apos;;
		
	rec[&apos;REC&apos;][&apos;record.32&apos;] = record.staff_role ? record.staff_role : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.33&apos;] = record.staff_first ? record.staff_first : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.34&apos;] = record.staff_middle ? record.staff_middle : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.35&apos;] = record.staff_last ? record.staff_last : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;record.36&apos;] = record.workflow_state ? record.workflow_state : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.37&apos;] = record.ts_when ? record.ts_when : &apos;&apos;;   

	rec[&apos;REC&apos;][&apos;record.38&apos;] = record.orccontrol ? record.orccontrol : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.39&apos;] = record.orcstatus ? record.orcstatus : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.40&apos;] = record.priority ? record.priority : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.41&apos;] = record.enteringorganization ? record.enteringorganization : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;record.42&apos;] = record.placerorder ? record.placerorder : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.43&apos;] =  record.obr31 ? record.obr31 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.44&apos;] = record.fillerissuer ? record.fillerissuer : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;record.45&apos;] = record.cptcode ? record.cptcode : &apos;&apos;; 
	rec[&apos;REC&apos;][&apos;record.46&apos;] = record.cptname ? record.cptname : &apos;&apos;; 

	rec[&apos;REC&apos;][&apos;record.47&apos;] = record.ordercode ? record.ordercode : &apos;&apos;; 
	rec[&apos;REC&apos;][&apos;record.48&apos;] = record.ordertext ? record.ordertext : &apos;&apos;; 
	rec[&apos;REC&apos;][&apos;record.49&apos;] = record.ordercodingsystem ? record.ordercodingsystem : &apos;&apos;; 

	rec[&apos;REC&apos;][&apos;record.50&apos;] = record.reasonforstudy ? record.reasonforstudy : &apos;&apos;; 
	rec[&apos;REC&apos;][&apos;record.51&apos;] = record.relevantclinicalinfo ? record.relevantclinicalinfo : &apos;&apos;; 
	rec[&apos;REC&apos;][&apos;record.52&apos;] = record.performingresource ? record.performingresource : &apos;&apos;; 
	rec[&apos;REC&apos;][&apos;record.53&apos;] = record.department ? record.department : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;record.54&apos;] = record.attribute_guid ? record.attribute_guid : &apos;&apos;; 
	rec[&apos;REC&apos;][&apos;record.55&apos;] = record.local_name ? record.local_name : &apos;&apos;; 
	rec[&apos;REC&apos;][&apos;record.56&apos;] = record.local_system ? record.local_system : &apos;&apos;; 

	rec[&apos;REC&apos;][&apos;record.57&apos;] = record.attribute_id ? record.attribute_id : &apos;&apos;; 
	rec[&apos;REC&apos;][&apos;record.58&apos;] = record.attribute_name ? record.attribute_name : &apos;&apos;; 
	rec[&apos;REC&apos;][&apos;record.59&apos;] = record.coding_system ? record.coding_system : &apos;&apos;; 

	rec[&apos;REC&apos;][&apos;record.60&apos;] = record.attribute_value ? record.attribute_value : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.61&apos;] = record.attribute_units ? record.attribute_units : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.62&apos;] = record.reference_range ? record.reference_range : &apos;&apos;; 
	rec[&apos;REC&apos;][&apos;record.63&apos;] = record.abnormal_flag ? record.abnormal_flag : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.64&apos;] = record.value_status ? record.value_status : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;record.65&apos;] = record.obr31 ? record.obr31 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.66&apos;] = record.attribute_value2 ? record.attribute_value2 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.67&apos;] = record.casenumber ? record.casenumber : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.68&apos;] = record.obr71 ? record.obr71 : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;record.69&apos;] = record.obx51 ? record.obx51 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.70&apos;] = record.obx52 ? record.obx52 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.71&apos;] = record.obx53 ? record.obx53 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.72&apos;] = record.obx54 ? record.obx54 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.73&apos;] = record.obx55 ? record.obx55 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.74&apos;] = record.obx56 ? record.obx56 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.75&apos;] = record.obx57 ? record.obx57 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.76&apos;] = record.obx58 ? record.obx58 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.77&apos;] = record.obx59 ? record.obx59 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.78&apos;] = record.obx510 ? record.obx510 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.79&apos;] = record.obx511 ? record.obx511 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.80&apos;] = record.obx111 ? record.obx111 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.81&apos;] = record.room_name ? record.room_name : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.82&apos;] = record.serviceline ? record.serviceline : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.83&apos;] = record.perf_proc ? record.perf_proc : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.84&apos;] = record.attribute_group ? record.attribute_group : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;record.85&apos;] = record.med_name ? record.med_name : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.86&apos;] = record.med_qty ? record.med_qty : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.87&apos;] = record.med_path ? record.med_path : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.88&apos;] = record.med_type ? record.med_type : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.89&apos;] = record.med_unit ? record.med_unit : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;record.90&apos;] = record.item_name ? record.item_name : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.91&apos;] = record.item_code ? record.item_code : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.92&apos;] = record.item_type ? record.item_type : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.93&apos;] = record.item_invid1 ? record.item_invid1 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.94&apos;] = record.item_invid2 ? record.item_invid2 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.95&apos;] = record.item_maker ? record.item_maker : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;record.100&apos;] = record.complication_name ? record.complication_name : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;record.101&apos;] = record.staff_internalid ? record.staff_internalid : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.102&apos;] = record.med_orderedby ? record.med_orderedby : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.103&apos;] = record.med_givenby ? record.med_givenby : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;REC.104&apos;] = record.item_size ? record.item_size : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;REC.105&apos;] = record.item_serialnumber ? record.item_serialnumber : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;REC.106&apos;] = record.lot_number ? record.lot_number : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;REC.107&apos;] = record.item_barcode ? record.item_barcode : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;REC.108&apos;] = record.item_apcbillcode ? record.item_apcbillcode : &apos;&apos;;


	//logger.info(rec);
	return getPipeData(rec);
}</script>
          <type>JavaScript</type>
          <data>
            <entry>
              <string>Script</string>
              <string>//Insert record into the file
function AddToBuffer(rec)
{
	var body = getRecord(rec);
	pipeBatch += body;
}

// Check Whether File Exists or not.
function fileDoesNotExist()
{
	var f = new File(fileDir+newFileName);
	return !f.exists();
}


// Write the record to the file
function writeContent()
{
	// Writing the pipe delimted file to the file directory
	var newdate = DateUtil.getCurrentDate(&apos;yyyy/MM/dd HH:mm&apos;);
	var oldConf = globalChannelMap.get(&quot;old&quot;);
	var olddate = oldConf.date;
	newFileName= fileName+DateUtil.convertDate(&apos;yyyy/MM/dd HH:mm&apos;, &apos;yyyyMMddHHmm&apos;, olddate)+&quot;.psv&quot;;
	// If file is a new one after deployment or execeeds certian minutes create new file
	if(fileDoesNotExist() || ((new Date(newdate).getTime() - new Date(olddate).getTime())/60000 &gt; MIN) )
	{
		logger.info(&quot;Creating New File&quot;);
		newFileName= fileName + DateUtil.convertDate(&apos;yyyy/MM/dd HH:mm&apos;, &apos;yyyyMMddHHmm&apos;, newdate)+&quot;.psv&quot;;
		var header= getHeader();
		// Write header to file
		pipeBatch = header+pipeBatch;
		// Change Config Data
		oldConf.date = newdate;
		globalChannelMap.put(&quot;old&quot;,oldConf);
	}
	FileUtil.write(fileDir+newFileName,true,pipeBatch);
}


// Convert the record into a valid Pipe Delimited Record
function getPipeData(rec)
{
	return (SerializerFactory.getSerializer(&apos;HL7V2&apos;).fromXML(rec)).replace(&quot;REC|&quot;,&quot;&quot;)+&quot;\r\n&quot;;
}


// Create Header
function getHeader()
{
	//var incMsg = SerializerFactory.getSerializer(&apos;HL7V2&apos;).fromXML(&quot;|||||||||||||||insurancename|insurance_type|IN1segmentsequence#&quot;);
	var header = new XML(&quot;&lt;REC/&gt;&quot;);

	header[&apos;REC&apos;][&apos;REC.1&apos;] = &quot;msgsendingapp&quot;;
	header[&apos;REC&apos;][&apos;REC.2&apos;] = &quot;msgsendingfacility&quot;;
	header[&apos;REC&apos;][&apos;REC.3&apos;] = &quot;msgtype&quot;;
	header[&apos;REC&apos;][&apos;REC.4&apos;] = &quot;msgtrigger&quot;;
	header[&apos;REC&apos;][&apos;REC.5&apos;] = &quot;ts_msg&quot;;
	header[&apos;REC&apos;][&apos;REC.6&apos;] = &quot;security&quot;;

	header[&apos;REC&apos;][&apos;REC.7&apos;] = &quot;EMPI&quot;;
	header[&apos;REC&apos;][&apos;REC.8&apos;] = &quot;Patient_Id&quot;;
	header[&apos;REC&apos;][&apos;REC.9&apos;] = &quot;dob&quot;;
	header[&apos;REC&apos;][&apos;REC.10&apos;] = &quot;sex&quot;;
	header[&apos;REC&apos;][&apos;REC.11&apos;] = &quot;race&quot;;
	header[&apos;REC&apos;][&apos;REC.12&apos;] = &quot;city&quot;;
	header[&apos;REC&apos;][&apos;REC.13&apos;] = &quot;zip&quot;;
	header[&apos;REC&apos;][&apos;REC.14&apos;] = &quot;county&quot;;
	header[&apos;REC&apos;][&apos;REC.15&apos;] = &quot;language&quot;;
	header[&apos;REC&apos;][&apos;REC.16&apos;] = &quot;marital_status&quot;;
	header[&apos;REC&apos;][&apos;REC.17&apos;] = &quot;religion&quot;;
	header[&apos;REC&apos;][&apos;REC.18&apos;] = &quot;ethnicgroup&quot;;
	header[&apos;REC&apos;][&apos;REC.19&apos;] = &quot;birthorder&quot;;
	header[&apos;REC&apos;][&apos;REC.20&apos;] = &quot;death&quot;;
	
	header[&apos;REC&apos;][&apos;REC.21&apos;] = &quot;har&quot;;
	header[&apos;REC&apos;][&apos;REC.22&apos;] = &quot;visitnumber&quot;;

	header[&apos;REC&apos;][&apos;REC.23&apos;] = &quot;info&quot;;
	
	header[&apos;REC&apos;][&apos;REC.24&apos;] = &quot;patientclass&quot;;
	header[&apos;REC&apos;][&apos;REC.25&apos;] = &quot;patientlocation&quot;;
	header[&apos;REC&apos;][&apos;REC.26&apos;] = &quot;patientroom&quot;;
	header[&apos;REC&apos;][&apos;REC.27&apos;] = &quot;admittype&quot;;
	header[&apos;REC&apos;][&apos;REC.28&apos;] = &quot;patienttype&quot;;
	header[&apos;REC&apos;][&apos;REC.29&apos;] = &quot;hospitalservice&quot;;
	header[&apos;REC&apos;][&apos;REC.30&apos;] = &quot;servicingfacility&quot;;
	header[&apos;REC&apos;][&apos;REC.31&apos;] = &quot;vip&quot;;
	
	header[&apos;REC&apos;][&apos;REC.32&apos;] = &quot;staff_role&quot;;
	header[&apos;REC&apos;][&apos;REC.33&apos;] = &quot;staff_first&quot;;
	header[&apos;REC&apos;][&apos;REC.34&apos;] = &quot;staff_middle&quot;;
	header[&apos;REC&apos;][&apos;REC.35&apos;] = &quot;staff_last&quot;;

	header[&apos;REC&apos;][&apos;REC.36&apos;] = &quot;workflow_state&quot;;
	header[&apos;REC&apos;][&apos;REC.37&apos;] = &quot;ts_when&quot;;   

	header[&apos;REC&apos;][&apos;REC.38&apos;] = &quot;orccontrol&quot;;
	header[&apos;REC&apos;][&apos;REC.39&apos;] = &quot;orcstatus&quot;;
	header[&apos;REC&apos;][&apos;REC.40&apos;] = &quot;priority&quot;;
	header[&apos;REC&apos;][&apos;REC.41&apos;] = &quot;enteringorganization&quot;;
	
	header[&apos;REC&apos;][&apos;REC.42&apos;] = &quot;placerorder&quot;;
	header[&apos;REC&apos;][&apos;REC.43&apos;] = &quot;fillerorder&quot;;
	header[&apos;REC&apos;][&apos;REC.44&apos;] = &quot;fillerissuer&quot;;

	header[&apos;REC&apos;][&apos;REC.45&apos;] = &quot;cptcode&quot;; 
	header[&apos;REC&apos;][&apos;REC.46&apos;] = &quot;cptname&quot;; 
	header[&apos;REC&apos;][&apos;REC.47&apos;] = &quot;ordercode&quot;; 
	header[&apos;REC&apos;][&apos;REC.48&apos;] = &quot;ordertext&quot;; 
	header[&apos;REC&apos;][&apos;REC.49&apos;] = &quot;ordercodingsystem&quot;; 
	header[&apos;REC&apos;][&apos;REC.50&apos;] = &quot;reasonforstudy&quot;; 
	header[&apos;REC&apos;][&apos;REC.51&apos;] = &quot;relevantclinicalinfo&quot;; 
	header[&apos;REC&apos;][&apos;REC.52&apos;] = &quot;performingresource&quot;; 
	header[&apos;REC&apos;][&apos;REC.53&apos;] = &quot;department&quot;; 
	

	header[&apos;REC&apos;][&apos;REC.54&apos;] = &quot;local_id&quot;; 
	header[&apos;REC&apos;][&apos;REC.55&apos;] = &quot;local_name&quot;; 
	header[&apos;REC&apos;][&apos;REC.56&apos;] = &quot;local_system&quot;; 

	header[&apos;REC&apos;][&apos;REC.57&apos;] = &quot;attribute_id&quot;; 
	header[&apos;REC&apos;][&apos;REC.58&apos;] = &quot;attribute_name&quot;; 
	header[&apos;REC&apos;][&apos;REC.59&apos;] = &quot;coding_system&quot;; 

	header[&apos;REC&apos;][&apos;REC.60&apos;] = &quot;attribute_value&quot;;
	header[&apos;REC&apos;][&apos;REC.61&apos;] = &quot;attribute_units&quot;;
	header[&apos;REC&apos;][&apos;REC.62&apos;] = &quot;reference_range&quot;; 
	header[&apos;REC&apos;][&apos;REC.63&apos;] = &quot;abnormal_flag&quot;;
	header[&apos;REC&apos;][&apos;REC.64&apos;] = &quot;value_status&quot;;

	header[&apos;REC&apos;][&apos;REC.65&apos;] = &quot;obr31&quot;;
	header[&apos;REC&apos;][&apos;REC.66&apos;] = &quot;attribute_value2&quot;;

	header[&apos;REC&apos;][&apos;REC.67&apos;] = &quot;casenumber&quot;;
	header[&apos;REC&apos;][&apos;REC.68&apos;] = &quot;obr71&quot;;
	header[&apos;REC&apos;][&apos;REC.69&apos;] = &quot;obx51&quot;;
	header[&apos;REC&apos;][&apos;REC.70&apos;] = &quot;obx52&quot;;
	header[&apos;REC&apos;][&apos;REC.71&apos;] = &quot;obx53&quot;;
	header[&apos;REC&apos;][&apos;REC.72&apos;] = &quot;obx54&quot;;
	header[&apos;REC&apos;][&apos;REC.73&apos;] = &quot;obx55&quot;;
	header[&apos;REC&apos;][&apos;REC.74&apos;] = &quot;obx56&quot;;
	header[&apos;REC&apos;][&apos;REC.75&apos;] = &quot;obx57&quot;;
	header[&apos;REC&apos;][&apos;REC.76&apos;] = &quot;obx58&quot;;
	header[&apos;REC&apos;][&apos;REC.77&apos;] = &quot;obx59&quot;;
	header[&apos;REC&apos;][&apos;REC.78&apos;] = &quot;obx510&quot;;
	header[&apos;REC&apos;][&apos;REC.79&apos;] = &quot;obx511&quot;;
	header[&apos;REC&apos;][&apos;REC.80&apos;] = &quot;obx111&quot;;
	header[&apos;REC&apos;][&apos;REC.81&apos;] = &quot;room_name&quot;;
	header[&apos;REC&apos;][&apos;REC.82&apos;] = &quot;serviceline&quot;;
	header[&apos;REC&apos;][&apos;REC.83&apos;] = &quot;perf_proc&quot;;
	header[&apos;REC&apos;][&apos;REC.84&apos;] = &quot;attribute_group&quot;;

	header[&apos;REC&apos;][&apos;REC.85&apos;] = &quot;med_name&quot;;
	header[&apos;REC&apos;][&apos;REC.86&apos;] = &quot;med_qty&quot;;
	header[&apos;REC&apos;][&apos;REC.87&apos;] = &quot;med_path&quot;;
	header[&apos;REC&apos;][&apos;REC.88&apos;] = &quot;med_type&quot;;
	header[&apos;REC&apos;][&apos;REC.89&apos;] = &quot;med_unit&quot;;

	header[&apos;REC&apos;][&apos;REC.90&apos;] = &quot;item_name&quot;;
	header[&apos;REC&apos;][&apos;REC.91&apos;] = &quot;item_code&quot;;
	header[&apos;REC&apos;][&apos;REC.92&apos;] = &quot;item_type&quot;;
	header[&apos;REC&apos;][&apos;REC.93&apos;] = &quot;item_invid1&quot;;
	header[&apos;REC&apos;][&apos;REC.94&apos;] = &quot;item_invid2&quot;;
	header[&apos;REC&apos;][&apos;REC.95&apos;] = &quot;item_maker&quot;;

	header[&apos;REC&apos;][&apos;REC.100&apos;] = &quot;complication_name&quot;;

	header[&apos;REC&apos;][&apos;REC.101&apos;] = &quot;staff_internalid&quot;;
	header[&apos;REC&apos;][&apos;REC.102&apos;] = &quot;med_orderedby&quot;;
	header[&apos;REC&apos;][&apos;REC.103&apos;] = &quot;med_givenby&quot;;

	header[&apos;REC&apos;][&apos;REC.104&apos;] = &quot;item_size&quot;;
	header[&apos;REC&apos;][&apos;REC.105&apos;] = &quot;item_serialnumber&quot;;
	header[&apos;REC&apos;][&apos;REC.106&apos;] = &quot;lot_number&quot;;
	header[&apos;REC&apos;][&apos;REC.107&apos;] = &quot;item_barcode&quot;;
	header[&apos;REC&apos;][&apos;REC.108&apos;] = &quot;item_apcbillcode&quot;;

	return getPipeData(header);
}


// Create Record
function getRecord(record)
{
	// Create Record to be inserted in the File
	var rec = new XML(&quot;&lt;REC/&gt;&quot;);
	rec[&apos;REC&apos;][&apos;record.1&apos;] = record.msgsendingapp ? record.msgsendingapp : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.2&apos;] = record.msgsendingfacility ? record.msgsendingfacility : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.3&apos;] = record.msgtype ? record.msgtype : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.4&apos;] = record.msgtrigger ? record.msgtrigger : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.5&apos;] = record.ts_msg ? record.ts_msg : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.6&apos;] = record.security ? record.security : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;record.7&apos;] = record.empi ? record.empi : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.8&apos;] = record.mrn ? record.mrn : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.9&apos;] = record.dob ? record.dob : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.10&apos;] = record.sex ? record.sex : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.11&apos;] = record.race ? record.race : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.12&apos;] = record.city ? record.city : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.13&apos;] = record.zip ? record.zip : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.14&apos;] = record.county ? record.county : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.15&apos;] = record.language ? record.language : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.16&apos;] = record.ms ? record.ms : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.17&apos;] = record.religion ? record.religion : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.18&apos;] = record.ethnicgroup ? record.ethnicgroup : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.19&apos;] = record.birthorder ? record.birthorder : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.20&apos;] = record.death ? record.death : &apos;&apos;;
	
	rec[&apos;REC&apos;][&apos;record.21&apos;] = record.har ? record.har : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.22&apos;] = record.visitnumber ? record.visitnumber : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;record.23&apos;] = record.info ? record.info : &apos;&apos;;
	
	rec[&apos;REC&apos;][&apos;record.24&apos;] = record.patientclass ? record.patientclass : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.25&apos;] = record.patientlocation ? record.patientlocation : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.26&apos;] = record.patientroom ? record.patientroom : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.27&apos;] = record.admittype ? record.admittype : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.28&apos;] = record.patienttype ? record.patienttype : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.29&apos;] = record.hospitalservice ? record.hospitalservice : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.30&apos;] = record.servicingfacility ? record.servicingfacility : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.31&apos;] = record.vip ? record.vip : &apos;&apos;;
		
	rec[&apos;REC&apos;][&apos;record.32&apos;] = record.staff_role ? record.staff_role : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.33&apos;] = record.staff_first ? record.staff_first : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.34&apos;] = record.staff_middle ? record.staff_middle : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.35&apos;] = record.staff_last ? record.staff_last : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;record.36&apos;] = record.workflow_state ? record.workflow_state : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.37&apos;] = record.ts_when ? record.ts_when : &apos;&apos;;   

	rec[&apos;REC&apos;][&apos;record.38&apos;] = record.orccontrol ? record.orccontrol : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.39&apos;] = record.orcstatus ? record.orcstatus : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.40&apos;] = record.priority ? record.priority : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.41&apos;] = record.enteringorganization ? record.enteringorganization : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;record.42&apos;] = record.placerorder ? record.placerorder : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.43&apos;] =  record.obr31 ? record.obr31 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.44&apos;] = record.fillerissuer ? record.fillerissuer : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;record.45&apos;] = record.cptcode ? record.cptcode : &apos;&apos;; 
	rec[&apos;REC&apos;][&apos;record.46&apos;] = record.cptname ? record.cptname : &apos;&apos;; 

	rec[&apos;REC&apos;][&apos;record.47&apos;] = record.ordercode ? record.ordercode : &apos;&apos;; 
	rec[&apos;REC&apos;][&apos;record.48&apos;] = record.ordertext ? record.ordertext : &apos;&apos;; 
	rec[&apos;REC&apos;][&apos;record.49&apos;] = record.ordercodingsystem ? record.ordercodingsystem : &apos;&apos;; 

	rec[&apos;REC&apos;][&apos;record.50&apos;] = record.reasonforstudy ? record.reasonforstudy : &apos;&apos;; 
	rec[&apos;REC&apos;][&apos;record.51&apos;] = record.relevantclinicalinfo ? record.relevantclinicalinfo : &apos;&apos;; 
	rec[&apos;REC&apos;][&apos;record.52&apos;] = record.performingresource ? record.performingresource : &apos;&apos;; 
	rec[&apos;REC&apos;][&apos;record.53&apos;] = record.department ? record.department : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;record.54&apos;] = record.attribute_guid ? record.attribute_guid : &apos;&apos;; 
	rec[&apos;REC&apos;][&apos;record.55&apos;] = record.local_name ? record.local_name : &apos;&apos;; 
	rec[&apos;REC&apos;][&apos;record.56&apos;] = record.local_system ? record.local_system : &apos;&apos;; 

	rec[&apos;REC&apos;][&apos;record.57&apos;] = record.attribute_id ? record.attribute_id : &apos;&apos;; 
	rec[&apos;REC&apos;][&apos;record.58&apos;] = record.attribute_name ? record.attribute_name : &apos;&apos;; 
	rec[&apos;REC&apos;][&apos;record.59&apos;] = record.coding_system ? record.coding_system : &apos;&apos;; 

	rec[&apos;REC&apos;][&apos;record.60&apos;] = record.attribute_value ? record.attribute_value : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.61&apos;] = record.attribute_units ? record.attribute_units : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.62&apos;] = record.reference_range ? record.reference_range : &apos;&apos;; 
	rec[&apos;REC&apos;][&apos;record.63&apos;] = record.abnormal_flag ? record.abnormal_flag : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.64&apos;] = record.value_status ? record.value_status : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;record.65&apos;] = record.obr31 ? record.obr31 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.66&apos;] = record.attribute_value2 ? record.attribute_value2 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.67&apos;] = record.casenumber ? record.casenumber : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.68&apos;] = record.obr71 ? record.obr71 : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;record.69&apos;] = record.obx51 ? record.obx51 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.70&apos;] = record.obx52 ? record.obx52 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.71&apos;] = record.obx53 ? record.obx53 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.72&apos;] = record.obx54 ? record.obx54 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.73&apos;] = record.obx55 ? record.obx55 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.74&apos;] = record.obx56 ? record.obx56 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.75&apos;] = record.obx57 ? record.obx57 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.76&apos;] = record.obx58 ? record.obx58 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.77&apos;] = record.obx59 ? record.obx59 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.78&apos;] = record.obx510 ? record.obx510 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.79&apos;] = record.obx511 ? record.obx511 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.80&apos;] = record.obx111 ? record.obx111 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.81&apos;] = record.room_name ? record.room_name : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.82&apos;] = record.serviceline ? record.serviceline : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.83&apos;] = record.perf_proc ? record.perf_proc : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.84&apos;] = record.attribute_group ? record.attribute_group : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;record.85&apos;] = record.med_name ? record.med_name : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.86&apos;] = record.med_qty ? record.med_qty : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.87&apos;] = record.med_path ? record.med_path : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.88&apos;] = record.med_type ? record.med_type : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.89&apos;] = record.med_unit ? record.med_unit : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;record.90&apos;] = record.item_name ? record.item_name : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.91&apos;] = record.item_code ? record.item_code : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.92&apos;] = record.item_type ? record.item_type : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.93&apos;] = record.item_invid1 ? record.item_invid1 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.94&apos;] = record.item_invid2 ? record.item_invid2 : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.95&apos;] = record.item_maker ? record.item_maker : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;record.100&apos;] = record.complication_name ? record.complication_name : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;record.101&apos;] = record.staff_internalid ? record.staff_internalid : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.102&apos;] = record.med_orderedby ? record.med_orderedby : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;record.103&apos;] = record.med_givenby ? record.med_givenby : &apos;&apos;;

	rec[&apos;REC&apos;][&apos;REC.104&apos;] = record.item_size ? record.item_size : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;REC.105&apos;] = record.item_serialnumber ? record.item_serialnumber : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;REC.106&apos;] = record.lot_number ? record.lot_number : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;REC.107&apos;] = record.item_barcode ? record.item_barcode : &apos;&apos;;
	rec[&apos;REC&apos;][&apos;REC.108&apos;] = record.item_apcbillcode ? record.item_apcbillcode : &apos;&apos;;


	//logger.info(rec);
	return getPipeData(rec);
}</string>
            </entry>
          </data>
        </step>
      </steps>
      <inboundTemplate encoding="base64"></inboundTemplate>
      <outboundTemplate encoding="base64"></outboundTemplate>
      <inboundDataType>HL7V2</inboundDataType>
      <outboundDataType>HL7V2</outboundDataType>
      <inboundProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2DataTypeProperties" version="3.2.1">
        <serializationProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2SerializationProperties" version="3.2.1">
          <handleRepetitions>true</handleRepetitions>
          <handleSubcomponents>true</handleSubcomponents>
          <useStrictParser>false</useStrictParser>
          <useStrictValidation>false</useStrictValidation>
          <stripNamespaces>true</stripNamespaces>
          <segmentDelimiter>\r</segmentDelimiter>
          <convertLineBreaks>true</convertLineBreaks>
        </serializationProperties>
        <deserializationProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2DeserializationProperties" version="3.2.1">
          <useStrictParser>false</useStrictParser>
          <useStrictValidation>false</useStrictValidation>
          <segmentDelimiter>\r</segmentDelimiter>
        </deserializationProperties>
        <batchProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2BatchProperties" version="3.2.1">
          <splitType>MSH_Segment</splitType>
          <batchScript></batchScript>
        </batchProperties>
        <responseGenerationProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2ResponseGenerationProperties" version="3.2.1">
          <segmentDelimiter>\r</segmentDelimiter>
          <successfulACKCode>AA</successfulACKCode>
          <successfulACKMessage></successfulACKMessage>
          <errorACKCode>AE</errorACKCode>
          <errorACKMessage>An Error Occurred Processing Message.</errorACKMessage>
          <rejectedACKCode>AR</rejectedACKCode>
          <rejectedACKMessage>Message Rejected.</rejectedACKMessage>
          <msh15ACKAccept>false</msh15ACKAccept>
          <dateFormat>yyyyMMddHHmmss</dateFormat>
        </responseGenerationProperties>
        <responseValidationProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2ResponseValidationProperties" version="3.2.1">
          <successfulACKCode>AA,CA</successfulACKCode>
          <errorACKCode>AE,CE</errorACKCode>
          <rejectedACKCode>AR,CR</rejectedACKCode>
          <validateMessageControlId>false</validateMessageControlId>
          <originalMessageControlId>Destination_Encoded</originalMessageControlId>
          <originalIdMapVariable></originalIdMapVariable>
        </responseValidationProperties>
      </inboundProperties>
      <outboundProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2DataTypeProperties" version="3.2.1">
        <serializationProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2SerializationProperties" version="3.2.1">
          <handleRepetitions>true</handleRepetitions>
          <handleSubcomponents>true</handleSubcomponents>
          <useStrictParser>false</useStrictParser>
          <useStrictValidation>false</useStrictValidation>
          <stripNamespaces>true</stripNamespaces>
          <segmentDelimiter>\r</segmentDelimiter>
          <convertLineBreaks>true</convertLineBreaks>
        </serializationProperties>
        <deserializationProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2DeserializationProperties" version="3.2.1">
          <useStrictParser>false</useStrictParser>
          <useStrictValidation>false</useStrictValidation>
          <segmentDelimiter>\r</segmentDelimiter>
        </deserializationProperties>
        <batchProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2BatchProperties" version="3.2.1">
          <splitType>MSH_Segment</splitType>
          <batchScript></batchScript>
        </batchProperties>
        <responseGenerationProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2ResponseGenerationProperties" version="3.2.1">
          <segmentDelimiter>\r</segmentDelimiter>
          <successfulACKCode>AA</successfulACKCode>
          <successfulACKMessage></successfulACKMessage>
          <errorACKCode>AE</errorACKCode>
          <errorACKMessage>An Error Occurred Processing Message.</errorACKMessage>
          <rejectedACKCode>AR</rejectedACKCode>
          <rejectedACKMessage>Message Rejected.</rejectedACKMessage>
          <msh15ACKAccept>false</msh15ACKAccept>
          <dateFormat>yyyyMMddHHmmss</dateFormat>
        </responseGenerationProperties>
        <responseValidationProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2ResponseValidationProperties" version="3.2.1">
          <successfulACKCode>AA,CA</successfulACKCode>
          <errorACKCode>AE,CE</errorACKCode>
          <rejectedACKCode>AR,CR</rejectedACKCode>
          <validateMessageControlId>false</validateMessageControlId>
          <originalMessageControlId>Destination_Encoded</originalMessageControlId>
          <originalIdMapVariable></originalIdMapVariable>
        </responseValidationProperties>
      </outboundProperties>
    </transformer>
    <filter version="3.2.1">
      <rules>
        <rule>
          <sequenceNumber>0</sequenceNumber>
          <name>Accept message if &quot;msg[&apos;MSH&apos;].toString()&quot; exists</name>
          <data>
            <entry>
              <string>Field</string>
              <string>msg[&apos;MSH&apos;].toString()</string>
            </entry>
            <entry>
              <string>Name</string>
              <string></string>
            </entry>
            <entry>
              <string>OriginalField</string>
              <string></string>
            </entry>
            <entry>
              <string>Equals</string>
              <string>2</string>
            </entry>
            <entry>
              <string>Values</string>
              <list/>
            </entry>
          </data>
          <type>Rule Builder</type>
          <script>if(msg[&apos;MSH&apos;].toString().length &gt; 0) {
	return true;
}
return false;</script>
          <operator>NONE</operator>
        </rule>
        <rule>
          <sequenceNumber>1</sequenceNumber>
          <name>Accept message if &quot;msg[&apos;PID&apos;].toString()&quot; exists</name>
          <data>
            <entry>
              <string>Field</string>
              <string>msg[&apos;PID&apos;].toString()</string>
            </entry>
            <entry>
              <string>Name</string>
              <string></string>
            </entry>
            <entry>
              <string>OriginalField</string>
              <string></string>
            </entry>
            <entry>
              <string>Equals</string>
              <string>2</string>
            </entry>
            <entry>
              <string>Values</string>
              <list/>
            </entry>
          </data>
          <type>Rule Builder</type>
          <script>if(msg[&apos;PID&apos;].toString().length &gt; 0) {
	return true;
}
return false;</script>
          <operator>AND</operator>
        </rule>
      </rules>
    </filter>
    <transportName>File Reader</transportName>
    <mode>SOURCE</mode>
    <enabled>true</enabled>
    <waitForPrevious>true</waitForPrevious>
  </sourceConnector>
  <destinationConnectors>
    <connector version="3.2.1">
      <metaDataId>1</metaDataId>
      <name>Destination 1</name>
      <properties class="com.mirth.connect.connectors.js.JavaScriptDispatcherProperties" version="3.2.1">
        <pluginProperties/>
        <destinationConnectorProperties version="3.2.1">
          <queueEnabled>false</queueEnabled>
          <sendFirst>false</sendFirst>
          <retryIntervalMillis>10000</retryIntervalMillis>
          <regenerateTemplate>false</regenerateTemplate>
          <retryCount>0</retryCount>
          <rotate>false</rotate>
          <includeFilterTransformer>false</includeFilterTransformer>
          <threadCount>1</threadCount>
          <validateResponse>false</validateResponse>
          <resourceIds class="linked-hash-set">
            <string>Default Resource</string>
          </resourceIds>
        </destinationConnectorProperties>
        <script>//logger.info(&quot;Completed the Transaction&quot;);</script>
      </properties>
      <transformer version="3.2.1">
        <steps/>
        <inboundTemplate encoding="base64"></inboundTemplate>
        <outboundTemplate encoding="base64"></outboundTemplate>
        <inboundDataType>HL7V2</inboundDataType>
        <outboundDataType>DELIMITED</outboundDataType>
        <inboundProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2DataTypeProperties" version="3.2.1">
          <serializationProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2SerializationProperties" version="3.2.1">
            <handleRepetitions>true</handleRepetitions>
            <handleSubcomponents>true</handleSubcomponents>
            <useStrictParser>false</useStrictParser>
            <useStrictValidation>false</useStrictValidation>
            <stripNamespaces>true</stripNamespaces>
            <segmentDelimiter>\r</segmentDelimiter>
            <convertLineBreaks>true</convertLineBreaks>
          </serializationProperties>
          <deserializationProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2DeserializationProperties" version="3.2.1">
            <useStrictParser>false</useStrictParser>
            <useStrictValidation>false</useStrictValidation>
            <segmentDelimiter>\r</segmentDelimiter>
          </deserializationProperties>
          <batchProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2BatchProperties" version="3.2.1">
            <splitType>MSH_Segment</splitType>
            <batchScript></batchScript>
          </batchProperties>
          <responseGenerationProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2ResponseGenerationProperties" version="3.2.1">
            <segmentDelimiter>\r</segmentDelimiter>
            <successfulACKCode>AA</successfulACKCode>
            <successfulACKMessage></successfulACKMessage>
            <errorACKCode>AE</errorACKCode>
            <errorACKMessage>An Error Occurred Processing Message.</errorACKMessage>
            <rejectedACKCode>AR</rejectedACKCode>
            <rejectedACKMessage>Message Rejected.</rejectedACKMessage>
            <msh15ACKAccept>false</msh15ACKAccept>
            <dateFormat>yyyyMMddHHmmss</dateFormat>
          </responseGenerationProperties>
          <responseValidationProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2ResponseValidationProperties" version="3.2.1">
            <successfulACKCode>AA,CA</successfulACKCode>
            <errorACKCode>AE,CE</errorACKCode>
            <rejectedACKCode>AR,CR</rejectedACKCode>
            <validateMessageControlId>false</validateMessageControlId>
            <originalMessageControlId>Destination_Encoded</originalMessageControlId>
            <originalIdMapVariable></originalIdMapVariable>
          </responseValidationProperties>
        </inboundProperties>
        <outboundProperties class="com.mirth.connect.plugins.datatypes.delimited.DelimitedDataTypeProperties" version="3.2.1">
          <serializationProperties class="com.mirth.connect.plugins.datatypes.delimited.DelimitedSerializationProperties" version="3.2.1">
            <columnDelimiter>|</columnDelimiter>
            <recordDelimiter>\n</recordDelimiter>
            <quoteChar>&quot;</quoteChar>
            <escapeWithDoubleQuote>true</escapeWithDoubleQuote>
            <quoteEscapeChar>\</quoteEscapeChar>
            <numberedRows>false</numberedRows>
            <ignoreCR>true</ignoreCR>
          </serializationProperties>
          <deserializationProperties class="com.mirth.connect.plugins.datatypes.delimited.DelimitedDeserializationProperties" version="3.2.1">
            <columnDelimiter>|</columnDelimiter>
            <recordDelimiter>\n</recordDelimiter>
            <quoteChar>&quot;</quoteChar>
            <escapeWithDoubleQuote>true</escapeWithDoubleQuote>
            <quoteEscapeChar>\</quoteEscapeChar>
          </deserializationProperties>
          <batchProperties class="com.mirth.connect.plugins.datatypes.delimited.DelimitedBatchProperties" version="3.2.1">
            <splitType>Record</splitType>
            <batchSkipRecords>0</batchSkipRecords>
            <batchMessageDelimiter></batchMessageDelimiter>
            <batchMessageDelimiterIncluded>false</batchMessageDelimiterIncluded>
            <batchGroupingColumn></batchGroupingColumn>
            <batchScript></batchScript>
          </batchProperties>
        </outboundProperties>
      </transformer>
      <responseTransformer version="3.2.1">
        <steps/>
        <inboundDataType>HL7V2</inboundDataType>
        <outboundDataType>HL7V2</outboundDataType>
        <inboundProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2DataTypeProperties" version="3.2.1">
          <serializationProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2SerializationProperties" version="3.2.1">
            <handleRepetitions>true</handleRepetitions>
            <handleSubcomponents>true</handleSubcomponents>
            <useStrictParser>false</useStrictParser>
            <useStrictValidation>false</useStrictValidation>
            <stripNamespaces>true</stripNamespaces>
            <segmentDelimiter>\r</segmentDelimiter>
            <convertLineBreaks>true</convertLineBreaks>
          </serializationProperties>
          <deserializationProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2DeserializationProperties" version="3.2.1">
            <useStrictParser>false</useStrictParser>
            <useStrictValidation>false</useStrictValidation>
            <segmentDelimiter>\r</segmentDelimiter>
          </deserializationProperties>
          <batchProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2BatchProperties" version="3.2.1">
            <splitType>MSH_Segment</splitType>
            <batchScript></batchScript>
          </batchProperties>
          <responseGenerationProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2ResponseGenerationProperties" version="3.2.1">
            <segmentDelimiter>\r</segmentDelimiter>
            <successfulACKCode>AA</successfulACKCode>
            <successfulACKMessage></successfulACKMessage>
            <errorACKCode>AE</errorACKCode>
            <errorACKMessage>An Error Occurred Processing Message.</errorACKMessage>
            <rejectedACKCode>AR</rejectedACKCode>
            <rejectedACKMessage>Message Rejected.</rejectedACKMessage>
            <msh15ACKAccept>false</msh15ACKAccept>
            <dateFormat>yyyyMMddHHmmss</dateFormat>
          </responseGenerationProperties>
          <responseValidationProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2ResponseValidationProperties" version="3.2.1">
            <successfulACKCode>AA,CA</successfulACKCode>
            <errorACKCode>AE,CE</errorACKCode>
            <rejectedACKCode>AR,CR</rejectedACKCode>
            <validateMessageControlId>false</validateMessageControlId>
            <originalMessageControlId>Destination_Encoded</originalMessageControlId>
            <originalIdMapVariable></originalIdMapVariable>
          </responseValidationProperties>
        </inboundProperties>
        <outboundProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2DataTypeProperties" version="3.2.1">
          <serializationProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2SerializationProperties" version="3.2.1">
            <handleRepetitions>true</handleRepetitions>
            <handleSubcomponents>true</handleSubcomponents>
            <useStrictParser>false</useStrictParser>
            <useStrictValidation>false</useStrictValidation>
            <stripNamespaces>true</stripNamespaces>
            <segmentDelimiter>\r</segmentDelimiter>
            <convertLineBreaks>true</convertLineBreaks>
          </serializationProperties>
          <deserializationProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2DeserializationProperties" version="3.2.1">
            <useStrictParser>false</useStrictParser>
            <useStrictValidation>false</useStrictValidation>
            <segmentDelimiter>\r</segmentDelimiter>
          </deserializationProperties>
          <batchProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2BatchProperties" version="3.2.1">
            <splitType>MSH_Segment</splitType>
            <batchScript></batchScript>
          </batchProperties>
          <responseGenerationProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2ResponseGenerationProperties" version="3.2.1">
            <segmentDelimiter>\r</segmentDelimiter>
            <successfulACKCode>AA</successfulACKCode>
            <successfulACKMessage></successfulACKMessage>
            <errorACKCode>AE</errorACKCode>
            <errorACKMessage>An Error Occurred Processing Message.</errorACKMessage>
            <rejectedACKCode>AR</rejectedACKCode>
            <rejectedACKMessage>Message Rejected.</rejectedACKMessage>
            <msh15ACKAccept>false</msh15ACKAccept>
            <dateFormat>yyyyMMddHHmmss</dateFormat>
          </responseGenerationProperties>
          <responseValidationProperties class="com.mirth.connect.plugins.datatypes.hl7v2.HL7v2ResponseValidationProperties" version="3.2.1">
            <successfulACKCode>AA,CA</successfulACKCode>
            <errorACKCode>AE,CE</errorACKCode>
            <rejectedACKCode>AR,CR</rejectedACKCode>
            <validateMessageControlId>false</validateMessageControlId>
            <originalMessageControlId>Destination_Encoded</originalMessageControlId>
            <originalIdMapVariable></originalIdMapVariable>
          </responseValidationProperties>
        </outboundProperties>
      </responseTransformer>
      <filter version="3.2.1">
        <rules/>
      </filter>
      <transportName>JavaScript Writer</transportName>
      <mode>DESTINATION</mode>
      <enabled>true</enabled>
      <waitForPrevious>true</waitForPrevious>
    </connector>
  </destinationConnectors>
  <preprocessingScript>// Modify the message variable below to pre process data

//var fname = &quot;C://a-xfer//monfepic//testadt-output//&quot; + originalFilename + &quot;.psv&quot; ;
//var columnsout = &quot;A|B|C|D|E&quot; ;

//FileUtil.write( fname, false, columnsout);
//FileUtil.write(&quot;c:\\workspace\\mirth-test\\fixed.txt&quot;, true, &quot;Patient ID,First Name,Last Name\r\n&quot;);
return message;</preprocessingScript>
  <postprocessingScript>// This script executes once after a message has been processed
// Responses returned from here will be stored as &quot;Postprocessor&quot; in the response map
return;</postprocessingScript>
  <deployScript>// This script executes once when the channel is deployed
// You only have access to the globalMap and globalChannelMap here to persist data
logger.info(&quot;Deploying the Channel&quot;);
var conf = {};
var dateString = DateUtil.getCurrentDate(&apos;yyyy/MM/dd HH:mm&apos;);
conf.date = dateString;
globalChannelMap.put(&apos;old&apos;,conf);
return;</deployScript>
  <undeployScript>// This script executes once when the channel is undeployed
// You only have access to the globalMap and globalChannelMap here to persist data
return;</undeployScript>
  <properties version="3.2.1">
    <clearGlobalChannelMap>true</clearGlobalChannelMap>
    <messageStorageMode>DEVELOPMENT</messageStorageMode>
    <encryptData>false</encryptData>
    <removeContentOnCompletion>false</removeContentOnCompletion>
    <removeAttachmentsOnCompletion>false</removeAttachmentsOnCompletion>
    <initialState>STARTED</initialState>
    <storeAttachments>false</storeAttachments>
    <tags class="linked-hash-set"/>
    <metaDataColumns>
      <metaDataColumn>
        <name>SOURCE</name>
        <type>STRING</type>
        <mappingName>mirth_source</mappingName>
      </metaDataColumn>
      <metaDataColumn>
        <name>TYPE</name>
        <type>STRING</type>
        <mappingName>mirth_type</mappingName>
      </metaDataColumn>
    </metaDataColumns>
    <attachmentProperties>
      <type>None</type>
      <properties/>
    </attachmentProperties>
    <pruneMetaDataDays>1</pruneMetaDataDays>
    <pruneContentDays>1</pruneContentDays>
    <archiveEnabled>false</archiveEnabled>
    <resourceIds class="linked-hash-set">
      <string>Default Resource</string>
    </resourceIds>
  </properties>
</channel>