00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef DSRNUMVL_H
00036 #define DSRNUMVL_H
00037
00038 #include "dcmtk/config/osconfig.h"
00039
00040 #include "dcmtk/dcmsr/dsrcodvl.h"
00041
00042 #include "dcmtk/ofstd/ofstring.h"
00043
00044
00045
00046
00047
00048
00051 class DSRNumericMeasurementValue
00052 {
00053
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
00354
00355
00356
00357
00358
00359
00360
00361
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372
00373
00374
00375
00376
00377
00378
00379
00380
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390
00391