166 lines
8.0 KiB
C++
166 lines
8.0 KiB
C++
/*
|
|
*
|
|
* Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
|
|
* All rights reserved. See COPYRIGHT file for details.
|
|
*
|
|
* Header file for class CMR_SRNumericMeasurementValue
|
|
*
|
|
* Author: Joerg Riesmeier
|
|
*
|
|
*/
|
|
|
|
|
|
#ifndef CMR_SRNUMVL_H
|
|
#define CMR_SRNUMVL_H
|
|
|
|
#include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */
|
|
|
|
#include "dcmtk/dcmsr/dsrnumvl.h"
|
|
#include "dcmtk/dcmsr/cmr/cid42.h"
|
|
|
|
|
|
/*---------------------*
|
|
* class declaration *
|
|
*---------------------*/
|
|
|
|
/** Class for SR numeric values and measurements
|
|
* (extended version with additional support of the DICOM Content Mapping Resource).
|
|
* This class checks whether the optional value qualifier uses a coded entry from the
|
|
* Defined Context Group 42 (Numeric Value Qualifier), see DICOM PS 3.3 Table C.18.1-1.
|
|
*/
|
|
class DCMTK_CMR_EXPORT CMR_SRNumericMeasurementValue
|
|
: public DSRNumericMeasurementValue
|
|
{
|
|
|
|
public:
|
|
|
|
/** default constructor
|
|
*/
|
|
CMR_SRNumericMeasurementValue();
|
|
|
|
/** constructor
|
|
** @param numericValue numeric value (VR=DS, mandatory)
|
|
* @param measurementUnit code representing the units of measurement (mandatory)
|
|
* @param check if enabled, check 'numericValue' and 'measurementUnit' for
|
|
* validity before setting them. See corresponding setValue()
|
|
* method for details.
|
|
*/
|
|
CMR_SRNumericMeasurementValue(const OFString &numericValue,
|
|
const DSRCodedEntryValue &measurementUnit,
|
|
const OFBool check = OFTrue);
|
|
|
|
/** constructor
|
|
** @param valueQualifier code representing the numeric value qualifier. Used to
|
|
* specify the reason for the absence of the measured value
|
|
* sequence, i.e. why the numeric value and measurement unit
|
|
* are empty.
|
|
* @param check if enabled, check value for validity before setting it.
|
|
* See corresponding setValue() method for details.
|
|
*/
|
|
CMR_SRNumericMeasurementValue(const CID42_NumericValueQualifier &valueQualifier,
|
|
const OFBool check = OFTrue);
|
|
|
|
/** constructor
|
|
** @param numericValue numeric value (VR=DS, mandatory)
|
|
* @param measurementUnit code representing the units of measurement (mandatory)
|
|
* @param valueQualifier code representing the numeric value qualifier (optional).
|
|
* Can also be used to specify the reason for the absence of
|
|
* the measured value sequence (where 'numericValue' and
|
|
* 'measurementUnit' are stored).
|
|
* @param check if enabled, check values for validity before setting them.
|
|
* See corresponding setValue() method for details.
|
|
*/
|
|
CMR_SRNumericMeasurementValue(const OFString &numericValue,
|
|
const DSRCodedEntryValue &measurementUnit,
|
|
const CID42_NumericValueQualifier &valueQualifier,
|
|
const OFBool check = OFTrue);
|
|
|
|
/** copy constructor
|
|
** @param numericMeasurement numeric measurement value to be copied (not checked !)
|
|
*/
|
|
CMR_SRNumericMeasurementValue(const CMR_SRNumericMeasurementValue &numericMeasurement);
|
|
|
|
/** copy constructor
|
|
** @param numericMeasurement numeric measurement value to be copied (not checked !)
|
|
*/
|
|
CMR_SRNumericMeasurementValue(const DSRNumericMeasurementValue &numericMeasurement);
|
|
|
|
/** destructor
|
|
*/
|
|
virtual ~CMR_SRNumericMeasurementValue();
|
|
|
|
/** assignment operator
|
|
** @param numericMeasurement numeric measurement value to be copied (not checked !)
|
|
** @return reference to this numeric value after 'numericMeasurement' has been copied
|
|
*/
|
|
CMR_SRNumericMeasurementValue &operator=(const CMR_SRNumericMeasurementValue &numericMeasurement);
|
|
|
|
/** set empty numeric value and measurement unit with a numeric value qualifier.
|
|
* Before setting the value, it is usually checked. If the value is invalid, the
|
|
* current numeric measurement value is not replaced and remains unchanged.
|
|
** @param valueQualifier numeric value qualifier to be set. Used to specify the
|
|
* reason for the absence of the measured value sequence,
|
|
* i.e. why the numeric value and measurement unit are empty.
|
|
* @param check if enabled, check value for validity before setting it.
|
|
* See checkNumericValueQualifier() method for details.
|
|
** @return status, EC_Normal if successful, an error code otherwise
|
|
*/
|
|
OFCondition setValue(const CID42_NumericValueQualifier &valueQualifier,
|
|
const OFBool check = OFTrue);
|
|
|
|
/** set numeric value, measurement unit and numeric value qualifier.
|
|
* Before setting the values, they are usually checked. Please note that both
|
|
* 'numericValue' and 'measurementUnit' either have to be empty or non-empty.
|
|
* If one of the three values is invalid, the current numeric measurement value is not
|
|
* replaced and remains unchanged. If the values are replaced, the optional floating
|
|
* point and rational representations are cleared, i.e. they have to be set manually if
|
|
* needed.
|
|
** @param numericValue numeric value to be set (VR=DS, mandatory)
|
|
* @param measurementUnit measurement unit to be set (mandatory)
|
|
* @param valueQualifier numeric value qualifier to be set (optional). Can also be
|
|
* used to specify the reason for the absence of the measured
|
|
* value sequence (where 'numericValue' and 'measurementUnit'
|
|
* are stored). Use an empty code to remove the current value.
|
|
* @param check if enabled, check values for validity before setting them.
|
|
* See checkXXX() methods for details.
|
|
** @return status, EC_Normal if successful, an error code otherwise
|
|
*/
|
|
OFCondition setValue(const OFString &numericValue,
|
|
const DSRCodedEntryValue &measurementUnit,
|
|
const CID42_NumericValueQualifier &valueQualifier,
|
|
const OFBool check = OFTrue);
|
|
|
|
/** set numeric value qualifier.
|
|
* This optional code specifies the qualification of the Numeric Value in the Measured
|
|
* Value Sequence, or the reason for the absence of the Measured Value Sequence Item.
|
|
* Before setting the code, it is usually checked. If the code is invalid the current
|
|
* code is not replaced and remains unchanged.
|
|
** @param valueQualifier numeric value qualifier to be set (optional). Use an empty
|
|
* code to remove the current value.
|
|
* @param check if enabled, check value for validity before setting it.
|
|
* See checkNumericValueQualifier() method for details.
|
|
** @return status, EC_Normal if successful, an error code otherwise
|
|
*/
|
|
OFCondition setNumericValueQualifier(const CID42_NumericValueQualifier &valueQualifier,
|
|
const OFBool check = OFTrue);
|
|
|
|
// --- reintroduce method from base class
|
|
|
|
using DSRNumericMeasurementValue::setValue;
|
|
using DSRNumericMeasurementValue::setNumericValueQualifier;
|
|
|
|
|
|
protected:
|
|
|
|
/** check the specified numeric value qualifier for validity.
|
|
* In addition to DSRNumericMeasurementValue::checkNumericValueQualifier(), this method
|
|
* also checks the conformance with the Context Group 42 (see CID42_NumericValueQualifier).
|
|
** @param valueQualifier numeric value qualifier to be checked
|
|
** @return status, EC_Normal if value qualifier is valid, an error code otherwise
|
|
*/
|
|
virtual OFCondition checkNumericValueQualifier(const DSRCodedEntryValue &valueQualifier) const;
|
|
};
|
|
|
|
|
|
#endif
|