dcmsr/include/dcmtk/dcmsr/dsrsoprf.h

00001 /*
00002  *
00003  *  Copyright (C) 2002-2010, OFFIS e.V.
00004  *  All rights reserved.  See COPYRIGHT file for details.
00005  *
00006  *  This software and supporting documentation were developed by
00007  *
00008  *    OFFIS e.V.
00009  *    R&D Division Health
00010  *    Escherweg 2
00011  *    D-26121 Oldenburg, Germany
00012  *
00013  *
00014  *  Module: dcmsr
00015  *
00016  *  Author: Joerg Riesmeier
00017  *
00018  *  Purpose:
00019  *    classes: DSRSOPInstanceReferenceList
00020  *             - InstanceStruct, SeriesStruct, StudyStruct
00021  *
00022  *  Last Update:      $Author: joergr $
00023  *  Update Date:      $Date: 2010-10-14 13:16:33 $
00024  *  CVS/RCS Revision: $Revision: 1.15 $
00025  *  Status:           $State: Exp $
00026  *
00027  *  CVS/RCS Log at end of file
00028  *
00029  */
00030 
00031 
00032 #ifndef DSRSOPRF_H
00033 #define DSRSOPRF_H
00034 
00035 #include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
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  *  class declaration  *
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     // default constructor - not implemented!
00526     DSRSOPInstanceReferenceList();
00527     // copy constructor - not implemented!
00528     DSRSOPInstanceReferenceList(const DSRSOPInstanceReferenceList &);
00529     // assignment operator - not implemented!
00530     DSRSOPInstanceReferenceList &operator=(const DSRSOPInstanceReferenceList &);
00531 };
00532 
00533 
00534 #endif
00535 
00536 
00537 /*
00538  *  CVS/RCS Log:
00539  *  $Log: dsrsoprf.h,v $
00540  *  Revision 1.15  2010-10-14 13:16:33  joergr
00541  *  Updated copyright header. Added reference to COPYRIGHT file.
00542  *
00543  *  Revision 1.14  2010-02-22 11:39:55  uli
00544  *  Remove some unneeded includes.
00545  *
00546  *  Revision 1.13  2009-10-13 14:57:50  uli
00547  *  Switched to logging mechanism provided by the "new" oflog module.
00548  *
00549  *  Revision 1.12  2007-11-15 16:33:19  joergr
00550  *  Fixed coding style to be more consistent.
00551  *
00552  *  Revision 1.11  2006/08/15 16:40:03  meichel
00553  *  Updated the code in module dcmsr to correctly compile when
00554  *    all standard C++ classes remain in namespace std.
00555  *
00556  *  Revision 1.10  2006/05/11 09:18:21  joergr
00557  *  Moved containsExtendedCharacters() from dcmsr to dcmdata module.
00558  *
00559  *  Revision 1.9  2005/12/08 16:05:18  meichel
00560  *  Changed include path schema for all DCMTK header files
00561  *
00562  *  Revision 1.8  2005/07/27 16:33:39  joergr
00563  *  Added method that allows to add a DICOM dataset to the list of references.
00564  *
00565  *  Revision 1.7  2004/11/22 16:39:09  meichel
00566  *  Added method that checks if the SR document contains non-ASCII characters
00567  *    in any of the strings affected by SpecificCharacterSet.
00568  *
00569  *  Revision 1.6  2003/08/07 18:01:42  joergr
00570  *  Removed libxml dependency from header files.
00571  *
00572  *  Revision 1.5  2003/08/07 12:50:12  joergr
00573  *  Added readXML functionality.
00574  *  Renamed parameters/variables "string" to avoid name clash with STL class.
00575  *  Enhanced class DSRSOPInstanceReferenceList: empty/incomplete items (e.g.
00576  *  series with no instances or studies with no series) are automatically
00577  *  removed from the list.
00578  *
00579  *  Revision 1.4  2002/08/30 14:16:59  joergr
00580  *  Removed "friend" statements from class declaration and moved sub-classes to
00581  *  the "public" section (required for Sun CC 6).
00582  *
00583  *  Revision 1.3  2002/05/14 08:16:07  joergr
00584  *  Added removeItem() methods.
00585  *
00586  *  Revision 1.2  2002/05/07 14:04:44  joergr
00587  *  Added "friend" statements to class declaration (required for MSVC).
00588  *
00589  *  Revision 1.1  2002/05/07 12:49:31  joergr
00590  *  Added support for the Current Requested Procedure Evidence Sequence and the
00591  *  Pertinent Other Evidence Sequence to the dcmsr module.
00592  *
00593  *
00594  */


Generated on 6 Jan 2011 for OFFIS DCMTK Version 3.6.0 by Doxygen 1.5.1