dviface.h

00001 /*
00002  *
00003  *  Copyright (C) 1998-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: dcmpstat
00019  *
00020  *  Author: Marco Eichelberg, Joerg Riesmeier
00021  *
00022  *  Purpose:
00023  *    classes: DVInterface
00024  *
00025  *  Last Update:      $Author: meichel $
00026  *  Update Date:      $Date: 2005/12/08 16:03:31 $
00027  *  CVS/RCS Revision: $Revision: 1.91 $
00028  *  Status:           $State: Exp $
00029  *
00030  *  CVS/RCS Log at end of file
00031  *
00032  */
00033 
00034 
00035 #ifndef DVIFACE_H
00036 #define DVIFACE_H
00037 
00038 #include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */
00039 
00040 
00041 #include "dcmtk/ofstd/ofstream.h"
00042 #include "dcmtk/dcmdata/dctk.h"
00043 #include "dcmtk/dcmpstat/dvpscf.h"     /* for class DVConfiguration */
00044 #include "dcmtk/dcmpstat/dvpstat.h"    /* for class DVPresentationState */
00045 #include "dcmtk/dcmqrdb/dcmqridx.h"   /* for struct IdxRecord */
00046 #include "dcmtk/ofstd/ofstring.h"   /* for class OFString */
00047 #include "dcmtk/dcmpstat/dvcache.h"    /* for index file caching */
00048 
00049 
00050 class OFLogFile;
00051 class DicomImage;
00052 class DiDisplayFunction;
00053 class DVPSStoredPrint;
00054 class DVPSPrintMessageHandler;
00055 class DSRDocument;
00056 class DVSignatureHandler;
00057 
00062 class DVInterface: public DVConfiguration
00063 {
00064 
00065  public:
00066 
00076     DVInterface(const char *config_file = NULL, OFBool useLog = OFFalse);
00077 
00080     virtual ~DVInterface();
00081 
00082     /* load images, presentation states and structured reports */
00083 
00093     OFCondition loadImage(const char *studyUID, const char *seriesUID, const char *instanceUID, OFBool changeStatus = OFFalse);
00094 
00101     OFCondition loadImage(const char *filename);
00102 
00110     OFCondition loadReferencedImage(size_t idx, OFBool changeStatus = OFFalse);
00111 
00122     OFCondition loadPState(const char *studyUID, const char *seriesUID, const char *instanceUID, OFBool changeStatus = OFFalse);
00123 
00132     OFCondition loadPState(const char *pstName, const char *imgName = NULL);
00133 
00142     OFCondition loadStructuredReport(const char *studyUID, const char *seriesUID, const char *instanceUID, OFBool changeStatus = OFFalse);
00143 
00149     OFCondition loadStructuredReport(const char *filename);
00150 
00163     OFCondition loadSRTemplate(const char *reportID);
00164 
00177     OFCondition savePState(OFBool replaceSOPInstanceUID);
00178 
00192     OFCondition savePState(const char *filename, OFBool replaceSOPInstanceUID, OFBool explicitVR=OFTrue);
00193 
00203     OFCondition saveCurrentImage(const char *filename, OFBool explicitVR=OFTrue);
00204 
00216     OFCondition saveStructuredReport();
00217 
00230     OFCondition saveStructuredReport(const char *filename, OFBool explicitVR=OFTrue);
00231 
00240     OFCondition addImageReferenceToPState(const char *studyUID, const char *seriesUID, const char *instanceUID);
00241 
00245     size_t getNumberOfImageReferences();
00246 
00253     DVPresentationState& getCurrentPState()
00254     {
00255       return *pState;
00256     }
00257 
00263     DSRDocument& getCurrentReport()
00264     {
00265       return *pReport;
00266     }
00267 
00272     DVPSStoredPrint& getPrintHandler()
00273     {
00274       return *pPrint;
00275     }
00276 
00284     OFCondition resetPresentationState();
00285 
00291     OFCondition saveCurrentPStateForReset();
00292 
00301     OFCondition releaseDatabase();
00302 
00312     const char *getFilename(const char *studyUID, const char *seriesUID, const char *instanceUID);
00313 
00322     Uint32 getNumberOfStudies();
00323 
00332     OFCondition selectStudy(Uint32 idx);
00333 
00342     OFCondition selectStudy(const char *studyUID);
00343 
00350     DVIFhierarchyStatus getStudyStatus() ;
00351 
00357     const char *getStudyUID();
00358 
00364     const char *getStudyDescription();
00365 
00371     const char *getStudyDate();
00372 
00378     const char *getStudyTime();
00379 
00385     const char *getReferringPhysiciansName();
00386 
00392     const char *getAccessionNumber();
00393 
00399     const char *getNameOfPhysiciansReadingStudy();
00400 
00408     const char *getPatientName();
00409 
00417     const char *getPatientID();
00418 
00426     const char *getPatientBirthDate();
00427 
00435     const char *getPatientSex();
00436 
00444     const char *getPatientBirthTime();
00445 
00453     const char *getOtherPatientNames();
00454 
00462     const char *getOtherPatientID();
00463 
00471     const char *getEthnicGroup();
00472 
00480     Uint32 getNumberOfSeries();
00481 
00489     OFCondition selectSeries(Uint32 idx);
00490 
00498     OFCondition selectSeries(const char *seriesUID);
00499 
00505     const char *getSeriesUID();
00506 
00512     DVIFhierarchyStatus getSeriesStatus();
00513 
00521     DVPSInstanceType getSeriesType();
00522 
00528     DVPSInstanceType getInstanceType();
00529 
00535     const char *getSeriesNumber();
00536 
00542     const char *getSeriesDate();
00543 
00549     const char *getSeriesTime();
00550 
00556     const char *getSeriesDescription();
00557 
00563     const char *getSeriesPerformingPhysiciansName();
00564 
00570     const char *getSeriesProtocolName();
00571 
00577     const char *getSeriesOperatorsName();
00578 
00584     const char *getModality();
00585 
00593     Uint32 getNumberOfInstances();
00594 
00602     OFCondition selectInstance(Uint32 idx);
00603 
00611     OFCondition selectInstance(const char *instanceUID);
00612 
00622     OFCondition selectInstance(const char *instanceUID, const char *sopClassUID);
00623 
00633     OFCondition selectInstance(const char *studyUID, const char *seriesUID, const char *instanceUID);
00634 
00640     const char *getSOPClassUID();
00641 
00647     const char *getInstanceUID();
00648 
00654     const char *getImageNumber();
00655 
00661     const char *getFilename();
00662 
00668     DVIFhierarchyStatus getInstanceStatus() ;
00669 
00675     const char *getInstanceDescription();
00676 
00682     const char *getPresentationLabel();
00683 
00684 
00685     /* methods modifying the database */
00686 
00699     OFCondition instanceReviewed(const char *studyUID, const char *seriesUID, const char *instanceUID);
00700 
00712     OFCondition deleteInstance(const char *studyUID, const char *seriesUID, const char *instanceUID);
00713 
00724     OFCondition deleteSeries(const char *studyUID, const char *seriesUID);
00725 
00735     OFCondition deleteStudy(const char *studyUID);
00736 
00737     /* here follow the Network interface methods */
00738 
00750     OFCondition startReceiver();
00751 
00759     OFCondition terminateReceiver();
00760 
00776     OFCondition startQueryRetrieveServer();
00777 
00787     OFCondition terminateQueryRetrieveServer();
00788 
00799     OFBool newInstancesReceived();
00800 
00813     OFCondition sendStudy(const char *targetID, const char *studyUID)
00814     {
00815       return sendIOD(targetID, studyUID, NULL, NULL);
00816     }
00817 
00832     OFCondition sendSeries(const char *targetID, const char *studyUID, const char *seriesUID)
00833     {
00834       return sendIOD(targetID, studyUID, seriesUID, NULL);
00835     }
00836 
00854     OFCondition sendIOD(const char *targetID, const char *studyUID, const char *seriesUID, const char *instanceUID);
00855 
00866     OFCondition dumpIOD(const char *filename);
00867 
00883     OFCondition dumpIOD(const char *studyUID, const char *seriesUID, const char *instanceUID);
00884 
00895     OFCondition checkIOD(const char *filename);
00896 
00912     OFCondition checkIOD(const char *studyUID, const char *seriesUID, const char *instanceUID);
00913 
00931     OFCondition saveDICOMImage(
00932       const char *filename,
00933       const void *pixelData,
00934       unsigned long width,
00935       unsigned long height,
00936       double aspectRatio=1.0,
00937       OFBool explicitVR=OFTrue,
00938       const char *instanceUID=NULL);
00939 
00954     OFCondition saveDICOMImage(
00955       const void *pixelData,
00956       unsigned long width,
00957       unsigned long height,
00958       double aspectRatio=1.0);
00959 
00977     OFCondition saveHardcopyGrayscaleImage(
00978       const char *filename,
00979       const void *pixelData,
00980       unsigned long width,
00981       unsigned long height,
00982       double aspectRatio=1.0,
00983       OFBool explicitVR=OFTrue,
00984       const char *instanceUID=NULL);
00985 
01000     OFCondition saveHardcopyGrayscaleImage(
01001       const void *pixelData,
01002       unsigned long width,
01003       unsigned long height,
01004       double aspectRatio=1.0);
01005 
01015     OFCondition saveFileFormatToDB(DcmFileFormat &fileformat);
01016 
01026     OFCondition loadStoredPrint(const char *studyUID, const char *seriesUID, const char *instanceUID, OFBool changeStatus = OFFalse);
01027 
01034     OFCondition loadStoredPrint(const char *filename);
01035 
01047     OFCondition saveStoredPrint(
01048       const char *filename,
01049       OFBool writeRequestedImageSize,
01050       OFBool explicitVR=OFTrue,
01051       const char *instanceUID=NULL);
01052 
01063     OFCondition saveStoredPrint(OFBool writeRequestedImageSize);
01064 
01068     size_t getNumberOfPrintPreviews();
01069 
01081     OFCondition loadPrintPreview(size_t idx, OFBool printLUT = OFTrue, OFBool changeStatus = OFFalse);
01082 
01085     void unloadPrintPreview();
01086 
01091     unsigned long getPrintPreviewSize();
01092 
01101     void setMaxPrintPreviewWidthHeight(unsigned long width, unsigned long height);
01102 
01109     OFCondition getPrintPreviewWidthHeight(unsigned long &width, unsigned long &height);
01110 
01117     OFCondition getPrintPreviewBitmap(void *bitmap, unsigned long size);
01118 
01125     OFCondition disablePState();
01126 
01132     OFCondition enablePState();
01133 
01139     Uint32 getNumberOfPStates();
01140 
01147     OFCondition selectPState(Uint32 idx, OFBool changeStatus = OFFalse);
01148 
01154     const char *getPStateDescription(Uint32 idx);
01155 
01161     const char *getPStateLabel(Uint32 idx);
01162 
01170     OFBool isDisplayTransformPossible(DVPSDisplayTransform transform = DVPSD_GSDF);
01171 
01176     OFCondition setAmbientLightValue(double value);
01177 
01182     OFCondition getAmbientLightValue(double &value);
01183 
01184     /* print related methods */
01185 
01191     OFCondition setCurrentPrinter(const char *targetID);
01192 
01197     const char *getCurrentPrinter();
01198 
01205     OFCondition setPrinterMediumType(const char *value);
01206 
01210     const char *getPrinterMediumType();
01211 
01218     OFCondition setPrinterFilmDestination(const char *value);
01219 
01223     const char *getPrinterFilmDestination();
01224 
01231     OFCondition setPrinterFilmSessionLabel(const char *value);
01232 
01236     const char *getPrinterFilmSessionLabel();
01237 
01244     OFCondition setPrinterPriority(const char *value);
01245 
01249     const char *getPrinterPriority();
01250 
01257     OFCondition setPrinterOwnerID(const char *value);
01258 
01262     const char *getPrinterOwnerID();
01263 
01270     OFCondition setPrinterNumberOfCopies(unsigned long value);
01271 
01275     unsigned long getPrinterNumberOfCopies();
01276 
01282     void clearFilmSessionSettings();
01283 
01289     OFCondition selectDisplayPresentationLUT(const char *lutID);
01290 
01296     const char *getDisplayPresentationLUTID();
01297 
01305     OFCondition selectPrintPresentationLUT(const char *lutID);
01306 
01312     const char *getPrintPresentationLUTID();
01313 
01318     OFCondition spoolPrintJob(OFBool deletePrintedImages=OFTrue);
01319 
01331     OFCondition startPrintSpooler();
01332 
01339     OFCondition terminatePrintSpooler();
01340 
01353     OFCondition startPrintServer();
01354 
01362     OFCondition terminatePrintServer();
01363 
01374     OFCondition addToPrintHardcopyFromDB(const char *studyUID, const char *seriesUID, const char *instanceUID);
01375 
01386     OFCondition spoolStoredPrintFromDB(const char *studyUID, const char *seriesUID, const char *instanceUID);
01387 
01397     OFCondition printSCUcreateBasicFilmSession(DVPSPrintMessageHandler& printHandler, OFBool plutInSession);
01398 
01399     /* annotation interface */
01400 
01404     OFBool isActiveAnnotation() { return activateAnnotation; }
01405 
01409     OFBool getPrependDateTime() { return prependDateTime; }
01410 
01414     OFBool getPrependPrinterName() { return prependPrinterName; }
01415 
01419     OFBool getPrependLighting() { return prependLighting; }
01420 
01424     const char *getAnnotationText() { return annotationText.c_str(); }
01425 
01429     void setActiveAnnotation(OFBool value) { activateAnnotation=value; }
01430 
01434     void setPrependDateTime(OFBool value) { prependDateTime=value; }
01435 
01439     void setPrependPrinterName(OFBool value) { prependPrinterName=value; }
01440 
01444     void setPrependLighting(OFBool value) { prependLighting=value; }
01445 
01449     void setAnnotationText(const char *value);
01450 
01451     /* user management interface */
01452 
01464     OFBool verifyUserPassword(const char *userID, const char *passwd);
01465 
01489     OFCondition verifyAndSignStructuredReport(const char *userID, const char *passwd, DVPSVerifyAndSignMode mode);
01490 
01491 
01492     /* log file interface */
01493 
01499     virtual void setLog(OFConsole *stream, OFBool verbMode, OFBool dbgMode);
01500 
01508     void setLogFilter(DVPSLogMessageLevel level);
01509 
01518     OFCondition writeLogMessage(
01519       DVPSLogMessageLevel level,
01520       const char *module,
01521       const char *message);
01522 
01523     /* digital signatures */
01524 
01531     const char *getCurrentSignatureValidationHTML(DVPSObjectType objtype) const;
01532 
01537     const char *getCurrentSignatureValidationOverview() const;
01538 
01543     DVPSSignatureStatus getCurrentSignatureStatus(DVPSObjectType objtype) const;
01544 
01548     DVPSSignatureStatus getCombinedImagePStateSignatureStatus() const;
01549 
01554     unsigned long getNumberOfCorrectSignatures(DVPSObjectType objtype) const;
01555 
01560     unsigned long getNumberOfUntrustworthySignatures(DVPSObjectType objtype) const;
01561 
01566     unsigned long getNumberOfCorruptSignatures(DVPSObjectType objtype) const;
01567 
01572     void disableImageAndPState();
01573 
01574 private:
01575 
01578     DVInterface(const DVInterface&);
01579 
01582     DVInterface& operator=(const DVInterface&);
01583 
01591     OFCondition exchangeImageAndPState(DVPresentationState *newState, DcmFileFormat *image, DcmFileFormat *state=NULL);
01592 
01599     OFCondition lockDatabase();
01600 
01607     OFCondition lockExclusive();
01608 
01612     OFCondition unlockExclusive();
01613 
01620     OFCondition createPrintJobFilenames(const char *printer, OFString& tempname, OFString& jobname);
01621 
01626     OFCondition createQueryRetrieveServerConfigFile(const char *filename);
01627 
01634     OFCondition startExternalApplication(const char *application, const char *filename);
01635 
01636     /* member variables */
01637 
01640     DVPSStoredPrint *pPrint;
01641 
01644     DVPresentationState *pState;
01645 
01648     DSRDocument *pReport;
01649 
01652     DVSignatureHandler *pSignatureHandler;
01653 
01656     DVPresentationState *pStoredPState;
01657 
01660     DcmFileFormat *pDicomImage;
01661 
01665     DcmFileFormat *pDicomPState;
01666 
01669     DicomImage *pHardcopyImage;
01670 
01674     OFString printJobIdentifier;
01675 
01678     unsigned long printJobCounter;
01679 
01682     OFString configPath;
01683 
01687     OFString databaseIndexFile;
01688 
01692     unsigned long referenceTime;
01693 
01696     DiDisplayFunction *displayFunction[DVPSD_max];
01697 
01700     DcmQueryRetrieveIndexDatabaseHandle *pHandle;
01701 
01704     OFBool lockingMode;
01705 
01708     DVStudyCache idxCache;
01709 
01712     IdxRecord idxRec;
01713 
01716     int idxRecPos;
01717 
01720     OFBool imageInDatabase;
01721 
01722     /* private methods for database */
01723 
01726     OFBool createIndexCache();
01727 
01730     OFBool createPStateCache();
01731 
01734     void clearIndexCache();
01735 
01738     void clearIndexRecord(IdxRecord &record,
01739                           int &recpos);
01740 
01744     OFBool readIndexRecord(const int pos,
01745                            IdxRecord &record,
01746                            int *oldpos = NULL);
01747 
01751     void updateStatusCache();
01752 
01755     DVStudyCache::ItemStruct *getStudyStruct(const char *studyUID = NULL,
01756                                              const char *seriesUID = NULL);
01757 
01760     DVSeriesCache::ItemStruct *getSeriesStruct(const char *studyUID = NULL,
01761                                                const char *seriesUID = NULL,
01762                                                const char *instanceUID = NULL);
01763 
01766     DVInstanceCache::ItemStruct *getInstanceStruct(const char *studyUID = NULL,
01767                                                    const char *seriesUID = NULL,
01768                                                    const char *instanceUID = NULL);
01769 
01772     int findStudyIdx(StudyDescRecord *study,
01773                      const char *uid);
01774 
01777     int deleteImageFile(const char *filename);
01778 
01781     void resetDatabaseReferenceTime();
01782 
01783 
01787     OFCondition instanceReviewed(int pos);
01788 
01791     unsigned long minimumPrintBitmapWidth;
01792 
01795     unsigned long minimumPrintBitmapHeight;
01796 
01799     unsigned long maximumPrintBitmapWidth;
01800 
01803     unsigned long maximumPrintBitmapHeight;
01804 
01807     unsigned long maximumPrintPreviewWidth;
01808 
01811     unsigned long maximumPrintPreviewHeight;
01812 
01815     unsigned long maximumPreviewImageWidth;
01816 
01819     unsigned long maximumPreviewImageHeight;
01820 
01823     OFString currentPrinter;
01824 
01827     OFString displayCurrentLUTID;
01828 
01831     OFString printCurrentLUTID;
01832 
01835     OFString printerMediumType;
01836 
01839     OFString printerFilmDestination;
01840 
01843     OFString printerFilmSessionLabel;
01844 
01847     unsigned long printerNumberOfCopies;
01848 
01852     OFString printerPriority;
01853 
01856     OFString printerOwnerID;
01857 
01860     OFBool activateAnnotation;
01861 
01864     OFBool prependDateTime;
01865 
01868     OFBool prependPrinterName;
01869 
01872     OFBool prependLighting;
01873 
01876     OFString annotationText;
01877 
01880     OFLogFile *logFile;
01881 };
01882 
01883 
01884 #endif
01885 
01886 
01887 /*
01888  *  CVS/RCS Log:
01889  *  $Log: dviface.h,v $
01890  *  Revision 1.91  2005/12/08 16:03:31  meichel
01891  *  Changed include path schema for all DCMTK header files
01892  *
01893  *  Revision 1.90  2005/04/04 10:11:57  meichel
01894  *  Module dcmpstat now uses the dcmqrdb API instead of imagectn for maintaining
01895  *    the index database
01896  *
01897  *  Revision 1.89  2004/02/04 15:48:23  joergr
01898  *  Removed acknowledgements with e-mail addresses from CVS log.
01899  *
01900  *  Revision 1.88  2003/04/29 10:13:56  meichel
01901  *  Moved configuration file parser from module dcmpstat to ofstd and renamed
01902  *    class to OFConfigFile. Cleaned up implementation (no more friend declarations).
01903  *
01904  *  Revision 1.87  2002/04/16 14:02:02  joergr
01905  *  Added configurable support for C++ ANSI standard includes (e.g. streams).
01906  *
01907  *  Revision 1.86  2001/09/26 15:36:06  meichel
01908  *  Adapted dcmpstat to class OFCondition
01909  *
01910  *  Revision 1.85  2001/02/23 13:31:46  joergr
01911  *  Changed behaviour of method verifyAndSignStructuredReport() with 'finalize'.
01912  *  Now the entire document is always signed independently from the tree items
01913  *  marked.
01914  *
01915  *  Revision 1.84  2001/01/29 17:32:30  joergr
01916  *  Added method to verify and digitally sign structured reports.
01917  *
01918  *  Revision 1.83  2001/01/29 14:55:41  meichel
01919  *  Added new methods for creating signatures and checking the signature
01920  *    status in module dcmpstat.
01921  *
01922  *  Revision 1.82  2001/01/25 15:18:04  meichel
01923  *  Added initial support for verification of digital signatures
01924  *    in presentation states, images and structured reports to module dcmpstat.
01925  *
01926  *  Revision 1.81  2000/11/14 16:35:16  joergr
01927  *  Added creation of new UIDs and setting of content date/time when starting
01928  *  a new SR document from a "template".
01929  *
01930  *  Revision 1.80  2000/11/13 15:50:42  meichel
01931  *  Added dcmpstat support methods for creating image references
01932  *    in SR documents.
01933  *
01934  *  Revision 1.79  2000/11/13 11:52:40  meichel
01935  *  Added support for user logins and certificates.
01936  *
01937  *  Revision 1.78  2000/11/13 10:42:38  joergr
01938  *  Added support for Structured Reporting "templates".
01939  *
01940  *  Revision 1.77  2000/10/16 11:39:43  joergr
01941  *  Added support for new structured reports.
01942  *  Added method allowing to select an instance by instance UID and SOP class
01943  *  UID (without series and study UID). Required for composite references in
01944  *  DICOM SR.
01945  *
01946  *  Revision 1.76  2000/10/10 12:23:39  meichel
01947  *  Added extensions for TLS encrypted communication
01948  *
01949  *  Revision 1.75  2000/07/18 16:02:35  joergr
01950  *  Moved method convertODtoLum/PValue from class DVInterface to DVPSStoredPrint
01951  *  and corrected implementation.
01952  *
01953  *  Revision 1.74  2000/07/17 12:05:09  joergr
01954  *  Added methods to select objects from the database directly.
01955  *
01956  *  Revision 1.73  2000/07/14 17:09:47  joergr
01957  *  Added changeStatus parameter to all methods loading instances from the
01958  *  database.
01959  *
01960  *  Revision 1.72  2000/07/06 09:41:00  joergr
01961  *  Added flag to loadPrintPreview() method allowing to choose how to interpret
01962  *  the presentation LUT (hardcopy or softcopy definition).
01963  *
01964  *  Revision 1.71  2000/07/04 15:58:00  joergr
01965  *  Added support for overriding the presentation LUT settings made for the
01966  *  image boxes.
01967  *
01968  *  Revision 1.70  2000/06/21 15:40:57  meichel
01969  *  Added DICOMscope support for calling the Presentation State Checker.
01970  *
01971  *  Revision 1.69  2000/06/09 10:13:54  joergr
01972  *  Added method to get number of presentation states referencing an image
01973  *  (specified by the three UIDs).
01974  *
01975  *  Revision 1.68  2000/06/08 17:36:23  joergr
01976  *  Added method convertODtoLum().
01977  *
01978  *  Revision 1.67  2000/06/07 14:15:52  joergr
01979  *  Added configuration file entry "LogLevel" to filter log messages.
01980  *  Added flag to constructor specifying whether the general log file should be
01981  *  used (default: off).
01982  *
01983  *  Revision 1.66  2000/06/05 16:21:30  joergr
01984  *  Implemented log message methods.
01985  *  Added method allowing to specify the current presentation state to be used
01986  *  for resetting the pstate.
01987  *
01988  *  Revision 1.65  2000/06/02 16:00:41  meichel
01989  *  Adapted all dcmpstat classes to use OFConsole for log and error output
01990  *
01991  *  Revision 1.64  2000/06/02 13:53:53  joergr
01992  *  Implemented start/terminatePrintServer methods.
01993  *
01994  *  Revision 1.63  2000/06/02 12:41:50  joergr
01995  *  Corrected wrong interface descriptions.
01996  *
01997  *  Revision 1.62  2000/05/31 12:56:37  meichel
01998  *  Added initial Print SCP support
01999  *
02000  *  Revision 1.61  2000/05/31 07:54:23  joergr
02001  *  Added support for Stored Print attributes Originator and Destination
02002  *  application entity title.
02003  *
02004  *  Revision 1.60  2000/05/30 13:36:45  joergr
02005  *  Added new private SOP class (UID definition) to allow external shutdown
02006  *  of console applications via negotiation of this special SOP class
02007  *  (currently used for imagectn and dcmpsrcv).
02008  *  Renamed GrayscaleHardcopy to HardcopyGrayscale (which is the correct term
02009  *  according to the DICOM standard).
02010  *  Added support for multi-frame images and multiple references from a single
02011  *  presentation to a number of images.
02012  *  Removed methods which were already marked as "retired".
02013  *  Added interface methods to support the following new features:
02014  *    - start/terminate query/retrieve server
02015  *    - load stored print objects
02016  *    - create print preview from hardcopy grayscale images
02017  *    - check DICOM IODs for correctness (not yet implemented)
02018  *    - set presentation LUT for film session (not yet implemented)
02019  *    - start/terminate print server (not yet implemented)
02020  *    - write/filter log messages (not yet implemented)
02021  *
02022  *  Revision 1.59  2000/03/08 16:28:47  meichel
02023  *  Updated copyright header.
02024  *
02025  *  Revision 1.58  2000/03/03 14:13:54  meichel
02026  *  Implemented library support for redirecting error messages into memory
02027  *    instead of printing them to stdout/stderr for GUI applications.
02028  *
02029  *  Revision 1.57  1999/11/03 13:05:31  meichel
02030  *  Added support for transmitting annotations in the film session label.
02031  *    Added support for dump tool launched from DVInterface.
02032  *
02033  *  Revision 1.56  1999/10/20 10:47:13  joergr
02034  *  Added support for a down-scaled preview image of the current DICOM image
02035  *  (e.g. useful for online-windowing or print preview).
02036  *
02037  *  Revision 1.55  1999/10/19 14:46:01  meichel
02038  *  added support for the Basic Annotation Box SOP Class
02039  *    as well as access methods for Max Density and Min Density.
02040  *
02041  *  Revision 1.54  1999/10/07 17:21:45  meichel
02042  *  Reworked management of Presentation LUTs in order to create tighter
02043  *    coupling between Softcopy and Print.
02044  *
02045  *  Revision 1.53  1999/09/27 10:41:52  meichel
02046  *  Print interface now copies current printer name, avoids JNI problems.
02047  *
02048  *  Revision 1.52  1999/09/24 15:24:28  meichel
02049  *  Added support for CP 173 (Presentation LUT clarifications)
02050  *
02051  *  Revision 1.51  1999/09/23 17:37:12  meichel
02052  *  Added support for Basic Film Session options to dcmpstat print code.
02053  *
02054  *  Revision 1.50  1999/09/17 14:33:55  meichel
02055  *  Completed print spool functionality including Supplement 22 support
02056  *
02057  *  Revision 1.49  1999/09/15 17:43:25  meichel
02058  *  Implemented print job dispatcher code for dcmpstat, adapted dcmprtsv
02059  *    and dcmpsprt applications.
02060  *
02061  *  Revision 1.48  1999/09/13 15:19:08  meichel
02062  *  Added implementations for a number of further print API methods.
02063  *
02064  *  Revision 1.47  1999/09/10 12:46:44  meichel
02065  *  Added implementations for a number of print API methods.
02066  *
02067  *  Revision 1.46  1999/09/10 09:37:29  joergr
02068  *  Re-added automatically removed method declarations (maybe a problem with
02069  *  CVS's merge algorithm).
02070  *
02071  *  Revision 1.43  1999/09/08 17:03:01  joergr
02072  *  Added support for new instance types in database (grayscale hardcopy and
02073  *  stored print).
02074  *
02075  *  Revision 1.42  1999/09/08 16:42:01  meichel
02076  *  Moved configuration file evaluation to separate class.
02077  *
02078  *  Revision 1.41  1999/09/01 16:14:39  meichel
02079  *  Added support for requested image size to print routines
02080  *
02081  *  Revision 1.40  1999/08/31 16:54:44  meichel
02082  *  Added new sample application that allows to create simple print jobs.
02083  *
02084  *  Revision 1.39  1999/08/31 14:02:05  meichel
02085  *  Added print related config file methods
02086  *
02087  *  Revision 1.38  1999/08/27 15:57:55  meichel
02088  *  Added methods for saving hardcopy images and stored print objects
02089  *    either in file or in the local database.
02090  *
02091  *  Revision 1.37  1999/08/25 16:47:20  joergr
02092  *  Moved method 'saveFileFormat()' to public part of the interface class.
02093  *
02094  *  Revision 1.36  1999/05/05 14:25:26  joergr
02095  *  Added optional parameter to method loadPState (from database) to change
02096  *  instance reviewed flag for pstate and image.
02097  *
02098  *  Revision 1.35  1999/04/29 15:25:37  joergr
02099  *  Added PresentationLabel to index file.
02100  *
02101  *  Revision 1.34  1999/04/27 11:23:16  joergr
02102  *  Enhanced savePState() method: now image file is also added to index file
02103  *  and stored in image directory (if not already there).
02104  *  Added new entry to index file: Presentation Description.
02105  *
02106  *  Revision 1.33  1999/03/03 13:24:32  joergr
02107  *  Added methods to get and set ambient light value (re: Barten transformation).
02108  *  Moved method 'isBartenTransformPossible()' from presentation state class to
02109  *  interface class.
02110  *
02111  *  Revision 1.32  1999/03/02 12:52:51  joergr
02112  *  Added parameter to selectPState() specifying whether to change the review
02113  *  status of the loaded presentation state.
02114  *
02115  *  Revision 1.31  1999/02/25 18:38:58  joergr
02116  *  Added some comments.
02117  *  Renamed methods enable/disablePState().
02118  *
02119  *  Revision 1.30  1999/02/24 20:17:48  joergr
02120  *  Added methods to get a list of presentation states referencing the
02121  *  currently selected image.
02122  *  Added support for exchanging current presentation state (load from file)
02123  *  without deleting the current image.
02124  *
02125  *  Revision 1.29  1999/02/22 14:20:20  joergr
02126  *  Added deletion of image files (depending on directory where the file is
02127  *  stored).
02128  *  Modified comments for getGUIConfig... methods to indicate that the
02129  *  specified key must be upper case.
02130  *  Reset reference time for file modification checking after the index file
02131  *  has been changed internally (delete and change status methods).
02132  *
02133  *  Revision 1.28  1999/02/19 18:58:11  joergr
02134  *  Added methods to disable and (re-)enable PresentationStates.
02135  *  Added (private) helper methods to reduce redundant lines of code.
02136  *
02137  *  Revision 1.27  1999/02/19 09:44:17  joergr
02138  *  Added comments to new database routines and related member variables.
02139  *
02140  *  Revision 1.26  1999/02/18 18:46:19  joergr
02141  *  Re-implemented methods to access index file (delete methods are still
02142  *  missing).
02143  *  Removed parameter 'deletefile' from delete methods. This parameter is
02144  *  not necessary because the decision whether a images file is deleted only
02145  *  depends on the directory where the file is stored (see comments).
02146  *
02147  *  Revision 1.25  1999/02/18 11:07:26  meichel
02148  *  Added new parameter explicitVR to interface methods savePState,
02149  *    saveDICOMImage.  Allows to choose between explicit VR and implicit VR
02150  *    little endian format.  Added new method saveCurrentImage that allows to
02151  *    save the current image to file.
02152  *
02153  *  Revision 1.24  1999/02/17 10:05:30  meichel
02154  *  Moved creation of Display Function object from DVPresentationState to
02155  *    DVInterface to avoid unnecessary re-reads.
02156  *
02157  *  Revision 1.23  1999/02/16 16:36:10  meichel
02158  *  Added method newInstancesReceived() to DVInterface class.
02159  *
02160  *  Revision 1.22  1999/02/12 10:02:46  vorwerk
02161  *  added cache , changed deletemethods.
02162  *
02163  *  Revision 1.21  1999/02/09 15:58:07  meichel
02164  *  Implemented methods that save images and presentation states in the DB.
02165  *
02166  *  Revision 1.20  1999/02/08 10:52:33  meichel
02167  *  Updated documentation of dviface.h in Doc++ style.
02168  *    Removed dummy parameter from constructor.
02169  *
02170  *  Revision 1.19  1999/02/05 17:45:35  meichel
02171  *  Added config file entry for monitor characteristics file.  Monitor charac-
02172  *    teristics are passed to dcmimage if present to activate Barten transform.
02173  *
02174  *  Revision 1.18  1999/02/05 11:38:01  vorwerk
02175  *  parameter in stripidxarray added.
02176  *
02177  *  Revision 1.17  1999/01/29 16:01:05  meichel
02178  *  Reworked index file handle acquisition and locking code.
02179  *
02180  *  Revision 1.16  1999/01/28 15:30:53  vorwerk
02181  *  New database lock method added.
02182  *
02183  *  Revision 1.15  1999/01/27 15:28:34  vorwerk
02184  *  new method idxfiletest added to handle with indexfiles of length zero.
02185  *
02186  *  Revision 1.14  1999/01/27 14:59:28  meichel
02187  *  Implemented DICOM network receive application "dcmpsrcv" which receives
02188  *    images and presentation states and stores them in the local database.
02189  *
02190  *  Revision 1.13  1999/01/25 18:18:23  meichel
02191  *  Defined private SOP class UID for network receiver
02192  *    shutdown function. Cleanup up some code.
02193  *
02194  *  Revision 1.12  1999/01/25 16:55:17  vorwerk
02195  *  function stripidxarray added.
02196  *
02197  *  Revision 1.11  1999/01/25 13:05:55  meichel
02198  *  Implemented DVInterface::startReceiver()
02199  *    and several config file related methods.
02200  *
02201  *  Revision 1.10  1999/01/20 19:25:25  meichel
02202  *  Implemented sendIOD method which creates a separate process for trans-
02203  *    mitting images from the local database to a remote communication peer.
02204  *
02205  *  Revision 1.9  1999/01/19 15:14:48  vorwerk
02206  *  Methods for acesseing additional attributes added.
02207  *
02208  *  Revision 1.8  1999/01/15 17:27:14  meichel
02209  *  added DVInterface method resetPresentationState() which allows to reset a
02210  *    presentation state to the initial state (after loading).
02211  *
02212  *  Revision 1.7  1999/01/14 17:50:30  meichel
02213  *  added new method saveDICOMImage() to class DVInterface.
02214  *    Allows to store a bitmap as a DICOM image.
02215  *
02216  *  Revision 1.6  1999/01/04 13:27:16  vorwerk
02217  *  line inserted
02218  *
02219  *  Revision 1.5  1999/01/04 13:02:26  vorwerk
02220  *  getSeriesPerformingPhysicainsName() changed in getSeriesPerformingPhysiciansName()
02221  *
02222  *  Revision 1.4  1998/12/22 17:57:03  meichel
02223  *  Implemented Presentation State interface for overlays,
02224  *    VOI LUTs, VOI windows, curves. Added test program that
02225  *    allows to add curve data to DICOM images.
02226  *
02227  *  Revision 1.3  1998/12/22 15:50:06  vorwerk
02228  *  - constructor now with parameter for directory of index.dat
02229  *  - changed const methods in non-const-methods
02230  *  - added methods for attributes of DICOM-documents
02231  *  - added private method for operations on index.dat
02232  *
02233  *  Revision 1.2  1998/11/30 11:26:59  joergr
02234  *  Added CVS/RCS log at end of file.
02235  *
02236  *
02237  */


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