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 "osconfig.h"
00040
00041 #include "oflist.h"
00042 #include "ofstring.h"
00043 #include "ofconsol.h"
00044 #include "ofcond.h"
00045
00046 #include "dcitem.h"
00047 #include "dctagkey.h"
00048
00049 #include "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
00165 const OFString SeriesUID;
00167 OFString RetrieveAETitle;
00169 OFString StorageMediaFileSetID;
00171 OFString StorageMediaFileSetUID;
00172
00174 OFList<InstanceStruct *> InstanceList;
00176 OFListIterator(InstanceStruct *) Iterator;
00177 };
00178
00181 struct StudyStruct
00182 {
00186 StudyStruct(const OFString &studyUID);
00187
00190 ~StudyStruct();
00191
00195 size_t getNumberOfInstances() const;
00196
00202 OFCondition read(DcmItem &dataset,
00203 OFConsole *logStream);
00204
00210 OFCondition write(DcmItem &dataset,
00211 OFConsole *logStream) const;
00212
00218 OFCondition readXML(const DSRXMLDocument &doc,
00219 DSRXMLCursor cursor);
00220
00226 OFCondition writeXML(ostream &stream,
00227 const size_t flags = 0) const;
00228
00233 SeriesStruct *gotoSeries(const OFString &seriesUID);
00234
00239 InstanceStruct *gotoInstance(const OFString &instanceUID);
00240
00245 OFCondition gotoFirstItem();
00246
00252 OFCondition gotoNextItem();
00253
00261 OFCondition addItem(const OFString &seriesUID,
00262 const OFString &sopClassUID,
00263 const OFString &instanceUID);
00264
00269 OFCondition removeItem();
00270
00275 void removeIncompleteItems();
00276
00278 const OFString StudyUID;
00279
00281 OFList<SeriesStruct *> SeriesList;
00283 OFListIterator(SeriesStruct *) Iterator;
00284 };
00285
00286
00290 DSRSOPInstanceReferenceList(const DcmTagKey &sequence);
00291
00294 ~DSRSOPInstanceReferenceList();
00295
00298 void clear();
00299
00303 OFBool empty() const;
00304
00308 size_t getNumberOfInstances() const;
00309
00319 OFCondition read(DcmItem &dataset,
00320 OFConsole *logStream);
00321
00328 OFCondition write(DcmItem &dataset,
00329 OFConsole *logStream) const;
00330
00341 OFCondition readXML(const DSRXMLDocument &doc,
00342 DSRXMLCursor cursor,
00343 const size_t flags);
00344
00350 OFCondition writeXML(ostream &stream,
00351 const size_t flags = 0) const;
00352
00363 OFCondition addItem(const OFString &studyUID,
00364 const OFString &seriesUID,
00365 const OFString &sopClassUID,
00366 const OFString &instanceUID);
00367
00372 OFCondition removeItem();
00373
00380 OFCondition removeItem(const OFString &sopClassUID,
00381 const OFString &instanceUID);
00382
00390 OFCondition removeItem(const OFString &studyUID,
00391 const OFString &seriesUID,
00392 const OFString &instanceUID);
00393
00399 OFCondition gotoItem(const OFString &sopClassUID,
00400 const OFString &instanceUID);
00401
00408 OFCondition gotoItem(const OFString &studyUID,
00409 const OFString &seriesUID,
00410 const OFString &instanceUID);
00411
00418 OFCondition gotoFirstItem();
00419
00428 OFCondition gotoNextItem();
00429
00434 const OFString &getStudyInstanceUID(OFString &stringValue) const;
00435
00440 const OFString &getSeriesInstanceUID(OFString &stringValue) const;
00441
00446 const OFString &getSOPInstanceUID(OFString &stringValue) const;
00447
00452 const OFString &getSOPClassUID(OFString &stringValue) const;
00453
00459 const OFString &getRetrieveAETitle(OFString &stringValue) const;
00460
00465 const OFString &getStorageMediaFileSetID(OFString &stringValue) const;
00466
00471 const OFString &getStorageMediaFileSetUID(OFString &stringValue) const;
00472
00478 OFCondition setRetrieveAETitle(const OFString &value);
00479
00484 OFCondition setStorageMediaFileSetID(const OFString &value);
00485
00490 OFCondition setStorageMediaFileSetUID(const OFString &value);
00491
00492
00493 protected:
00494
00499 StudyStruct *gotoStudy(const OFString &studyUID);
00500
00504 StudyStruct *getCurrentStudy() const;
00505
00509 SeriesStruct *getCurrentSeries() const;
00510
00514 InstanceStruct *getCurrentInstance() const;
00515
00520 void removeIncompleteItems();
00521
00522
00523 private:
00524
00526 const DcmTagKey SequenceTag;
00527
00529 OFList<StudyStruct *> StudyList;
00531 OFListIterator(StudyStruct *) Iterator;
00532
00533
00534 DSRSOPInstanceReferenceList();
00535
00536 DSRSOPInstanceReferenceList(const DSRSOPInstanceReferenceList &);
00537
00538 DSRSOPInstanceReferenceList &operator=(const DSRSOPInstanceReferenceList &);
00539 };
00540
00541
00542 #endif
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