00001 /* 00002 * 00003 * Copyright (C) 2000-2005, OFFIS 00004 * 00005 * This software and supporting documentation were developed by 00006 * 00007 * Kuratorium OFFIS e.V. 00008 * Healthcare Information and Communication Systems 00009 * Escherweg 2 00010 * D-26121 Oldenburg, Germany 00011 * 00012 * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND OFFIS MAKES NO WARRANTY 00013 * REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY OR 00014 * FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES OR 00015 * ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY AND 00016 * PERFORMANCE OF THE SOFTWARE IS WITH THE USER. 00017 * 00018 * Module: dcmsr 00019 * 00020 * Author: Joerg Riesmeier 00021 * 00022 * Purpose: 00023 * classes: DSRNumericMeasurementValue 00024 * 00025 * Last Update: $Author: meichel $ 00026 * Update Date: $Date: 2005/12/08 16:05:11 $ 00027 * CVS/RCS Revision: $Revision: 1.10 $ 00028 * Status: $State: Exp $ 00029 * 00030 * CVS/RCS Log at end of file 00031 * 00032 */ 00033 00034 00035 #ifndef DSRNUMVL_H 00036 #define DSRNUMVL_H 00037 00038 #include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */ 00039 00040 #include "dcmtk/dcmsr/dsrcodvl.h" 00041 00042 #include "dcmtk/ofstd/ofstring.h" 00043 00044 00045 /*---------------------* 00046 * class declaration * 00047 *---------------------*/ 00048 00051 class DSRNumericMeasurementValue 00052 { 00053 // allow access to getValuePtr() 00054 friend class DSRContentItem; 00055 00056 public: 00057 00060 DSRNumericMeasurementValue(); 00061 00068 DSRNumericMeasurementValue(const OFString &numericValue, 00069 const DSRCodedEntryValue &measurementUnit); 00070 00078 DSRNumericMeasurementValue(const OFString &numericValue, 00079 const DSRCodedEntryValue &measurementUnit, 00080 const DSRCodedEntryValue &valueQualifier); 00081 00085 DSRNumericMeasurementValue(const DSRNumericMeasurementValue &numericMeasurement); 00086 00089 virtual ~DSRNumericMeasurementValue(); 00090 00095 DSRNumericMeasurementValue &operator=(const DSRNumericMeasurementValue &numericMeasurement); 00096 00100 virtual void clear(); 00101 00107 virtual OFBool isValid() const; 00108 00113 virtual OFBool isEmpty() const; 00114 00123 virtual OFCondition print(ostream &stream, 00124 const size_t flags) const; 00125 00131 virtual OFCondition readXML(const DSRXMLDocument &doc, 00132 DSRXMLCursor cursor); 00133 00140 virtual OFCondition writeXML(ostream &stream, 00141 const size_t flags, 00142 OFConsole *logStream) const; 00143 00152 virtual OFCondition readSequence(DcmItem &dataset, 00153 OFConsole *logStream); 00154 00162 virtual OFCondition writeSequence(DcmItem &dataset, 00163 OFConsole *logStream) const; 00164 00174 virtual OFCondition renderHTML(ostream &docStream, 00175 ostream &annexStream, 00176 size_t &annexNumber, 00177 const size_t flags, 00178 OFConsole *logStream) const; 00179 00183 inline const DSRNumericMeasurementValue &getValue() const 00184 { 00185 return *this; 00186 } 00187 00192 OFCondition getValue(DSRNumericMeasurementValue &numericMeasurement) const; 00193 00197 inline const OFString &getNumericValue() const 00198 { 00199 return NumericValue; 00200 } 00201 00205 inline const DSRCodedEntryValue &getMeasurementUnit() const 00206 { 00207 return MeasurementUnit; 00208 } 00209 00213 inline const DSRCodedEntryValue &getNumericValueQualifier() const 00214 { 00215 return ValueQualifier; 00216 } 00217 00222 OFCondition getMeasurementUnit(DSRCodedEntryValue &measurementUnit) const; 00223 00230 OFCondition setValue(const DSRNumericMeasurementValue &numericMeasurement); 00231 00239 OFCondition setValue(const OFString &numericValue, 00240 const DSRCodedEntryValue &measurementUnit); 00241 00251 OFCondition setValue(const OFString &numericValue, 00252 const DSRCodedEntryValue &measurementUnit, 00253 const DSRCodedEntryValue &valueQualifier); 00254 00261 OFCondition setNumericValue(const OFString &numericValue); 00262 00269 OFCondition setMeasurementUnit(const DSRCodedEntryValue &measurementUnit); 00270 00279 OFCondition setNumericValueQualifier(const DSRCodedEntryValue &valueQualifier); 00280 00284 OFBool valueContainsExtendedCharacters() const; 00285 00286 00287 protected: 00288 00292 inline DSRNumericMeasurementValue *getValuePtr() 00293 { 00294 return this; 00295 } 00296 00302 virtual OFCondition readItem(DcmItem &dataset, 00303 OFConsole *logStream); 00304 00310 virtual OFCondition writeItem(DcmItem &dataset, 00311 OFConsole *logStream) const; 00312 00319 virtual OFBool checkNumericValue(const OFString &numericValue) const; 00320 00326 virtual OFBool checkMeasurementUnit(const DSRCodedEntryValue &measurementUnit) const; 00327 00335 virtual OFBool checkNumericValueQualifier(const DSRCodedEntryValue &valueQualifier) const; 00336 00337 00338 private: 00339 00341 OFString NumericValue; 00343 DSRCodedEntryValue MeasurementUnit; 00345 DSRCodedEntryValue ValueQualifier; 00346 }; 00347 00348 00349 #endif 00350 00351 00352 /* 00353 * CVS/RCS Log: 00354 * $Log: dsrnumvl.h,v $ 00355 * Revision 1.10 2005/12/08 16:05:11 meichel 00356 * Changed include path schema for all DCMTK header files 00357 * 00358 * Revision 1.9 2004/11/22 16:39:09 meichel 00359 * Added method that checks if the SR document contains non-ASCII characters 00360 * in any of the strings affected by SpecificCharacterSet. 00361 * 00362 * Revision 1.8 2003/08/07 12:43:44 joergr 00363 * Added readXML functionality. 00364 * 00365 * Revision 1.7 2002/12/10 13:20:07 joergr 00366 * Added support for the Numeric Value Qualifier Code Sequence (introduced with 00367 * CP 260). 00368 * 00369 * Revision 1.6 2001/09/26 13:04:09 meichel 00370 * Adapted dcmsr to class OFCondition 00371 * 00372 * Revision 1.5 2001/06/01 15:51:02 meichel 00373 * Updated copyright header 00374 * 00375 * Revision 1.4 2000/11/06 11:17:40 joergr 00376 * Moved some protected methods to public part. 00377 * 00378 * Revision 1.3 2000/11/01 16:23:22 joergr 00379 * Added support for conversion to XML. 00380 * 00381 * Revision 1.2 2000/10/18 17:05:12 joergr 00382 * Added methods allowing direct access to certain content item values. 00383 * Added doc++ comments. 00384 * Made some functions inline. 00385 * 00386 * Revision 1.1 2000/10/13 07:49:29 joergr 00387 * Added new module 'dcmsr' providing access to DICOM structured reporting 00388 * documents (supplement 23). Doc++ documentation not yet completed. 00389 * 00390 * 00391 */