Written by

Question Andy Khemraj · Dec 1, 2023

Function Wizard ReplaceStr()

I am trying to replace OBX.2 value of ED to PDF

Here is what I have in the funcion wizard

..ReplaceStr(source.{OBRgrp().OBXgrp().OBX():ValueType},"ED","PDF")

Inbound Message

OBX|5|ED|PDFReport^PDFReport||PDF^Image^PDF^Base64^JVBERi0xLjMNCjEgMCBvYmoNCjw8DQovVHlwZSAvQ2F0YWxvZw0KL1BhZ2VzIDQgMCBSDQovT3V0bGluZXMgMiAwIFI

Desired Outbound Message

OBX|5|PDF|PDFReport^PDFReport||PDF^Image^PDF^Base64^JVBERi0xLjMNCjEgMCBvYmoNCjw8DQovVHlwZSAvQ2F0YWxvZw0KL1BhZ2VzIDQgMCBSDQovT3V0bGluZXMgMiAwIFI

Product version: IRIS 2022.3

Comments

Enrico Parisi · Dec 1, 2023

I'm afraid you cannot use the syntax shortcut () within a StrReplace function.
You can use the () syntax to assign a constant string to ALL the repeating fields, like:

<assignvalue='"PDF"'property='target.{PIDgrpgrp().ORCgrp().OBXgrp().OBX:ValueType}'action='set' />

In your case you need to iterate in each of the 3 repeating segments using foreach actions, like:

<foreachproperty='source.{PIDgrpgrp()}'key='k1' ><foreachproperty='source.{PIDgrpgrp(k1).ORCgrp()}'key='k2' ><foreachproperty='source.{PIDgrpgrp(k1).ORCgrp(k2).OBXgrp()}'key='k3' ><assignvalue='..ReplaceStr(source.{PIDgrpgrp(k1).ORCgrp(k2).OBXgrp(k3).OBX:ValueType},"ED","PDF")'property='target.{PIDgrpgrp(k1).ORCgrp(k2).OBXgrp(k3).OBX:ValueType}'action='set' /></foreach></foreach></foreach>

Enrico

0