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 #ifndef DSRNUMVL_H
00032 #define DSRNUMVL_H
00033
00034 #include "dcmtk/config/osconfig.h"
00035
00036 #include "dcmtk/dcmsr/dsrcodvl.h"
00037
00038 #include "dcmtk/ofstd/ofstring.h"
00039
00040
00041
00042
00043
00044
00047 class DSRNumericMeasurementValue
00048 {
00049
00050 friend class DSRContentItem;
00051
00052 public:
00053
00056 DSRNumericMeasurementValue();
00057
00064 DSRNumericMeasurementValue(const OFString &numericValue,
00065 const DSRCodedEntryValue &measurementUnit);
00066
00074 DSRNumericMeasurementValue(const OFString &numericValue,
00075 const DSRCodedEntryValue &measurementUnit,
00076 const DSRCodedEntryValue &valueQualifier);
00077
00081 DSRNumericMeasurementValue(const DSRNumericMeasurementValue &numericMeasurement);
00082
00085 virtual ~DSRNumericMeasurementValue();
00086
00091 DSRNumericMeasurementValue &operator=(const DSRNumericMeasurementValue &numericMeasurement);
00092
00096 virtual void clear();
00097
00103 virtual OFBool isValid() const;
00104
00109 virtual OFBool isEmpty() const;
00110
00119 virtual OFCondition print(STD_NAMESPACE ostream &stream,
00120 const size_t flags) const;
00121
00127 virtual OFCondition readXML(const DSRXMLDocument &doc,
00128 DSRXMLCursor cursor);
00129
00135 virtual OFCondition writeXML(STD_NAMESPACE ostream &stream,
00136 const size_t flags) const;
00137
00145 virtual OFCondition readSequence(DcmItem &dataset);
00146
00153 virtual OFCondition writeSequence(DcmItem &dataset) const;
00154
00163 virtual OFCondition renderHTML(STD_NAMESPACE ostream &docStream,
00164 STD_NAMESPACE ostream &annexStream,
00165 size_t &annexNumber,
00166 const size_t flags) const;
00167
00171 inline const DSRNumericMeasurementValue &getValue() const
00172 {
00173 return *this;
00174 }
00175
00180 OFCondition getValue(DSRNumericMeasurementValue &numericMeasurement) const;
00181
00185 inline const OFString &getNumericValue() const
00186 {
00187 return NumericValue;
00188 }
00189
00193 inline const DSRCodedEntryValue &getMeasurementUnit() const
00194 {
00195 return MeasurementUnit;
00196 }
00197
00201 inline const DSRCodedEntryValue &getNumericValueQualifier() const
00202 {
00203 return ValueQualifier;
00204 }
00205
00210 OFCondition getMeasurementUnit(DSRCodedEntryValue &measurementUnit) const;
00211
00218 OFCondition setValue(const DSRNumericMeasurementValue &numericMeasurement);
00219
00227 OFCondition setValue(const OFString &numericValue,
00228 const DSRCodedEntryValue &measurementUnit);
00229
00239 OFCondition setValue(const OFString &numericValue,
00240 const DSRCodedEntryValue &measurementUnit,
00241 const DSRCodedEntryValue &valueQualifier);
00242
00249 OFCondition setNumericValue(const OFString &numericValue);
00250
00257 OFCondition setMeasurementUnit(const DSRCodedEntryValue &measurementUnit);
00258
00267 OFCondition setNumericValueQualifier(const DSRCodedEntryValue &valueQualifier);
00268
00269
00270 protected:
00271
00275 inline DSRNumericMeasurementValue *getValuePtr()
00276 {
00277 return this;
00278 }
00279
00284 virtual OFCondition readItem(DcmItem &dataset);
00285
00290 virtual OFCondition writeItem(DcmItem &dataset) const;
00291
00298 virtual OFBool checkNumericValue(const OFString &numericValue) const;
00299
00305 virtual OFBool checkMeasurementUnit(const DSRCodedEntryValue &measurementUnit) const;
00306
00314 virtual OFBool checkNumericValueQualifier(const DSRCodedEntryValue &valueQualifier) const;
00315
00316
00317 private:
00318
00320 OFString NumericValue;
00322 DSRCodedEntryValue MeasurementUnit;
00324 DSRCodedEntryValue ValueQualifier;
00325 };
00326
00327
00328 #endif
00329
00330
00331
00332
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348
00349
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