hapi library 'getAll(String name)' doesn't return all custom z-segments from message

StackOverflow https://stackoverflow.com/questions/10437229

  •  05-06-2021
  •  | 
  •  

Question

Ok, so I've implemented a custom ORU_R01 v2.3 message and a custom Z-segment (called ZDS) using the HAPI library (version 1.2).

They seem to be working well. However, when I have a message with multiple ZDS segments, I find I'm unable to get them all. I call the 'getAll("ZDS");' method, thinking it will return an array of segments with id ZDS. However, it will only ever return an array of either length 0 or 1 (returns length 1 even if there are multiple ZDS segments).

Here's my code in my custom ORU_R01 message that tries to get an array of ZDS segments:

public ZDS[] getZDSList() throws HL7Exception {
        System.out.println("NUM REPS: " + currentReps("ZDS"));
        Structure[] list = getAll("ZDS");
        ZDS[] zdsSegments = new ZDS[list.length];

        for (int i=0; i < list.length; i++)
            zdsSegments[i] = (ZDS) list[i];

        return zdsSegments;
    }

The output for currentReps("ZDS") is always either 0 or 1.

I'm learning, but I'm hitting some road blocks. I'd appreciate any help you guys can offer!!

Cheers

Jarrett

Was it helpful?

Solution

Ok, turns out, when I add the ZDS segment to my custom ORU_R01, I needed to set the segment to be repeating. i.e.:

this.add(ZDS.class, false, false);

needs to be changed to

this.add(ZDS.class, false, true);

and then it works!

Thanks to everyone who checked this out.

Cheers

Jarrett

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top