Question Graham Uricchio · Apr 4, 2017

Why does my DTL test tool work perfectly but my DTL only half works when used by the process?

I created a DTL to do HL7 mapping. The test function in the tools works the DTL perfectly but when used by the rule in my business process, the OBX segments are stripped and the MRN is gone. The assigning authority and ID type are added into the PID but the actual patient MRN is blank (3.1 value).

Here is the source code. 

<transform sourceClass='EnsLib.HL7.Message' targetClass='EnsLib.HL7.Message' sourceDocType='2.3:MDM_T02' targetDocType='2.5:MDM_T02' create='new' language='objectscript' >
<code>
<![CDATA[ //MSH SEGMENT]]></code>
<assign value='source.{MSH}' property='target.{MSH}' action='set' />
<assign value='"STLMC"' property='target.{MSH:SendingFacility}' action='set' />
<assign value='"2.5"' property='target.{MSH:VersionID}' action='set' />
<code>
<![CDATA[ //EVN SEGMENT]]></code>
<assign value='source.{EVN}' property='target.{EVN}' action='set' />
<code>
<![CDATA[ //PID SEGMENT]]></code>
<assign value='source.{PID}' property='target.{PID}' action='set' />
<assign value='source.{PID:PatientIDInternalID().ID}_"^^^STLMC^MR"' property='target.{PID:3()}' action='set' />
<code>
<![CDATA[ //PV1 Segment]]></code>
<assign value='source.{PV1}' property='target.{PV1}' action='set' />
<assign value='..Lookup("GHHC_STLMCPatientClass",source.{PV1:PatientClass})' property='target.{PV1:PatientClass}' action='set' />
<code>
<![CDATA[ //TXA SEGMENT]]></code>
<assign value='source.{TXA}' property='target.{TXA}' action='set' />
<if condition='target.{TXA:DocumentType} = "EPDISCH^Discharge Summaries"' >
<true>
<assign value='"DS"' property='target.{TXA:DocumentType}' action='set' />
</true>
</if>
<if condition='target.{TXA:DocumentType} = "EPHIST^H\T\P"' >
<true>
<assign value=' "HP"' property='target.{TXA:DocumentType}' action='set' />
</true>
</if>
<if condition='target.{TXA:DocumentType} = "EPOPN^Op Note"' >
<true>
<assign value='"OP"' property='target.{TXA:DocumentType}' action='set' />
</true>
</if>
<if condition='target.{TXA:DocumentType} = "EPCONSLT^Consults"' >
<true>
<assign value='"CN"' property='target.{TXA:DocumentType}' action='set' />
</true>
</if>
<foreach property='source.{OBX()}' key='k1' >
<assign value='source.{OBX(k1)}' property='target.{OBXgrp(k1).OBX}' action='set' />
</foreach>
</transform>

Comments

Armin Gayl · Apr 4, 2017

Hi Graham,

please try

<assign value='source.{PID:PatientIDInternalID(1).ID}_"^^^STLMC^MR"' property='target.{PID:3(1)}' action='set' />

I think the test function works differently than the right DTL
Please tell me if it has worked.

Otherwise, try this

with the PID:PatientIDInternal(1).ID did you set the PID:3.1 please append  value in the other subfields a second step. Like this:

<assign value='source.{PID:PatientIDInternalID(1).ID}' property='target.{PID:3(1)}' action='set' />

<assign value='"^^^STLMC^MR"' property='target.{PID:3(1)}' action='append' />

OR

<assign value='source.{PID:3(1).1}' property='target.{PID:3(1).1}' action='set' />

<assign value='"STLMC"' property='target.{PID:3(1).4}' action='set' />

<assign value='"MR"' property='target.{PID:3(1).5}' action='set' />

0
Graham Uricchio  Apr 4, 2017 to Armin Gayl

Yep! That mapped the MRN over. Now I just can't seem to get the source OBXs into the OBXgrp() object. 

This works when I use the test tool but not when I call the DTL from the process and rule. 

<foreach property='source.{OBX()}' key='k1' >
<assign value='source.{OBX(k1)}' property='target.{OBXgrp(k1).OBX}' action='set' />
</foreach>

0
Marc Mundt · Apr 4, 2017

Check if the message schema category set on your Business Service matches the schema you chose for the DTL.

0
Armin Gayl · Apr 4, 2017

What is the error message displayed in the log?

Can you tell me the values of the EnsLib.HL7.Message of the initial message. (Messageviewer)
- DocType
- DocTypeCategory 
- DocTypeSecondary
- DocTypeName DFT_P03

0
Graham Uricchio  Apr 4, 2017 to Armin Gayl

There is no error message but I do get a warning saying document is missing (due to the OBX segments not being there)

- DocType: 2.5:MDM_T02
- DocTypeCategory: 

2.5

- DocTypeSecondary: MDM_T02
- DocTypeName: MDM_T02

0
Armin Gayl  Apr 4, 2017 to Graham Uricchio

this is the Value from the Source Message?

in a 2.5 message is no primary OBX Segment but a OBXgrp.OBX 

Try to set the MessageSchemaCategory from the Inbound Service on 2.3

0
Graham Uricchio  Apr 6, 2017 to Armin Gayl

Thanks Armin. This was the issue. The inbound process was set to 2.3 where we needed to be using 2.5.

Appreciate your help.

0
Paul Hula · Apr 6, 2017

Graham,

  It will certainly be that your OBX's aren't at OBX (probably at OBXgrp.OBX), this is easy to confirm, hover over the OBX segment in the trace view just before the HL7 goes to the router with the rule, this will show what name the OBX is actually under.

      Regards

0