dcmpstat/include/dviface.h

00001 /* 00002 * 00003 * Copyright (C) 1998-2004, 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: joergr $ 00026 * Update Date: $Date: 2004/02/04 15:48:23 $ 00027 * CVS/RCS Revision: $Revision: 1.89 $ 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 "osconfig.h" /* make sure OS specific configuration is included first */ 00039 00040 00041 #include "ofstream.h" 00042 #include "dctk.h" 00043 #include "dvpscf.h" /* for class DVConfiguration */ 00044 #include "dvpstat.h" /* for class DVPresentationState */ 00045 #include "dbpriv.h" /* for struct IdxRecord */ 00046 #include "dbstore.h" /* for filedeletion */ 00047 #include "ofstring.h" /* for class OFString */ 00048 #include "imagedb.h" /* for DB_UpperMaxBytesPerStudy */ 00049 #include "dvcache.h" /* for index file caching */ 00050 00051 00052 class OFLogFile; 00053 class DicomImage; 00054 class DiDisplayFunction; 00055 class DVPSStoredPrint; 00056 class DVPSPrintMessageHandler; 00057 class DSRDocument; 00058 class DVSignatureHandler; 00059 00064 class DVInterface: public DVConfiguration 00065 { 00066 00067 public: 00068 00078 DVInterface(const char *config_file = NULL, OFBool useLog = OFFalse); 00079 00082 virtual ~DVInterface(); 00083 00084 /* load images, presentation states and structured reports */ 00085 00095 OFCondition loadImage(const char *studyUID, const char *seriesUID, const char *instanceUID, OFBool changeStatus = OFFalse); 00096 00103 OFCondition loadImage(const char *filename); 00104 00112 OFCondition loadReferencedImage(size_t idx, OFBool changeStatus = OFFalse); 00113 00124 OFCondition loadPState(const char *studyUID, const char *seriesUID, const char *instanceUID, OFBool changeStatus = OFFalse); 00125 00134 OFCondition loadPState(const char *pstName, const char *imgName = NULL); 00135 00144 OFCondition loadStructuredReport(const char *studyUID, const char *seriesUID, const char *instanceUID, OFBool changeStatus = OFFalse); 00145 00151 OFCondition loadStructuredReport(const char *filename); 00152 00165 OFCondition loadSRTemplate(const char *reportID); 00166 00179 OFCondition savePState(OFBool replaceSOPInstanceUID); 00180 00194 OFCondition savePState(const char *filename, OFBool replaceSOPInstanceUID, OFBool explicitVR=OFTrue); 00195 00205 OFCondition saveCurrentImage(const char *filename, OFBool explicitVR=OFTrue); 00206 00218 OFCondition saveStructuredReport(); 00219 00232 OFCondition saveStructuredReport(const char *filename, OFBool explicitVR=OFTrue); 00233 00242 OFCondition addImageReferenceToPState(const char *studyUID, const char *seriesUID, const char *instanceUID); 00243 00247 size_t getNumberOfImageReferences(); 00248 00255 DVPresentationState& getCurrentPState() 00256 { 00257 return *pState; 00258 } 00259 00265 DSRDocument& getCurrentReport() 00266 { 00267 return *pReport; 00268 } 00269 00274 DVPSStoredPrint& getPrintHandler() 00275 { 00276 return *pPrint; 00277 } 00278 00286 OFCondition resetPresentationState(); 00287 00293 OFCondition saveCurrentPStateForReset(); 00294 00303 OFCondition releaseDatabase(); 00304 00314 const char *getFilename(const char *studyUID, const char *seriesUID, const char *instanceUID); 00315 00324 Uint32 getNumberOfStudies(); 00325 00334 OFCondition selectStudy(Uint32 idx); 00335 00344 OFCondition selectStudy(const char *studyUID); 00345 00352 DVIFhierarchyStatus getStudyStatus() ; 00353 00359 const char *getStudyUID(); 00360 00366 const char *getStudyDescription(); 00367 00373 const char *getStudyDate(); 00374 00380 const char *getStudyTime(); 00381 00387 const char *getReferringPhysiciansName(); 00388 00394 const char *getAccessionNumber(); 00395 00401 const char *getNameOfPhysiciansReadingStudy(); 00402 00410 const char *getPatientName(); 00411 00419 const char *getPatientID(); 00420 00428 const char *getPatientBirthDate(); 00429 00437 const char *getPatientSex(); 00438 00446 const char *getPatientBirthTime(); 00447 00455 const char *getOtherPatientNames(); 00456 00464 const char *getOtherPatientID(); 00465 00473 const char *getEthnicGroup(); 00474 00482 Uint32 getNumberOfSeries(); 00483 00491 OFCondition selectSeries(Uint32 idx); 00492 00500 OFCondition selectSeries(const char *seriesUID); 00501 00507 const char *getSeriesUID(); 00508 00514 DVIFhierarchyStatus getSeriesStatus(); 00515 00523 DVPSInstanceType getSeriesType(); 00524 00530 DVPSInstanceType getInstanceType(); 00531 00537 const char *getSeriesNumber(); 00538 00544 const char *getSeriesDate(); 00545 00551 const char *getSeriesTime(); 00552 00558 const char *getSeriesDescription(); 00559 00565 const char *getSeriesPerformingPhysiciansName(); 00566 00572 const char *getSeriesProtocolName(); 00573 00579 const char *getSeriesOperatorsName(); 00580 00586 const char *getModality(); 00587 00595 Uint32 getNumberOfInstances(); 00596 00604 OFCondition selectInstance(Uint32 idx); 00605 00613 OFCondition selectInstance(const char *instanceUID); 00614 00624 OFCondition selectInstance(const char *instanceUID, const char *sopClassUID); 00625 00635 OFCondition selectInstance(const char *studyUID, const char *seriesUID, const char *instanceUID); 00636 00642 const char *getSOPClassUID(); 00643 00649 const char *getInstanceUID(); 00650 00656 const char *getImageNumber(); 00657 00663 const char *getFilename(); 00664 00670 DVIFhierarchyStatus getInstanceStatus() ; 00671 00677 const char *getInstanceDescription(); 00678 00684 const char *getPresentationLabel(); 00685 00686 00687 /* methods modifying the database */ 00688 00701 OFCondition instanceReviewed(const char *studyUID, const char *seriesUID, const char *instanceUID); 00702 00714 OFCondition deleteInstance(const char *studyUID, const char *seriesUID, const char *instanceUID); 00715 00726 OFCondition deleteSeries(const char *studyUID, const char *seriesUID); 00727 00737 OFCondition deleteStudy(const char *studyUID); 00738 00739 /* here follow the Network interface methods */ 00740 00752 OFCondition startReceiver(); 00753 00761 OFCondition terminateReceiver(); 00762 00778 OFCondition startQueryRetrieveServer(); 00779 00789 OFCondition terminateQueryRetrieveServer(); 00790 00801 OFBool newInstancesReceived(); 00802 00815 OFCondition sendStudy(const char *targetID, const char *studyUID) 00816 { 00817 return sendIOD(targetID, studyUID, NULL, NULL); 00818 } 00819 00834 OFCondition sendSeries(const char *targetID, const char *studyUID, const char *seriesUID) 00835 { 00836 return sendIOD(targetID, studyUID, seriesUID, NULL); 00837 } 00838 00856 OFCondition sendIOD(const char *targetID, const char *studyUID, const char *seriesUID, const char *instanceUID); 00857 00868 OFCondition dumpIOD(const char *filename); 00869 00885 OFCondition dumpIOD(const char *studyUID, const char *seriesUID, const char *instanceUID); 00886 00897 OFCondition checkIOD(const char *filename); 00898 00914 OFCondition checkIOD(const char *studyUID, const char *seriesUID, const char *instanceUID); 00915 00933 OFCondition saveDICOMImage( 00934 const char *filename, 00935 const void *pixelData, 00936 unsigned long width, 00937 unsigned long height, 00938 double aspectRatio=1.0, 00939 OFBool explicitVR=OFTrue, 00940 const char *instanceUID=NULL); 00941 00956 OFCondition saveDICOMImage( 00957 const void *pixelData, 00958 unsigned long width, 00959 unsigned long height, 00960 double aspectRatio=1.0); 00961 00979 OFCondition saveHardcopyGrayscaleImage( 00980 const char *filename, 00981 const void *pixelData, 00982 unsigned long width, 00983 unsigned long height, 00984 double aspectRatio=1.0, 00985 OFBool explicitVR=OFTrue, 00986 const char *instanceUID=NULL); 00987 01002 OFCondition saveHardcopyGrayscaleImage( 01003 const void *pixelData, 01004 unsigned long width, 01005 unsigned long height, 01006 double aspectRatio=1.0); 01007 01017 OFCondition saveFileFormatToDB(DcmFileFormat &fileformat); 01018 01028 OFCondition loadStoredPrint(const char *studyUID, const char *seriesUID, const char *instanceUID, OFBool changeStatus = OFFalse); 01029 01036 OFCondition loadStoredPrint(const char *filename); 01037 01049 OFCondition saveStoredPrint( 01050 const char *filename, 01051 OFBool writeRequestedImageSize, 01052 OFBool explicitVR=OFTrue, 01053 const char *instanceUID=NULL); 01054 01065 OFCondition saveStoredPrint(OFBool writeRequestedImageSize); 01066 01070 size_t getNumberOfPrintPreviews(); 01071 01083 OFCondition loadPrintPreview(size_t idx, OFBool printLUT = OFTrue, OFBool changeStatus = OFFalse); 01084 01087 void unloadPrintPreview(); 01088 01093 unsigned long getPrintPreviewSize(); 01094 01103 void setMaxPrintPreviewWidthHeight(unsigned long width, unsigned long height); 01104 01111 OFCondition getPrintPreviewWidthHeight(unsigned long &width, unsigned long &height); 01112 01119 OFCondition getPrintPreviewBitmap(void *bitmap, unsigned long size); 01120 01127 OFCondition disablePState(); 01128 01134 OFCondition enablePState(); 01135 01141 Uint32 getNumberOfPStates(); 01142 01149 OFCondition selectPState(Uint32 idx, OFBool changeStatus = OFFalse); 01150 01156 const char *getPStateDescription(Uint32 idx); 01157 01163 const char *getPStateLabel(Uint32 idx); 01164 01172 OFBool isDisplayTransformPossible(DVPSDisplayTransform transform = DVPSD_GSDF); 01173 01178 OFCondition setAmbientLightValue(double value); 01179 01184 OFCondition getAmbientLightValue(double &value); 01185 01186 /* print related methods */ 01187 01193 OFCondition setCurrentPrinter(const char *targetID); 01194 01199 const char *getCurrentPrinter(); 01200 01207 OFCondition setPrinterMediumType(const char *value); 01208 01212 const char *getPrinterMediumType(); 01213 01220 OFCondition setPrinterFilmDestination(const char *value); 01221 01225 const char *getPrinterFilmDestination(); 01226 01233 OFCondition setPrinterFilmSessionLabel(const char *value); 01234 01238 const char *getPrinterFilmSessionLabel(); 01239 01246 OFCondition setPrinterPriority(const char *value); 01247 01251 const char *getPrinterPriority(); 01252 01259 OFCondition setPrinterOwnerID(const char *value); 01260 01264 const char *getPrinterOwnerID(); 01265 01272 OFCondition setPrinterNumberOfCopies(unsigned long value); 01273 01277 unsigned long getPrinterNumberOfCopies(); 01278 01284 void clearFilmSessionSettings(); 01285 01291 OFCondition selectDisplayPresentationLUT(const char *lutID); 01292 01298 const char *getDisplayPresentationLUTID(); 01299 01307 OFCondition selectPrintPresentationLUT(const char *lutID); 01308 01314 const char *getPrintPresentationLUTID(); 01315 01320 OFCondition spoolPrintJob(OFBool deletePrintedImages=OFTrue); 01321 01333 OFCondition startPrintSpooler(); 01334 01341 OFCondition terminatePrintSpooler(); 01342 01355 OFCondition startPrintServer(); 01356 01364 OFCondition terminatePrintServer(); 01365 01376 OFCondition addToPrintHardcopyFromDB(const char *studyUID, const char *seriesUID, const char *instanceUID); 01377 01388 OFCondition spoolStoredPrintFromDB(const char *studyUID, const char *seriesUID, const char *instanceUID); 01389 01399 OFCondition printSCUcreateBasicFilmSession(DVPSPrintMessageHandler& printHandler, OFBool plutInSession); 01400 01401 /* annotation interface */ 01402 01406 OFBool isActiveAnnotation() { return activateAnnotation; } 01407 01411 OFBool getPrependDateTime() { return prependDateTime; } 01412 01416 OFBool getPrependPrinterName() { return prependPrinterName; } 01417 01421 OFBool getPrependLighting() { return prependLighting; } 01422 01426 const char *getAnnotationText() { return annotationText.c_str(); } 01427 01431 void setActiveAnnotation(OFBool value) { activateAnnotation=value; } 01432 01436 void setPrependDateTime(OFBool value) { prependDateTime=value; } 01437 01441 void setPrependPrinterName(OFBool value) { prependPrinterName=value; } 01442 01446 void setPrependLighting(OFBool value) { prependLighting=value; } 01447 01451 void setAnnotationText(const char *value); 01452 01453 /* user management interface */ 01454 01466 OFBool verifyUserPassword(const char *userID, const char *passwd); 01467 01491 OFCondition verifyAndSignStructuredReport(const char *userID, const char *passwd, DVPSVerifyAndSignMode mode); 01492 01493 01494 /* log file interface */ 01495 01501 virtual void setLog(OFConsole *stream, OFBool verbMode, OFBool dbgMode); 01502 01510 void setLogFilter(DVPSLogMessageLevel level); 01511 01520 OFCondition writeLogMessage( 01521 DVPSLogMessageLevel level, 01522 const char *module, 01523 const char *message); 01524 01525 /* digital signatures */ 01526 01533 const char *getCurrentSignatureValidationHTML(DVPSObjectType objtype) const; 01534 01539 const char *getCurrentSignatureValidationOverview() const; 01540 01545 DVPSSignatureStatus getCurrentSignatureStatus(DVPSObjectType objtype) const; 01546 01550 DVPSSignatureStatus getCombinedImagePStateSignatureStatus() const; 01551 01556 unsigned long getNumberOfCorrectSignatures(DVPSObjectType objtype) const; 01557 01562 unsigned long getNumberOfUntrustworthySignatures(DVPSObjectType objtype) const; 01563 01568 unsigned long getNumberOfCorruptSignatures(DVPSObjectType objtype) const; 01569 01574 void disableImageAndPState(); 01575 01576 private: 01577 01580 DVInterface(const DVInterface&); 01581 01584 DVInterface& operator=(const DVInterface&); 01585 01593 OFCondition exchangeImageAndPState(DVPresentationState *newState, DcmFileFormat *image, DcmFileFormat *state=NULL); 01594 01601 OFCondition lockDatabase(); 01602 01609 OFCondition lockExclusive(); 01610 01614 OFCondition unlockExclusive(); 01615 01622 OFCondition createPrintJobFilenames(const char *printer, OFString& tempname, OFString& jobname); 01623 01628 OFCondition createQueryRetrieveServerConfigFile(const char *filename); 01629 01636 OFCondition startExternalApplication(const char *application, const char *filename); 01637 01638 /* member variables */ 01639 01642 DVPSStoredPrint *pPrint; 01643 01646 DVPresentationState *pState; 01647 01650 DSRDocument *pReport; 01651 01654 DVSignatureHandler *pSignatureHandler; 01655 01658 DVPresentationState *pStoredPState; 01659 01662 DcmFileFormat *pDicomImage; 01663 01667 DcmFileFormat *pDicomPState; 01668 01671 DicomImage *pHardcopyImage; 01672 01676 OFString printJobIdentifier; 01677 01680 unsigned long printJobCounter; 01681 01684 OFString configPath; 01685 01689 OFString databaseIndexFile; 01690 01694 unsigned long referenceTime; 01695 01698 DiDisplayFunction *displayFunction[DVPSD_max]; 01699 01702 DB_Private_Handle *pHandle; 01703 01706 OFBool lockingMode; 01707 01710 DVStudyCache idxCache; 01711 01714 IdxRecord idxRec; 01715 01718 int idxRecPos; 01719 01722 OFBool imageInDatabase; 01723 01724 /* private methods for database */ 01725 01728 OFBool createIndexCache(); 01729 01732 OFBool createPStateCache(); 01733 01736 void clearIndexCache(); 01737 01740 void clearIndexRecord(IdxRecord &record, 01741 int &recpos); 01742 01746 OFBool readIndexRecord(const int pos, 01747 IdxRecord &record, 01748 int *oldpos = NULL); 01749 01753 void updateStatusCache(); 01754 01757 DVStudyCache::ItemStruct *getStudyStruct(const char *studyUID = NULL, 01758 const char *seriesUID = NULL); 01759 01762 DVSeriesCache::ItemStruct *getSeriesStruct(const char *studyUID = NULL, 01763 const char *seriesUID = NULL, 01764 const char *instanceUID = NULL); 01765 01768 DVInstanceCache::ItemStruct *getInstanceStruct(const char *studyUID = NULL, 01769 const char *seriesUID = NULL, 01770 const char *instanceUID = NULL); 01771 01774 int findStudyIdx(StudyDescRecord *study, 01775 const char *uid); 01776 01779 int deleteImageFile(const char *filename); 01780 01783 void resetDatabaseReferenceTime(); 01784 01785 01789 OFCondition instanceReviewed(int pos); 01790 01793 unsigned long minimumPrintBitmapWidth; 01794 01797 unsigned long minimumPrintBitmapHeight; 01798 01801 unsigned long maximumPrintBitmapWidth; 01802 01805 unsigned long maximumPrintBitmapHeight; 01806 01809 unsigned long maximumPrintPreviewWidth; 01810 01813 unsigned long maximumPrintPreviewHeight; 01814 01817 unsigned long maximumPreviewImageWidth; 01818 01821 unsigned long maximumPreviewImageHeight; 01822 01825 OFString currentPrinter; 01826 01829 OFString displayCurrentLUTID; 01830 01833 OFString printCurrentLUTID; 01834 01837 OFString printerMediumType; 01838 01841 OFString printerFilmDestination; 01842 01845 OFString printerFilmSessionLabel; 01846 01849 unsigned long printerNumberOfCopies; 01850 01854 OFString printerPriority; 01855 01858 OFString printerOwnerID; 01859 01862 OFBool activateAnnotation; 01863 01866 OFBool prependDateTime; 01867 01870 OFBool prependPrinterName; 01871 01874 OFBool prependLighting; 01875 01878 OFString annotationText; 01879 01882 OFLogFile *logFile; 01883 }; 01884 01885 01886 #endif 01887 01888 01889 /* 01890 * CVS/RCS Log: 01891 * $Log: dviface.h,v $ 01892 * Revision 1.89 2004/02/04 15:48:23 joergr 01893 * Removed acknowledgements with e-mail addresses from CVS log. 01894 * 01895 * Revision 1.88 2003/04/29 10:13:56 meichel 01896 * Moved configuration file parser from module dcmpstat to ofstd and renamed 01897 * class to OFConfigFile. Cleaned up implementation (no more friend declarations). 01898 * 01899 * Revision 1.87 2002/04/16 14:02:02 joergr 01900 * Added configurable support for C++ ANSI standard includes (e.g. streams). 01901 * 01902 * Revision 1.86 2001/09/26 15:36:06 meichel 01903 * Adapted dcmpstat to class OFCondition 01904 * 01905 * Revision 1.85 2001/02/23 13:31:46 joergr 01906 * Changed behaviour of method verifyAndSignStructuredReport() with 'finalize'. 01907 * Now the entire document is always signed independently from the tree items 01908 * marked. 01909 * 01910 * Revision 1.84 2001/01/29 17:32:30 joergr 01911 * Added method to verify and digitally sign structured reports. 01912 * 01913 * Revision 1.83 2001/01/29 14:55:41 meichel 01914 * Added new methods for creating signatures and checking the signature 01915 * status in module dcmpstat. 01916 * 01917 * Revision 1.82 2001/01/25 15:18:04 meichel 01918 * Added initial support for verification of digital signatures 01919 * in presentation states, images and structured reports to module dcmpstat. 01920 * 01921 * Revision 1.81 2000/11/14 16:35:16 joergr 01922 * Added creation of new UIDs and setting of content date/time when starting 01923 * a new SR document from a "template". 01924 * 01925 * Revision 1.80 2000/11/13 15:50:42 meichel 01926 * Added dcmpstat support methods for creating image references 01927 * in SR documents. 01928 * 01929 * Revision 1.79 2000/11/13 11:52:40 meichel 01930 * Added support for user logins and certificates. 01931 * 01932 * Revision 1.78 2000/11/13 10:42:38 joergr 01933 * Added support for Structured Reporting "templates". 01934 * 01935 * Revision 1.77 2000/10/16 11:39:43 joergr 01936 * Added support for new structured reports. 01937 * Added method allowing to select an instance by instance UID and SOP class 01938 * UID (without series and study UID). Required for composite references in 01939 * DICOM SR. 01940 * 01941 * Revision 1.76 2000/10/10 12:23:39 meichel 01942 * Added extensions for TLS encrypted communication 01943 * 01944 * Revision 1.75 2000/07/18 16:02:35 joergr 01945 * Moved method convertODtoLum/PValue from class DVInterface to DVPSStoredPrint 01946 * and corrected implementation. 01947 * 01948 * Revision 1.74 2000/07/17 12:05:09 joergr 01949 * Added methods to select objects from the database directly. 01950 * 01951 * Revision 1.73 2000/07/14 17:09:47 joergr 01952 * Added changeStatus parameter to all methods loading instances from the 01953 * database. 01954 * 01955 * Revision 1.72 2000/07/06 09:41:00 joergr 01956 * Added flag to loadPrintPreview() method allowing to choose how to interpret 01957 * the presentation LUT (hardcopy or softcopy definition). 01958 * 01959 * Revision 1.71 2000/07/04 15:58:00 joergr 01960 * Added support for overriding the presentation LUT settings made for the 01961 * image boxes. 01962 * 01963 * Revision 1.70 2000/06/21 15:40:57 meichel 01964 * Added DICOMscope support for calling the Presentation State Checker. 01965 * 01966 * Revision 1.69 2000/06/09 10:13:54 joergr 01967 * Added method to get number of presentation states referencing an image 01968 * (specified by the three UIDs). 01969 * 01970 * Revision 1.68 2000/06/08 17:36:23 joergr 01971 * Added method convertODtoLum(). 01972 * 01973 * Revision 1.67 2000/06/07 14:15:52 joergr 01974 * Added configuration file entry "LogLevel" to filter log messages. 01975 * Added flag to constructor specifying whether the general log file should be 01976 * used (default: off). 01977 * 01978 * Revision 1.66 2000/06/05 16:21:30 joergr 01979 * Implemented log message methods. 01980 * Added method allowing to specify the current presentation state to be used 01981 * for resetting the pstate. 01982 * 01983 * Revision 1.65 2000/06/02 16:00:41 meichel 01984 * Adapted all dcmpstat classes to use OFConsole for log and error output 01985 * 01986 * Revision 1.64 2000/06/02 13:53:53 joergr 01987 * Implemented start/terminatePrintServer methods. 01988 * 01989 * Revision 1.63 2000/06/02 12:41:50 joergr 01990 * Corrected wrong interface descriptions. 01991 * 01992 * Revision 1.62 2000/05/31 12:56:37 meichel 01993 * Added initial Print SCP support 01994 * 01995 * Revision 1.61 2000/05/31 07:54:23 joergr 01996 * Added support for Stored Print attributes Originator and Destination 01997 * application entity title. 01998 * 01999 * Revision 1.60 2000/05/30 13:36:45 joergr 02000 * Added new private SOP class (UID definition) to allow external shutdown 02001 * of console applications via negotiation of this special SOP class 02002 * (currently used for imagectn and dcmpsrcv). 02003 * Renamed GrayscaleHardcopy to HardcopyGrayscale (which is the correct term 02004 * according to the DICOM standard). 02005 * Added support for multi-frame images and multiple references from a single 02006 * presentation to a number of images. 02007 * Removed methods which were already marked as "retired". 02008 * Added interface methods to support the following new features: 02009 * - start/terminate query/retrieve server 02010 * - load stored print objects 02011 * - create print preview from hardcopy grayscale images 02012 * - check DICOM IODs for correctness (not yet implemented) 02013 * - set presentation LUT for film session (not yet implemented) 02014 * - start/terminate print server (not yet implemented) 02015 * - write/filter log messages (not yet implemented) 02016 * 02017 * Revision 1.59 2000/03/08 16:28:47 meichel 02018 * Updated copyright header. 02019 * 02020 * Revision 1.58 2000/03/03 14:13:54 meichel 02021 * Implemented library support for redirecting error messages into memory 02022 * instead of printing them to stdout/stderr for GUI applications. 02023 * 02024 * Revision 1.57 1999/11/03 13:05:31 meichel 02025 * Added support for transmitting annotations in the film session label. 02026 * Added support for dump tool launched from DVInterface. 02027 * 02028 * Revision 1.56 1999/10/20 10:47:13 joergr 02029 * Added support for a down-scaled preview image of the current DICOM image 02030 * (e.g. useful for online-windowing or print preview). 02031 * 02032 * Revision 1.55 1999/10/19 14:46:01 meichel 02033 * added support for the Basic Annotation Box SOP Class 02034 * as well as access methods for Max Density and Min Density. 02035 * 02036 * Revision 1.54 1999/10/07 17:21:45 meichel 02037 * Reworked management of Presentation LUTs in order to create tighter 02038 * coupling between Softcopy and Print. 02039 * 02040 * Revision 1.53 1999/09/27 10:41:52 meichel 02041 * Print interface now copies current printer name, avoids JNI problems. 02042 * 02043 * Revision 1.52 1999/09/24 15:24:28 meichel 02044 * Added support for CP 173 (Presentation LUT clarifications) 02045 * 02046 * Revision 1.51 1999/09/23 17:37:12 meichel 02047 * Added support for Basic Film Session options to dcmpstat print code. 02048 * 02049 * Revision 1.50 1999/09/17 14:33:55 meichel 02050 * Completed print spool functionality including Supplement 22 support 02051 * 02052 * Revision 1.49 1999/09/15 17:43:25 meichel 02053 * Implemented print job dispatcher code for dcmpstat, adapted dcmprtsv 02054 * and dcmpsprt applications. 02055 * 02056 * Revision 1.48 1999/09/13 15:19:08 meichel 02057 * Added implementations for a number of further print API methods. 02058 * 02059 * Revision 1.47 1999/09/10 12:46:44 meichel 02060 * Added implementations for a number of print API methods. 02061 * 02062 * Revision 1.46 1999/09/10 09:37:29 joergr 02063 * Re-added automatically removed method declarations (maybe a problem with 02064 * CVS's merge algorithm). 02065 * 02066 * Revision 1.43 1999/09/08 17:03:01 joergr 02067 * Added support for new instance types in database (grayscale hardcopy and 02068 * stored print). 02069 * 02070 * Revision 1.42 1999/09/08 16:42:01 meichel 02071 * Moved configuration file evaluation to separate class. 02072 * 02073 * Revision 1.41 1999/09/01 16:14:39 meichel 02074 * Added support for requested image size to print routines 02075 * 02076 * Revision 1.40 1999/08/31 16:54:44 meichel 02077 * Added new sample application that allows to create simple print jobs. 02078 * 02079 * Revision 1.39 1999/08/31 14:02:05 meichel 02080 * Added print related config file methods 02081 * 02082 * Revision 1.38 1999/08/27 15:57:55 meichel 02083 * Added methods for saving hardcopy images and stored print objects 02084 * either in file or in the local database. 02085 * 02086 * Revision 1.37 1999/08/25 16:47:20 joergr 02087 * Moved method 'saveFileFormat()' to public part of the interface class. 02088 * 02089 * Revision 1.36 1999/05/05 14:25:26 joergr 02090 * Added optional parameter to method loadPState (from database) to change 02091 * instance reviewed flag for pstate and image. 02092 * 02093 * Revision 1.35 1999/04/29 15:25:37 joergr 02094 * Added PresentationLabel to index file. 02095 * 02096 * Revision 1.34 1999/04/27 11:23:16 joergr 02097 * Enhanced savePState() method: now image file is also added to index file 02098 * and stored in image directory (if not already there). 02099 * Added new entry to index file: Presentation Description. 02100 * 02101 * Revision 1.33 1999/03/03 13:24:32 joergr 02102 * Added methods to get and set ambient light value (re: Barten transformation). 02103 * Moved method 'isBartenTransformPossible()' from presentation state class to 02104 * interface class. 02105 * 02106 * Revision 1.32 1999/03/02 12:52:51 joergr 02107 * Added parameter to selectPState() specifying whether to change the review 02108 * status of the loaded presentation state. 02109 * 02110 * Revision 1.31 1999/02/25 18:38:58 joergr 02111 * Added some comments. 02112 * Renamed methods enable/disablePState(). 02113 * 02114 * Revision 1.30 1999/02/24 20:17:48 joergr 02115 * Added methods to get a list of presentation states referencing the 02116 * currently selected image. 02117 * Added support for exchanging current presentation state (load from file) 02118 * without deleting the current image. 02119 * 02120 * Revision 1.29 1999/02/22 14:20:20 joergr 02121 * Added deletion of image files (depending on directory where the file is 02122 * stored). 02123 * Modified comments for getGUIConfig... methods to indicate that the 02124 * specified key must be upper case. 02125 * Reset reference time for file modification checking after the index file 02126 * has been changed internally (delete and change status methods). 02127 * 02128 * Revision 1.28 1999/02/19 18:58:11 joergr 02129 * Added methods to disable and (re-)enable PresentationStates. 02130 * Added (private) helper methods to reduce redundant lines of code. 02131 * 02132 * Revision 1.27 1999/02/19 09:44:17 joergr 02133 * Added comments to new database routines and related member variables. 02134 * 02135 * Revision 1.26 1999/02/18 18:46:19 joergr 02136 * Re-implemented methods to access index file (delete methods are still 02137 * missing). 02138 * Removed parameter 'deletefile' from delete methods. This parameter is 02139 * not necessary because the decision whether a images file is deleted only 02140 * depends on the directory where the file is stored (see comments). 02141 * 02142 * Revision 1.25 1999/02/18 11:07:26 meichel 02143 * Added new parameter explicitVR to interface methods savePState, 02144 * saveDICOMImage. Allows to choose between explicit VR and implicit VR 02145 * little endian format. Added new method saveCurrentImage that allows to 02146 * save the current image to file. 02147 * 02148 * Revision 1.24 1999/02/17 10:05:30 meichel 02149 * Moved creation of Display Function object from DVPresentationState to 02150 * DVInterface to avoid unnecessary re-reads. 02151 * 02152 * Revision 1.23 1999/02/16 16:36:10 meichel 02153 * Added method newInstancesReceived() to DVInterface class. 02154 * 02155 * Revision 1.22 1999/02/12 10:02:46 vorwerk 02156 * added cache , changed deletemethods. 02157 * 02158 * Revision 1.21 1999/02/09 15:58:07 meichel 02159 * Implemented methods that save images and presentation states in the DB. 02160 * 02161 * Revision 1.20 1999/02/08 10:52:33 meichel 02162 * Updated documentation of dviface.h in Doc++ style. 02163 * Removed dummy parameter from constructor. 02164 * 02165 * Revision 1.19 1999/02/05 17:45:35 meichel 02166 * Added config file entry for monitor characteristics file. Monitor charac- 02167 * teristics are passed to dcmimage if present to activate Barten transform. 02168 * 02169 * Revision 1.18 1999/02/05 11:38:01 vorwerk 02170 * parameter in stripidxarray added. 02171 * 02172 * Revision 1.17 1999/01/29 16:01:05 meichel 02173 * Reworked index file handle acquisition and locking code. 02174 * 02175 * Revision 1.16 1999/01/28 15:30:53 vorwerk 02176 * New database lock method added. 02177 * 02178 * Revision 1.15 1999/01/27 15:28:34 vorwerk 02179 * new method idxfiletest added to handle with indexfiles of length zero. 02180 * 02181 * Revision 1.14 1999/01/27 14:59:28 meichel 02182 * Implemented DICOM network receive application "dcmpsrcv" which receives 02183 * images and presentation states and stores them in the local database. 02184 * 02185 * Revision 1.13 1999/01/25 18:18:23 meichel 02186 * Defined private SOP class UID for network receiver 02187 * shutdown function. Cleanup up some code. 02188 * 02189 * Revision 1.12 1999/01/25 16:55:17 vorwerk 02190 * function stripidxarray added. 02191 * 02192 * Revision 1.11 1999/01/25 13:05:55 meichel 02193 * Implemented DVInterface::startReceiver() 02194 * and several config file related methods. 02195 * 02196 * Revision 1.10 1999/01/20 19:25:25 meichel 02197 * Implemented sendIOD method which creates a separate process for trans- 02198 * mitting images from the local database to a remote communication peer. 02199 * 02200 * Revision 1.9 1999/01/19 15:14:48 vorwerk 02201 * Methods for acesseing additional attributes added. 02202 * 02203 * Revision 1.8 1999/01/15 17:27:14 meichel 02204 * added DVInterface method resetPresentationState() which allows to reset a 02205 * presentation state to the initial state (after loading). 02206 * 02207 * Revision 1.7 1999/01/14 17:50:30 meichel 02208 * added new method saveDICOMImage() to class DVInterface. 02209 * Allows to store a bitmap as a DICOM image. 02210 * 02211 * Revision 1.6 1999/01/04 13:27:16 vorwerk 02212 * line inserted 02213 * 02214 * Revision 1.5 1999/01/04 13:02:26 vorwerk 02215 * getSeriesPerformingPhysicainsName() changed in getSeriesPerformingPhysiciansName() 02216 * 02217 * Revision 1.4 1998/12/22 17:57:03 meichel 02218 * Implemented Presentation State interface for overlays, 02219 * VOI LUTs, VOI windows, curves. Added test program that 02220 * allows to add curve data to DICOM images. 02221 * 02222 * Revision 1.3 1998/12/22 15:50:06 vorwerk 02223 * - constructor now with parameter for directory of index.dat 02224 * - changed const methods in non-const-methods 02225 * - added methods for attributes of DICOM-documents 02226 * - added private method for operations on index.dat 02227 * 02228 * Revision 1.2 1998/11/30 11:26:59 joergr 02229 * Added CVS/RCS log at end of file. 02230 * 02231 * 02232 */


Generated on 4 Nov 2004 for OFFIS DCMTK Version 3.5.3 by Doxygen 1.3.8