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 DSRDOCTN_H
00036 #define DSRDOCTN_H
00037
00038 #include "osconfig.h"
00039
00040 #include "dsrtree.h"
00041 #include "dsrcodvl.h"
00042 #include "dcitem.h"
00043
00044
00045
00046
00047
00048
00049 class DSRIODConstraintChecker;
00050
00051
00052
00053
00054
00055
00058 class DSRDocumentTreeNode
00059 : public DSRTreeNode
00060 {
00061
00062 friend class DSRContentItem;
00063
00064 public:
00065
00076 DSRDocumentTreeNode(const E_RelationshipType relationshipType,
00077 const E_ValueType valueType);
00078
00081 virtual ~DSRDocumentTreeNode();
00082
00086 virtual void clear();
00087
00093 virtual OFBool isValid() const;
00094
00101 virtual OFBool isShort(const size_t flags) const;
00102
00112 virtual OFCondition print(ostream &stream,
00113 const size_t flags) const;
00114
00124 virtual OFCondition read(DcmItem &dataset,
00125 const DSRIODConstraintChecker *constraintChecker,
00126 const size_t flags,
00127 OFConsole *logStream = NULL);
00128
00139 virtual OFCondition write(DcmItem &dataset,
00140 DcmStack *markedItems = NULL,
00141 OFConsole *logStream = NULL);
00142
00151 virtual OFCondition readXML(const DSRXMLDocument &doc,
00152 DSRXMLCursor cursor,
00153 const E_DocumentType documentType,
00154 const size_t flags);
00155
00162 virtual OFCondition writeXML(ostream &stream,
00163 const size_t flags,
00164 OFConsole *logStream = NULL) const;
00165
00178 virtual OFCondition renderHTML(ostream &docStream,
00179 ostream &annexStream,
00180 const size_t nestingLevel,
00181 size_t &annexNumber,
00182 const size_t flags,
00183 OFConsole *logStream = NULL) const;
00184
00190 inline OFBool isSigned()
00191 {
00192 return (DigitalSignatures.card() > 0);
00193 }
00194
00202 inline OFBool isMarked() const
00203 {
00204 return MarkFlag;
00205 }
00206
00211 inline void setMark(const OFBool flag)
00212 {
00213 MarkFlag = flag;
00214 }
00215
00219 inline OFBool isReferenceTarget() const
00220 {
00221 return ReferenceTarget;
00222 }
00223
00227 inline void setReferenceTarget(const OFBool isTarget = OFTrue)
00228 {
00229 ReferenceTarget = isTarget;
00230 }
00231
00235 inline OFBool hasChildNodes() const
00236 {
00237 return (Down != NULL);
00238 }
00239
00243 inline OFBool hasSiblingNodes() const
00244 {
00245 return (Prev != NULL) || (Next != NULL);
00246 }
00247
00251 inline size_t getNodeID() const
00252 {
00253 return Ident;
00254 }
00255
00259 inline E_RelationshipType getRelationshipType() const
00260 {
00261 return RelationshipType;
00262 }
00263
00267 inline E_ValueType getValueType() const
00268 {
00269 return ValueType;
00270 }
00271
00275 inline const DSRCodedEntryValue &getConceptName() const
00276 {
00277 return ConceptName;
00278 }
00279
00286 OFCondition getConceptName(DSRCodedEntryValue &conceptName) const;
00287
00296 virtual OFCondition setConceptName(const DSRCodedEntryValue &conceptName);
00297
00303 inline const OFString &getObservationDateTime() const
00304 {
00305 return ObservationDateTime;
00306 }
00307
00316 virtual OFCondition setObservationDateTime(const OFString &observationDateTime);
00317
00330 OFCondition getTemplateIdentification(OFString &templateIdentifier,
00331 OFString &mappingResource) const;
00332
00340 virtual OFCondition setTemplateIdentification(const OFString &templateIdentifier,
00341 const OFString &mappingResource);
00342
00347 void removeSignatures();
00348
00349
00350 protected:
00351
00355 inline DSRCodedEntryValue *getConceptNamePtr()
00356 {
00357 return &ConceptName;
00358 }
00359
00371 OFCondition createAndAppendNewNode(DSRDocumentTreeNode *&previousNode,
00372 const E_RelationshipType relationshipType,
00373 const E_ValueType valueType,
00374 const DSRIODConstraintChecker *constraintChecker = NULL);
00375
00383 virtual OFCondition readContentItem(DcmItem &dataset,
00384 OFConsole *logStream);
00385
00393 virtual OFCondition writeContentItem(DcmItem &dataset,
00394 OFConsole *logStream) const;
00395
00403 virtual OFCondition readXMLContentItem(const DSRXMLDocument &doc,
00404 DSRXMLCursor cursor);
00405
00418 virtual OFCondition renderHTMLContentItem(ostream &docStream,
00419 ostream &annexStream,
00420 const size_t nestingLevel,
00421 size_t &annexNumber,
00422 const size_t flags,
00423 OFConsole *logStream) const;
00424
00431 void writeXMLItemStart(ostream &stream,
00432 const size_t flags,
00433 const OFBool closingBracket = OFTrue) const;
00434
00439 void writeXMLItemEnd(ostream &stream,
00440 const size_t flags) const;
00441
00449 OFCondition readSRDocumentContentModule(DcmItem &dataset,
00450 const DSRIODConstraintChecker *constraintChecker,
00451 const size_t flags,
00452 OFConsole *logStream);
00453
00461 OFCondition writeSRDocumentContentModule(DcmItem &dataset,
00462 DcmStack *markedItems,
00463 OFConsole *logStream);
00464
00473 OFCondition readDocumentRelationshipMacro(DcmItem &dataset,
00474 const DSRIODConstraintChecker *constraintChecker,
00475 const OFString &posString,
00476 const size_t flags,
00477 OFConsole *logStream);
00478
00486 OFCondition writeDocumentRelationshipMacro(DcmItem &dataset,
00487 DcmStack *markedItems,
00488 OFConsole *logStream);
00489
00497 OFCondition readDocumentContentMacro(DcmItem &dataset,
00498 const OFString &posString,
00499 const size_t flags,
00500 OFConsole *logStream);
00501
00507 OFCondition writeDocumentContentMacro(DcmItem &dataset,
00508 OFConsole *logStream) const;
00509
00518 OFCondition readContentSequence(DcmItem &dataset,
00519 const DSRIODConstraintChecker *constraintChecker,
00520 const OFString &posString,
00521 const size_t flags,
00522 OFConsole *logStream);
00523
00531 OFCondition writeContentSequence(DcmItem &dataset,
00532 DcmStack *markedItems,
00533 OFConsole *logStream) const;
00534
00542 OFCondition renderHTMLConceptName(ostream &docStream,
00543 const size_t flags,
00544 OFConsole *logStream) const;
00545
00556 OFCondition renderHTMLChildNodes(ostream &docStream,
00557 ostream &annexStream,
00558 const size_t nestingLevel,
00559 size_t &annexNumber,
00560 const size_t flags,
00561 OFConsole *logStream) const;
00562
00563
00564
00573 static const OFString &getRelationshipText(const E_RelationshipType relationshipType,
00574 OFString &relationshipText,
00575 const size_t flags);
00576
00577
00578 private:
00579
00581 OFBool MarkFlag;
00583 OFBool ReferenceTarget;
00584
00586 const E_RelationshipType RelationshipType;
00588 const E_ValueType ValueType;
00589
00591 DSRCodedEntryValue ConceptName;
00593 OFString ObservationDateTime;
00594
00596 OFString TemplateIdentifier;
00598 OFString MappingResource;
00599
00601 DcmSequenceOfItems MACParameters;
00603 DcmSequenceOfItems DigitalSignatures;
00604
00605
00606
00607
00608 DSRDocumentTreeNode();
00609 DSRDocumentTreeNode(const DSRDocumentTreeNode &);
00610 DSRDocumentTreeNode &operator=(const DSRDocumentTreeNode &);
00611 };
00612
00613
00614 #endif
00615
00616
00617
00618
00619
00620
00621
00622
00623
00624
00625
00626
00627
00628
00629
00630
00631
00632
00633
00634
00635
00636
00637
00638
00639
00640
00641
00642
00643
00644
00645
00646
00647
00648
00649
00650
00651
00652
00653
00654
00655
00656
00657
00658
00659
00660
00661
00662
00663
00664
00665
00666
00667
00668
00669
00670
00671
00672
00673
00674
00675
00676
00677
00678
00679
00680
00681
00682
00683
00684
00685
00686
00687
00688