/usr/include/dcmtk/dcmsr/cmr/tid1500.h is in libdcmtk-dev 3.6.2-3build3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 | /*
*
* Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
* All rights reserved. See COPYRIGHT file for details.
*
* Header file for class TID1500_MeasurementReport
*
* Author: Joerg Riesmeier
*
*/
#ifndef CMR_TID1500_H
#define CMR_TID1500_H
#include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */
#include "dcmtk/dcmsr/dsrrtpl.h"
#include "dcmtk/dcmsr/dsrstpl.h"
#include "dcmtk/dcmsr/cmr/define.h"
#include "dcmtk/dcmsr/cmr/tid1001.h"
#include "dcmtk/dcmsr/cmr/tid1204.h"
#include "dcmtk/dcmsr/cmr/tid1411.h"
#include "dcmtk/dcmsr/cmr/tid1600.h"
#include "dcmtk/dcmsr/cmr/cid100.h"
#include "dcmtk/dcmsr/cmr/cid6147.h"
#include "dcmtk/dcmsr/cmr/cid7021.h"
#include "dcmtk/dcmsr/cmr/cid7181.h"
#include "dcmtk/dcmsr/cmr/cid7464.h"
#include "dcmtk/dcmsr/cmr/cid7469.h"
// include this file in doxygen documentation
/** @file tid1500.h
* @brief Interface class and error constants for TID 1500 in module dcmsr/cmr
*/
/*------------------------*
* constant definitions *
*------------------------*/
/** @name specific error conditions for TID 1500 in module dcmsr/cmr
*/
//@{
/// error: there is no measurement report to add content items to
extern DCMTK_CMR_EXPORT const OFConditionConst CMR_EC_NoMeasurementReport;
//@}
/*---------------------*
* class declaration *
*---------------------*/
/** Implementation of DCMR Template:
* TID 1500 - Measurement Report (and included templates 1204, 1001, 1600, 1411).
* All added content items are annotated with a text in the format "TID 1500 - Row [n]".
** @note Please note that currently only the mandatory (and some optional/conditional)
* content items and included templates are supported.
*/
class DCMTK_CMR_EXPORT TID1500_MeasurementReport
: public DSRRootTemplate
{
public:
// type definition
typedef TID1411_VolumetricROIMeasurements<CID7469_GenericIntensityAndSizeMeasurements,
CID7181_AbstractMultiDimensionalImageModelComponentUnits,
CID6147_ResponseCriteria,
CID7464_GeneralRegionOfInterestMeasurementModifiers>
TID1411_Measurements;
/** (default) constructor.
* Also creates an initial, almost empty measurement report by calling
* createNewMeasurementReport(), but only if a non-empty 'title' is passed.
** @param title optional document title to be set (from CID 7021 - Measurement
* Report Document Titles), i.e.\ the concept name of the root node
*/
TID1500_MeasurementReport(const CID7021_MeasurementReportDocumentTitles &title = CID7021_MeasurementReportDocumentTitles());
/** clear internal member variables.
* Also see notes on the clear() method of the base class.
*/
virtual void clear();
/** check whether the current internal state is valid.
* That means, check whether the base class is valid, the mandatory included
* templates TID 1204, 1001 and 1600 are valid, and whether hasProcedureReported()
* as well as hasImagingMeasurements() or hasQualitativeEvaluations() return true.
** @return OFTrue if valid, OFFalse otherwise
*/
virtual OFBool isValid() const;
/** check whether there are any 'Procedure reported' content items (TID 1500 - Row 4)
* in this measurement report. This content item is mandatory, i.e. one or more
* instances of the associated content item should be present.
** @return OFTrue if at least one procedure reported is present, OFFalse otherwise
*/
OFBool hasProcedureReported() const;
/** check whether there is an included 'Volumetric ROI Measurements' template
* (TID 1500 - Row 8) in this measurement report. Initially, this optional
* sub-template is created and included by the constructor of this class. After
* clear() has been called or no document title is passed to the constructor, it
* can be created again by calling createNewMeasurementReport().
** @param checkChildren optional flag indicating whether to also check for any
* children, i.e.\ whether the respective sub-template has
* any content (child nodes). By default, the presence of
* the "included template" content item is checked only.
** @return OFTrue if volumetric ROI measurements are present, OFFalse otherwise
*/
OFBool hasVolumetricROIMeasurements(const OFBool checkChildren = OFFalse) const;
/** check whether there is an 'Imaging Measurements' content item (TID 1500 - Row 6)
* in this measurement report. Initially, this conditional content item is created
* by the constructor of this class. After clear() has been called or no document
* title is passed to the constructor, it can be created again by calling
* createNewMeasurementReport().
** @param checkChildren optional flag indicating whether to also check for any
* children, i.e.\ whether the respective content item has
* child nodes. By default, the presence of the higher-level
* CONTAINER is checked only.
** @return OFTrue if imaging measurements are present, OFFalse otherwise
*/
OFBool hasImagingMeasurements(const OFBool checkChildren = OFFalse) const;
/** check whether there is an 'Qualitative Evaluations' content item (TID 1500 -
* Row 12) in this measurement report
** @param checkChildren optional flag indicating whether to also check for any
* children, i.e.\ whether the respective content item has
* child nodes. By default, the presence of the higher-level
* CONTAINER is checked only.
** @return OFTrue if qualitative evaluations are present, OFFalse otherwise
*/
OFBool hasQualitativeEvaluations(const OFBool checkChildren = OFFalse) const;
/** get language of this report as defined by TID 1204 (Language of Content Item and
* Descendants). This included template is mandatory, i.e. should not be empty.
** @return reference to internally managed SR template
*/
inline TID1204_LanguageOfContentItemAndDescendants &getLanguage() const
{
return *OFstatic_cast(TID1204_LanguageOfContentItemAndDescendants *, Language.get());
}
/** get observation context of this report as defined by TID 1001 (Observation
* Context). This included template is mandatory, i.e. should not be empty.
** @return reference to internally managed SR template
*/
inline TID1001_ObservationContext &getObservationContext() const
{
return *OFstatic_cast(TID1001_ObservationContext *, ObservationContext.get());
}
/** get image library of this report as defined by TID 1600 (Image Library).
* This included template is mandatory, i.e. should not be empty.
** @return reference to internally managed SR template
*/
inline TID1600_ImageLibrary &getImageLibrary() const
{
return *OFstatic_cast(TID1600_ImageLibrary *, ImageLibrary.get());
}
/** get volumetric ROI measurements of this report as defined by TID 1411 (Volumetric
* ROI Measurements), i.e.\ the current instance of TID 1500 - Row 8.
* This included template is optional, i.e. might be empty (but not absent).
* Further instances can be added by calling addVolumetricROIMeasurements().
** @return reference to internally managed SR template (current instance)
*/
inline TID1411_Measurements &getVolumetricROIMeasurements() const
{
return *OFstatic_cast(TID1411_Measurements *, VolumetricROIMeasurements.get());
}
/** get document title of this report, i.e.\ the concept name of the root node
** @param titleCode coded entry that specifies the document title of this report
** @return status, EC_Normal if successful, an error code otherwise
*/
OFCondition getDocumentTitle(DSRCodedEntryValue &titleCode);
/** create a new measurement report.
* Clear the report and create the mandatory (and other supported) content items of
* this template, i.e.\ TID 1500 - Row 1 to 6 and 8.
** @param title document title to be set (from CID 7021 - Measurement Report
* Document Titles), i.e.\ the concept name of the root node
** @return status, EC_Normal if successful, an error code otherwise
*/
OFCondition createNewMeasurementReport(const CID7021_MeasurementReportDocumentTitles &title);
/** set language of this report as defined by TID 1204 (Language of Content Item and
* Descendants)
** @param language language of the report, being a language that is primarily
* used for human communication (from CID 5000 - Languages)
* @param country coded entry that describes the country-specific variant of
* 'language' (optional, from CID 5001 - Countries)
* @param check if enabled, check values for validity before setting them
** @return status, EC_Normal if successful, an error code otherwise
*/
OFCondition setLanguage(const CID5000_Languages &language,
const CID5001_Countries &country = CID5001_Countries(),
const OFBool check = OFTrue);
/** add the imaging procedure whose results are reported (TID 1500 - Row 4).
* There should be at least a single instance of the associated content item.
** @param procedure coded entry that describes the imaging procedure to be added
* (from CID 100 - Quantitative Diagnostic Imaging Procedures)
* @param check if enabled, check value for validity before setting it
** @return status, EC_Normal if successful, an error code otherwise
*/
OFCondition addProcedureReported(const CID100_QuantitativeDiagnosticImagingProcedures &procedure,
const OFBool check = OFTrue);
/** create another instance of TID 1411 (Volumetric ROI Measurements) and add it as
* an included template to this report (TID 1500 - Row 8). A first instance of
* TID 1411 is created and added by calling createNewMeasurementReport(). Access
* to the current instance is available through getVolumetricROIMeasurements().
** @return status, EC_Normal if successful, an error code otherwise
*/
OFCondition addVolumetricROIMeasurements();
/** add a qualitative evaluation related to the entire subject of the report as a
* coded entry (TID 1500 - Row 13). The higher-level CONTAINER (Row 12) is created
* automatically (if none is present).
** @param conceptName coded entry to be set as the concept name
* @param codeValue coded entry to be set as the value of the new content item
* @param check if enabled, check values for validity before setting them
** @return status, EC_Normal if successful, an error code otherwise
*/
OFCondition addQualitativeEvaluation(const DSRCodedEntryValue &conceptName,
const DSRCodedEntryValue &codeValue,
const OFBool check = OFTrue);
/** add a qualitative evaluation related to the entire subject of the report in
* text form (TID 1500 - Row 14). The higher-level CONTAINER (Row 12) is created
* automatically (if none is present).
** @param conceptName coded entry to be set as the concept name
* @param stringValue character string to be set as the value of the content item
* @param check if enabled, check values for validity before setting them
** @return status, EC_Normal if successful, an error code otherwise
*/
OFCondition addQualitativeEvaluation(const DSRCodedEntryValue &conceptName,
const OFString &stringValue,
const OFBool check = OFTrue);
protected:
/** create the mandatory (and other supported) content items of this template,
* i.e.\ TID 1500 - Row 1 to 6 and 8. It is expected that the tree is currently
* empty.
** @param title coded entry that specifies the document title to be set
** @return status, EC_Normal if successful, an error code otherwise
*/
OFCondition createMeasurementReport(const CID7021_MeasurementReportDocumentTitles &title);
/** create the 'Qualitative Evaluations' content item (TID 1500 - Row 12) if not
* existing yet
** @return status, EC_Normal if successful, an error code otherwise
*/
OFCondition createQualitativeEvaluations();
private:
// shared pointer to included template "Language of Content Item and Descendants" (TID 1204)
DSRSharedSubTemplate Language;
// shared pointer to included template "Observation Context" (TID 1001)
DSRSharedSubTemplate ObservationContext;
// shared pointer to included template "Image Library" (TID 1600)
DSRSharedSubTemplate ImageLibrary;
// shared pointer to included template "Volumetric ROI Measurements" (TID 1411)
DSRSharedSubTemplate VolumetricROIMeasurements;
};
/*--------------------*
* type definitions *
*--------------------*/
// define short names for the SR template classes
typedef TID1500_MeasurementReport CMR_TID1500;
typedef TID1500_MeasurementReport::TID1411_Measurements CMR_TID1411_in_TID1500;
#endif
|