DYT/Tool/3rdParty_x64/include/dcmtk/dcmsr/dsrwavvl.h

222 lines
8.6 KiB
C
Raw Normal View History

2024-11-22 15:19:31 +00:00
/*
*
* Copyright (C) 2000-2016, OFFIS e.V.
* All rights reserved. See COPYRIGHT file for details.
*
* This software and supporting documentation were developed by
*
* OFFIS e.V.
* R&D Division Health
* Escherweg 2
* D-26121 Oldenburg, Germany
*
*
* Module: dcmsr
*
* Author: Joerg Riesmeier
*
* Purpose:
* classes: DSRWaveformReferenceValue
*
*/
#ifndef DSRWAVVL_H
#define DSRWAVVL_H
#include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */
#include "dcmtk/dcmsr/dsrtypes.h"
#include "dcmtk/dcmsr/dsrcomvl.h"
#include "dcmtk/dcmsr/dsrwavch.h"
/*---------------------*
* class declaration *
*---------------------*/
/** Class for waveform reference values
*/
class DCMTK_DCMSR_EXPORT DSRWaveformReferenceValue
: public DSRCompositeReferenceValue
{
// allow access to getValuePtr()
friend class DSRContentItem;
public:
/** default constructor
*/
DSRWaveformReferenceValue();
/** constructor
** @param sopClassUID referenced SOP class UID of the waveform object.
* (VR=UI, mandatory)
* @param sopInstanceUID referenced SOP instance UID of the waveform object.
* (VR=UI, mandatory)
* @param check if enabled, check 'sopClassUID' and 'sopInstanceUID' for
* validity before setting them. See checkXXX() for details.
* Empty values are never accepted.
*/
DSRWaveformReferenceValue(const OFString &sopClassUID,
const OFString &sopInstanceUID,
const OFBool check = OFTrue);
/** copy constructor
** @param referenceValue waveform reference value to be copied (not checked !)
*/
DSRWaveformReferenceValue(const DSRWaveformReferenceValue &referenceValue);
/** destructor
*/
virtual ~DSRWaveformReferenceValue();
/** assignment operator
** @param referenceValue waveform reference value to be copied (not checked !)
** @return reference to this waveform reference value after 'referenceValue' has been copied
*/
DSRWaveformReferenceValue &operator=(const DSRWaveformReferenceValue &referenceValue);
/** clear all internal variables.
* Since an empty waveform reference is invalid the reference becomes invalid afterwards.
*/
virtual void clear();
/** 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 waveform reference.
* The output of a typical waveform reference value looks like this:
* (HemodynamicWaveformStorage,"1.2.3")
* If the SOP class UID is unknown, the UID is printed instead of the related name.
** @param stream output stream to which the image reference value 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;
/** read waveform reference from XML document
** @param doc document containing the XML file content
* @param cursor cursor pointing to the starting node
* @param flags flag used to customize the reading process (see DSRTypes::XF_xxx)
** @return status, EC_Normal if successful, an error code otherwise
*/
virtual OFCondition readXML(const DSRXMLDocument &doc,
DSRXMLCursor cursor,
const size_t flags);
/** write waveform reference 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, an error code otherwise
*/
virtual OFCondition writeXML(STD_NAMESPACE ostream &stream,
const size_t flags) const;
/** render waveform reference value in HTML/XHTML format
** @param docStream output stream to which the main HTML/XHTML document is written
* @param annexStream output stream to which the HTML/XHTML document annex is written
* @param annexNumber reference to the variable where the current annex number is stored.
* Value is increased automatically by 1 after a new entry has been added.
* @param flags flag used to customize the output (see DSRTypes::HF_xxx)
** @return status, EC_Normal if successful, an error code otherwise
*/
virtual OFCondition renderHTML(STD_NAMESPACE ostream &docStream,
STD_NAMESPACE ostream &annexStream,
size_t &annexNumber,
const size_t flags) const;
/** get reference to waveform reference value
** @return reference to waveform reference value
*/
inline const DSRWaveformReferenceValue &getValue() const
{
return *this;
}
/** get copy of waveform reference value
** @param referenceValue reference to variable in which the value should be stored
** @return status, EC_Normal if successful, an error code otherwise
*/
OFCondition getValue(DSRWaveformReferenceValue &referenceValue) const;
/** set waveform reference value.
* Before setting the reference, it is usually checked. If the value is invalid, the
* current value is not replaced and remains unchanged.
** @param referenceValue value to be set
* @param check if enabled, check value for validity before setting it.
* See checkXXX() for details. Empty values are only accepted
* for non-mandatory attributes.
** @return status, EC_Normal if successful, an error code otherwise
*/
OFCondition setValue(const DSRWaveformReferenceValue &referenceValue,
const OFBool check = OFTrue);
/** get reference to list of referenced waveform channels
** @return reference to channel list
*/
inline DSRWaveformChannelList &getChannelList()
{
return ChannelList;
}
/** check whether the waveform reference applies to a specific channel.
* The waveform reference applies to a channel if the list of referenced waveform
* channels is empty or the group/channel pair is part of the list.
** @param multiplexGroupNumber multiplex group number of the referenced channel
* @param channelNumber channel number of the referenced channel
** @return OFTrue if reference applies to the specified channel, OFFalse otherwise
*/
OFBool appliesToChannel(const Uint16 multiplexGroupNumber,
const Uint16 channelNumber) const;
protected:
/** get pointer to waveform reference value
** @return pointer to waveform reference value (never NULL)
*/
inline DSRWaveformReferenceValue *getValuePtr()
{
return this;
}
/** read waveform reference value from dataset
** @param dataset DICOM dataset from which the value should be read
* @param flags flag used to customize the reading process (see DSRTypes::RF_xxx)
** @return status, EC_Normal if successful, an error code otherwise
*/
virtual OFCondition readItem(DcmItem &dataset,
const size_t flags);
/** write waveform reference value to dataset
** @param dataset DICOM dataset to which the value should be written
** @return status, EC_Normal if successful, an error code otherwise
*/
virtual OFCondition writeItem(DcmItem &dataset) const;
/** check the specified SOP class UID for validity.
* This method further specializes the checks performed in the base class
* DSRCompositeReferenceValue. All waveform SOP classes that are defined
* in DICOM PS 3.6-2015c are allowed.
** @param sopClassUID SOP class UID to be checked
** @return status, EC_Normal if value is valid, an error code otherwise
*/
virtual OFCondition checkSOPClassUID(const OFString &sopClassUID) const;
private:
/// list of referenced waveform channels (associated DICOM VR=US, VM=2-2n, type 1C)
DSRWaveformChannelList ChannelList;
};
#endif