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