DCMTK  Version 3.6.1 20150924
OFFIS DICOM Toolkit
Public Member Functions | Protected Member Functions | Protected Attributes | Private Attributes | List of all members
DSRDocumentSubTree Class Reference

Class managing a SR document subtree. More...

+ Inheritance diagram for DSRDocumentSubTree:

Public Member Functions

 DSRDocumentSubTree ()
 default constructor
 
 DSRDocumentSubTree (const DSRDocumentSubTree &tree)
 copy constructor. More...
 
virtual ~DSRDocumentSubTree ()
 destructor
 
DSRDocumentSubTreeoperator= (DSRDocumentSubTree tree)
 assignment operator. More...
 
virtual DSRDocumentSubTreeclone () const
 clone this subtree. More...
 
virtual void clear ()
 clear internal member variables
 
virtual OFBool isValid () const
 check whether the current internal state is valid. More...
 
virtual OFBool isValidDocumentTree (const E_RelationshipType defaultRelType=RT_unknown) const
 check whether this subtree is a valid document tree. More...
 
virtual OFBool hasTemplateIdentification () const
 check whether template identification is set More...
 
virtual OFBool canUseTemplateIdentification () const
 check whether template identification is possible at all. More...
 
virtual OFCondition print (STD_NAMESPACE ostream &stream, const size_t flags=0)
 print current SR document tree to specified output stream More...
 
virtual DSRContentItemgetCurrentContentItem ()
 get reference to current content item. More...
 
virtual size_t gotoNamedNode (const DSRCodedEntryValue &conceptName, const OFBool startFromRoot=OFTrue, const OFBool searchIntoSub=OFTrue)
 set internal cursor to a named node. More...
 
virtual size_t gotoNextNamedNode (const DSRCodedEntryValue &conceptName, const OFBool searchIntoSub=OFTrue)
 set internal cursor to the next named node. More...
 
virtual size_t gotoAnnotatedNode (const OFString &annotationText, const OFBool startFromRoot=OFTrue)
 set internal cursor to an annotated node. More...
 
virtual size_t gotoNextAnnotatedNode (const OFString &annotationText)
 set internal cursor to the next annotated node. More...
 
virtual OFBool canAddContentItem (const E_RelationshipType relationshipType, const E_ValueType valueType, const E_AddMode addMode=AM_afterCurrent)
 check whether specified content item can be added to the current one. More...
 
virtual OFBool canAddByReferenceRelationship (const E_RelationshipType relationshipType, const E_ValueType targetValueType)
 check whether specified by-reference relationship can be added to the current content item. More...
 
virtual size_t addContentItem (const E_RelationshipType relationshipType, const E_ValueType valueType, const E_AddMode addMode=AM_afterCurrent)
 add specified content item to the current one. More...
 
virtual OFCondition addContentItem (DSRDocumentTreeNode *node, const E_AddMode addMode=AM_afterCurrent, const OFBool deleteIfFail=OFFalse)
 add specified content item to the current one. More...
 
virtual OFCondition addContentItem (const E_RelationshipType relationshipType, const E_ValueType valueType, const DSRCodedEntryValue &conceptName)
 add specified content item after the current one. More...
 
virtual OFCondition addChildContentItem (const E_RelationshipType relationshipType, const E_ValueType valueType, const DSRCodedEntryValue &conceptName)
 add specified content item below the current one. More...
 
virtual size_t addByReferenceRelationship (const E_RelationshipType relationshipType, const size_t referencedNodeID)
 add specified by-reference relationship to the current content item. More...
 
virtual OFBool canInsertSubTree (DSRDocumentSubTree *tree, const E_AddMode addMode=AM_belowCurrent, const E_RelationshipType defaultRelType=RT_unknown)
 check whether specified subtree can be inserted at the current position, i.e. added to the current content item. More...
 
virtual OFCondition insertSubTree (DSRDocumentSubTree *tree, const E_AddMode addMode=AM_belowCurrent, const E_RelationshipType defaultRelType=RT_unknown, const OFBool deleteIfFail=OFFalse)
 insert specified subtree to this tree, i.e. add it to the current content item. More...
 
virtual DSRDocumentSubTreeextractSubTree ()
 extract a subtree i.e. a fragment from this tree. More...
 
virtual size_t removeCurrentContentItem ()
 remove current content item from tree. More...
 
virtual OFCondition removeSubTree (const size_t searchID=0)
 remove a subtree from this tree. More...
 
virtual DSRDocumentTreeNodecloneCurrentTreeNode () const
 clone the current tree node. More...
 
virtual DSRDocumentSubTreecloneSubTree (const size_t stopAfterNodeID=0) const
 clone a subtree i.e. a fragment of this tree. More...
 
virtual OFCondition getTemplateIdentification (OFString &templateIdentifier, OFString &mappingResource) const
 get template identifier and mapping resource from the root node of this tree. More...
 
virtual OFCondition getTemplateIdentification (OFString &templateIdentifier, OFString &mappingResource, OFString &mappingResourceUID) const
 get template identifier, mapping resource and optional mapping resource UID from the root node of this tree. More...
 
virtual OFCondition setTemplateIdentification (const OFString &templateIdentifier, const OFString &mappingResource, const OFString &mappingResourceUID="", const OFBool check=OFTrue)
 set template identifier and mapping resource to the root node of this tree. More...
 
- Public Member Functions inherited from DSRTree< DSRDocumentTreeNode >
 DSRTree ()
 default constructor
 
 DSRTree (const DSRTree< DSRDocumentTreeNode > &tree)
 copy constructor. More...
 
virtual ~DSRTree ()
 destructor
 
DSRTreeoperator= (DSRTree< DSRDocumentTreeNode > tree)
 assignment operator. More...
 
void clearAnnotations ()
 clear annotations of all tree nodes
 
OFBool isEmpty () const
 check whether tree has any nodes More...
 
size_t countNodes () const
 count number of nodes in the tree. More...
 
size_t getNextNodeID () const
 get ID of the next node to be created. More...
 
size_t gotoRoot ()
 set internal cursor to root node More...
 
size_t gotoNode (const size_t searchID, const OFBool startFromRoot=OFTrue)
 set internal cursor to specified node More...
 
size_t gotoNode (const OFString &reference, const OFBool startFromRoot=OFTrue)
 set internal cursor to specified node More...
 
size_t gotoNode (const DSRTreeNodeAnnotation &annotation, const OFBool startFromRoot=OFTrue)
 set cursor to specified node. More...
 
- Public Member Functions inherited from DSRTreeNodeCursor< DSRDocumentTreeNode >
 DSRTreeNodeCursor ()
 default constructor
 
 DSRTreeNodeCursor (const DSRTreeNodeCursor< DSRDocumentTreeNode > &cursor)
 copy constructor More...
 
 DSRTreeNodeCursor (DSRDocumentTreeNode *node)
 constructor More...
 
virtual ~DSRTreeNodeCursor ()
 destructor
 
DSRTreeNodeCursor< DSRDocumentTreeNode > & operator= (const DSRTreeNodeCursor< DSRDocumentTreeNode > &cursor)
 assignment operator More...
 
DSRTreeNodeCursor< DSRDocumentTreeNode > & operator= (DSRDocumentTreeNode *node)
 assignment operator More...
 
size_t countChildNodes (const OFBool searchIntoSub=OFTrue) const
 count number of children of the current node. More...
 
OFBool hasParentNode () const
 check whether the current node has a parent More...
 
OFBool hasChildNodes () const
 check whether the current node has any children More...
 
OFBool hasPreviousNode () const
 check whether the current node has a preceding sibling More...
 
OFBool hasNextNode () const
 check whether the current node has a following sibling More...
 
OFBool hasSiblingNodes () const
 check whether the current node has any siblings More...
 
virtual DSRDocumentTreeNodegetNode () const
 get pointer to current node More...
 
virtual const DSRDocumentTreeNodegetParentNode ()
 get pointer to parent node. More...
 
virtual const DSRDocumentTreeNodegetChildNode () const
 get pointer to first child node. More...
 
virtual const DSRDocumentTreeNodegetPreviousNode () const
 get pointer to previous node. More...
 
virtual const DSRDocumentTreeNodegetNextNode () const
 get pointer to next node. More...
 
size_t gotoFirst ()
 goto first node on the same level (first sibling). More...
 
size_t gotoLast ()
 goto last node on the same level (last sibling). More...
 
size_t gotoPrevious ()
 goto previous node on the same level (preceding sibling) More...
 
size_t gotoNext ()
 goto next node on the same level (following sibling) More...
 
size_t goUp ()
 goto parent node (one level up) More...
 
size_t goDown ()
 goto first child node (one level down) More...
 
size_t iterate (const OFBool searchIntoSub=OFTrue)
 iterate over all nodes. More...
 
size_t gotoNode (const size_t searchID)
 set cursor to specified node. More...
 
size_t gotoNode (const OFString &position, const char separator= '.')
 set cursor to specified node. More...
 
size_t gotoNode (const DSRTreeNodeAnnotation &annotation)
 set cursor to specified node. More...
 
size_t getNodeID () const
 get current node ID. More...
 
size_t getLevel () const
 get current level. More...
 
const OFStringgetPosition (OFString &position, const char separator= '.') const
 get position string of the current node. More...
 

Protected Member Functions

 DSRDocumentSubTree (DSRDocumentTreeNode *rootNode)
 special constructor that receives a pointer to the root node. More...
 
 DSRDocumentSubTree (const DSRDocumentTreeNodeCursor &startCursor, size_t stopAfterNodeID)
 special copy constructor that clones a particular subtree only More...
 
void swap (DSRDocumentSubTree &tree)
 fast, non-throwing swap function. More...
 
virtual size_t addNode (DSRDocumentTreeNode *node, const E_AddMode addMode=AM_afterCurrent)
 add new node to the current one. More...
 
virtual DSRDocumentTreeNodeextractNode ()
 extract current node from tree. More...
 
virtual DSRDocumentTreeNodegetAndRemoveRootNode ()
 get pointer to root node and "forget" the internal reference to this node. More...
 
virtual size_t removeNode ()
 remove current node from tree. More...
 
virtual OFCondition checkByReferenceRelationships (const size_t mode=0, const size_t flags=0)
 check the by-reference relationships (if any) for validity. More...
 
virtual void resetReferenceTargetFlag ()
 reset flag for all content items whether they are target of a by-reference relationship. More...
 
virtual void updateTreeForOutput ()
 update the tree for subsequent output, e.g. for being printed or added to an SR document. More...
 
virtual OFCondition checkSubTreeConstraints (DSRDocumentSubTree *tree, DSRIODConstraintChecker *checker)
 check whether the given subtree complies with the constraints of the given checker More...
 
- Protected Member Functions inherited from DSRTree< DSRDocumentTreeNode >
 DSRTree (DSRDocumentTreeNode *rootNode)
 special constructor that receives a pointer to the root node. More...
 
 DSRTree (const DSRTreeNodeCursor< DSRDocumentTreeNode > &startCursor, size_t stopAfterNodeID)
 special copy constructor that clones a particular subtree only More...
 
void swap (DSRTree< DSRDocumentTreeNode > &tree)
 fast, non-throwing swap function. More...
 
virtual DSRDocumentTreeNodegetRoot () const
 get pointer to root node More...
 
- Protected Member Functions inherited from DSRTreeNodeCursor< DSRDocumentTreeNode >
void clearNodeCursorStack ()
 clear the internal node cursor stack
 
size_t setCursor (DSRDocumentTreeNode *node)
 set cursor to specified node. More...
 
- Protected Member Functions inherited from DSRTypes
virtual ~DSRTypes ()
 destructor. More...
 

Protected Attributes

DSRIODConstraintCheckerConstraintChecker
 check relationship content constraints of the associated IOD
 
- Protected Attributes inherited from DSRTreeNodeCursor< DSRDocumentTreeNode >
DSRDocumentTreeNodeNodeCursor
 pointer to current node
 
OFStack< DSRDocumentTreeNode * > NodeCursorStack
 stack of node pointers. Used to store the cursor position of upper levels.
 
size_t Position
 current position within the current level
 
OFList< size_t > PositionList
 list of position counters in upper levels
 

Private Attributes

DSRContentItem CurrentContentItem
 current content item. Introduced to avoid the external use of pointers.
 

Additional Inherited Members

- Protected Types inherited from DSRTypes
enum  E_DocumentType {
  DT_invalid, DT_unknown = DT_invalid, DT_BasicTextSR, DT_EnhancedSR,
  DT_ComprehensiveSR, DT_KeyObjectSelectionDocument, DT_MammographyCadSR, DT_ChestCadSR,
  DT_ColonCadSR, DT_ProcedureLog, DT_XRayRadiationDoseSR, DT_SpectaclePrescriptionReport,
  DT_MacularGridThicknessAndVolumeReport, DT_ImplantationPlanSRDocument, DT_Comprehensive3DSR, DT_RadiopharmaceuticalRadiationDoseSR,
  DT_ExtensibleSR, DT_last = DT_ExtensibleSR
}
 SR document types. More...
 
enum  E_RelationshipType {
  RT_invalid, RT_unknown, RT_isRoot, RT_contains,
  RT_hasObsContext, RT_hasAcqContext, RT_hasConceptMod, RT_hasProperties,
  RT_inferredFrom, RT_selectedFrom, RT_last = RT_selectedFrom
}
 SR relationship types. More...
 
enum  E_ValueType {
  VT_invalid, VT_Text, VT_Code, VT_Num,
  VT_DateTime, VT_Date, VT_Time, VT_UIDRef,
  VT_PName, VT_SCoord, VT_SCoord3D, VT_TCoord,
  VT_Composite, VT_Image, VT_Waveform, VT_Container,
  VT_byReference, VT_last = VT_byReference
}
 SR value types. More...
 
enum  E_PresentationStateType {
  PT_invalid, PT_unknown = PT_invalid, PT_Grayscale, PT_Color,
  PT_PseudoColor, PT_Blending, PT_XAXRFGrayscale, PT_GrayscalePlanarMPR,
  PT_CompositingPlanarMPR, PT_last = PT_CompositingPlanarMPR
}
 Softcopy presentation state types. More...
 
enum  E_GraphicType {
  GT_invalid, GT_unknown = GT_invalid, GT_Point, GT_Multipoint,
  GT_Polyline, GT_Circle, GT_Ellipse, GT_last = GT_Ellipse
}
 SR graphic types. More...
 
enum  E_GraphicType3D {
  GT3_invalid, GT3_unknown = GT3_invalid, GT3_Point, GT3_Multipoint,
  GT3_Polyline, GT3_Polygon, GT3_Ellipse, GT3_Ellipsoid,
  GT3_last = GT3_Ellipsoid
}
 SR graphic types (3D). More...
 
enum  E_TemporalRangeType {
  TRT_invalid, TRT_unknown = TRT_invalid, TRT_Point, TRT_Multipoint,
  TRT_Segment, TRT_Multisegment, TRT_Begin, TRT_End,
  TRT_last = TRT_End
}
 SR temporal range types. More...
 
enum  E_ContinuityOfContent { COC_invalid, COC_Separate, COC_Continuous, COC_last = COC_Continuous }
 SR continuity of content flag. More...
 
enum  E_PreliminaryFlag { PF_invalid, PF_Preliminary, PF_Final, PF_last = PF_Final }
 SR document preliminary flag. More...
 
enum  E_CompletionFlag { CF_invalid, CF_Partial, CF_Complete, CF_last = CF_Complete }
 SR document completion flag. More...
 
enum  E_VerificationFlag { VF_invalid, VF_Unverified, VF_Verified, VF_last = VF_Verified }
 SR document verification flag. More...
 
enum  E_CharacterSet {
  CS_invalid, CS_unknown = CS_invalid, CS_ASCII, CS_Latin1,
  CS_Latin2, CS_Latin3, CS_Latin4, CS_Cyrillic,
  CS_Arabic, CS_Greek, CS_Hebrew, CS_Latin5,
  CS_Japanese, CS_Thai, CS_UTF8, CS_last = CS_UTF8
}
 Specific character set. More...
 
enum  E_CodeValueType { CVT_auto, CVT_Short, CVT_Long, CVT_URN }
 Code value type. More...
 
enum  E_AddMode { AM_afterCurrent, AM_beforeCurrent, AM_belowCurrent, AM_belowCurrentBeforeFirstChild }
 Add node mode. More...
 
- Static Protected Member Functions inherited from DSRTypes
static const char * documentTypeToSOPClassUID (const E_DocumentType documentType)
 convert SR document type to SOP class UID More...
 
static const char * documentTypeToModality (const E_DocumentType documentType)
 convert SR document type to modality More...
 
static const char * documentTypeToReadableName (const E_DocumentType documentType)
 convert SR document type to readable name. More...
 
static const char * documentTypeToDocumentTitle (const E_DocumentType documentType, OFString &documentTitle)
 convert SR document type to document title. More...
 
static OFBool requiresEnhancedEquipmentModule (const E_DocumentType documentType)
 check whether SR document type requires Enhanced General Equipment Module More...
 
static const char * relationshipTypeToDefinedTerm (const E_RelationshipType relationshipType)
 convert relationship type to DICOM defined term More...
 
static const char * relationshipTypeToReadableName (const E_RelationshipType relationshipType)
 convert relationship type to readable name. More...
 
static const char * valueTypeToDefinedTerm (const E_ValueType valueType)
 convert value type to DICOM defined term More...
 
static const char * valueTypeToXMLTagName (const E_ValueType valueType)
 convert value type to XML tag name More...
 
static const char * valueTypeToReadableName (const E_ValueType valueType)
 convert value type to readable name. More...
 
static const char * presentationStateTypeToShortName (const E_PresentationStateType pstateType)
 convert presentation state type to short name. More...
 
static const char * graphicTypeToEnumeratedValue (const E_GraphicType graphicType)
 convert graphic type to DICOM enumerated value More...
 
static const char * graphicTypeToReadableName (const E_GraphicType graphicType)
 convert graphic type to readable name. More...
 
static const char * graphicType3DToEnumeratedValue (const E_GraphicType3D graphicType)
 convert graphic type (3D) to DICOM enumerated value More...
 
static const char * graphicType3DToReadableName (const E_GraphicType3D graphicType)
 convert graphic type (3D) to readable name. More...
 
static const char * temporalRangeTypeToEnumeratedValue (const E_TemporalRangeType temporalRangeType)
 convert temporal range type to DICOM enumerated value More...
 
static const char * temporalRangeTypeToReadableName (const E_TemporalRangeType temporalRangeType)
 convert temporal range type to readable name. More...
 
static const char * continuityOfContentToEnumeratedValue (const E_ContinuityOfContent continuityOfContent)
 convert continuity of content flag to DICOM enumerated value More...
 
static const char * preliminaryFlagToEnumeratedValue (const E_PreliminaryFlag preliminaryFlag)
 convert preliminary flag to DICOM enumerated value More...
 
static const char * completionFlagToEnumeratedValue (const E_CompletionFlag completionFlag)
 convert completion flag to DICOM enumerated value More...
 
static const char * verificationFlagToEnumeratedValue (const E_VerificationFlag verificationFlag)
 convert verification flag to DICOM enumerated value More...
 
static const char * characterSetToDefinedTerm (const E_CharacterSet characterSet)
 convert character set to DICOM defined term More...
 
static const char * characterSetToHTMLName (const E_CharacterSet characterSet)
 convert character set to HTML name. More...
 
static const char * characterSetToXMLName (const E_CharacterSet characterSet)
 convert character set to XML name. More...
 
static E_DocumentType sopClassUIDToDocumentType (const OFString &sopClassUID)
 convert SOP class UID to SR document type More...
 
static E_RelationshipType definedTermToRelationshipType (const OFString &definedTerm)
 convert DICOM defined term to relationship type More...
 
static E_ValueType definedTermToValueType (const OFString &definedTerm)
 convert DICOM defined term to value type More...
 
static E_PresentationStateType sopClassUIDToPresentationStateType (const OFString &sopClassUID)
 convert SOP class UID to presentation state type More...
 
static E_ValueType xmlTagNameToValueType (const OFString &xmlTagName)
 convert XML tag name to value type More...
 
static E_GraphicType enumeratedValueToGraphicType (const OFString &enumeratedValue)
 convert DICOM enumerated value to graphic type More...
 
static E_GraphicType3D enumeratedValueToGraphicType3D (const OFString &enumeratedValue)
 convert DICOM enumerated value to graphic type (3D) More...
 
static E_TemporalRangeType enumeratedValueToTemporalRangeType (const OFString &enumeratedValue)
 convert DICOM enumerated value to temporal range type More...
 
static E_ContinuityOfContent enumeratedValueToContinuityOfContent (const OFString &enumeratedValue)
 convert DICOM enumerated value to continuity of content flag More...
 
static E_PreliminaryFlag enumeratedValueToPreliminaryFlag (const OFString &enumeratedValue)
 convert DICOM enumerated value to preliminary flag More...
 
static E_CompletionFlag enumeratedValueToCompletionFlag (const OFString &enumeratedValue)
 convert DICOM enumerated value to completion flag More...
 
static E_VerificationFlag enumeratedValueToVerificationFlag (const OFString &enumeratedValue)
 convert DICOM enumerated value to verification flag More...
 
static E_CharacterSet definedTermToCharacterSet (const OFString &definedTerm)
 convert DICOM defined term to character set More...
 
static OFBool isDocumentTypeSupported (const E_DocumentType documentType)
 check whether specified SR document type is supported by this library More...
 
static const OFStringcurrentDate (OFString &dateString)
 get current date in DICOM 'DA' format. More...
 
static const OFStringcurrentTime (OFString &timeString)
 get current time in DICOM 'TM' format. More...
 
static const OFStringcurrentDateTime (OFString &dateTimeString)
 get current date and time in DICOM 'DT' format. More...
 
static const OFStringdicomToReadableDate (const OFString &dicomDate, OFString &readableDate)
 convert DICOM date string to readable format. More...
 
static const OFStringdicomToReadableTime (const OFString &dicomTime, OFString &readableTime)
 convert DICOM time string to readable format. More...
 
static const OFStringdicomToReadableDateTime (const OFString &dicomDateTime, OFString &readableDateTime)
 convert DICOM date time string to readable format. More...
 
static const OFStringdicomToReadablePersonName (const OFString &dicomPersonName, OFString &readablePersonName)
 convert DICOM person name to readable format. More...
 
static const OFStringdicomToXMLPersonName (const OFString &dicomPersonName, OFString &xmlPersonName, const OFBool writeEmptyValue=OFFalse)
 convert DICOM person name to XML format. More...
 
static const char * numberToString (const size_t number, char *stringValue)
 convert unsigned integer number to character string More...
 
static size_t stringToNumber (const char *stringValue)
 convert string to unsigned integer number More...
 
static const OFStringconvertToPrintString (const OFString &sourceString, OFString &printString)
 convert character string to print string. More...
 
static const OFStringconvertToHTMLString (const OFString &sourceString, OFString &markupString, const size_t flags=0, const OFBool newlineAllowed=OFFalse)
 convert character string to HTML mnenonic string. More...
 
static const OFStringconvertToXMLString (const OFString &sourceString, OFString &markupString)
 convert character string to XML mnenonic string. More...
 
static OFBool checkForValidReference (const OFString &stringValue)
 check string for valid reference (as used for by-reference relationships). More...
 
static DSRIODConstraintCheckercreateIODConstraintChecker (const E_DocumentType documentType)
 create specified SR IOD content relationship constraint checker object. More...
 
static DSRDocumentTreeNodecreateDocumentTreeNode (const E_RelationshipType relationshipType, const E_ValueType valueType)
 create specified document tree node. More...
 
static OFCondition addElementToDataset (OFCondition &result, DcmItem &dataset, DcmElement *delem, const OFString &vm, const OFString &type, const char *moduleName=NULL)
 add given element to the dataset. More...
 
static void removeAttributeFromSequence (DcmSequenceOfItems &sequence, const DcmTagKey &tagKey)
 remove given attribute from the sequence. More...
 
static OFCondition getElementFromDataset (DcmItem &dataset, DcmElement &delem)
 get element from dataset More...
 
static const char * getStringValueFromElement (const DcmElement &delem)
 get string value from element More...
 
static const OFStringgetStringValueFromElement (const DcmElement &delem, OFString &stringValue)
 get string value from element. More...
 
static OFCondition getStringValueFromElement (const DcmElement &delem, OFString &stringValue, const signed long pos)
 get string value from element More...
 
static const OFStringgetPrintStringFromElement (const DcmElement &delem, OFString &stringValue)
 get string value from element and convert to "print" format. More...
 
static const OFStringgetMarkupStringFromElement (const DcmElement &delem, OFString &stringValue, const OFBool convertNonASCII=OFFalse)
 get string value from element and convert to HTML/XML. More...
 
static OFCondition getStringValueFromDataset (DcmItem &dataset, const DcmTagKey &tagKey, OFString &stringValue, const signed long pos=0)
 get string value from dataset More...
 
static OFCondition putStringValueToDataset (DcmItem &dataset, const DcmTag &tag, const OFString &stringValue, const OFBool allowEmpty=OFTrue)
 put string value to dataset More...
 
static OFBool checkElementValue (DcmElement *delem, const DcmTagKey &tagKey, const OFString &vm, const OFString &type, const OFCondition &searchCond=EC_Normal, const char *moduleName=NULL, const OFBool acceptViolation=OFFalse)
 check element value for correct value multiplicity and type. More...
 
static OFBool checkElementValue (DcmElement &delem, const OFString &vm, const OFString &type, const OFCondition &searchCond=EC_Normal, const char *moduleName=NULL, const OFBool acceptViolation=OFFalse)
 check element value for correct value multiplicity and type. More...
 
static OFCondition getAndCheckElementFromDataset (DcmItem &dataset, DcmElement &delem, const OFString &vm, const OFString &type, const char *moduleName=NULL, const OFBool acceptViolation=OFFalse)
 get element from dataset and check it for correct value multiplicity and type. More...
 
static OFCondition getAndCheckStringValueFromDataset (DcmItem &dataset, const DcmTagKey &tagKey, OFString &stringValue, const OFString &vm, const OFString &type, const char *moduleName=NULL, const OFBool acceptViolation=OFFalse)
 get string value from dataset and check it for correct value multiplicity and type. More...
 
static void printInvalidContentItemMessage (const char *action, const DSRDocumentTreeNode *node, const char *location=NULL)
 print the warning message that the current content item is invalid/incomplete. More...
 
static void printContentItemErrorMessage (const char *action, const OFCondition &result, const DSRDocumentTreeNode *node, const char *location=NULL)
 print an error message for the current content item. More...
 
static void printUnknownValueWarningMessage (const char *valueName, const char *readValue=NULL, const char *action="Reading")
 print a warning message that an unknown/unsupported value has been determined More...
 
static OFBool writeStringValueToXML (STD_NAMESPACE ostream &stream, const OFString &stringValue, const OFString &tagName, const OFBool writeEmptyValue=OFFalse)
 write string value to XML output stream. More...
 
static OFBool writeStringFromElementToXML (STD_NAMESPACE ostream &stream, DcmElement &delem, const OFString &tagName, const OFBool writeEmptyValue=OFFalse)
 write string value from DICOM element to XML output stream. More...
 
static size_t createHTMLAnnexEntry (STD_NAMESPACE ostream &docStream, STD_NAMESPACE ostream &annexStream, const OFString &referenceText, size_t &annexNumber, const size_t flags=0)
 create an HTML annex entry with hyperlinks. More...
 
static size_t createHTMLFootnote (STD_NAMESPACE ostream &docStream, STD_NAMESPACE ostream &footnoteStream, size_t &footnoteNumber, const size_t nodeID, const size_t flags=0)
 create an HTML footnote with hyperlinks More...
 
static OFCondition appendStream (STD_NAMESPACE ostream &mainStream, OFOStringStream &tempStream, const char *heading=NULL)
 append one output stream to another. More...
 
- Static Protected Attributes inherited from DSRTypes
static const size_t RF_readDigitalSignatures
 read digital signatures from dataset
 
static const size_t RF_acceptUnknownRelationshipType
 accept unknown/missing relationship type
 
static const size_t RF_acceptInvalidContentItemValue
 accept invalid content item value (e.g. violation of VR or VM definition)
 
static const size_t RF_ignoreRelationshipConstraints
 ignore relationship constraints for this document class
 
static const size_t RF_ignoreContentItemErrors
 do not abort on content item errors (e.g. missing value type specific attributes)
 
static const size_t RF_skipInvalidContentItems
 do not abort when detecting an invalid content item, skip invalid sub-tree instead
 
static const size_t RF_showCurrentlyProcessedItem
 show the currently processed content item (e.g. "1.2.3")
 
static const size_t HF_neverExpandChildrenInline
 external: never expand child nodes inline
 
static const size_t HF_alwaysExpandChildrenInline
 external: always expand child nodes inline
 
static const size_t HF_renderInlineCodes
 external: render codes even if they appear inline
 
static const size_t HF_useCodeDetailsTooltip
 external: render code details as a tooltip (not with HTML 3.2)
 
static const size_t HF_renderConceptNameCodes
 external: render concept name codes (default: code meaning only)
 
static const size_t HF_renderNumericUnitCodes
 external: render the code of the numeric measurement unit
 
static const size_t HF_useCodeMeaningAsUnit
 external: use code meaning for the numeric measurement unit (default: code value)
 
static const size_t HF_renderPatientTitle
 external: use patient information as document title (default: document type)
 
static const size_t HF_renderNoDocumentHeader
 external: render no general document information (header)
 
static const size_t HF_renderDcmtkFootnote
 external: render dcmtk/dcmsr comment at the end of the document
 
static const size_t HF_renderFullData
 external: render the full data of all content items
 
static const size_t HF_renderSectionTitlesInline
 external: render section titles inline (default: separate paragraph)
 
static const size_t HF_copyStyleSheetContent
 external: copy Cascading Style Sheet (CSS) content to HTML file
 
static const size_t HF_HTML32Compatibility
 external: output compatible to HTML version 3.2 (default: 4.01)
 
static const size_t HF_XHTML11Compatibility
 external: output compatible to XHTML version 1.1 (default: HTML 4.01)
 
static const size_t HF_addDocumentTypeReference
 external: add explicit reference to HTML document type (DTD)
 
static const size_t HF_omitGeneratorMetaElement
 external: omit generator meta element referring to the DCMTK
 
static const size_t HF_renderItemsSeparately
 internal: render items separately (for container with SEPARATE flag)
 
static const size_t HF_renderItemInline
 internal: expand items inline when they are short and have no child nodes
 
static const size_t HF_currentlyInsideAnnex
 internal: content item is rendered fully inside the annex
 
static const size_t HF_createFootnoteReferences
 internal: create footnote references
 
static const size_t HF_convertNonASCIICharacters
 internal: convert non-ASCII characters (> #127) to &#nnn;
 
static const size_t HF_renderAllCodes
 shortcut: render all codes
 
static const size_t HF_internalUseOnly
 shortcut: filter all flags that are only used internally
 
static const size_t XF_writeEmptyTags
 write: write all tags even if their value is empty
 
static const size_t XF_writeTemplateIdentification
 write: write template identification information (TID and mapping resource)
 
static const size_t XF_alwaysWriteItemIdentifier
 write: always write item identifier "id", not only when item is referenced
 
static const size_t XF_codeComponentsAsAttribute
 write: encode code value, coding scheme designator and coding scheme version as attribute instead of element text
 
static const size_t XF_relationshipTypeAsAttribute
 write: encode relationship type as attribute instead of element text
 
static const size_t XF_valueTypeAsAttribute
 write: encode value type as attribute instead of element text
 
static const size_t XF_templateIdentifierAsAttribute
 write: encode template identifier as attribute instead of element text
 
static const size_t XF_useDcmsrNamespace
 write: add DCMSR namespace declaration to the XML output
 
static const size_t XF_addSchemaReference
 write: add Schema reference to XML document
 
static const size_t XF_validateSchema
 read: validate content of XML document against Schema
 
static const size_t XF_templateElementEnclosesItems
 read/write: template identification element encloses content items
 
static const size_t XF_encodeEverythingAsAttribute
 shortcut: combines all XF_xxxAsAttribute write flags (see above)
 
static const size_t PF_printItemPosition
 print item position ("1.2.3") instead of line indentation
 
static const size_t PF_shortenLongItemValues
 shorten long item value (e.g. long texts)
 
static const size_t PF_printSOPInstanceUID
 print SOP instance UID of referenced objects
 
static const size_t PF_printConceptNameCodes
 print coding scheme designator/version and code value of concept names
 
static const size_t PF_printNoDocumentHeader
 print no general document information (header)
 
static const size_t PF_printTemplateIdentification
 print template identification (TID and mapping resource)
 
static const size_t PF_useANSIEscapeCodes
 use ANSI escape codes for output
 
static const size_t PF_printLongSOPClassName
 print long SOP class name of referenced objects (default: short name for images)
 
static const size_t PF_printSOPClassUID
 print SOP class UID of referenced objects (instead of the name)
 
static const size_t PF_printInvalidCodes
 print code triple for invalid codes (instead of the text "invalid code")
 
static const size_t PF_printNodeID
 print node ID at the beginning of each line (might be useful for debugging purposes)
 
static const size_t PF_indicateEnhancedEncodingMode
 indicate with a "*" that the "enhanced encoding mode" is used for codes
 
static const size_t PF_printAnnotation
 print annotation of a content item (optional, e.g. user-defined information)
 
static const size_t PF_printAllCodes
 shortcut: print all codes (combines all PF_printXxxCodes flags, see above)
 
static const size_t CM_updatePositionString
 update the position string using the node ID
 
static const size_t CM_updateNodeID
 update the node ID using the position string
 
static const size_t CM_resetReferenceTargetFlag
 reset the reference target flag for all nodes
 

Detailed Description

Class managing a SR document subtree.

A subtree represents an extract of an SR document tree. Compared to the "SR Document Content Tree" that is defined in the DICOM standard, there are almost no restrictions regarding the value and relationship types. It is also possible to have multiple nodes on the top-level, i.e. no dedicated root, or to use "unknown" relationship types.

Constructor & Destructor Documentation

DSRDocumentSubTree::DSRDocumentSubTree ( const DSRDocumentSubTree tree)

copy constructor.

Please note that the internal cursor is not copied but reset, i.e. set to the root node. Also the IOD constraint checker is not copied by this class but recreated by the derived class DSRDocumentTree (based on the corresponding document type).

Parameters
treesubtree to be copied
DSRDocumentSubTree::DSRDocumentSubTree ( DSRDocumentTreeNode rootNode)
protected

special constructor that receives a pointer to the root node.

Please note that the 'rootNode' and the associated tree is not copied!

Parameters
rootNodepointer to the root node of the "new" tree
DSRDocumentSubTree::DSRDocumentSubTree ( const DSRDocumentTreeNodeCursor startCursor,
size_t  stopAfterNodeID 
)
protected

special copy constructor that clones a particular subtree only

Parameters
startCursorfirst node of the subtree to be copied
stopAfterNodeIDID of the node after which the cloning should stop

Member Function Documentation

virtual size_t DSRDocumentSubTree::addByReferenceRelationship ( const E_RelationshipType  relationshipType,
const size_t  referencedNodeID 
)
virtual

add specified by-reference relationship to the current content item.

If possible, this method creates a new pseudo-node (relationship) and adds it to the current one. The method canAddByReferenceRelationship() is called internally to check parameters first. The internal cursor is automatically re-set to the current node.

Parameters
relationshipTyperelationship type between current and referenced node
referencedNodeIDID of the referenced node (target content item)
Returns
ID of new pseudo-node if successful, 0 otherwise
virtual OFCondition DSRDocumentSubTree::addChildContentItem ( const E_RelationshipType  relationshipType,
const E_ValueType  valueType,
const DSRCodedEntryValue conceptName 
)
virtual

add specified content item below the current one.

If possible, this method creates a new node as specified and adds it below the current one, i.e. as a child. Internally, the first variant of the addContentItem() method is called with the third parameter being DSRTypes::AM_belowCurrent. If successful, the given concept name is set for the new node, and the cursor is updated.

Note
This is a convenience function that avoids calling several other functions.
Parameters
relationshipTyperelationship type of node to be added with regard to the current one
valueTypevalue type of node to be added
conceptNameconcept name of the node to be added
Returns
status, EC_Normal if successful, an error code otherwise
virtual size_t DSRDocumentSubTree::addContentItem ( const E_RelationshipType  relationshipType,
const E_ValueType  valueType,
const E_AddMode  addMode = AM_afterCurrent 
)
virtual

add specified content item to the current one.

If possible, this method creates a new node as specified and adds it to the current one. The method canAddContentItem() is called internally to check parameters first. If the node could be added successfully, the cursor is set to it automatically.

Parameters
relationshipTyperelationship type of node to be added with regard to the current one
valueTypevalue type of node to be added
addModeflag specifying at which position to add the new node (e.g. after or below the current node)
Returns
ID of new node if successful, 0 otherwise
virtual OFCondition DSRDocumentSubTree::addContentItem ( DSRDocumentTreeNode node,
const E_AddMode  addMode = AM_afterCurrent,
const OFBool  deleteIfFail = OFFalse 
)
virtual

add specified content item to the current one.

If possible, this method adds a given new node to the current one. The method canAddContentItem() is called internally to check parameters first. If the node could be added successfully, the cursor is set to it automatically. Please note that no copy of the given node is created. Therefore, the node has to be created with new() or with DSRTypes::createDocumentTreeNode() - do not use a reference to a local variable and do not delete it a second time.

Parameters
nodepointer to the new node to be added (should not be empty). Reference remains valid after successful insertion.
addModeflag specifying at which position to add the new node (e.g. after or below the current node)
deleteIfFailflag specifying whether to delete the given 'node' if adding fails. By default, the item is not deleted, i.e. in case of error it has to be deleted by the caller.
Returns
status, EC_Normal if successful, an error code otherwise
virtual OFCondition DSRDocumentSubTree::addContentItem ( const E_RelationshipType  relationshipType,
const E_ValueType  valueType,
const DSRCodedEntryValue conceptName 
)
virtual

add specified content item after the current one.

If possible, this method creates a new node as specified and adds it after the current one, i.e. on the same level. Internally, the first variant of the addContentItem() method is called with the third parameter being DSRTypes::AM_afterCurrent. If successful, the given concept name is set for the new node, and the cursor is updated.

Note
This is a convenience function that avoids calling several other functions.
Parameters
relationshipTyperelationship type of node to be added with regard to the current one
valueTypevalue type of node to be added
conceptNameconcept name of the node to be added
Returns
status, EC_Normal if successful, an error code otherwise
virtual size_t DSRDocumentSubTree::addNode ( DSRDocumentTreeNode node,
const E_AddMode  addMode = AM_afterCurrent 
)
protectedvirtual

add new node to the current one.

Please note that no copy of the given node is created. Therefore, the node has to be created with new() - do not use a reference to a local variable. If the node could be added successfully, the cursor is set to it automatically.

Parameters
nodepointer to the new node to be added
addModeflag specifying at which position to add the new node (e.g. after or below the current node)
Returns
ID of the new added node if successful, 0 otherwise

Reimplemented from DSRTree< DSRDocumentTreeNode >.

virtual OFBool DSRDocumentSubTree::canAddByReferenceRelationship ( const E_RelationshipType  relationshipType,
const E_ValueType  targetValueType 
)
virtual

check whether specified by-reference relationship can be added to the current content item.

Always returns true if no constraint checker is available but 'relationshipType' and 'targetValueType' have valid values.

Parameters
relationshipTypetype of relationship between current and target node
targetValueTypevalue type of the referenced node (target content item)
Returns
OFTrue if specified by-reference relationship can be added, OFFalse otherwise
virtual OFBool DSRDocumentSubTree::canAddContentItem ( const E_RelationshipType  relationshipType,
const E_ValueType  valueType,
const E_AddMode  addMode = AM_afterCurrent 
)
virtual

check whether specified content item can be added to the current one.

This method can be used to decide which type of content items can be added prior to really doing so. Always returns true if no constraint checker is available but 'relationshipType' and 'valueType' have valid values.

Parameters
relationshipTyperelationship type of node to be checked with regard to the current one
valueTypevalue type of node to be checked
addModeflag specifying at which position the new node would be added (e.g. after or below the current node)
Returns
OFTrue if specified node can be added, OFFalse otherwise

Reimplemented in DSRDocumentTree.

virtual OFBool DSRDocumentSubTree::canInsertSubTree ( DSRDocumentSubTree tree,
const E_AddMode  addMode = AM_belowCurrent,
const E_RelationshipType  defaultRelType = RT_unknown 
)
virtual

check whether specified subtree can be inserted at the current position, i.e. added to the current content item.

Internally, the method canAddContentItem() is used for all top-level nodes of the document subtree. In addition, if a constraint checker is available, the remaining nodes of the given subtree are also checked for their compliance with the relationship content constraints of the underlying SR IOD.

Parameters
treepointer to new subtree to be inserted (should not be empty)
addModeflag specifying at which position the new subtree would be added (e.g. after or below the current node)
defaultRelTypedefault relationship type between the top-level nodes of the given subtree and the current node. This relationship type is used if the one of a top-level node is "unknown".
Returns
OFTrue if specified subtree can be inserted, OFFalse otherwise

Reimplemented in DSRDocumentTree.

virtual OFBool DSRDocumentSubTree::canUseTemplateIdentification ( ) const
virtual

check whether template identification is possible at all.

According to the DICOM standard, it can be used if "the template consists of a single CONTAINER with nested content, and it is the outermost invocation of a set of nested templates that start with the same CONTAINER." With other words, the tree should have a single root node with value type "CONTAINER".

Returns
OFTrue if template identification is possible, OFFalse otherwise
virtual OFCondition DSRDocumentSubTree::checkByReferenceRelationships ( const size_t  mode = 0,
const size_t  flags = 0 
)
protectedvirtual

check the by-reference relationships (if any) for validity.

This function checks whether all by-reference relationships possibly contained in the document tree are valid according to the following restrictions: source and target node are not identical and the target node is not an ancestor of the source node (requirement from the DICOM standard to prevent loops -> directed acyclic graph, though this is not 100% true - see "reportlp.dcm" example). In addition, the position strings (used to encode by-reference relationships according to the DICOM standard) OR the node IDs (used internally to uniquely identify nodes) can be updated. Please note that the checking modes DSRTypes::CM_updatePositionString and DSRTypes::CM_updateNodeID are mutually exclusive.

Parameters
modemode used to customize the checking process (see DSRTypes::CM_xxx)
flagsflag used to customize the reading process (see DSRTypes::RF_xxx)
Returns
status, EC_Normal if successful, an error code otherwise
virtual OFCondition DSRDocumentSubTree::checkSubTreeConstraints ( DSRDocumentSubTree tree,
DSRIODConstraintChecker checker 
)
protectedvirtual

check whether the given subtree complies with the constraints of the given checker

Parameters
treepointer to subtree that should be checked
checkerpointer to relationship content constraints checker to be used. If NULL, no checks are performed by this method.
Returns
status, EC_Normal if successful, an error code otherwise
virtual DSRDocumentSubTree* DSRDocumentSubTree::clone ( ) const
virtual

clone this subtree.

Internally, the copy constructor is used, so the corresponding comments apply.

Returns
copy of this subtree

Reimplemented in DSRRootTemplate, DSRDocumentTree, and DSRSubTemplate.

virtual DSRDocumentTreeNode* DSRDocumentSubTree::cloneCurrentTreeNode ( ) const
virtual

clone the current tree node.

Internally, the copy constructor of the respective tree node class is used, so the corresponding comments apply. Please note that the returned tree node has to be deleted by the caller if it is not added to the document tree using addContentItem().

Returns
pointer to a copy of the current tree node, NULL in case of error
virtual DSRDocumentSubTree* DSRDocumentSubTree::cloneSubTree ( const size_t  stopAfterNodeID = 0) const
virtual

clone a subtree i.e. a fragment of this tree.

The cloning starts with the current node and ends with the given node. Please note that the returned subtree has to be deleted by the caller if it is not inserted into the document tree using insertSubTree().

Parameters
stopAfterNodeIDID of the node after which the cloning should stop. By default (0), the process ends after cloning the current node with all of its child nodes (if any).
Returns
pointer to a copy of the specified subtree, NULL in case of error

Reimplemented from DSRTree< DSRDocumentTreeNode >.

virtual DSRDocumentTreeNode* DSRDocumentSubTree::extractNode ( )
protectedvirtual

extract current node from tree.

Please note that not only the specified node but also all of its child nodes are extracted from the tree. The cursor is set automatically to a new valid position.

Returns
pointer to extracted node, NULL in case of error (or the tree was empty)

Reimplemented from DSRTree< DSRDocumentTreeNode >.

virtual DSRDocumentSubTree* DSRDocumentSubTree::extractSubTree ( )
virtual

extract a subtree i.e. a fragment from this tree.

The subtree is specified by the current node, which becomes the root of the subtree. In contrast to cloneSubTree(), this method also makes sure that the by-reference relationships are preserved (as long as both source and target node are contained in the same tree). Please note that the returned subtree has to be deleted by the caller if it is not inserted into the document tree using insertSubTree().

Returns
pointer to the extracted subtree, NULL in case of error

Reimplemented from DSRTree< DSRDocumentTreeNode >.

virtual DSRDocumentTreeNode* DSRDocumentSubTree::getAndRemoveRootNode ( )
protectedvirtual

get pointer to root node and "forget" the internal reference to this node.

In other words: after calling this method, the stored tree will be empty. This also means that the caller is responsible for deleting the allocated memory.

Returns
pointer to root node, might be NULL (empty tree)

Reimplemented from DSRTree< DSRDocumentTreeNode >.

virtual DSRContentItem& DSRDocumentSubTree::getCurrentContentItem ( )
virtual

get reference to current content item.

This mechanism allows to access all content items without using pointers.

Returns
reference to current content item (might be invalid)
virtual OFCondition DSRDocumentSubTree::getTemplateIdentification ( OFString templateIdentifier,
OFString mappingResource 
) const
virtual

get template identifier and mapping resource from the root node of this tree.

See DSRDocumentTreeNode::getTemplateIdentification() for details on template identification. Please note that the template identification is only retrieved if there is a single node at the root of the tree and its value type is CONTAINER.

Parameters
templateIdentifieridentifier of the template (might be empty)
mappingResourcemapping resource that defines the template (might be empty)
Returns
status, EC_Normal if successful, an error code otherwise
virtual OFCondition DSRDocumentSubTree::getTemplateIdentification ( OFString templateIdentifier,
OFString mappingResource,
OFString mappingResourceUID 
) const
virtual

get template identifier, mapping resource and optional mapping resource UID from the root node of this tree.

See DSRDocumentTreeNode::getTemplateIdentification() for details on template identification. Please note that the template identification is only retrieved if there is a single node at the root of the tree and its value type is CONTAINER.

Parameters
templateIdentifieridentifier of the template (might be empty)
mappingResourcemapping resource that defines the template (might be empty)
mappingResourceUIDuniquely identifies the mapping resource (might be empty)
Returns
status, EC_Normal if successful, an error code otherwise
virtual size_t DSRDocumentSubTree::gotoAnnotatedNode ( const OFString annotationText,
const OFBool  startFromRoot = OFTrue 
)
virtual

set internal cursor to an annotated node.

If more than one node exists with the given annotation text, the first one will be selected. Use gotoNextAnnotatedNode() in order to go to the next matching node. In contrast to gotoNamedNode(), a "deep search" is always performed.

Parameters
annotationTextannotation text of the node to be searched for
startFromRootflag indicating whether to start from the root node or the current one
Returns
ID of the new current node if successful, 0 otherwise
virtual size_t DSRDocumentSubTree::gotoNamedNode ( const DSRCodedEntryValue conceptName,
const OFBool  startFromRoot = OFTrue,
const OFBool  searchIntoSub = OFTrue 
)
virtual

set internal cursor to a named node.

If more than one node exists with the given concept name, the first one will be selected. Use gotoNextNamedNode() in order to go to the next matching node.

Parameters
conceptNameconcept name of the node to be searched for
startFromRootflag indicating whether to start from the root node or the current one
searchIntoSubflag indicating whether to search into sub-trees ("deep search") or on the current level only
Returns
ID of the new current node if successful, 0 otherwise
virtual size_t DSRDocumentSubTree::gotoNextAnnotatedNode ( const OFString annotationText)
virtual

set internal cursor to the next annotated node.

Starts from "next" node, i.e. either the first children of the current node or the first sibling following the current node.

Parameters
annotationTextannotation text of the node to be searched for
Returns
ID of the new current node if successful, 0 otherwise
virtual size_t DSRDocumentSubTree::gotoNextNamedNode ( const DSRCodedEntryValue conceptName,
const OFBool  searchIntoSub = OFTrue 
)
virtual

set internal cursor to the next named node.

Starts from "next" node, i.e. either the first children of the current node or the first sibling following the current node.

Parameters
conceptNameconcept name of the node to be searched for
searchIntoSubflag indicating whether to search into sub-trees ("deep search") or on the current level only
Returns
ID of the new current node if successful, 0 otherwise
virtual OFBool DSRDocumentSubTree::hasTemplateIdentification ( ) const
virtual

check whether template identification is set

Returns
OFTrue if template identification is set, OFFalse otherwise
virtual OFCondition DSRDocumentSubTree::insertSubTree ( DSRDocumentSubTree tree,
const E_AddMode  addMode = AM_belowCurrent,
const E_RelationshipType  defaultRelType = RT_unknown,
const OFBool  deleteIfFail = OFFalse 
)
virtual

insert specified subtree to this tree, i.e. add it to the current content item.

If possible, this method adds a given new subtree to the current content item. The method canInsertSubTree() is called internally to check the parameters first. Please note that no copy of the given subtree is created. Therefore, the subtree has to be created with new() or with cloneSubTree() - do not use a reference to a local variable and do not delete it a second time.

Parameters
treepointer to new subtree to be inserted (should not be empty). Reference becomes invalid after successful insertion!
addModeflag specifying at which position to add the new subtree (e.g. after or below the current node)
defaultRelTypedefault relationship type between the top-level nodes of the given subtree and the current node. This relationship type is used if the one of a top-level node is "unknown".
deleteIfFailflag specifying whether to delete the given 'tree' if adding fails. By default, the tree is not deleted, i.e. in case of error it has to be deleted by the caller.
Returns
status, EC_Normal if successful, an error code otherwise
virtual OFBool DSRDocumentSubTree::isValid ( ) const
virtual

check whether the current internal state is valid.

A subtree is valid if it is not empty.

Returns
OFTrue if valid, OFFalse otherwise

Reimplemented from DSRTreeNodeCursor< DSRDocumentTreeNode >.

Reimplemented in DSRRootTemplate, DSRDocumentTree, and DSRSubTemplate.

virtual OFBool DSRDocumentSubTree::isValidDocumentTree ( const E_RelationshipType  defaultRelType = RT_unknown) const
virtual

check whether this subtree is a valid document tree.

In order to be a valid document tree, there should be a single root node only, with the value type "CONTAINER", and the internal relationship type of this node should be DSRTypes::RT_isRoot.

Parameters
defaultRelTypedefault relationship type that is used if the one of the top-level node (root node) is "unknown"
Returns
OFTrue if subtree is a valid document tree, OFFalse otherwise
DSRDocumentSubTree& DSRDocumentSubTree::operator= ( DSRDocumentSubTree  tree)

assignment operator.

Please note that internally the copy constructor is used, so the same comments apply.

Parameters
treesubtree to be copied
Returns
reference to this subtree after copying
virtual OFCondition DSRDocumentSubTree::print ( STD_NAMESPACE ostream &  stream,
const size_t  flags = 0 
)
virtual

print current SR document tree to specified output stream

Parameters
streamoutput stream
flagsflag used to customize the output (see DSRTypes::PF_xxx)
Returns
status, EC_Normal if successful, an error code otherwise
virtual size_t DSRDocumentSubTree::removeCurrentContentItem ( )
virtual

remove current content item from tree.

Please note that not only the specified node but also all of its child nodes are removed from the tree and then deleted. The internal cursor is set automatically to a new valid position.

Returns
ID of the node which became the current one after deletion, 0 if an error occurred or the tree is now empty.
virtual size_t DSRDocumentSubTree::removeNode ( )
protectedvirtual

remove current node from tree.

Please note that not only the specified node but also all of his child nodes are removed from the tree and deleted afterwards. The cursor is set automatically to a new valid position.

Returns
ID of the node which became the current one after deletion, 0 if an error occurred or the tree is now empty.

Reimplemented from DSRTree< DSRDocumentTreeNode >.

virtual OFCondition DSRDocumentSubTree::removeSubTree ( const size_t  searchID = 0)
virtual

remove a subtree from this tree.

The subtree to be removed (and deleted) is either specified by the current node or by the node with the given ID. Afterwards, the internal cursor is set automatically to a new valid position. It would be an error to remove a subtree from an empty tree.

Parameters
searchIDID of the root node specifying the subtree to be removed. By default (0), the current node is used.
Returns
status, EC_Normal if successful, an error code otherwise
virtual void DSRDocumentSubTree::resetReferenceTargetFlag ( )
protectedvirtual

reset flag for all content items whether they are target of a by-reference relationship.

This function calls 'setReferenceTarget(OFFalse)' for all content items.

virtual OFCondition DSRDocumentSubTree::setTemplateIdentification ( const OFString templateIdentifier,
const OFString mappingResource,
const OFString mappingResourceUID = "",
const OFBool  check = OFTrue 
)
virtual

set template identifier and mapping resource to the root node of this tree.

The identification is valid if the first two values are either present (non-empty) or all three values are absent (empty). See DSRDocumentTreeNode::getTemplateIdentification() for details. Please note that the template identification is only set if there is a single node at the root of the tree and its value type is CONTAINER.

Parameters
templateIdentifieridentifier of the template to be set
mappingResourcemapping resource that defines the template
mappingResourceUIDuniquely identifies the mapping resource (optional)
checkcheck 'templateIdentifier', 'mappingResource' and 'mappingResourceUID' for conformance with VR (CS,UI) and VM (1) if enabled
Returns
status, EC_Normal if successful, an error code otherwise
void DSRDocumentSubTree::swap ( DSRDocumentSubTree tree)
protected

fast, non-throwing swap function.

The time complexity of this function is constant.

Parameters
treesubtree to swap with
virtual void DSRDocumentSubTree::updateTreeForOutput ( )
protectedvirtual

update the tree for subsequent output, e.g. for being printed or added to an SR document.

By default, this virtual function does nothing but is called automatically by the affected output methods and should be overwritten in derived classes.

Reimplemented in DSRRootTemplate, and DSRSubTemplate.


The documentation for this class was generated from the following file:


Generated on Sun Jan 31 2016 for DCMTK Version 3.6.1 20150924 by Doxygen 1.8.9.1