Removing an interating OBX segment

Homepage Clovertech Forums Read Only Archives Cloverleaf Cloverleaf Removing an interating OBX segment

  • Creator
    Topic
  • #53073
    Roy Osumi
    Participant

    I want to remove an OBX segment from an iteration if OBX#5 is null.  

    example inbound

    OBX|1|||DATA|AA||

    OBX|2|||DATA|||

    would like it to look like this

    OBX|1|||DATA|AA||

    or

    OBX|1|||DATA|||

    OBX|2|||DATA|AB||

    would like it to look like this

    OBX|1|||DATA|AB||

    Running CL5.5 Redhat 4.0

    Any and all help is greatly appreciated.

    – Roy

Viewing 14 reply threads
  • Author
    Replies
    • #76459
      Robert Kersemakers
      Participant

      Hi Roy,

      I assume you are doing this from an Xlate. In your iteration you will need to check (with an IF) whether you want to (bulk)copy this segment or not.

      You will also need a separate variable (%s9) to keep track of the number of OBX-segments: use this variable in your outbound message as counter for the OBX-segments. You will need to increase this variable everytime an OBX-segment is copied to the outbound message.

      Hope this helps.

      Zuyderland Medisch Centrum; Heerlen/Sittard; The Netherlands

    • #76460
      Roy Osumi
      Participant

      Thanks Robert for your help.  Bulkcopy idea led me to thinking differently.

      I think I figured it out using pathcopy within the iteration.  I check to see if OBX#5 not null do a pathcopy.

    • #76461
      Jim Kosloskey
      Participant

      Roy,

      That works for the OBX in an ORU or ORU^R01 message because the OBX segment is typically defined in the variant as optional.

      However, if the target of your repetition is not specified as optional you will get empty segments as a result of doing it that way.

      In the case where the target segment is not defined optinal you have 2 choices:

          1. Change the variant to make the segment optional (while fast this is not always the best choice).

         2. Use the technique Robert suggested. This is slower but more sure.

      email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.

    • #76462
      Robert Kersemakers
      Participant

      And even if the OBX-segment is optional, you would then get messages like this:

      OBX|0|…

      OBX|2|…

      OBX|5|…

      OBX|6|…

      OBX|9|…

      I haven’t seen a system yet that will complain about this, but it just looks weird. I want it to be this:

      OBX|0|…

      OBX|1|…

      OBX|2|…

      OBX|3|…

      OBX|4|…

      Zuyderland Medisch Centrum; Heerlen/Sittard; The Netherlands

    • #76463
      Jim Kosloskey
      Participant

      Robert,

      Actually I just tested this on CL 5.6:

      BULKCOPY of ORU^R01 with multiple OBX segments – all segments appear as expected.

      Follow BULKCOPY with PATHCOPY @null to 2nd OBX occurrence (segment level) – now second occurrence is gone as expected but all other segments are preserved.

      So if the segment is optional and is either not populated at all or is nulled via PATHCOPY at the segment level, it will not appear in the outound message.

      email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.

    • #76464
      Keith McLeod
      Participant

      Try something like the attached.

      You basically set a counter with $%g9.  Increment the $%g9 variable only when you copy an OBX/NTE grouping

      Notice the destination side uses this value by using %g9 in the HL7 path notation.

      Hope the attachment is visible.

    • #76465
      Robert Kersemakers
      Participant

      @Jim: Yes, I understand that you can null out specific OBX-segments with a PATHCOPY, but field OBX-1 (Set ID) won’t be in a consecutive order that way. Some values (in my example 1, 3, 4, 7 and 8) will be missing because these segments are ‘deleted’. But I’m wondering if a consecutive order is necessary/required.

      To make sure OBX-1 is in consecutive order, you need to use a counter, as Keith explained. Depending on the message format, you will need to use a segment counter (%s9) or a group counter (%g9).

      So I think we all agree. Just wondering about that consecutive order now.

      Zuyderland Medisch Centrum; Heerlen/Sittard; The Netherlands

    • #76466
      Keith McLeod
      Participant

      I found in most cases the order doesn’t matter, but it is the receiving system that makes that call.  The benefit of not chnaging OBX:1 is that you can clearly see what was removed.  But I prefer to have the numbers in order.

    • #76467
      Jim Kosloskey
      Participant

      Yup we all agree if the need is there then managing your own counter is the way to go.

      Personally I always use that technique (managing the counter) no matter whether the receiving system cares or not.

      I just wanted Roy to understand that his technique would not eliminate the segment if it is defined as required.

      email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.

    • #76468
      Keith McLeod
      Participant

      True.

    • #76469
      Carol Gross
      Participant

      How do I get rid of a segment in the middle of a repeating segment set?

      I have tried pathcopy @null-> .0(6)OBX for example, but it leaves a placeholder

      0(3).OBX(0)  :  >|4|TX|OP2.24|ORGCOM|WITH|||N|||P<

      0(4).OBX(0)  :  >|5|TX|RL5|5|PENICILLIN-ALLERGIC |||N|||P<

      0(5).OBX(0)  :  >|6|TX|RL6|6|TO PENICILLINS,.||||||P<

      0(6).OBX(0)  :  ><

      0(7).OBX(0)  :  >|8|CF|ORG8|2|STRGRB^ B^L||||||P<

    • #76470
      gricelda lopez
      Participant

      Hello,

      I was able to use this thread to help me filter out OBX segments that had a negative values. My problem is that when I filter the OBX segments  I still get the other OBR segments that were linked with the negative OBX segments. Any advice on how to get rid of the unwanted OBR’s?

      Thanks!

    • #76471
      Jim Kosloskey
      Participant

      It depends on your reqwuirements and how you are doing your work.

      Can you give us a little more information?

      email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.

    • #76472
      gricelda lopez
      Participant

      Hi Jim,

      The vendor wants me to me to strip out the OBR that has a negative OBX result out of the ORU message.

      I have the loop set up in the OBX segment to filter but that doesn’t help me since I didn’t include the OBR segments into my loop and I am stuck in that part.

      In the sample below, the top part is the raw message and the bottom is how the vendor wants to see it. The green high lighted portion is the positive OBX segment that I want to send to the vendor. Thank you !

    • #76473
      Jim Kosloskey
      Participant

      Gricelda,

      It appears the only ORC/OBR/OBX etc you want are for those which are positive.

      What I would do then is to move all of my ORC and OBR COPYs to the OBX ITERATE within the IF that determines which OBR/OBX set is to be passd on.

      However if your Outbound Variant has the OBR as a required segment then any you skip will still be produced but empty – that is not what you want.

      So you could define the segment as optional in the OutbOund Variant or you could manage your own counter for the ORC/OBR level thus alweays starting the set with the first ands subsequent set which has a positive result in the OBX.

      If you would like to go through this in detail off-line, email me.

      email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.

Viewing 14 reply threads
  • The forum ‘Cloverleaf’ is closed to new topics and replies.

Forum Statistics

Registered Users
5,129
Forums
28
Topics
9,301
Replies
34,447
Topic Tags
288
Empty Topic Tags
10