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 DSRDOCTR_H
00032 #define DSRDOCTR_H
00033
00034 #include "dcmtk/config/osconfig.h"
00035
00036 #include "dcmtk/dcmsr/dsrtree.h"
00037 #include "dcmtk/dcmsr/dsrdoctn.h"
00038 #include "dcmtk/dcmsr/dsrcitem.h"
00039
00040 #include "dcmtk/dcmdata/dcitem.h"
00041
00042
00043
00044
00045
00046
00047 class DSRIODConstraintChecker;
00048
00049
00050
00051
00052
00053
00056 class DSRDocumentTree
00057 : public DSRTree
00058 {
00059
00060 public:
00061
00065 DSRDocumentTree(const E_DocumentType documentType);
00066
00069 virtual ~DSRDocumentTree();
00070
00074 virtual void clear();
00075
00082 virtual OFBool isValid() const;
00083
00089 OFCondition print(STD_NAMESPACE ostream &stream,
00090 const size_t flags = 0);
00091
00101 OFCondition read(DcmItem &dataset,
00102 const E_DocumentType documentType,
00103 const size_t flags = 0);
00104
00113 OFCondition write(DcmItem &dataset,
00114 DcmStack *markedItems = NULL);
00115
00122 OFCondition readXML(const DSRXMLDocument &doc,
00123 DSRXMLCursor cursor,
00124 const size_t flags);
00125
00131 OFCondition writeXML(STD_NAMESPACE ostream &stream,
00132 const size_t flags);
00133
00140 OFCondition renderHTML(STD_NAMESPACE ostream &docStream,
00141 STD_NAMESPACE ostream &annexStream,
00142 const size_t flags = 0);
00143
00147 E_DocumentType getDocumentType() const
00148 {
00149 return DocumentType;
00150 }
00151
00158 OFCondition changeDocumentType(const E_DocumentType documentType);
00159
00173 OFBool canAddContentItem(const E_RelationshipType relationshipType,
00174 const E_ValueType valueType,
00175 const E_AddMode addMode = AM_afterCurrent);
00176
00183 OFBool canAddByReferenceRelationship(const E_RelationshipType relationshipType,
00184 const E_ValueType targetValueType);
00185
00196 size_t addContentItem(const E_RelationshipType relationshipType,
00197 const E_ValueType valueType,
00198 const E_AddMode addMode = AM_afterCurrent);
00199
00208 size_t addByReferenceRelationship(const E_RelationshipType relationshipType,
00209 const size_t referencedNodeID);
00210
00218 size_t removeCurrentContentItem();
00219
00224 DSRContentItem &getCurrentContentItem();
00225
00236 size_t gotoNamedNode(const DSRCodedEntryValue &conceptName,
00237 const OFBool startFromRoot = OFTrue,
00238 const OFBool searchIntoSub = OFTrue);
00239
00248 size_t gotoNextNamedNode(const DSRCodedEntryValue &conceptName,
00249 const OFBool searchIntoSub = OFTrue);
00250
00257 void unmarkAllContentItems();
00258
00263 void removeSignatures();
00264
00265
00266 protected:
00267
00277 virtual size_t addNode(DSRDocumentTreeNode *node,
00278 const E_AddMode addMode = AM_afterCurrent);
00279
00287 virtual size_t removeNode();
00288
00303 OFCondition checkByReferenceRelationships(const size_t mode = 0,
00304 const size_t flags = 0);
00305
00309 void resetReferenceTargetFlag();
00310
00311
00312 private:
00313
00321 virtual size_t addNode(DSRTreeNode *node,
00322 const E_AddMode addMode = AM_afterCurrent);
00323
00325 E_DocumentType DocumentType;
00327 DSRContentItem CurrentContentItem;
00329 DSRIODConstraintChecker *ConstraintChecker;
00330
00331
00332
00333
00334 DSRDocumentTree();
00335 DSRDocumentTree(const DSRDocumentTree &);
00336 DSRDocumentTree &operator=(const DSRDocumentTree &);
00337 };
00338
00339
00340 #endif
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
00387
00388
00389
00390
00391
00392
00393
00394
00395
00396
00397
00398
00399
00400
00401
00402
00403
00404
00405
00406
00407
00408
00409
00410
00411
00412
00413
00414
00415
00416
00417
00418
00419
00420
00421
00422
00423
00424
00425
00426