00001 /* 00002 * 00003 * Copyright (C) 2000-2010, OFFIS e.V. 00004 * All rights reserved. See COPYRIGHT file for details. 00005 * 00006 * This software and supporting documentation were developed by 00007 * 00008 * OFFIS e.V. 00009 * R&D Division Health 00010 * Escherweg 2 00011 * D-26121 Oldenburg, Germany 00012 * 00013 * 00014 * Module: dcmsr 00015 * 00016 * Author: Joerg Riesmeier 00017 * 00018 * Purpose: 00019 * classes: DSRContentItem 00020 * 00021 * Last Update: $Author: joergr $ 00022 * Update Date: $Date: 2010-10-14 13:16:32 $ 00023 * CVS/RCS Revision: $Revision: 1.19 $ 00024 * Status: $State: Exp $ 00025 * 00026 * CVS/RCS Log at end of file 00027 * 00028 */ 00029 00030 00031 #ifndef DSRCITEM_H 00032 #define DSRCITEM_H 00033 00034 #include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */ 00035 00036 #include "dcmtk/dcmsr/dsrtypes.h" 00037 #include "dcmtk/dcmsr/dsrdoctn.h" 00038 #include "dcmtk/dcmsr/dsrcodvl.h" 00039 #include "dcmtk/dcmsr/dsrnumvl.h" 00040 #include "dcmtk/dcmsr/dsrscovl.h" 00041 #include "dcmtk/dcmsr/dsrtcovl.h" 00042 #include "dcmtk/dcmsr/dsrcomvl.h" 00043 #include "dcmtk/dcmsr/dsrimgvl.h" 00044 #include "dcmtk/dcmsr/dsrwavvl.h" 00045 00046 #include "dcmtk/ofstd/ofstring.h" 00047 00048 00049 /*---------------------* 00050 * class declaration * 00051 *---------------------*/ 00052 00056 class DSRContentItem 00057 : protected DSRTypes 00058 { 00059 // allow DSRDocumentTree to access protected method setTreeNode() 00060 friend class DSRDocumentTree; 00061 00062 public: 00063 00066 virtual ~DSRContentItem(); 00067 00072 OFBool isValid() const; 00073 00078 OFBool isMarked() const; 00079 00084 void setMark(const OFBool flag); 00085 00090 E_ValueType getValueType() const; 00091 00096 E_RelationshipType getRelationshipType() const; 00097 00102 size_t getReferencedNodeID() const; 00103 00108 const OFString &getStringValue() const; 00109 00116 OFCondition setStringValue(const OFString &stringValue); 00117 00122 DSRCodedEntryValue *getCodeValuePtr(); 00123 00128 const DSRCodedEntryValue &getCodeValue() const; 00129 00135 OFCondition getCodeValue(DSRCodedEntryValue &codeValue) const; 00136 00142 OFCondition setCodeValue(const DSRCodedEntryValue &codeValue); 00143 00148 DSRNumericMeasurementValue *getNumericValuePtr(); 00149 00154 const DSRNumericMeasurementValue &getNumericValue() const; 00155 00161 OFCondition getNumericValue(DSRNumericMeasurementValue &numericValue) const; 00162 00168 OFCondition setNumericValue(const DSRNumericMeasurementValue &numericValue); 00169 00174 DSRSpatialCoordinatesValue *getSpatialCoordinatesPtr(); 00175 00180 const DSRSpatialCoordinatesValue &getSpatialCoordinates() const; 00181 00187 OFCondition getSpatialCoordinates(DSRSpatialCoordinatesValue &coordinatesValue) const; 00188 00194 OFCondition setSpatialCoordinates(const DSRSpatialCoordinatesValue &coordinatesValue); 00195 00200 DSRTemporalCoordinatesValue *getTemporalCoordinatesPtr(); 00201 00206 const DSRTemporalCoordinatesValue &getTemporalCoordinates() const; 00207 00213 OFCondition getTemporalCoordinates(DSRTemporalCoordinatesValue &coordinatesValue) const; 00214 00220 OFCondition setTemporalCoordinates(const DSRTemporalCoordinatesValue &coordinatesValue); 00221 00226 DSRCompositeReferenceValue *getCompositeReferencePtr(); 00227 00232 const DSRCompositeReferenceValue &getCompositeReference() const; 00233 00239 OFCondition getCompositeReference(DSRCompositeReferenceValue &referenceValue) const; 00240 00246 OFCondition setCompositeReference(const DSRCompositeReferenceValue &referenceValue); 00247 00252 DSRImageReferenceValue *getImageReferencePtr(); 00253 00258 const DSRImageReferenceValue &getImageReference() const; 00259 00265 OFCondition getImageReference(DSRImageReferenceValue &referenceValue) const; 00266 00272 OFCondition setImageReference(const DSRImageReferenceValue &referenceValue); 00273 00278 DSRWaveformReferenceValue *getWaveformReferencePtr(); 00279 00284 const DSRWaveformReferenceValue &getWaveformReference() const; 00285 00291 OFCondition getWaveformReference(DSRWaveformReferenceValue &referenceValue) const; 00292 00298 OFCondition setWaveformReference(const DSRWaveformReferenceValue &referenceValue); 00299 00306 E_ContinuityOfContent getContinuityOfContent() const; 00307 00315 OFCondition setContinuityOfContent(const E_ContinuityOfContent continuityOfContent); 00316 00323 DSRCodedEntryValue *getConceptNamePtr(); 00324 00331 const DSRCodedEntryValue &getConceptName() const; 00332 00340 OFCondition getConceptName(DSRCodedEntryValue &conceptName) const; 00341 00349 OFCondition setConceptName(const DSRCodedEntryValue &conceptName); 00350 00357 const OFString &getObservationDateTime() const; 00358 00367 OFCondition setObservationDateTime(const OFString &observationDateTime); 00368 00382 OFCondition getTemplateIdentification(OFString &templateIdentifier, 00383 OFString &mappingResource) const; 00384 00393 OFCondition setTemplateIdentification(const OFString &templateIdentifier, 00394 const OFString &mappingResource); 00395 00396 00397 protected: 00398 00401 DSRContentItem(); 00402 00406 inline void setTreeNode(DSRDocumentTreeNode *node) 00407 { 00408 TreeNode = node; 00409 } 00410 00411 00412 private: 00413 00415 DSRDocumentTreeNode *TreeNode; 00416 00418 static const OFString EmptyString; 00420 static const DSRCodedEntryValue EmptyCodedEntry; 00422 static const DSRNumericMeasurementValue EmptyNumericMeasurement; 00424 static const DSRSpatialCoordinatesValue EmptySpatialCoordinates; 00426 static const DSRTemporalCoordinatesValue EmptyTemporalCoordinates; 00428 static const DSRCompositeReferenceValue EmptyCompositeReference; 00430 static const DSRImageReferenceValue EmptyImageReference; 00432 static const DSRWaveformReferenceValue EmptyWaveformReference; 00433 00434 00435 // --- declaration of copy constructor and assignment operator 00436 00437 DSRContentItem(const DSRContentItem &); 00438 DSRContentItem &operator=(const DSRContentItem &); 00439 }; 00440 00441 00442 #endif 00443 00444 00445 /* 00446 * CVS/RCS Log: 00447 * $Log: dsrcitem.h,v $ 00448 * Revision 1.19 2010-10-14 13:16:32 joergr 00449 * Updated copyright header. Added reference to COPYRIGHT file. 00450 * 00451 * Revision 1.18 2005-12-08 16:04:50 meichel 00452 * Changed include path schema for all DCMTK header files 00453 * 00454 * Revision 1.17 2003/12/16 15:57:51 joergr 00455 * Added note that the condition for the Content Template Sequence is currently 00456 * not checked. 00457 * 00458 * Revision 1.16 2003/10/30 17:54:09 joergr 00459 * Added full support for the ContentTemplateSequence (read/write, get/set 00460 * template identification). Template constraints are not checked yet. 00461 * 00462 * Revision 1.15 2003/08/07 12:18:57 joergr 00463 * Updated documentation to get rid of doxygen warnings. 00464 * 00465 * Revision 1.14 2001/09/26 13:04:04 meichel 00466 * Adapted dcmsr to class OFCondition 00467 * 00468 * Revision 1.13 2001/05/07 16:13:23 joergr 00469 * Updated CVS header. 00470 * 00471 * Revision 1.12 2001/01/18 15:53:32 joergr 00472 * Added support for digital signatures. 00473 * 00474 * Revision 1.11 2000/11/13 14:19:05 joergr 00475 * Updated comments. 00476 * 00477 * Revision 1.10 2000/11/07 18:11:29 joergr 00478 * Enhanced support for by-reference relationships. 00479 * 00480 * Revision 1.9 2000/11/01 16:11:26 joergr 00481 * Now derive "protected" from base class DSRTypes instead of "public". 00482 * 00483 * Revision 1.8 2000/10/26 14:16:18 joergr 00484 * Added support for "Comprehensive SR". 00485 * Added support for TCOORD content item. 00486 * 00487 * Revision 1.7 2000/10/23 15:06:37 joergr 00488 * Added/updated doc++ comments. 00489 * 00490 * Revision 1.6 2000/10/20 10:15:42 joergr 00491 * Renamed class DSRReferenceValue to DSRCompositeReferenceValue. 00492 * 00493 * Revision 1.5 2000/10/18 16:58:27 joergr 00494 * Added methods allowing direct access to certain content item values. 00495 * 00496 * Revision 1.4 2000/10/17 12:34:31 joergr 00497 * Added method checking content item for validity/completeness. 00498 * Renamed methods for composite objects. 00499 * 00500 * Revision 1.3 2000/10/16 16:29:36 joergr 00501 * Updated comments. 00502 * 00503 * Revision 1.2 2000/10/16 11:55:40 joergr 00504 * Added doc++ comments. 00505 * Added methods allowing direct access to certain content item values. 00506 * 00507 * Revision 1.1 2000/10/13 07:49:23 joergr 00508 * Added new module 'dcmsr' providing access to DICOM structured reporting 00509 * documents (supplement 23). Doc++ documentation not yet completed. 00510 * 00511 * 00512 */