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
00036 #ifndef DSRSOPRF_H
00037 #define DSRSOPRF_H
00038
00039 #include "dcmtk/config/osconfig.h"
00040
00041 #include "dcmtk/ofstd/oflist.h"
00042 #include "dcmtk/ofstd/ofstring.h"
00043 #include "dcmtk/ofstd/ofconsol.h"
00044 #include "dcmtk/ofstd/ofcond.h"
00045
00046 #include "dcmtk/dcmdata/dcitem.h"
00047 #include "dcmtk/dcmdata/dctagkey.h"
00048
00049 #include "dcmtk/dcmsr/dsrtypes.h"
00050
00051
00052
00053
00054
00055
00058 class DSRSOPInstanceReferenceList
00059 : public DSRTypes
00060 {
00061
00062 public:
00063
00066 struct InstanceStruct
00067 {
00072 InstanceStruct(const OFString &sopClassUID,
00073 const OFString &instanceUID);
00074
00076 const OFString SOPClassUID;
00078 const OFString InstanceUID;
00079 };
00080
00083 struct SeriesStruct
00084 {
00088 SeriesStruct(const OFString &seriesUID);
00089
00092 ~SeriesStruct();
00093
00097 size_t getNumberOfInstances() const;
00098
00104 OFCondition read(DcmItem &dataset,
00105 OFConsole *logStream);
00106
00112 OFCondition write(DcmItem &dataset,
00113 OFConsole *logStream) const;
00114
00120 OFCondition readXML(const DSRXMLDocument &doc,
00121 DSRXMLCursor cursor);
00122
00128 OFCondition writeXML(ostream &stream,
00129 const size_t flags = 0) const;
00130
00135 InstanceStruct *gotoInstance(const OFString &instanceUID);
00136
00141 OFCondition gotoFirstItem();
00142
00147 OFCondition gotoNextItem();
00148
00155 OFCondition addItem(const OFString &sopClassUID,
00156 const OFString &instanceUID);
00157
00162 OFCondition removeItem();
00163
00168 OFBool containsExtendedCharacters();
00169
00171 const OFString SeriesUID;
00173 OFString RetrieveAETitle;
00175 OFString StorageMediaFileSetID;
00177 OFString StorageMediaFileSetUID;
00178
00180 OFList<InstanceStruct *> InstanceList;
00182 OFListIterator(InstanceStruct *) Iterator;
00183 };
00184
00187 struct StudyStruct
00188 {
00192 StudyStruct(const OFString &studyUID);
00193
00196 ~StudyStruct();
00197
00201 size_t getNumberOfInstances() const;
00202
00208 OFCondition read(DcmItem &dataset,
00209 OFConsole *logStream);
00210
00216 OFCondition write(DcmItem &dataset,
00217 OFConsole *logStream) const;
00218
00224 OFCondition readXML(const DSRXMLDocument &doc,
00225 DSRXMLCursor cursor);
00226
00232 OFCondition writeXML(ostream &stream,
00233 const size_t flags = 0) const;
00234
00239 SeriesStruct *gotoSeries(const OFString &seriesUID);
00240
00245 InstanceStruct *gotoInstance(const OFString &instanceUID);
00246
00251 OFCondition gotoFirstItem();
00252
00258 OFCondition gotoNextItem();
00259
00267 OFCondition addItem(const OFString &seriesUID,
00268 const OFString &sopClassUID,
00269 const OFString &instanceUID);
00270
00275 OFCondition removeItem();
00276
00281 void removeIncompleteItems();
00282
00287 OFBool containsExtendedCharacters();
00288
00290 const OFString StudyUID;
00291
00293 OFList<SeriesStruct *> SeriesList;
00295 OFListIterator(SeriesStruct *) Iterator;
00296 };
00297
00298
00302 DSRSOPInstanceReferenceList(const DcmTagKey &sequence);
00303
00306 ~DSRSOPInstanceReferenceList();
00307
00310 void clear();
00311
00315 OFBool empty() const;
00316
00320 size_t getNumberOfInstances() const;
00321
00331 OFCondition read(DcmItem &dataset,
00332 OFConsole *logStream);
00333
00340 OFCondition write(DcmItem &dataset,
00341 OFConsole *logStream) const;
00342
00353 OFCondition readXML(const DSRXMLDocument &doc,
00354 DSRXMLCursor cursor,
00355 const size_t flags);
00356
00362 OFCondition writeXML(ostream &stream,
00363 const size_t flags = 0) const;
00364
00375 OFCondition addItem(const OFString &studyUID,
00376 const OFString &seriesUID,
00377 const OFString &sopClassUID,
00378 const OFString &instanceUID);
00379
00387 OFCondition addItem(DcmItem &dataset);
00388
00393 OFCondition removeItem();
00394
00401 OFCondition removeItem(const OFString &sopClassUID,
00402 const OFString &instanceUID);
00403
00411 OFCondition removeItem(const OFString &studyUID,
00412 const OFString &seriesUID,
00413 const OFString &instanceUID);
00414
00420 OFCondition gotoItem(const OFString &sopClassUID,
00421 const OFString &instanceUID);
00422
00429 OFCondition gotoItem(const OFString &studyUID,
00430 const OFString &seriesUID,
00431 const OFString &instanceUID);
00432
00439 OFCondition gotoFirstItem();
00440
00449 OFCondition gotoNextItem();
00450
00455 const OFString &getStudyInstanceUID(OFString &stringValue) const;
00456
00461 const OFString &getSeriesInstanceUID(OFString &stringValue) const;
00462
00467 const OFString &getSOPInstanceUID(OFString &stringValue) const;
00468
00473 const OFString &getSOPClassUID(OFString &stringValue) const;
00474
00480 const OFString &getRetrieveAETitle(OFString &stringValue) const;
00481
00486 const OFString &getStorageMediaFileSetID(OFString &stringValue) const;
00487
00492 const OFString &getStorageMediaFileSetUID(OFString &stringValue) const;
00493
00499 OFCondition setRetrieveAETitle(const OFString &value);
00500
00505 OFCondition setStorageMediaFileSetID(const OFString &value);
00506
00511 OFCondition setStorageMediaFileSetUID(const OFString &value);
00512
00517 OFBool containsExtendedCharacters();
00518
00519 protected:
00520
00525 StudyStruct *gotoStudy(const OFString &studyUID);
00526
00530 StudyStruct *getCurrentStudy() const;
00531
00535 SeriesStruct *getCurrentSeries() const;
00536
00540 InstanceStruct *getCurrentInstance() const;
00541
00546 void removeIncompleteItems();
00547
00548
00549 private:
00550
00552 const DcmTagKey SequenceTag;
00553
00555 OFList<StudyStruct *> StudyList;
00557 OFListIterator(StudyStruct *) Iterator;
00558
00559
00560 DSRSOPInstanceReferenceList();
00561
00562 DSRSOPInstanceReferenceList(const DSRSOPInstanceReferenceList &);
00563
00564 DSRSOPInstanceReferenceList &operator=(const DSRSOPInstanceReferenceList &);
00565 };
00566
00567
00568 #endif
00569
00570
00571
00572
00573
00574
00575
00576
00577
00578
00579
00580
00581
00582
00583
00584
00585
00586
00587
00588
00589
00590
00591
00592
00593
00594
00595
00596
00597
00598
00599
00600
00601
00602
00603
00604
00605
00606
00607
00608
00609