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 #ifndef DSRSOPRF_H
00033 #define DSRSOPRF_H
00034
00035 #include "dcmtk/config/osconfig.h"
00036
00037 #include "dcmtk/ofstd/oflist.h"
00038 #include "dcmtk/ofstd/ofstring.h"
00039 #include "dcmtk/ofstd/ofcond.h"
00040
00041 #include "dcmtk/dcmdata/dcitem.h"
00042 #include "dcmtk/dcmdata/dctagkey.h"
00043
00044 #include "dcmtk/dcmsr/dsrtypes.h"
00045
00046
00047
00048
00049
00050
00053 class DSRSOPInstanceReferenceList
00054 : public DSRTypes
00055 {
00056
00057 public:
00058
00061 struct InstanceStruct
00062 {
00067 InstanceStruct(const OFString &sopClassUID,
00068 const OFString &instanceUID);
00069
00071 const OFString SOPClassUID;
00073 const OFString InstanceUID;
00074 };
00075
00078 struct SeriesStruct
00079 {
00083 SeriesStruct(const OFString &seriesUID);
00084
00087 ~SeriesStruct();
00088
00092 size_t getNumberOfInstances() const;
00093
00098 OFCondition read(DcmItem &dataset);
00099
00104 OFCondition write(DcmItem &dataset) const;
00105
00111 OFCondition readXML(const DSRXMLDocument &doc,
00112 DSRXMLCursor cursor);
00113
00119 OFCondition writeXML(STD_NAMESPACE ostream &stream,
00120 const size_t flags = 0) const;
00121
00126 InstanceStruct *gotoInstance(const OFString &instanceUID);
00127
00132 OFCondition gotoFirstItem();
00133
00138 OFCondition gotoNextItem();
00139
00146 OFCondition addItem(const OFString &sopClassUID,
00147 const OFString &instanceUID);
00148
00153 OFCondition removeItem();
00154
00156 const OFString SeriesUID;
00158 OFString RetrieveAETitle;
00160 OFString StorageMediaFileSetID;
00162 OFString StorageMediaFileSetUID;
00163
00165 OFList<InstanceStruct *> InstanceList;
00167 OFListIterator(InstanceStruct *) Iterator;
00168 };
00169
00172 struct StudyStruct
00173 {
00177 StudyStruct(const OFString &studyUID);
00178
00181 ~StudyStruct();
00182
00186 size_t getNumberOfInstances() const;
00187
00192 OFCondition read(DcmItem &dataset);
00193
00198 OFCondition write(DcmItem &dataset) const;
00199
00205 OFCondition readXML(const DSRXMLDocument &doc,
00206 DSRXMLCursor cursor);
00207
00213 OFCondition writeXML(STD_NAMESPACE ostream &stream,
00214 const size_t flags = 0) const;
00215
00220 SeriesStruct *gotoSeries(const OFString &seriesUID);
00221
00226 InstanceStruct *gotoInstance(const OFString &instanceUID);
00227
00232 OFCondition gotoFirstItem();
00233
00239 OFCondition gotoNextItem();
00240
00248 OFCondition addItem(const OFString &seriesUID,
00249 const OFString &sopClassUID,
00250 const OFString &instanceUID);
00251
00256 OFCondition removeItem();
00257
00262 void removeIncompleteItems();
00263
00265 const OFString StudyUID;
00266
00268 OFList<SeriesStruct *> SeriesList;
00270 OFListIterator(SeriesStruct *) Iterator;
00271 };
00272
00273
00277 DSRSOPInstanceReferenceList(const DcmTagKey &sequence);
00278
00281 ~DSRSOPInstanceReferenceList();
00282
00285 void clear();
00286
00290 OFBool empty() const;
00291
00295 size_t getNumberOfInstances() const;
00296
00305 OFCondition read(DcmItem &dataset);
00306
00312 OFCondition write(DcmItem &dataset) const;
00313
00324 OFCondition readXML(const DSRXMLDocument &doc,
00325 DSRXMLCursor cursor,
00326 const size_t flags);
00327
00333 OFCondition writeXML(STD_NAMESPACE ostream &stream,
00334 const size_t flags = 0) const;
00335
00346 OFCondition addItem(const OFString &studyUID,
00347 const OFString &seriesUID,
00348 const OFString &sopClassUID,
00349 const OFString &instanceUID);
00350
00358 OFCondition addItem(DcmItem &dataset);
00359
00364 OFCondition removeItem();
00365
00372 OFCondition removeItem(const OFString &sopClassUID,
00373 const OFString &instanceUID);
00374
00382 OFCondition removeItem(const OFString &studyUID,
00383 const OFString &seriesUID,
00384 const OFString &instanceUID);
00385
00391 OFCondition gotoItem(const OFString &sopClassUID,
00392 const OFString &instanceUID);
00393
00400 OFCondition gotoItem(const OFString &studyUID,
00401 const OFString &seriesUID,
00402 const OFString &instanceUID);
00403
00410 OFCondition gotoFirstItem();
00411
00420 OFCondition gotoNextItem();
00421
00426 const OFString &getStudyInstanceUID(OFString &stringValue) const;
00427
00432 const OFString &getSeriesInstanceUID(OFString &stringValue) const;
00433
00438 const OFString &getSOPInstanceUID(OFString &stringValue) const;
00439
00444 const OFString &getSOPClassUID(OFString &stringValue) const;
00445
00451 const OFString &getRetrieveAETitle(OFString &stringValue) const;
00452
00457 const OFString &getStorageMediaFileSetID(OFString &stringValue) const;
00458
00463 const OFString &getStorageMediaFileSetUID(OFString &stringValue) const;
00464
00470 OFCondition setRetrieveAETitle(const OFString &value);
00471
00476 OFCondition setStorageMediaFileSetID(const OFString &value);
00477
00482 OFCondition setStorageMediaFileSetUID(const OFString &value);
00483
00484
00485 protected:
00486
00491 StudyStruct *gotoStudy(const OFString &studyUID);
00492
00496 StudyStruct *getCurrentStudy() const;
00497
00501 SeriesStruct *getCurrentSeries() const;
00502
00506 InstanceStruct *getCurrentInstance() const;
00507
00512 void removeIncompleteItems();
00513
00514
00515 private:
00516
00518 const DcmTagKey SequenceTag;
00519
00521 OFList<StudyStruct *> StudyList;
00523 OFListIterator(StudyStruct *) Iterator;
00524
00525
00526 DSRSOPInstanceReferenceList();
00527
00528 DSRSOPInstanceReferenceList(const DSRSOPInstanceReferenceList &);
00529
00530 DSRSOPInstanceReferenceList &operator=(const DSRSOPInstanceReferenceList &);
00531 };
00532
00533
00534 #endif
00535
00536
00537
00538
00539
00540
00541
00542
00543
00544
00545
00546
00547
00548
00549
00550
00551
00552
00553
00554
00555
00556
00557
00558
00559
00560
00561
00562
00563
00564
00565
00566
00567
00568
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