com.pixelmed.dicom

## Class StructuredReport

- java.lang.Object
- - com.pixelmed.dicom.StructuredReport

- All Implemented Interfaces:
    javax.swing.tree.TreeModel

      public class StructuredReport
      extends java.lang.Object
      implements javax.swing.tree.TreeModel

  The `StructuredReport` class implements a `TreeModel` to abstract the contents of a list of attributes representing a DICOM Structured Report as a tree in order to provide support for a `StructuredReportBrowser`.

  For details of some of the methods implemented here see `javax.swing.tree.TreeModel`.

  A main method is provided for testing that reads a DICOM file containing an SR and dumps its contents in a human-readable form to System.err.

  See Also:
    `ContentItem`, `ContentItemFactory`, `StructuredReportBrowser`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `StructuredReport(AttributeList list)` Construct an internal tree representation of a structured report from a list of DICOM attributes.
    `StructuredReport(ContentItem root)` Construct an internal tree representation of a structured report from an existing root content item.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addTreeModelListener(javax.swing.event.TreeModelListener tml)`
    `static java.util.Vector` | `findAllContainedSOPInstances(ContentItem root, ContentItem item)` Find all coordinate and image references within content items of the sub-tree rooted at the specified node (which may be the root).
    `AttributeList` | `getAttributeList()` Return the entire content tree of a structured report as an `AttributeList`.
    `java.lang.Object` | `getChild(java.lang.Object node, int index)`
    `int` | `getChildCount(java.lang.Object parent)`
    `int` | `getIndexOfChild(java.lang.Object parent, java.lang.Object child)`
    `java.lang.Object` | `getRoot()`
    `boolean` | `isLeaf(java.lang.Object node)`
    `static void` | `main(java.lang.String[] arg)` Dump the SR encoded in the file name on the console.
    `void` | `removeTreeModelListener(javax.swing.event.TreeModelListener tml)`
    `java.lang.String` | `toString()` Dump the entire tree as a `String`.
    `void` | `valueForPathChanged(javax.swing.tree.TreePath path, java.lang.Object newValue)`
    `static java.lang.String` | `walkTreeBuldingString(ContentItem node, java.lang.String location)` Dump the tree starting at the specified node as a `String`.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### StructuredReport

          public StructuredReport(AttributeList list)
                           throws DicomException

      Construct an internal tree representation of a structured report from a list of DICOM attributes.

      Parameters:
        `list` - the list of attributes in which the structured report is encoded
      Throws:
        `DicomException`

    - #### StructuredReport

          public StructuredReport(ContentItem root)
                           throws DicomException

      Construct an internal tree representation of a structured report from an existing root content item.

      Parameters:
        `root` - the root content item
      Throws:
        `DicomException`

  - ### Method Detail

    - #### getChild

          public java.lang.Object getChild(java.lang.Object node,
                                           int index)

      Specified by:
        `getChild` in interface `javax.swing.tree.TreeModel`
      Parameters:
        `node` -
        `index` -

    - #### getIndexOfChild

          public int getIndexOfChild(java.lang.Object parent,
                                     java.lang.Object child)

      Specified by:
        `getIndexOfChild` in interface `javax.swing.tree.TreeModel`
      Parameters:
        `parent` -
        `child` -

    - #### getRoot

          public java.lang.Object getRoot()

      Specified by:
        `getRoot` in interface `javax.swing.tree.TreeModel`

    - #### getChildCount

          public int getChildCount(java.lang.Object parent)

      Specified by:
        `getChildCount` in interface `javax.swing.tree.TreeModel`
      Parameters:
        `parent` -

    - #### isLeaf

          public boolean isLeaf(java.lang.Object node)

      Specified by:
        `isLeaf` in interface `javax.swing.tree.TreeModel`
      Parameters:
        `node` -

    - #### valueForPathChanged

          public void valueForPathChanged(javax.swing.tree.TreePath path,
                                          java.lang.Object newValue)

      Specified by:
        `valueForPathChanged` in interface `javax.swing.tree.TreeModel`
      Parameters:
        `path` -
        `newValue` -

    - #### addTreeModelListener

          public void addTreeModelListener(javax.swing.event.TreeModelListener tml)

      Specified by:
        `addTreeModelListener` in interface `javax.swing.tree.TreeModel`
      Parameters:
        `tml` -

    - #### removeTreeModelListener

          public void removeTreeModelListener(javax.swing.event.TreeModelListener tml)

      Specified by:
        `removeTreeModelListener` in interface `javax.swing.tree.TreeModel`
      Parameters:
        `tml` -

    - #### getAttributeList

          public AttributeList getAttributeList()

      Return the entire content tree of a structured report as an `AttributeList`.

      Has the side effect of creating (or replacing) the ContentSequence attributes of the `AttributeList` of each `ContentItem` to represent the tree structure.

      Returns:
        a `AttributeList` representing the content tree, or null if empty root.

    - #### walkTreeBuldingString

          public static java.lang.String walkTreeBuldingString(ContentItem node,
                                                               java.lang.String location)

      Dump the tree starting at the specified node as a `String`.

      Parameters:
        `node` -
        `location` - the dotted numeric string describing the location of the starting node
      Returns:
        a multi-line `String` representing the tree fragment

    - #### toString

          public java.lang.String toString()

      Dump the entire tree as a `String`.

      Overrides:
        `toString` in class `java.lang.Object`
      Returns:
        a multi-line `String` representing the tree

    - #### findAllContainedSOPInstances

          public static java.util.Vector findAllContainedSOPInstances(ContentItem root,
                                                                      ContentItem item)

      Find all coordinate and image references within content items of the sub-tree rooted at the specified node (which may be the root).

      The annotation of the reference is derived from the value of the Concept Name of the parent (and its parent, if a NUM content item).

      Parameters:
        `root` - the root node, for dereferencing by-reference relationships
        `item` - the node to start searching from
      Returns:
        a `Vector` of `SpatialCoordinateAndImageReference`

    - #### main

          public static void main(java.lang.String[] arg)

      Dump the SR encoded in the file name on the console.

      Parameters:
        `arg` -