Question
Yone Moreno · Jun 15, 2020

How could we iterate over an ORU, to get all OBXs?

Hello,

 

We would need to iterate all over the OBXs list and get their OBX3 CE1 to determine if it is the lab result we need to send to the output system.

 

We wonder how could we achieve this in a foreach component inside a Bussiness Process.

 

We think we would need to use a foreach because of it is needed to generate a message, for each one of the OBX which have the OBX3 CE1 that the output systems uses for the lab results.

 

So then we would need to use a foreach and then inside a transform and a call

 

We have already been able to output all tbe OBX3 CE1 to the log as follows:

 

Class Transformaciones.SaludPublica.RellenarListaOBXs Extends Ens.DataTransformDTL [ DependsOn = (EnsLib.HL7.Message, Mensajes.Request.SaludPublica.guardarPruebaRequest) ]
{ Parameter IGNOREMISSINGSOURCE = 1; Parameter REPORTERRORS = 1; Parameter TREATEMPTYREPEATINGFIELDASNULL = 0; XData DTL [ XMLNamespace = "http://www.intersystems.com/dtl" ]
{
<transform sourceClass='EnsLib.HL7.Message' targetClass='Mensajes.Request.SaludPublica.guardarPruebaRequest' sourceDocType='2.5:ORU_R01' create='new' language='objectscript' >
<foreach property='source.{PIDgrpgrp()}' key='k1' >
<foreach property='source.{PIDgrpgrp(k1).ORCgrp()}' key='k2' >
<foreach property='source.{PIDgrpgrp(k1).ORCgrp(k2).OBXgrp()}' key='k3' >
<assign value='source.{PIDgrpgrp(k1).ORCgrp(k2).OBXgrp(k3).OBX:ObservationIdentifier.Identifier}' property='context.codigoPrueba' action='set' />
<code>
<![CDATA[
  $$$LOGINFO("context.codigoPrueba: "_context.codigoPrueba)]]></code>
<if condition='##class(Util.TablasMaestras).getValorMaestra("TIPO_PRUEBA_CUP",context.codigoPrueba) &apos;= ""' >
<true>
<code>
<![CDATA[
  $$$LOGINFO("Tenemos que guardar este resultado")]]></code>
</true>
</if>
</foreach>
</foreach>
</foreach>
</transform>
} }

 

We have an example message here:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
        <SOAP-ENV:Body>
        <ORU_R01>
                    <MSH>
                        <MSH.1>|</MSH.1>
                        <MSH.2>^~\&amp;</MSH.2>
                        <MSH.3>
                            <HD.1>infinity</HD.1>
                        </MSH.3>
                        <MSH.4>
                            <HD.1>380316</HD.1>
                        </MSH.4>
                        <MSH.5>
                            <HD.1>sistemaExterno</HD.1>
                        </MSH.5>
                        <MSH.6>
                            <HD.1>scs</HD.1>
                        </MSH.6>
                        <MSH.7>
                            <TS.1>20200613142122</TS.1>
                        </MSH.7>
                        <MSH.8></MSH.8>
                        <MSH.9>
                            <MSG.1>ORU</MSG.1>
                            <MSG.2>R01</MSG.2>
                            <MSG.3>ORU_R01</MSG.3>
                        </MSH.9>
                        <MSH.10>20061313212715</MSH.10>
                        <MSH.11>
                            <PT.1>P</PT.1>
                        </MSH.11>
                        <MSH.12>
                            <VID.1>2.3.1</VID.1>
                        </MSH.12>
                        <MSH.16>NE</MSH.16>
                    </MSH>
                    <ORU_R01.PATIENT_RESULT>
                        <ORU_R01.PATIENT>
                            <PID>
                                <PID.1>1</PID.1>
                                <PID.2>
                                    <CX.1>134201</CX.1>
                                </PID.2>
                                <PID.3>
                                    <CX.1>12345</CX.1>
                                    <CX.5>NHC</CX.5>
                                </PID.3>
                                <PID.4>
                                    <CX.1>134201</CX.1>
                                </PID.4>
                                <PID.5>
                                    <XPN.1>
                                        <FN.1>APELLIDO1 APELLIDO2</FN.1>
                                    </XPN.1>
                                    <XPN.2>NOMBRE</XPN.2>
                                </PID.5>
                                <PID.7>
                                    <TS.1>19920122</TS.1>
                                </PID.7>
                                <PID.8>M</PID.8>
                                <PID.11>
                                    <XAD.3>NOMAP</XAD.3>
                                </PID.11>
                            </PID>
                            <ORU_R01.VISIT>
                                <PV1>
                                    <PV1.8>
                                        <XCN.1>22719059</XCN.1>
                                    </PV1.8>
                                    <PV1.19>
                                        <CX.1>3382623</CX.1>
                                    </PV1.19>
                                </PV1>
                            </ORU_R01.VISIT>
                        </ORU_R01.PATIENT>
                        <ORU_R01.ORDER_OBSERVATION>
                            <OBR>
                                <OBR.1>1</OBR.1>
                                <OBR.2>
                                    <EI.1>26729758</EI.1>
                                </OBR.2>
                                <OBR.3>
                                    <EI.1>41884</EI.1>
                                </OBR.3>
                                <OBR.4>
                                    <CE.1>1171</CE.1>
                                    <CE.2>1171 Srm-COVID IgG</CE.2>
                                </OBR.4>
                                <OBR.10>
                                    <XCN.16>
                                        <CE.1>desconocido</CE.1>
                                    </XCN.16>
                                </OBR.10>
                                <OBR.14>
                                    <TS.1>20200418194100</TS.1>
                                </OBR.14>
                                <OBR.24>00LA</OBR.24>
                            </OBR>
                            <ORU_R01.OBSERVATION>
                                <OBX>
                                    <OBX.1>1</OBX.1>
                                    <OBX.2>ST</OBX.2>
                                    <OBX.3>
                                        <CE.1>1171</CE.1>
                                        <CE.2>1171 Srm-COVID IgG</CE.2>
                                    </OBX.3>
                                    <OBX.5>NEGATIVO</OBX.5>
                                    <OBX.11>F</OBX.11>
                                    <OBX.14>
                                        <TS.1>20200613142000</TS.1>
                                    </OBX.14>
                                </OBX>
                            </ORU_R01.OBSERVATION>
                        </ORU_R01.ORDER_OBSERVATION>
                        <ORU_R01.ORDER_OBSERVATION>
                            <OBR>
                                <OBR.1>2</OBR.1>
                                <OBR.2>
                                    <EI.1>26729758</EI.1>
                                </OBR.2>
                                <OBR.3>
                                    <EI.1>41884</EI.1>
                                </OBR.3>
                                <OBR.4>
                                    <CE.1>1172</CE.1>
                                    <CE.2>1172 Srm-COVID IgM</CE.2>
                                </OBR.4>
                                <OBR.14>
                                    <TS.1>20200418194100</TS.1>
                                </OBR.14>
                                <OBR.24>00LA</OBR.24>
                            </OBR>
                            <ORU_R01.OBSERVATION>
                                <OBX>
                                    <OBX.1>2</OBX.1>
                                    <OBX.2>ST</OBX.2>
                                    <OBX.3>
                                        <CE.1>1172</CE.1>
                                        <CE.2>1172 Srm-COVID IgM</CE.2>
                                    </OBX.3>
                                    <OBX.5>NEGATIVO</OBX.5>
                                    <OBX.11>F</OBX.11>
                                    <OBX.14>
                                        <TS.1>20200613142000</TS.1>
                                    </OBX.14>
                                </OBX>
                            </ORU_R01.OBSERVATION>
                        </ORU_R01.ORDER_OBSERVATION>
                        <ORU_R01.ORDER_OBSERVATION>
                            <OBR>
                                <OBR.2>
                                    <EI.1>26729758</EI.1>
                                </OBR.2>
                                <OBR.3>
                                    <EI.1>41884</EI.1>
                                </OBR.3>
                                <OBR.4>
                                    <CE.1>URL</CE.1>
                                    <CE.2>URL Informe PDF generado por Laboratorio</CE.2>
                                </OBR.4>
                                <OBR.14>
                                    <TS.1>20200418194100</TS.1>
                                </OBR.14>
                                <OBR.24>00LA</OBR.24>
                            </OBR>
                            <ORU_R01.OBSERVATION>
                                <OBX>
                                    <OBX.1>1</OBX.1>
                                    <OBX.2>RP</OBX.2>
                                    <OBX.3>
                                        <CE.1>URL</CE.1>
                                        <CE.2>URL Informe PDF generado por Laboratorio</CE.2>
                                    </OBX.3>
                                    <OBX.4>INF</OBX.4>
                                    <OBX.5>41841884^20200418^^IMPPDF</OBX.5>
                                    <OBX.14>
                                        <TS.1>20200613142000</TS.1>
                                    </OBX.14>
                                </OBX>
                            </ORU_R01.OBSERVATION>
                        </ORU_R01.ORDER_OBSERVATION>
                    </ORU_R01.PATIENT_RESULT>
                </ORU_R01>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

We would appreciate your replies and your time

0
0 343
Discussion (1)2
Log in or sign up to continue

In the past I had to do something similar.  I just used a code block to call a classmethod.  The classmethod accepted the context variable by reference.  All you would need to do is loop on the OBX segments and clone the message for each segment which meets your criteria.  Then you would need to remove any extraneous segments.  Once complete you would just need to add each message to an index you created in the context variable.  That way you could loop, transform and send each message in the index in your BP using a foreach.