dsrsoprf.h

00001 /*
00002  *
00003  *  Copyright (C) 2002-2005, 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: meichel $
00027  *  Update Date:      $Date: 2005/12/08 16:05:18 $
00028  *  CVS/RCS Revision: $Revision: 1.9 $
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 "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
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  *  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 
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     // default constructor - not implemented!
00560     DSRSOPInstanceReferenceList();
00561     // copy constructor - not implemented!
00562     DSRSOPInstanceReferenceList(const DSRSOPInstanceReferenceList &);
00563     // assignment operator - not implemented!
00564     DSRSOPInstanceReferenceList &operator=(const DSRSOPInstanceReferenceList &);
00565 };
00566 
00567 
00568 #endif
00569 
00570 
00571 /*
00572  *  CVS/RCS Log:
00573  *  $Log: dsrsoprf.h,v $
00574  *  Revision 1.9  2005/12/08 16:05:18  meichel
00575  *  Changed include path schema for all DCMTK header files
00576  *
00577  *  Revision 1.8  2005/07/27 16:33:39  joergr
00578  *  Added method that allows to add a DICOM dataset to the list of references.
00579  *
00580  *  Revision 1.7  2004/11/22 16:39:09  meichel
00581  *  Added method that checks if the SR document contains non-ASCII characters
00582  *    in any of the strings affected by SpecificCharacterSet.
00583  *
00584  *  Revision 1.6  2003/08/07 18:01:42  joergr
00585  *  Removed libxml dependency from header files.
00586  *
00587  *  Revision 1.5  2003/08/07 12:50:12  joergr
00588  *  Added readXML functionality.
00589  *  Renamed parameters/variables "string" to avoid name clash with STL class.
00590  *  Enhanced class DSRSOPInstanceReferenceList: empty/incomplete items (e.g.
00591  *  series with no instances or studies with no series) are automatically
00592  *  removed from the list.
00593  *
00594  *  Revision 1.4  2002/08/30 14:16:59  joergr
00595  *  Removed "friend" statements from class declaration and moved sub-classes to
00596  *  the "public" section (required for Sun CC 6).
00597  *
00598  *  Revision 1.3  2002/05/14 08:16:07  joergr
00599  *  Added removeItem() methods.
00600  *
00601  *  Revision 1.2  2002/05/07 14:04:44  joergr
00602  *  Added "friend" statements to class declaration (required for MSVC).
00603  *
00604  *  Revision 1.1  2002/05/07 12:49:31  joergr
00605  *  Added support for the Current Requested Procedure Evidence Sequence and the
00606  *  Pertinent Other Evidence Sequence to the dcmsr module.
00607  *
00608  *
00609  */


Generated on 20 Dec 2005 for OFFIS DCMTK Version 3.5.4 by Doxygen 1.4.5