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: DSRContentItem 00024 * 00025 * Last Update: $Author: meichel $ 00026 * Update Date: $Date: 2005/12/08 16:04:50 $ 00027 * CVS/RCS Revision: $Revision: 1.18 $ 00028 * Status: $State: Exp $ 00029 * 00030 * CVS/RCS Log at end of file 00031 * 00032 */ 00033 00034 00035 #ifndef DSRCITEM_H 00036 #define DSRCITEM_H 00037 00038 #include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */ 00039 00040 #include "dcmtk/dcmsr/dsrtypes.h" 00041 #include "dcmtk/dcmsr/dsrdoctn.h" 00042 #include "dcmtk/dcmsr/dsrcodvl.h" 00043 #include "dcmtk/dcmsr/dsrnumvl.h" 00044 #include "dcmtk/dcmsr/dsrscovl.h" 00045 #include "dcmtk/dcmsr/dsrtcovl.h" 00046 #include "dcmtk/dcmsr/dsrcomvl.h" 00047 #include "dcmtk/dcmsr/dsrimgvl.h" 00048 #include "dcmtk/dcmsr/dsrwavvl.h" 00049 00050 #include "dcmtk/ofstd/ofstring.h" 00051 00052 00053 /*---------------------* 00054 * class declaration * 00055 *---------------------*/ 00056 00060 class DSRContentItem 00061 : protected DSRTypes 00062 { 00063 // allow DSRDocumentTree to access protected method setTreeNode() 00064 friend class DSRDocumentTree; 00065 00066 public: 00067 00070 virtual ~DSRContentItem(); 00071 00076 OFBool isValid() const; 00077 00082 OFBool isMarked() const; 00083 00088 void setMark(const OFBool flag); 00089 00094 E_ValueType getValueType() const; 00095 00100 E_RelationshipType getRelationshipType() const; 00101 00106 size_t getReferencedNodeID() const; 00107 00112 const OFString &getStringValue() const; 00113 00120 OFCondition setStringValue(const OFString &stringValue); 00121 00126 DSRCodedEntryValue *getCodeValuePtr(); 00127 00132 const DSRCodedEntryValue &getCodeValue() const; 00133 00139 OFCondition getCodeValue(DSRCodedEntryValue &codeValue) const; 00140 00146 OFCondition setCodeValue(const DSRCodedEntryValue &codeValue); 00147 00152 DSRNumericMeasurementValue *getNumericValuePtr(); 00153 00158 const DSRNumericMeasurementValue &getNumericValue() const; 00159 00165 OFCondition getNumericValue(DSRNumericMeasurementValue &numericValue) const; 00166 00172 OFCondition setNumericValue(const DSRNumericMeasurementValue &numericValue); 00173 00178 DSRSpatialCoordinatesValue *getSpatialCoordinatesPtr(); 00179 00184 const DSRSpatialCoordinatesValue &getSpatialCoordinates() const; 00185 00191 OFCondition getSpatialCoordinates(DSRSpatialCoordinatesValue &coordinatesValue) const; 00192 00198 OFCondition setSpatialCoordinates(const DSRSpatialCoordinatesValue &coordinatesValue); 00199 00204 DSRTemporalCoordinatesValue *getTemporalCoordinatesPtr(); 00205 00210 const DSRTemporalCoordinatesValue &getTemporalCoordinates() const; 00211 00217 OFCondition getTemporalCoordinates(DSRTemporalCoordinatesValue &coordinatesValue) const; 00218 00224 OFCondition setTemporalCoordinates(const DSRTemporalCoordinatesValue &coordinatesValue); 00225 00230 DSRCompositeReferenceValue *getCompositeReferencePtr(); 00231 00236 const DSRCompositeReferenceValue &getCompositeReference() const; 00237 00243 OFCondition getCompositeReference(DSRCompositeReferenceValue &referenceValue) const; 00244 00250 OFCondition setCompositeReference(const DSRCompositeReferenceValue &referenceValue); 00251 00256 DSRImageReferenceValue *getImageReferencePtr(); 00257 00262 const DSRImageReferenceValue &getImageReference() const; 00263 00269 OFCondition getImageReference(DSRImageReferenceValue &referenceValue) const; 00270 00276 OFCondition setImageReference(const DSRImageReferenceValue &referenceValue); 00277 00282 DSRWaveformReferenceValue *getWaveformReferencePtr(); 00283 00288 const DSRWaveformReferenceValue &getWaveformReference() const; 00289 00295 OFCondition getWaveformReference(DSRWaveformReferenceValue &referenceValue) const; 00296 00302 OFCondition setWaveformReference(const DSRWaveformReferenceValue &referenceValue); 00303 00310 E_ContinuityOfContent getContinuityOfContent() const; 00311 00319 OFCondition setContinuityOfContent(const E_ContinuityOfContent continuityOfContent); 00320 00327 DSRCodedEntryValue *getConceptNamePtr(); 00328 00335 const DSRCodedEntryValue &getConceptName() const; 00336 00344 OFCondition getConceptName(DSRCodedEntryValue &conceptName) const; 00345 00353 OFCondition setConceptName(const DSRCodedEntryValue &conceptName); 00354 00361 const OFString &getObservationDateTime() const; 00362 00371 OFCondition setObservationDateTime(const OFString &observationDateTime); 00372 00386 OFCondition getTemplateIdentification(OFString &templateIdentifier, 00387 OFString &mappingResource) const; 00388 00397 OFCondition setTemplateIdentification(const OFString &templateIdentifier, 00398 const OFString &mappingResource); 00399 00400 00401 protected: 00402 00405 DSRContentItem(); 00406 00410 inline void setTreeNode(DSRDocumentTreeNode *node) 00411 { 00412 TreeNode = node; 00413 } 00414 00415 00416 private: 00417 00419 DSRDocumentTreeNode *TreeNode; 00420 00422 static const OFString EmptyString; 00424 static const DSRCodedEntryValue EmptyCodedEntry; 00426 static const DSRNumericMeasurementValue EmptyNumericMeasurement; 00428 static const DSRSpatialCoordinatesValue EmptySpatialCoordinates; 00430 static const DSRTemporalCoordinatesValue EmptyTemporalCoordinates; 00432 static const DSRCompositeReferenceValue EmptyCompositeReference; 00434 static const DSRImageReferenceValue EmptyImageReference; 00436 static const DSRWaveformReferenceValue EmptyWaveformReference; 00437 00438 00439 // --- declaration of copy constructor and assignment operator 00440 00441 DSRContentItem(const DSRContentItem &); 00442 DSRContentItem &operator=(const DSRContentItem &); 00443 }; 00444 00445 00446 #endif 00447 00448 00449 /* 00450 * CVS/RCS Log: 00451 * $Log: dsrcitem.h,v $ 00452 * Revision 1.18 2005/12/08 16:04:50 meichel 00453 * Changed include path schema for all DCMTK header files 00454 * 00455 * Revision 1.17 2003/12/16 15:57:51 joergr 00456 * Added note that the condition for the Content Template Sequence is currently 00457 * not checked. 00458 * 00459 * Revision 1.16 2003/10/30 17:54:09 joergr 00460 * Added full support for the ContentTemplateSequence (read/write, get/set 00461 * template identification). Template constraints are not checked yet. 00462 * 00463 * Revision 1.15 2003/08/07 12:18:57 joergr 00464 * Updated documentation to get rid of doxygen warnings. 00465 * 00466 * Revision 1.14 2001/09/26 13:04:04 meichel 00467 * Adapted dcmsr to class OFCondition 00468 * 00469 * Revision 1.13 2001/05/07 16:13:23 joergr 00470 * Updated CVS header. 00471 * 00472 * Revision 1.12 2001/01/18 15:53:32 joergr 00473 * Added support for digital signatures. 00474 * 00475 * Revision 1.11 2000/11/13 14:19:05 joergr 00476 * Updated comments. 00477 * 00478 * Revision 1.10 2000/11/07 18:11:29 joergr 00479 * Enhanced support for by-reference relationships. 00480 * 00481 * Revision 1.9 2000/11/01 16:11:26 joergr 00482 * Now derive "protected" from base class DSRTypes instead of "public". 00483 * 00484 * Revision 1.8 2000/10/26 14:16:18 joergr 00485 * Added support for "Comprehensive SR". 00486 * Added support for TCOORD content item. 00487 * 00488 * Revision 1.7 2000/10/23 15:06:37 joergr 00489 * Added/updated doc++ comments. 00490 * 00491 * Revision 1.6 2000/10/20 10:15:42 joergr 00492 * Renamed class DSRReferenceValue to DSRCompositeReferenceValue. 00493 * 00494 * Revision 1.5 2000/10/18 16:58:27 joergr 00495 * Added methods allowing direct access to certain content item values. 00496 * 00497 * Revision 1.4 2000/10/17 12:34:31 joergr 00498 * Added method checking content item for validity/completeness. 00499 * Renamed methods for composite objects. 00500 * 00501 * Revision 1.3 2000/10/16 16:29:36 joergr 00502 * Updated comments. 00503 * 00504 * Revision 1.2 2000/10/16 11:55:40 joergr 00505 * Added doc++ comments. 00506 * Added methods allowing direct access to certain content item values. 00507 * 00508 * Revision 1.1 2000/10/13 07:49:23 joergr 00509 * Added new module 'dcmsr' providing access to DICOM structured reporting 00510 * documents (supplement 23). Doc++ documentation not yet completed. 00511 * 00512 * 00513 */