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 */