DYT/Tool/3rdParty_x64/include/dcmtk/dcmsr/cmr/srnumvl.h

166 lines
8.0 KiB
C
Raw Normal View History

2024-11-22 15:19:31 +00:00
/*
*
* 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