Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

dsrsoprf.h

00001 /*
00002  *
00003  *  Copyright (C) 2002-2003, OFFIS
00004  *
00005  *  This software and supporting documentation were developed by
00006  *
00007  *    Kuratorium OFFIS e.V.
00008  *    Healthcare Information and Communication Systems
00009  *    Escherweg 2
00010  *    D-26121 Oldenburg, Germany
00011  *
00012  *  THIS SOFTWARE IS MADE AVAILABLE,  AS IS,  AND OFFIS MAKES NO  WARRANTY
00013  *  REGARDING  THE  SOFTWARE,  ITS  PERFORMANCE,  ITS  MERCHANTABILITY  OR
00014  *  FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES  OR
00015  *  ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY AND
00016  *  PERFORMANCE OF THE SOFTWARE IS WITH THE USER.
00017  *
00018  *  Module: dcmsr
00019  *
00020  *  Author: Joerg Riesmeier
00021  *
00022  *  Purpose:
00023  *    classes: DSRSOPInstanceReferenceList
00024  *             - InstanceStruct, SeriesStruct, StudyStruct
00025  *
00026  *  Last Update:      $Author: joergr $
00027  *  Update Date:      $Date: 2003/08/07 18:01:42 $
00028  *  CVS/RCS Revision: $Revision: 1.6 $
00029  *  Status:           $State: Exp $
00030  *
00031  *  CVS/RCS Log at end of file
00032  *
00033  */
00034 
00035 
00036 #ifndef DSRSOPRF_H
00037 #define DSRSOPRF_H
00038 
00039 #include "osconfig.h"   /* make sure OS specific configuration is included first */
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  *  class declaration  *
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     // default constructor - not implemented!
00534     DSRSOPInstanceReferenceList();
00535     // copy constructor - not implemented!
00536     DSRSOPInstanceReferenceList(const DSRSOPInstanceReferenceList &);
00537     // assignment operator - not implemented!
00538     DSRSOPInstanceReferenceList &operator=(const DSRSOPInstanceReferenceList &);
00539 };
00540 
00541 
00542 #endif
00543 
00544 
00545 /*
00546  *  CVS/RCS Log:
00547  *  $Log: dsrsoprf.h,v $
00548  *  Revision 1.6  2003/08/07 18:01:42  joergr
00549  *  Removed libxml dependency from header files.
00550  *
00551  *  Revision 1.5  2003/08/07 12:50:12  joergr
00552  *  Added readXML functionality.
00553  *  Renamed parameters/variables "string" to avoid name clash with STL class.
00554  *  Enhanced class DSRSOPInstanceReferenceList: empty/incomplete items (e.g.
00555  *  series with no instances or studies with no series) are automatically
00556  *  removed from the list.
00557  *
00558  *  Revision 1.4  2002/08/30 14:16:59  joergr
00559  *  Removed "friend" statements from class declaration and moved sub-classes to
00560  *  the "public" section (required for Sun CC 6).
00561  *
00562  *  Revision 1.3  2002/05/14 08:16:07  joergr
00563  *  Added removeItem() methods.
00564  *
00565  *  Revision 1.2  2002/05/07 14:04:44  joergr
00566  *  Added "friend" statements to class declaration (required for MSVC).
00567  *
00568  *  Revision 1.1  2002/05/07 12:49:31  joergr
00569  *  Added support for the Current Requested Procedure Evidence Sequence and the
00570  *  Pertinent Other Evidence Sequence to the dcmsr module.
00571  *
00572  *
00573  */


Generated on 8 Dec 2004 for OFFIS DCMTK Version 3.5.3 by Doxygen 1.3.9.1