Reputation: 57
I need to access all GantryAngle values within each ControlPointSequence attribute within the BeamSequence attribute.
Here is a quick visualization of the nesting
Beam Sequence
...
Control Point Sequence
Gantry Angle
...
...
Control Point Sequence
Gantry Angle
...
...
Control Point Sequence
Gantry Angle
...
How could I access each gantry angle using the pixelmed library?
EDIT:
thanks to help from cnellar, here is what ended up working
private ArrayList<Double> getAngles( SequenceAttribute beamSequence ) {
ArrayList<Double> n = new ArrayList<Double>();
Iterator is = beamSequence.iterator();
while (is.hasNext()) {
SequenceItem item = (SequenceItem)is.next();
if (item != null) {
AttributeList itemList = item.getAttributeList();
if (itemList != null) {
SequenceAttribute ctrlPoint = (SequenceAttribute)itemList.get( TagFromName.ControlPointSequence );
//System.out.print(ctrlPoint);
Iterator is1 = ctrlPoint.iterator();
while (is1.hasNext()) {
SequenceItem item1 = (SequenceItem)is1.next();
if (item1 != null) {
AttributeList itemList1 = item1.getAttributeList();
if (itemList1 != null) {
Attribute gantry_angle = itemList1.get( TagFromName.GantryAngle );
if(gantry_angle!=null)
n.add(gantry_angle.getSingleDoubleValueOrDefault(0));
}
}
}
}
}
}
return n;
}
Upvotes: 0
Views: 839
Reputation: 1582
I expect something like:
private double[] getAngles( SequenceAttribute beamSequence ) {
Iterator is = beamSequence.iterator();
while (is.hasNext()) {
SequenceItem item = (SequenceItem)is.next();
if (item != null) {
AttributeList itemList = item.getAttributeList();
if (itemList != null) {
Attribute ctrlPoint = itemList.get( TagFromName.ControlPointSequence );
// Do the same sifting through this sequence to get your gantry angle
// and add it to your list of values.
}
}
}
Upvotes: 1