249 lines
9.6 KiB
C
249 lines
9.6 KiB
C
|
/*
|
||
|
*
|
||
|
* Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
|
||
|
* All rights reserved. See COPYRIGHT file for details.
|
||
|
*
|
||
|
* This software and supporting documentation are maintained by
|
||
|
*
|
||
|
* OFFIS e.V.
|
||
|
* R&D Division Health
|
||
|
* Escherweg 2
|
||
|
* D-26121 Oldenburg, Germany
|
||
|
*
|
||
|
*
|
||
|
* Module: dcmsr
|
||
|
*
|
||
|
* Author: Joerg Riesmeier
|
||
|
*
|
||
|
* Purpose:
|
||
|
* classes: DSRIncludedTemplateTreeNode
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
|
||
|
#ifndef DSRTPLTN_H
|
||
|
#define DSRTPLTN_H
|
||
|
|
||
|
#include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */
|
||
|
|
||
|
#include "dcmtk/dcmsr/dsrdoctn.h"
|
||
|
#include "dcmtk/dcmsr/dsrstpl.h"
|
||
|
|
||
|
|
||
|
/*---------------------*
|
||
|
* class declaration *
|
||
|
*---------------------*/
|
||
|
|
||
|
/** Class for managing included templates (internal)
|
||
|
*/
|
||
|
class DCMTK_DCMSR_EXPORT DSRIncludedTemplateTreeNode
|
||
|
: public DSRDocumentTreeNode
|
||
|
{
|
||
|
|
||
|
public:
|
||
|
|
||
|
/** constructor.
|
||
|
* Also sets the template identification if available from 'referencedTemplate'.
|
||
|
** @param referencedTemplate shared pointer to template that should be managed
|
||
|
* @param defaultRelType default relationship type of the included template
|
||
|
*/
|
||
|
DSRIncludedTemplateTreeNode(const DSRSharedSubTemplate &referencedTemplate,
|
||
|
const E_RelationshipType defaultRelType);
|
||
|
|
||
|
/** copy constructor.
|
||
|
* Please note that the comments on the copy constructor of the base class
|
||
|
* DSRDocumentTreeNode apply.
|
||
|
** @param node tree node to be copied
|
||
|
*/
|
||
|
DSRIncludedTemplateTreeNode(const DSRIncludedTemplateTreeNode &node);
|
||
|
|
||
|
/** destructor
|
||
|
*/
|
||
|
virtual ~DSRIncludedTemplateTreeNode();
|
||
|
|
||
|
/** clone this tree node.
|
||
|
* Internally, the copy constructor is used, so the corresponding comments apply.
|
||
|
** @return copy of this tree node
|
||
|
*/
|
||
|
virtual DSRIncludedTemplateTreeNode *clone() const;
|
||
|
|
||
|
/** clear all member variables.
|
||
|
* Please note that the content item becomes invalid afterwards.
|
||
|
*/
|
||
|
virtual void clear();
|
||
|
|
||
|
/** check whether the content item is valid.
|
||
|
* The content item is valid if the base class is valid and the reference to the
|
||
|
* included template is valid.
|
||
|
** @return OFTrue if tree node is valid, OFFalse otherwise
|
||
|
*/
|
||
|
virtual OFBool isValid() const;
|
||
|
|
||
|
/** check whether the value of the content item, i.e.\ the reference to the included
|
||
|
* template is valid. See getValue().
|
||
|
** @return OFTrue if the value is valid, OFFalse otherwise
|
||
|
*/
|
||
|
virtual OFBool hasValidValue() const;
|
||
|
|
||
|
/** check whether the content is short.
|
||
|
* This method is used to check whether the rendered output of this content item can
|
||
|
* be expanded inline or not (used for renderHTML()).
|
||
|
** @param flags flag used to customize the output (see DSRTypes::HF_xxx)
|
||
|
** @return OFTrue if the content is short, OFFalse otherwise
|
||
|
*/
|
||
|
virtual OFBool isShort(const size_t flags) const;
|
||
|
|
||
|
/** print content item.
|
||
|
* A typical output looks like this: # INCLUDE TID 1600 (DCMR)
|
||
|
** @param stream output stream to which the content item should be printed
|
||
|
* @param flags flag used to customize the output (see DSRTypes::PF_xxx)
|
||
|
** @return status, EC_Normal if successful, an error code otherwise
|
||
|
*/
|
||
|
virtual OFCondition print(STD_NAMESPACE ostream &stream,
|
||
|
const size_t flags) const;
|
||
|
|
||
|
/** write content of included template in XML format
|
||
|
** @param stream output stream to which the XML document is written
|
||
|
* @param flags flag used to customize the output (see DSRTypes::XF_xxx)
|
||
|
** @return status, EC_Normal if successful (or included template is empty, so there
|
||
|
* is nothing to do), an error code otherwise
|
||
|
*/
|
||
|
virtual OFCondition writeXML(STD_NAMESPACE ostream &stream,
|
||
|
const size_t flags) const;
|
||
|
|
||
|
/** get reference to included template, i.e.\ the value of this content item
|
||
|
** @return reference to included template. The managed pointer might be NULL.
|
||
|
*/
|
||
|
inline const DSRSharedSubTemplate &getValue() const
|
||
|
{
|
||
|
return ReferencedTemplate;
|
||
|
}
|
||
|
|
||
|
/** set reference to included template, i.e.\ the value of this content item.
|
||
|
* Currently, no checks are performed on the passed 'referencedTemplate' parameter.
|
||
|
** @param referencedTemplate shared pointer to template that should be managed
|
||
|
** @return status, EC_Normal if successful, an error code otherwise
|
||
|
*/
|
||
|
virtual OFCondition setValue(const DSRSharedSubTemplate &referencedTemplate);
|
||
|
|
||
|
|
||
|
protected:
|
||
|
|
||
|
/** read content item from dataset
|
||
|
** @param dataset dummy parameter
|
||
|
* @param constraintChecker dummy parameter
|
||
|
* @param flags dummy parameter
|
||
|
** @return always returns SR_EC_CannotProcessIncludedTemplates
|
||
|
*/
|
||
|
virtual OFCondition read(DcmItem &dataset,
|
||
|
const DSRIODConstraintChecker *constraintChecker,
|
||
|
const size_t flags);
|
||
|
|
||
|
/** write content item to dataset
|
||
|
** @param dataset dummy parameter
|
||
|
* @param markedItems dummy parameter
|
||
|
** @return always returns SR_EC_CannotProcessIncludedTemplates
|
||
|
*/
|
||
|
virtual OFCondition write(DcmItem &dataset,
|
||
|
DcmStack *markedItems = NULL);
|
||
|
|
||
|
/** read general XML document tree node data
|
||
|
** @param doc dummy parameter
|
||
|
* @param cursor dummy parameter
|
||
|
* @param documentType dummy parameter
|
||
|
* @param flags dummy parameter
|
||
|
** @return always returns SR_EC_CannotProcessIncludedTemplates
|
||
|
*/
|
||
|
virtual OFCondition readXML(const DSRXMLDocument &doc,
|
||
|
DSRXMLCursor cursor,
|
||
|
const E_DocumentType documentType,
|
||
|
const size_t flags);
|
||
|
|
||
|
/** render content item in HTML/XHTML format
|
||
|
** @param docStream dummy parameter
|
||
|
* @param annexStream dummy parameter
|
||
|
* @param nestingLevel dummy parameter
|
||
|
* @param annexNumber dummy parameter
|
||
|
* @param flags dummy parameter
|
||
|
** @return always returns SR_EC_CannotProcessIncludedTemplates
|
||
|
*/
|
||
|
virtual OFCondition renderHTML(STD_NAMESPACE ostream &docStream,
|
||
|
STD_NAMESPACE ostream &annexStream,
|
||
|
const size_t nestingLevel,
|
||
|
size_t &annexNumber,
|
||
|
const size_t flags) const;
|
||
|
|
||
|
/** set the concept name
|
||
|
** @param conceptName dummy parameter
|
||
|
* @param check dummy parameter
|
||
|
** @return always returns EC_IllegalCall, since this method should not be called
|
||
|
*/
|
||
|
virtual OFCondition setConceptName(const DSRCodedEntryValue &conceptName,
|
||
|
const OFBool check = OFTrue);
|
||
|
|
||
|
/** set observation date/time
|
||
|
** @param observationDateTime dummy parameter
|
||
|
* @param check dummy parameter
|
||
|
** @return always returns EC_IllegalCall, since this method should not be called
|
||
|
*/
|
||
|
virtual OFCondition setObservationDateTime(const OFString &observationDateTime,
|
||
|
const OFBool check = OFTrue);
|
||
|
|
||
|
/** set observation date/time from element
|
||
|
** @param delem dummy parameter
|
||
|
* @param pos dummy parameter
|
||
|
* @param check dummy parameter
|
||
|
** @return always returns EC_IllegalCall, since this method should not be called
|
||
|
*/
|
||
|
virtual OFCondition setObservationDateTime(const DcmElement &delem,
|
||
|
const unsigned long pos = 0,
|
||
|
const OFBool check = OFTrue);
|
||
|
|
||
|
/** set observation date/time from dataset
|
||
|
** @param dataset dummy parameter
|
||
|
* @param tagKey dummy parameter
|
||
|
* @param pos dummy parameter
|
||
|
* @param check dummy parameter
|
||
|
** @return always returns EC_IllegalCall, since this method should not be called
|
||
|
*/
|
||
|
virtual OFCondition setObservationDateTime(DcmItem &dataset,
|
||
|
const DcmTagKey &tagKey,
|
||
|
const unsigned long pos = 0,
|
||
|
const OFBool check = OFTrue);
|
||
|
|
||
|
/** set observation unique identifier
|
||
|
** @param observationUID dummy parameter
|
||
|
* @param check dummy parameter
|
||
|
** @return always returns EC_IllegalCall, since this method should not be called
|
||
|
*/
|
||
|
virtual OFCondition setObservationUID(const OFString &observationUID,
|
||
|
const OFBool check = OFTrue);
|
||
|
|
||
|
/** set template identifier and mapping resource
|
||
|
** @param templateIdentifier dummy parameter
|
||
|
* @param mappingResource dummy parameter
|
||
|
* @param mappingResourceUID dummy parameter
|
||
|
* @param check dummy parameter
|
||
|
** @return always returns EC_IllegalCall, since this method should not be called
|
||
|
*/
|
||
|
virtual OFCondition setTemplateIdentification(const OFString &templateIdentifier,
|
||
|
const OFString &mappingResource,
|
||
|
const OFString &mappingResourceUID = "",
|
||
|
const OFBool check = OFTrue);
|
||
|
|
||
|
|
||
|
private:
|
||
|
|
||
|
/// shared pointer to included template that is managed by this class
|
||
|
DSRSharedSubTemplate ReferencedTemplate;
|
||
|
|
||
|
|
||
|
// --- declaration of default constructor and assignment operator
|
||
|
|
||
|
DSRIncludedTemplateTreeNode();
|
||
|
DSRIncludedTemplateTreeNode &operator=(const DSRIncludedTemplateTreeNode &);
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif
|