dcmdata/include/dcmtk/dcmdata/dcddirif.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:  dcmdata
00015  *
00016  *  Author:  Joerg Riesmeier
00017  *
00018  *  Purpose: Interface class for simplified creation of a DICOMDIR
00019  *
00020  *  Last Update:      $Author: joergr $
00021  *  Update Date:      $Date: 2010-11-05 13:11:11 $
00022  *  CVS/RCS Revision: $Revision: 1.23 $
00023  *  Status:           $State: Exp $
00024  *
00025  *  CVS/RCS Log at end of file
00026  *
00027  */
00028 
00029 
00030 #ifndef DCDDIRIF_H
00031 #define DCDDIRIF_H
00032 
00033 #include "dcmtk/config/osconfig.h"
00034 
00035 #include "dcmtk/dcmdata/dcdicdir.h"
00036 
00037 
00038 /*-----------------------------------*
00039  *  contant declarations and macros  *
00040  *-----------------------------------*/
00041 
00042 // default fileset ID
00043 #define DEFAULT_FILESETID "DCMTK_MEDIA_DEMO"
00044 // default specific character set of fileset descriptor file
00045 #define DEFAULT_DESCRIPTOR_CHARSET "ISO_IR 100"
00046 
00047 
00048 /*----------------------*
00049  *  class declarations  *
00050  *----------------------*/
00051 
00057 class DicomDirImagePlugin
00058 {
00059   public:
00060 
00063     virtual ~DicomDirImagePlugin() {}
00064 
00075     virtual OFBool scaleData(const Uint8 *srcData,
00076                              const unsigned int srcWidth,
00077                              const unsigned int srcHeight,
00078                              Uint8 *dstData,
00079                              const unsigned int dstWidth,
00080                              const unsigned int dstHeight) const = 0;
00081 
00093     virtual OFBool scaleImage(DcmItem *dataset,
00094                               Uint8 *pixel,
00095                               const unsigned long count,
00096                               const unsigned long frame,
00097                               const unsigned int width,
00098                               const unsigned int height,
00099                               const OFBool decompressAll = OFFalse) const = 0;
00100 
00101   protected:
00102 
00105     DicomDirImagePlugin() {}
00106 };
00107 
00108 
00111 class DicomDirInterface
00112 {
00113 
00114   public:
00115 
00118     enum E_ApplicationProfile
00119     {
00121         AP_GeneralPurpose,
00123         AP_Default = AP_GeneralPurpose,
00125         AP_GeneralPurposeDVD,
00127         AP_GeneralPurposeMIME,
00129         AP_USBandFlash,
00131         AP_MPEG2MPatMLDVD,
00133         AP_BasicCardiac,
00135         AP_XrayAngiographic,
00137         AP_XrayAngiographicDVD,
00139         AP_DentalRadiograph,
00141         AP_CTandMR,
00143         AP_UltrasoundIDSF,
00145         AP_UltrasoundSCSF,
00147         AP_UltrasoundCCSF,
00149         AP_UltrasoundIDMF,
00151         AP_UltrasoundSCMF,
00153         AP_UltrasoundCCMF,
00155         AP_TwelveLeadECG,
00157         AP_HemodynamicWaveform
00158     };
00159 
00164     DicomDirInterface();
00165 
00169     virtual ~DicomDirInterface();
00170 
00174     void cleanup();
00175 
00180     OFBool isDicomDirValid() const;
00181 
00193     OFCondition createNewDicomDir(const E_ApplicationProfile profile = AP_GeneralPurpose,
00194                                   const char *filename = DEFAULT_DICOMDIR_NAME,
00195                                   const char *filesetID = DEFAULT_FILESETID);
00196 
00208     OFCondition appendToDicomDir(const E_ApplicationProfile profile,
00209                                  const char *filename);
00210 
00222     OFCondition updateDicomDir(const E_ApplicationProfile profile,
00223                                const char *filename);
00224 
00231     OFCondition writeDicomDir(const E_EncodingType encodingType = EET_UndefinedLength,
00232                               const E_GrpLenEncoding groupLength = EGL_withoutGL);
00233 
00243     OFBool isFilenameValid(const char *filename,
00244                            const OFBool allowEmpty = OFFalse);
00245 
00253     OFBool isCharsetValid(const char *charset);
00254 
00265     OFCondition checkDicomFile(const char *filename,
00266                                const char *directory = NULL);
00267 
00277     OFCondition addDicomFile(const char *filename,
00278                              const char *directory = NULL);
00279 
00289     OFCondition setFilesetDescriptor(const char *filename,
00290                                      const char *charset = DEFAULT_DESCRIPTOR_CHARSET);
00291 
00298     OFCondition setIconSize(const unsigned int size);
00299 
00308     OFCondition setIconPrefix(const char *prefix);
00309 
00317     OFCondition setDefaultIcon(const char *filename);
00318 
00323     OFBool abortMode() const
00324     {
00325         return AbortMode;
00326     }
00327 
00332     OFBool mapFilenamesMode() const
00333     {
00334         return MapFilenamesMode;
00335     }
00336 
00341     OFBool inventMode() const
00342     {
00343         return InventMode;
00344     }
00345 
00350     OFBool inventPatientIDMode() const
00351     {
00352         return InventPatientIDMode;
00353     }
00354 
00359     OFBool retiredSOPClassSupport() const
00360     {
00361         return RetiredSOPClassSupport;
00362     }
00363 
00368     OFBool iconImageMode() const
00369     {
00370         return IconImageMode;
00371     }
00372 
00377     OFBool backupMode() const
00378     {
00379         return BackupMode;
00380     }
00381 
00386     OFBool encodingCheck() const
00387     {
00388         return EncodingCheck;
00389     }
00390 
00395     OFBool resolutionCheck() const
00396     {
00397         return ResolutionCheck;
00398     }
00399 
00404     OFBool transferSyntaxCheck() const
00405     {
00406         return TransferSyntaxCheck;
00407     }
00408 
00413     OFBool consistencyCheck() const
00414     {
00415         return ConsistencyCheck;
00416     }
00417 
00425     OFBool enableAbortMode(const OFBool newMode = OFTrue);
00426 
00434     OFBool enableMapFilenamesMode(const OFBool newMode = OFTrue);
00435 
00443     OFBool enableInventMode(const OFBool newMode = OFTrue);
00444 
00453     OFBool enableInventPatientIDMode(const OFBool newMode = OFTrue);
00454 
00462     OFBool enableRetiredSOPClassSupport(const OFBool newMode = OFTrue);
00463 
00473     OFBool enableIconImageMode(const OFBool newMode = OFTrue);
00474 
00483     OFBool disableBackupMode(const OFBool newMode = OFFalse);
00484 
00494     OFBool disableEncodingCheck(const OFBool newMode = OFFalse);
00495 
00505     OFBool disableResolutionCheck(const OFBool newMode = OFFalse);
00506 
00516     OFBool disableTransferSyntaxCheck(const OFBool newMode = OFFalse);
00517 
00526     OFBool disableConsistencyCheck(const OFBool newMode = OFFalse);
00527 
00534     OFBool addImageSupport(DicomDirImagePlugin *plugin);
00535 
00536     /* -- static function -- */
00537 
00542     static const char *getProfileName(const E_ApplicationProfile profile);
00543 
00544 
00545   protected:
00546 
00551     OFCondition selectApplicationProfile(const E_ApplicationProfile profile);
00552 
00559     OFCondition loadAndCheckDicomFile(const char *filename,
00560                                       const char *directory,
00561                                       DcmFileFormat &fileformat);
00562 
00569     OFCondition checkSOPClassAndXfer(DcmMetaInfo *metainfo,
00570                                      DcmItem *dataset,
00571                                      const char *filename);
00572 
00578     OFCondition checkBasicCardiacAttributes(DcmItem *dataset,
00579                                             const char *filename);
00580 
00587     OFCondition checkXrayAngiographicAttributes(DcmItem *dataset,
00588                                                 const OFString &sopClass,
00589                                                 const char *filename);
00590 
00596     OFCondition checkDentalRadiographAttributes(DcmItem *dataset,
00597                                                 const char *filename);
00598 
00605     OFCondition checkCTandMRAttributes(DcmItem *dataset,
00606                                        const OFString &sopClass,
00607                                        const char *filename);
00608 
00615     OFCondition checkUltrasoundAttributes(DcmItem *dataset,
00616                                           const OFString &transferSyntax,
00617                                           const char *filename);
00618 
00625     OFCondition checkMandatoryAttributes(DcmMetaInfo *metainfo,
00626                                          DcmItem *dataset,
00627                                          const char *filename);
00628 
00638     OFBool recordMatchesDataset(DcmDirectoryRecord *record,
00639                                 DcmItem *dataset);
00640 
00647     DcmDirectoryRecord *findExistingRecord(DcmDirectoryRecord *parent,
00648                                            const E_DirRecType recordType,
00649                                            DcmItem* dataset);
00650 
00657     DcmDirectoryRecord *buildPatientRecord(DcmDirectoryRecord *record,
00658                                            DcmItem *dataset,
00659                                            const OFString &sourceFilename);
00660 
00667     DcmDirectoryRecord *buildStudyRecord(DcmDirectoryRecord *record,
00668                                          DcmItem *dataset,
00669                                          const OFString &sourceFilename);
00670 
00677     DcmDirectoryRecord *buildSeriesRecord(DcmDirectoryRecord *record,
00678                                           DcmItem *dataset,
00679                                           const OFString &sourceFilename);
00680 
00688     DcmDirectoryRecord *buildOverlayRecord(DcmDirectoryRecord *record,
00689                                            DcmItem *dataset,
00690                                            const OFString &referencedFileID,
00691                                            const OFString &sourceFilename);
00692 
00700     DcmDirectoryRecord *buildModalityLutRecord(DcmDirectoryRecord *record,
00701                                                DcmItem *dataset,
00702                                                const OFString &referencedFileID,
00703                                                const OFString &sourceFilename);
00704 
00712     DcmDirectoryRecord *buildVoiLutRecord(DcmDirectoryRecord *record,
00713                                           DcmItem *dataset,
00714                                           const OFString &referencedFileID,
00715                                           const OFString &sourceFilename);
00716 
00724     DcmDirectoryRecord *buildCurveRecord(DcmDirectoryRecord *record,
00725                                          DcmItem *dataset,
00726                                          const OFString &referencedFileID,
00727                                          const OFString &sourceFilename);
00728 
00736     DcmDirectoryRecord *buildStructReportRecord(DcmDirectoryRecord *record,
00737                                                 DcmItem *dataset,
00738                                                 const OFString &referencedFileID,
00739                                                 const OFString &sourceFilename);
00740 
00748     DcmDirectoryRecord *buildPresentationRecord(DcmDirectoryRecord *record,
00749                                                 DcmItem *dataset,
00750                                                 const OFString &referencedFileID,
00751                                                 const OFString &sourceFilename);
00752 
00760     DcmDirectoryRecord *buildWaveformRecord(DcmDirectoryRecord *record,
00761                                             DcmItem *dataset,
00762                                             const OFString &referencedFileID,
00763                                             const OFString &sourceFilename);
00764 
00772     DcmDirectoryRecord *buildRTDoseRecord(DcmDirectoryRecord *record,
00773                                           DcmItem *dataset,
00774                                           const OFString &referencedFileID,
00775                                           const OFString &sourceFilename);
00776 
00784     DcmDirectoryRecord *buildRTStructureSetRecord(DcmDirectoryRecord *record,
00785                                                   DcmItem *dataset,
00786                                                   const OFString &referencedFileID,
00787                                                   const OFString &sourceFilename);
00788 
00796     DcmDirectoryRecord *buildRTPlanRecord(DcmDirectoryRecord *record,
00797                                           DcmItem *dataset,
00798                                           const OFString &referencedFileID,
00799                                           const OFString &sourceFilename);
00800 
00808     DcmDirectoryRecord *buildRTTreatmentRecord(DcmDirectoryRecord *record,
00809                                                DcmItem *dataset,
00810                                                const OFString &referencedFileID,
00811                                                const OFString &sourceFilename);
00812 
00820     DcmDirectoryRecord *buildStoredPrintRecord(DcmDirectoryRecord *record,
00821                                                DcmItem *dataset,
00822                                                const OFString &referencedFileID,
00823                                                const OFString &sourceFilename);
00824 
00832     DcmDirectoryRecord *buildKeyObjectDocRecord(DcmDirectoryRecord *record,
00833                                                 DcmItem *dataset,
00834                                                 const OFString &referencedFileID,
00835                                                 const OFString &sourceFilename);
00836 
00844     DcmDirectoryRecord *buildRegistrationRecord(DcmDirectoryRecord *record,
00845                                                 DcmItem *dataset,
00846                                                 const OFString &referencedFileID,
00847                                                 const OFString &sourceFilename);
00848 
00856     DcmDirectoryRecord *buildFiducialRecord(DcmDirectoryRecord *record,
00857                                             DcmItem *dataset,
00858                                             const OFString &referencedFileID,
00859                                             const OFString &sourceFilename);
00860 
00868     DcmDirectoryRecord *buildRawDataRecord(DcmDirectoryRecord *record,
00869                                            DcmItem *dataset,
00870                                            const OFString &referencedFileID,
00871                                            const OFString &sourceFilename);
00872 
00880     DcmDirectoryRecord *buildSpectroscopyRecord(DcmDirectoryRecord *record,
00881                                                 DcmItem *dataset,
00882                                                 const OFString &referencedFileID,
00883                                                 const OFString &sourceFilename);
00884 
00892     DcmDirectoryRecord *buildEncapDocRecord(DcmDirectoryRecord *record,
00893                                             DcmItem *dataset,
00894                                             const OFString &referencedFileID,
00895                                             const OFString &sourceFilename);
00896 
00904     DcmDirectoryRecord *buildValueMapRecord(DcmDirectoryRecord *record,
00905                                             DcmItem *dataset,
00906                                             const OFString &referencedFileID,
00907                                             const OFString &sourceFilename);
00908 
00916     DcmDirectoryRecord *buildHangingProtocolRecord(DcmDirectoryRecord *record,
00917                                                    DcmItem *dataset,
00918                                                    const OFString &referencedFileID,
00919                                                    const OFString &sourceFilename);
00920 
00928     DcmDirectoryRecord *buildStereometricRecord(DcmDirectoryRecord *record,
00929                                                 DcmItem *dataset,
00930                                                 const OFString &referencedFileID,
00931                                                 const OFString &sourceFilename);
00932 
00940     DcmDirectoryRecord *buildPaletteRecord(DcmDirectoryRecord *record,
00941                                            DcmItem *dataset,
00942                                            const OFString &referencedFileID,
00943                                            const OFString &sourceFilename);
00944 
00952     DcmDirectoryRecord *buildSurfaceRecord(DcmDirectoryRecord *record,
00953                                            DcmItem *dataset,
00954                                            const OFString &referencedFileID,
00955                                            const OFString &sourceFilename);
00956 
00964     DcmDirectoryRecord *buildMeasurementRecord(DcmDirectoryRecord *record,
00965                                                DcmItem *dataset,
00966                                                const OFString &referencedFileID,
00967                                                const OFString &sourceFilename);
00968 
00976     DcmDirectoryRecord *buildImplantRecord(DcmDirectoryRecord *record,
00977                                            DcmItem *dataset,
00978                                            const OFString &referencedFileID,
00979                                            const OFString &sourceFilename);
00980 
00988     DcmDirectoryRecord *buildImplantGroupRecord(DcmDirectoryRecord *record,
00989                                                 DcmItem *dataset,
00990                                                 const OFString &referencedFileID,
00991                                                 const OFString &sourceFilename);
00992 
01000     DcmDirectoryRecord *buildImplantAssyRecord(DcmDirectoryRecord *record,
01001                                                DcmItem *dataset,
01002                                                const OFString &referencedFileID,
01003                                                const OFString &sourceFilename);
01004 
01012     DcmDirectoryRecord *buildImageRecord(DcmDirectoryRecord *record,
01013                                          DcmItem *dataset,
01014                                          const OFString &referencedFileID,
01015                                          const OFString &sourceFilename);
01016 
01027     OFBool getIconFromFile(const OFString &filename,
01028                            Uint8 *pixel,
01029                            const unsigned long count,
01030                            const unsigned int width,
01031                            const unsigned int height);
01032 
01042     OFBool getIconFromDataset(DcmItem *dataset,
01043                               Uint8 *pixel,
01044                               const unsigned long count,
01045                               const unsigned int width,
01046                               const unsigned int height);
01047 
01058     OFCondition addIconImage(DcmDirectoryRecord *record,
01059                              DcmItem *dataset,
01060                              const unsigned int size,
01061                              const OFString &sourceFilename);
01062 
01072     DcmDirectoryRecord *addRecord(DcmDirectoryRecord *parent,
01073                                   const E_DirRecType recordType,
01074                                   DcmItem *dataset,
01075                                   const OFString &referencedFileID,
01076                                   const OFString &sourceFilename);
01077 
01084     OFBool checkReferencedSOPInstance(DcmDirectoryRecord *record,
01085                                       DcmItem *dataset,
01086                                       const OFString &referencedFileID,
01087                                       const OFString &sourceFilename);
01088 
01094     void inventMissingAttributes(DcmDirectoryRecord *parent,
01095                                  const OFBool recurse = OFTrue);
01096 
01100     void inventMissingStudyLevelAttributes(DcmDirectoryRecord *parent);
01101 
01105     void inventMissingSeriesLevelAttributes(DcmDirectoryRecord *parent);
01106 
01110     void inventMissingInstanceLevelAttributes(DcmDirectoryRecord *parent);
01111 
01115     void createDicomDirBackup(const char *filename);
01116 
01119     void deleteDicomDirBackup();
01120 
01128     void printUnexpectedValueMessage(const DcmTagKey &key,
01129                                      const char *filename = NULL,
01130                                      const OFBool errorMsg = OFTrue);
01131 
01139     void printRequiredAttributeMessage(const DcmTagKey &key,
01140                                        const char *filename = NULL,
01141                                        const OFBool emptyMsg = OFFalse);
01142 
01150     void printAttributeErrorMessage(const DcmTagKey &key,
01151                                     const OFCondition &error,
01152                                     const char *operation);
01153 
01161     void printRecordErrorMessage(const OFCondition &error,
01162                                  const E_DirRecType recordType,
01163                                  const char *operation);
01164 
01170     OFBool copyFile(const char *fromFilename,
01171                     const char *toFilename);
01172 
01180     OFBool warnAboutInconsistentAttributes(DcmDirectoryRecord *record,
01181                                            DcmItem *dataset,
01182                                            const OFString &sourceFilename,
01183                                            const OFBool abortCheck = OFFalse);
01184 
01189     OFBool checkFilesetID(const OFString &filesetID);
01190 
01197     OFBool checkExists(DcmItem *dataset,
01198                        const DcmTagKey &key,
01199                        const char *filename = NULL);
01200 
01207     OFBool checkExistsWithValue(DcmItem *dataset,
01208                                 const DcmTagKey &key,
01209                                 const char *filename = NULL);
01210 
01218     OFBool checkExistsWithStringValue(DcmItem *dataset,
01219                                       const DcmTagKey &key,
01220                                       const OFString &value,
01221                                       const char *filename = NULL);
01222 
01231     OFBool checkExistsWithIntegerValue(DcmItem *dataset,
01232                                        const DcmTagKey &key,
01233                                        const long value,
01234                                        const char *filename = NULL,
01235                                        const OFBool reject = OFTrue);
01236 
01246     OFBool checkExistsWithMinMaxValue(DcmItem *dataset,
01247                                       const DcmTagKey &key,
01248                                       const long min,
01249                                       const long max,
01250                                       const char *filename = NULL,
01251                                       const OFBool reject = OFTrue);
01252 
01260     OFString &getStringFromDataset(DcmItem *dataset,
01261                                    const DcmTagKey &key,
01262                                    OFString &result,
01263                                    OFBool searchIntoSub = OFFalse);
01264 
01273     OFString &getStringComponentFromDataset(DcmItem *dataset,
01274                                             const DcmTagKey &key,
01275                                             OFString &result,
01276                                             const unsigned long pos,
01277                                             OFBool searchIntoSub = OFFalse);
01278 
01286     OFString &getStringFromFile(const char *filename,
01287                                 const DcmTagKey &key,
01288                                 OFString &result,
01289                                 OFBool searchIntoSub = OFFalse);
01290 
01299     void copyElement(DcmItem *dataset,
01300                      const DcmTagKey &key,
01301                      DcmDirectoryRecord *record,
01302                      const OFString &sourceFilename,
01303                      const OFBool optional = OFFalse,
01304                      const OFBool copyEmpty = OFTrue);
01305 
01312     void copyElementType1(DcmItem *dataset,
01313                           const DcmTagKey &key,
01314                           DcmDirectoryRecord *record,
01315                           const OFString &sourceFilename)
01316     {
01317         copyElement(dataset, key, record, sourceFilename, OFFalse /*optional*/, OFFalse /*copyEmpty*/);
01318     }
01319 
01326     void copyElementType1C(DcmItem *dataset,
01327                           const DcmTagKey &key,
01328                           DcmDirectoryRecord *record,
01329                           const OFString &sourceFilename)
01330     {
01331         copyElement(dataset, key, record, sourceFilename, OFTrue /*optional*/, OFFalse /*copyEmpty*/);
01332     }
01333 
01340     void copyElementType2(DcmItem *dataset,
01341                           const DcmTagKey &key,
01342                           DcmDirectoryRecord *record,
01343                           const OFString &sourceFilename)
01344     {
01345         copyElement(dataset, key, record, sourceFilename, OFFalse /*optional*/, OFTrue /*copyEmpty*/);
01346     }
01347 
01354     void copyElementType3(DcmItem *dataset,
01355                           const DcmTagKey &key,
01356                           DcmDirectoryRecord *record,
01357                           const OFString &sourceFilename)
01358     {
01359         copyElement(dataset, key, record, sourceFilename, OFTrue /*optional*/, OFTrue /*copyEmpty*/);
01360     }
01361 
01371     void copyStringWithDefault(DcmItem *dataset,
01372                                const DcmTagKey &key,
01373                                DcmDirectoryRecord *record,
01374                                const OFString &sourceFilename,
01375                                const char *defaultValue = "",
01376                                const OFBool printWarning = OFFalse);
01377 
01387     OFBool compareStringAttributes(DcmItem *dataset,
01388                                    const DcmTagKey &datKey,
01389                                    DcmDirectoryRecord *record,
01390                                    const DcmTagKey &recKey,
01391                                    const OFString &sourceFilename,
01392                                    const OFBool errorMsg = OFFalse);
01393 
01401     OFBool compareSequenceAttributes(DcmItem *dataset,
01402                                      DcmTagKey &key,
01403                                      DcmDirectoryRecord *record,
01404                                      const OFString &sourceFilename);
01405 
01412     void setDefaultValue(DcmDirectoryRecord *record,
01413                          const DcmTagKey &key,
01414                          const unsigned long number,
01415                          const char *prefix = NULL);
01416 
01417 
01418   private:
01419 
01421     DcmDicomDir *DicomDir;
01422 
01424     DicomDirImagePlugin *ImagePlugin;
01425 
01427     E_ApplicationProfile ApplicationProfile;
01428 
01430     OFBool BackupMode;
01432     OFBool AbortMode;
01434     OFBool MapFilenamesMode;
01436     OFBool InventMode;
01438     OFBool InventPatientIDMode;
01440     OFBool RetiredSOPClassSupport;
01442     OFBool EncodingCheck;
01444     OFBool ResolutionCheck;
01446     OFBool TransferSyntaxCheck;
01448     OFBool ConsistencyCheck;
01450     OFBool IconImageMode;
01452     OFBool FilesetUpdateMode;
01453 
01455     OFString BackupFilename;
01457     OFBool BackupCreated;
01458 
01460     unsigned int IconSize;
01462     OFString IconPrefix;
01464     OFString DefaultIcon;
01465 
01467     OFBool RLESupport;
01469     OFBool JPEGSupport;
01471     OFBool JP2KSupport;
01472 
01474     unsigned long AutoPatientNumber;
01476     unsigned long AutoStudyNumber;
01478     unsigned long AutoSeriesNumber;
01480     unsigned long AutoInstanceNumber;
01482     unsigned long AutoOverlayNumber;
01484     unsigned long AutoLutNumber;
01486     unsigned long AutoCurveNumber;
01487 
01489     DicomDirInterface(const DicomDirInterface &obj);
01490 
01492     DicomDirInterface &operator=(const DicomDirInterface &obj);
01493 };
01494 
01495 
01496 #endif
01497 
01498 
01499 /*
01500  *
01501  * CVS/RCS Log:
01502  * $Log: dcddirif.h,v $
01503  * Revision 1.23  2010-11-05 13:11:11  joergr
01504  * Added support for new directory record types IMPLANT, IMPLANT GROUP and
01505  * IMPLANT ASSY from Supplement 131 (Implant Templates).
01506  *
01507  * Revision 1.22  2010-10-14 13:15:40  joergr
01508  * Updated copyright header. Added reference to COPYRIGHT file.
01509  *
01510  * Revision 1.21  2010-10-04 16:14:53  joergr
01511  * Fixed various Doxygen API documentation issues.
01512  *
01513  * Revision 1.20  2010-10-01 08:09:31  joergr
01514  * Added support for new non-image Storage SOP Classes that require the new
01515  * directory record type MEASUREMENT. Also fixed issues with other record types.
01516  *
01517  * Revision 1.19  2010-09-30 17:18:10  joergr
01518  * Added support for new non-image Storage SOP Classes that require the new
01519  * directory record types PALETTE and SURFACE. Also updated existing records.
01520  *
01521  * Revision 1.18  2010-08-10 11:02:58  uli
01522  * Removed undefined function printFileErrorMessage().
01523  *
01524  * Revision 1.17  2010-08-09 13:02:56  joergr
01525  * Updated data dictionary to 2009 edition of the DICOM standard. From now on,
01526  * the official "keyword" is used for the attribute name which results in a
01527  * number of minor changes (e.g. "PatientsName" is now called "PatientName").
01528  *
01529  * Revision 1.16  2009-11-25 13:31:05  joergr
01530  * Adapted code for new approach to access individual frames of a DICOM image.
01531  *
01532  * Revision 1.15  2009-11-04 09:58:07  uli
01533  * Switched to logging mechanism provided by the "new" oflog module
01534  *
01535  * Revision 1.14  2009-01-15 10:16:40  joergr
01536  * Added check whether (possibly required) JPEG 2000 decoder is registered.
01537  *
01538  * Revision 1.13  2008-06-23 12:05:37  joergr
01539  * Added check on value representation of data elements copied from the
01540  * referenced DICOM file to the DICOMDIR (compare VR with data dictionary).
01541  *
01542  * Revision 1.12  2007/02/02 16:01:51  joergr
01543  * Added error message when existing SOP instance is inconsistent with new
01544  * directory record in update mode (e.g. different SOP class UID).
01545  * Fixed incomplete warning message in update mode (filename was missing).
01546  *
01547  * Revision 1.11  2007/01/10 13:02:59  joergr
01548  * Added new option that enables support for retired SOP classes.
01549  *
01550  * Revision 1.10  2006/12/15 14:56:57  joergr
01551  * Added new option that allows to update existing entries in a DICOMDIR. This
01552  * also adds support for mixed media stored application profiles.
01553  * Changed name of enum value for the MPEG2-DVD application profile in order to
01554  * be more consistent with other names.
01555  * Slightly revised handling of type 1, 1C and 2 elements in Directory Records.
01556  * Fixed small bug in cardiac application profiles when checking the ImageType
01557  * (0008,0008).
01558  *
01559  * Revision 1.9  2006/07/27 13:05:05  joergr
01560  * Added support for DICOMDIR record type "STEREOMETRIC" (CP 628).
01561  *
01562  * Revision 1.8  2005/12/15 15:40:48  joergr
01563  * Removed unsused parameter.
01564  *
01565  * Revision 1.7  2005/12/08 16:28:03  meichel
01566  * Changed include path schema for all DCMTK header files
01567  *
01568  * Revision 1.6  2005/10/27 13:31:21  joergr
01569  * Added support for Encapsulated Document, Real World Value Mapping and
01570  * Hanging Protocol objects to DICOMDIR tools.
01571  *
01572  * Revision 1.5  2005/06/13 14:36:41  joergr
01573  * Added new options to disable check on pixel encoding and transfer syntax.
01574  *
01575  * Revision 1.4  2005/03/09 17:53:34  joergr
01576  * Added support for new Media Storage Application Profiles according to DICOM
01577  * PS 3.12-2004. Removed support for non-standard conformant "No profile".
01578  * Added support for UTF-8 for the contents of the fileset descriptor file.
01579  *
01580  * Revision 1.3  2004/02/13 17:36:46  joergr
01581  * Added support for new directory records RAW DATA and SPECTROSCOPY introduced
01582  * with CP 343.
01583  *
01584  * Revision 1.2  2004/02/13 14:11:15  joergr
01585  * Added support for new directory records REGISTRATION and FIDUCIAL introduced
01586  * with supplement 73 (Spatial Registration Storage SOP Classes).
01587  *
01588  * Revision 1.1  2003/08/12 14:35:00  joergr
01589  * Added new interface class for simplified creation of a DICOMDIR.
01590  *
01591  *
01592  */


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