OFFIS DCMTK  Version 3.6.0
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
DSRDocumentTree Class Reference

Class managing the SR document tree. More...

Inheritance diagram for DSRDocumentTree:
[legend]
Collaboration diagram for DSRDocumentTree:
[legend]

Public Member Functions

 DSRDocumentTree (const E_DocumentType documentType)
 constructor
 
virtual ~DSRDocumentTree ()
 destructor
 
virtual void clear ()
 clear internal member variables.
 
virtual OFBool isValid () const
 check whether the current internal state is valid.
 
OFCondition print (STD_NAMESPACE ostream &stream, const size_t flags=0)
 print current SR document tree to specified output stream
 
OFCondition read (DcmItem &dataset, const E_DocumentType documentType, const size_t flags=0)
 read SR document tree from DICOM dataset.
 
OFCondition write (DcmItem &dataset, DcmStack *markedItems=NULL)
 write current SR document tree to DICOM dataset
 
OFCondition readXML (const DSRXMLDocument &doc, DSRXMLCursor cursor, const size_t flags)
 read XML document tree
 
OFCondition writeXML (STD_NAMESPACE ostream &stream, const size_t flags)
 write current SR document tree in XML format
 
OFCondition renderHTML (STD_NAMESPACE ostream &docStream, STD_NAMESPACE ostream &annexStream, const size_t flags=0)
 render current SR document tree in HTML/XHTML format
 
E_DocumentType getDocumentType () const
 get document type return current document type (might be DT_invalid)
 
OFCondition changeDocumentType (const E_DocumentType documentType)
 change document type.
 
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.
 
OFBool canAddByReferenceRelationship (const E_RelationshipType relationshipType, const E_ValueType targetValueType)
 check whether specified by-reference relationship can be added to the current content item.
 
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.
 
size_t addByReferenceRelationship (const E_RelationshipType relationshipType, const size_t referencedNodeID)
 add specified by-reference relationship to the current content item.
 
size_t removeCurrentContentItem ()
 remove current content item from tree.
 
DSRContentItemgetCurrentContentItem ()
 get reference to current content item.
 
size_t gotoNamedNode (const DSRCodedEntryValue &conceptName, const OFBool startFromRoot=OFTrue, const OFBool searchIntoSub=OFTrue)
 set internal cursor to the named node.
 
size_t gotoNextNamedNode (const DSRCodedEntryValue &conceptName, const OFBool searchIntoSub=OFTrue)
 set internal cursor to the next named node.
 
void unmarkAllContentItems ()
 unmark all content items in the document tree.
 
void removeSignatures ()
 remove digital signatures from the document tree.
 
- Public Member Functions inherited from DSRTree
 DSRTree ()
 default constructor
 
virtual ~DSRTree ()
 destructor
 
OFBool isEmpty () const
 check whether tree has any nodes
 
size_t gotoRoot ()
 set internal cursor to root node
 
size_t gotoNode (const size_t searchID, const OFBool startFromRoot=OFTrue)
 set internal cursor to specified node
 
size_t gotoNode (const OFString &reference, const OFBool startFromRoot=OFTrue)
 set internal cursor to specified node
 
- Public Member Functions inherited from DSRTreeNodeCursor
 DSRTreeNodeCursor ()
 default constructor
 
 DSRTreeNodeCursor (const DSRTreeNodeCursor &cursor)
 copy constructor
 
 DSRTreeNodeCursor (DSRTreeNode *node)
 constructor
 
virtual ~DSRTreeNodeCursor ()
 destructor
 
DSRTreeNodeCursoroperator= (const DSRTreeNodeCursor &cursor)
 assignment operator
 
DSRTreeNodeCursoroperator= (DSRTreeNode *node)
 assignment operator
 
DSRTreeNodegetNode () const
 get pointer to current node
 
const DSRTreeNodegetParentNode ()
 get pointer to parent node.
 
const DSRTreeNodegetNextNode () const
 get pointer to next node.
 
size_t gotoPrevious ()
 goto previous node on the same level
 
size_t gotoNext ()
 goto next node on the same level
 
size_t goUp ()
 goto parent node (one level up)
 
size_t goDown ()
 goto first child node (one level down)
 
size_t iterate (const OFBool searchIntoSub=OFTrue)
 iterate over all nodes.
 
size_t gotoNode (const size_t searchID)
 set cursor to specified node.
 
size_t gotoNode (const OFString &position, const char separator= '.')
 set cursor to specified node.
 
size_t getNodeID () const
 get current node ID.
 
size_t getLevel () const
 get current level.
 
const OFStringgetPosition (OFString &position, const char separator= '.') const
 get position string of the current node.
 

Protected Member Functions

virtual size_t addNode (DSRDocumentTreeNode *node, const E_AddMode addMode=AM_afterCurrent)
 add new node to the current one.
 
virtual size_t removeNode ()
 remove current node from tree.
 
OFCondition checkByReferenceRelationships (const size_t mode=0, const size_t flags=0)
 check the by-reference relationships (if any) for validity.
 
void resetReferenceTargetFlag ()
 reset flag for all content items whether they are target of a by-reference relationship.
 
- Protected Member Functions inherited from DSRTree
DSRTreeNodegetRoot () const
 get pointer to root node
 
- Protected Member Functions inherited from DSRTreeNodeCursor
void clearNodeCursorStack ()
 clear the internal node cursor stack
 
size_t setCursor (DSRTreeNode *node)
 set cursor to specified node.
 
- Protected Member Functions inherited from DSRTypes
virtual ~DSRTypes ()
 destructor.
 

Private Member Functions

virtual size_t addNode (DSRTreeNode *node, const E_AddMode addMode=AM_afterCurrent)
 add new node to the current one.
 
 DSRDocumentTree (const DSRDocumentTree &)
 
DSRDocumentTreeoperator= (const DSRDocumentTree &)
 

Private Attributes

E_DocumentType DocumentType
 document type of the associated SR document
 
DSRContentItem CurrentContentItem
 current content item. Introduced to avoid the external use of pointers.
 
DSRIODConstraintCheckerConstraintChecker
 check relationship content constraints of the associated IOD
 

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_last = DT_ImplantationPlanSRDocument
}
 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_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_AddMode { AM_afterCurrent, AM_beforeCurrent, AM_belowCurrent }
 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
 
static const char * documentTypeToModality (const E_DocumentType documentType)
 convert SR document type to modality
 
static const char * documentTypeToReadableName (const E_DocumentType documentType)
 convert SR document type to readable name.
 
static const char * documentTypeToDocumentTitle (const E_DocumentType documentType, OFString &documentTitle)
 convert SR document type to document title.
 
static OFBool requiresEnhancedEquipmentModule (const E_DocumentType documentType)
 check whether SR document type requires Enhanced General Equipment Module
 
static const char * relationshipTypeToDefinedTerm (const E_RelationshipType relationshipType)
 convert relationship type to DICOM defined term
 
static const char * relationshipTypeToReadableName (const E_RelationshipType relationshipType)
 convert relationship type to readable name.
 
static const char * valueTypeToDefinedTerm (const E_ValueType valueType)
 convert value type to DICOM defined term
 
static const char * valueTypeToXMLTagName (const E_ValueType valueType)
 convert value type to XML tag name
 
static const char * valueTypeToReadableName (const E_ValueType valueType)
 convert value type to readable name.
 
static const char * graphicTypeToEnumeratedValue (const E_GraphicType graphicType)
 convert graphic type to DICOM enumerated value
 
static const char * graphicTypeToReadableName (const E_GraphicType graphicType)
 convert graphic type to readable name.
 
static const char * graphicType3DToEnumeratedValue (const E_GraphicType3D graphicType)
 convert graphic type (3D) to DICOM enumerated value
 
static const char * graphicType3DToReadableName (const E_GraphicType3D graphicType)
 convert graphic type (3D) to readable name.
 
static const char * temporalRangeTypeToEnumeratedValue (const E_TemporalRangeType temporalRangeType)
 convert temporal range type to DICOM enumerated value
 
static const char * temporalRangeTypeToReadableName (const E_TemporalRangeType temporalRangeType)
 convert temporal range type to readable name.
 
static const char * continuityOfContentToEnumeratedValue (const E_ContinuityOfContent continuityOfContent)
 convert continuity of content flag to DICOM enumerated value
 
static const char * preliminaryFlagToEnumeratedValue (const E_PreliminaryFlag preliminaryFlag)
 convert preliminary flag to DICOM enumerated value
 
static const char * completionFlagToEnumeratedValue (const E_CompletionFlag completionFlag)
 convert completion flag to DICOM enumerated value
 
static const char * verificationFlagToEnumeratedValue (const E_VerificationFlag verificationFlag)
 convert verification flag to DICOM enumerated value
 
static const char * characterSetToDefinedTerm (const E_CharacterSet characterSet)
 convert character set to DICOM defined term
 
static const char * characterSetToHTMLName (const E_CharacterSet characterSet)
 convert character set to HTML name.
 
static const char * characterSetToXMLName (const E_CharacterSet characterSet)
 convert character set to XML name.
 
static E_DocumentType sopClassUIDToDocumentType (const OFString &sopClassUID)
 convert SOP class UID to SR document type
 
static E_RelationshipType definedTermToRelationshipType (const OFString &definedTerm)
 convert DICOM defined term to relationship type
 
static E_ValueType definedTermToValueType (const OFString &definedTerm)
 convert DICOM defined term to value type
 
static E_ValueType xmlTagNameToValueType (const OFString &xmlTagName)
 convert XML tag name to value type
 
static E_GraphicType enumeratedValueToGraphicType (const OFString &enumeratedValue)
 convert DICOM enumerated value to graphic type
 
static E_GraphicType3D enumeratedValueToGraphicType3D (const OFString &enumeratedValue)
 convert DICOM enumerated value to graphic type (3D)
 
static E_TemporalRangeType enumeratedValueToTemporalRangeType (const OFString &enumeratedValue)
 convert DICOM enumerated value to temporal range type
 
static E_ContinuityOfContent enumeratedValueToContinuityOfContent (const OFString &enumeratedValue)
 convert DICOM enumerated value to continuity of content flag
 
static E_PreliminaryFlag enumeratedValueToPreliminaryFlag (const OFString &enumeratedValue)
 convert DICOM enumerated value to preliminary flag
 
static E_CompletionFlag enumeratedValueToCompletionFlag (const OFString &enumeratedValue)
 convert DICOM enumerated value to completion flag
 
static E_VerificationFlag enumeratedValueToVerificationFlag (const OFString &enumeratedValue)
 convert DICOM enumerated value to verification flag
 
static E_CharacterSet definedTermToCharacterSet (const OFString &definedTerm)
 convert DICOM defined term to character set
 
static OFBool isDocumentTypeSupported (const E_DocumentType documentType)
 check whether specified SR document type is supported by this library.
 
static const OFStringcurrentDate (OFString &dateString)
 get current date in DICOM 'DA' format.
 
static const OFStringcurrentTime (OFString &timeString)
 get current time in DICOM 'TM' format.
 
static const OFStringcurrentDateTime (OFString &dateTimeString)
 get current date and time in DICOM 'DT' format.
 
static const OFStringdicomToReadableDate (const OFString &dicomDate, OFString &readableDate)
 convert DICOM date string to readable format.
 
static const OFStringdicomToReadableTime (const OFString &dicomTime, OFString &readableTime)
 convert DICOM time string to readable format.
 
static const OFStringdicomToReadableDateTime (const OFString &dicomDateTime, OFString &readableDateTime)
 convert DICOM date time string to readable format.
 
static const OFStringdicomToReadablePersonName (const OFString &dicomPersonName, OFString &readablePersonName)
 convert DICOM person name to readable format.
 
static const OFStringdicomToXMLPersonName (const OFString &dicomPersonName, OFString &xmlPersonName, const OFBool writeEmptyValue=OFFalse)
 convert DICOM person name to XML format.
 
static const char * numberToString (const size_t number, char *stringValue)
 convert unsigned integer number to character string
 
static size_t stringToNumber (const char *stringValue)
 convert string to unsigned integer number
 
static const OFStringconvertToPrintString (const OFString &sourceString, OFString &printString)
 convert character string to print string.
 
static const OFStringconvertToHTMLString (const OFString &sourceString, OFString &markupString, const size_t flags=0, const OFBool newlineAllowed=OFFalse)
 convert character string to HTML mnenonic string.
 
static const OFStringconvertToXMLString (const OFString &sourceString, OFString &markupString)
 convert character string to XML mnenonic string.
 
static OFBool checkForValidUIDFormat (const OFString &stringValue)
 check string for valid UID format.
 
static DSRIODConstraintCheckercreateIODConstraintChecker (const E_DocumentType documentType)
 create specified SR IOD content relationship contraint checker object.
 
static DSRDocumentTreeNodecreateDocumentTreeNode (const E_RelationshipType relationshipType, const E_ValueType valueType)
 create specified document tree node.
 
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.
 
static void removeAttributeFromSequence (DcmSequenceOfItems &sequence, const DcmTagKey &tagKey)
 remove given attribute from the sequence.
 
static OFCondition getElementFromDataset (DcmItem &dataset, DcmElement &delem)
 get element from dataset
 
static const char * getStringValueFromElement (const DcmElement &delem)
 get string value from element
 
static const OFStringgetStringValueFromElement (const DcmElement &delem, OFString &stringValue)
 get string value from element
 
static const OFStringgetPrintStringFromElement (const DcmElement &delem, OFString &stringValue)
 get string value from element and convert to "print" format
 
static const OFStringgetMarkupStringFromElement (const DcmElement &delem, OFString &stringValue, const OFBool convertNonASCII=OFFalse)
 get string value from element and convert to HTML/XML
 
static OFCondition getStringValueFromDataset (DcmItem &dataset, const DcmTagKey &tagKey, OFString &stringValue)
 get string value from dataset
 
static OFCondition putStringValueToDataset (DcmItem &dataset, const DcmTag &tag, const OFString &stringValue, const OFBool allowEmpty=OFTrue)
 put string value to dataset
 
static OFBool checkElementValue (DcmElement &delem, const OFString &vm, const OFString &type, const OFCondition &searchCond=EC_Normal, const char *moduleName=NULL)
 check element value for correct value multipicity and type.
 
static OFCondition getAndCheckElementFromDataset (DcmItem &dataset, DcmElement &delem, const OFString &vm, const OFString &type, const char *moduleName=NULL)
 get element from dataset and check it for correct value multipicity and type.
 
static OFCondition getAndCheckStringValueFromDataset (DcmItem &dataset, const DcmTagKey &tagKey, OFString &stringValue, const OFString &vm, const OFString &type, const char *moduleName=NULL)
 get string value from dataset and check it for correct value multipicity and type.
 
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.
 
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.
 
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
 
static OFBool writeStringValueToXML (STD_NAMESPACE ostream &stream, const OFString &stringValue, const OFString &tagName, const OFBool writeEmptyValue=OFFalse)
 write string value to XML output stream.
 
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.
 
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.
 
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
 
static OFCondition appendStream (STD_NAMESPACE ostream &mainStream, OFOStringStream &tempStream, const char *heading=NULL)
 append one output stream to another.
 
- Protected Attributes inherited from DSRTreeNodeCursor
DSRTreeNodeNodeCursor
 pointer current node
 
OFStack< DSRTreeNodePointerNodeCursorStack
 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
 
- 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_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_printAllCodes
 shortcut: print all codes
 
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 the SR document tree.

Definition at line 56 of file dsrdoctr.h.

Constructor & Destructor Documentation

DSRDocumentTree::DSRDocumentTree ( const E_DocumentType  documentType)

constructor

Parameters
documentTypedocument type of the associated document

Member Function Documentation

size_t DSRDocumentTree::addByReferenceRelationship ( const E_RelationshipType  relationshipType,
const size_t  referencedNodeID 
)

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
referencedNodeIDnode ID of the referenced content item
Returns
ID of new pseudo-node if successful, 0 otherwise
size_t DSRDocumentTree::addContentItem ( const E_RelationshipType  relationshipType,
const E_ValueType  valueType,
const E_AddMode  addMode = AM_afterCurrent 
)

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.

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. (AM_afterCurrent, AM_beforeCurrent, AM_belowCurrent)
Returns
ID of new node if successful, 0 otherwise
virtual size_t DSRDocumentTree::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 should 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. (AM_afterCurrent, AM_beforeCurrent, AM_belowCurrent)
Returns
ID of the new added node if successful, 0 otherwise
virtual size_t DSRDocumentTree::addNode ( DSRTreeNode node,
const E_AddMode  addMode = AM_afterCurrent 
)
privatevirtual

add new node to the current one.

This method just overwrites the method from the base class DSRTree. Use the above addNode() method instead.

Parameters
nodedummy parameter
addModedummy parameter
Returns
always 0 (invalid)

Reimplemented from DSRTree.

OFBool DSRDocumentTree::canAddByReferenceRelationship ( const E_RelationshipType  relationshipType,
const E_ValueType  targetValueType 
)

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

Always returns true if no constraint checker is available.

Parameters
relationshipTypetype of relationship between current and target node
targetValueTypevalue type of the referenced target node
Returns
OFTrue if specified by-reference relationship can be added, OFFalse otherwise
OFBool DSRDocumentTree::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.

If the tree is currently empty only a CONTAINER with the internal relationship type RT_isRoot is allowed (as the new root node). Always returns true if no constraint checker is available. This method can be used to decide which type of content items can be added prior to really do so.

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. (AM_afterCurrent, AM_beforeCurrent, AM_belowCurrent)
Returns
OFTrue if specified node can be added, OFFalse otherwise
OFCondition DSRDocumentTree::changeDocumentType ( const E_DocumentType  documentType)

change document type.

Please note that the document tree is deleted if the specified 'documentType' is supported. Otherwise the current document remains in force.

Parameters
documentTypenew document type to be set (should be != DT_invalid)
Returns
status, EC_Normal if successful, an error code otherwise
OFCondition DSRDocumentTree::checkByReferenceRelationships ( const size_t  mode = 0,
const size_t  flags = 0 
)
protected

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 modes 'CM_updatePositionString' and '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 void DSRDocumentTree::clear ( )
virtual

clear internal member variables.

The document type is not changed (e.g. set to DT_invalid).

Reimplemented from DSRTree.

DSRContentItem& DSRDocumentTree::getCurrentContentItem ( )

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)
size_t DSRDocumentTree::gotoNamedNode ( const DSRCodedEntryValue conceptName,
const OFBool  startFromRoot = OFTrue,
const OFBool  searchIntoSub = OFTrue 
)

set internal cursor to the 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
size_t DSRDocumentTree::gotoNextNamedNode ( const DSRCodedEntryValue conceptName,
const OFBool  searchIntoSub = OFTrue 
)

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 DSRDocumentTree::isValid ( ) const
virtual

check whether the current internal state is valid.

The SR document is valid if the document type is supported, the tree is not empty the root item is a container and has the internal relationship type RT_isRoot.

Returns
OFTrue if valid, OFFalse otherwise

Reimplemented from DSRTreeNodeCursor.

OFCondition DSRDocumentTree::print ( STD_NAMESPACE ostream &  stream,
const size_t  flags = 0 
)

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
OFCondition DSRDocumentTree::read ( DcmItem dataset,
const E_DocumentType  documentType,
const size_t  flags = 0 
)

read SR document tree from DICOM dataset.

Please note that the current document tree is also deleted if the reading fails. If the log stream is set and valid the reason for any error might be obtained from the error/warning output.

Parameters
datasetreference to DICOM dataset where the tree should be read from
documentTypedocument type of the SR document from which the tree is read
flagsflag used to customize the reading process (see DSRTypes::RF_xxx)
Returns
status, EC_Normal if successful, an error code otherwise
OFCondition DSRDocumentTree::readXML ( const DSRXMLDocument doc,
DSRXMLCursor  cursor,
const size_t  flags 
)

read XML document tree

Parameters
docdocument containing the XML file content
cursorcursor pointing to the starting node
flagsoptional flag used to customize the reading process (see DSRTypes::XF_xxx)
Returns
status, EC_Normal if successful, an error code otherwise
size_t DSRDocumentTree::removeCurrentContentItem ( )

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 occured or the tree is now empty.
virtual size_t DSRDocumentTree::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 occured or the tree is now empty.

Reimplemented from DSRTree.

void DSRDocumentTree::removeSignatures ( )

remove digital signatures from the document tree.

This method clears the MACParametersSequence and the DigitalSignaturesSequence for all content items which have been filled during reading.

OFCondition DSRDocumentTree::renderHTML ( STD_NAMESPACE ostream &  docStream,
STD_NAMESPACE ostream &  annexStream,
const size_t  flags = 0 
)

render current SR document tree in HTML/XHTML format

Parameters
docStreamoutput stream to which the main HTML/XHTML document is written
annexStreamoutput stream to which the HTML/XHTML document annex is written
flagsflag used to customize the output (see DSRTypes::HF_xxx)
Returns
status, EC_Normal if successful, an error code otherwise
void DSRDocumentTree::resetReferenceTargetFlag ( )
protected

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

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

void DSRDocumentTree::unmarkAllContentItems ( )

unmark all content items in the document tree.

Use method 'setMark' on node-level to mark and unmark a single content item. Pointers to the DICOM dataset/item of marked content items are added to the optional stack when calling the 'write' method. This mechanism can e.g. be used to digitally sign particular content items.

OFCondition DSRDocumentTree::write ( DcmItem dataset,
DcmStack markedItems = NULL 
)

write current SR document tree to DICOM dataset

Parameters
datasetreference to DICOM dataset where the current tree should be written to
markedItemsoptional stack where pointers to all 'marked' content items (DICOM datasets/items) are added to during the write process. Can be used to digitally sign parts of the document tree.
Returns
status, EC_Normal if successful, an error code otherwise
OFCondition DSRDocumentTree::writeXML ( STD_NAMESPACE ostream &  stream,
const size_t  flags 
)

write current SR document tree in XML format

Parameters
streamoutput stream to which the XML document is written
flagsflag used to customize the output (see DSRTypes::XF_xxx)
Returns
status, EC_Normal if successful, an error code otherwise

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


Generated on Thu Dec 20 2012 for OFFIS DCMTK Version 3.6.0 by Doxygen 1.8.2