00001 /* 00002 * 00003 * Copyright (C) 1998-2010, OFFIS e.V. 00004 * All rights reserved. See COPYRIGHT file for details. 00005 * 00006 * This software and supporting documentation were developed by 00007 * 00008 * OFFIS e.V. 00009 * R&D Division Health 00010 * Escherweg 2 00011 * D-26121 Oldenburg, Germany 00012 * 00013 * 00014 * Module: dcmpstat 00015 * 00016 * Author: Marco Eichelberg, Joerg Riesmeier 00017 * 00018 * Purpose: 00019 * classes: DVInterface 00020 * 00021 * Last Update: $Author: joergr $ 00022 * Update Date: $Date: 2010-10-14 13:16:35 $ 00023 * CVS/RCS Revision: $Revision: 1.95 $ 00024 * Status: $State: Exp $ 00025 * 00026 * CVS/RCS Log at end of file 00027 * 00028 */ 00029 00030 00031 #ifndef DVIFACE_H 00032 #define DVIFACE_H 00033 00034 #include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */ 00035 00036 00037 #include "dcmtk/ofstd/ofstream.h" 00038 #include "dcmtk/dcmpstat/dvpscf.h" /* for class DVConfiguration */ 00039 #include "dcmtk/dcmpstat/dvpstat.h" /* for class DVPresentationState */ 00040 #include "dcmtk/dcmqrdb/dcmqridx.h" /* for struct IdxRecord */ 00041 #include "dcmtk/ofstd/ofstring.h" /* for class OFString */ 00042 #include "dcmtk/dcmpstat/dvcache.h" /* for index file caching */ 00043 00044 00045 class DicomImage; 00046 class DiDisplayFunction; 00047 class DVPSStoredPrint; 00048 class DVPSPrintMessageHandler; 00049 class DSRDocument; 00050 class DVSignatureHandler; 00051 00056 class DVInterface: public DVConfiguration 00057 { 00058 00059 public: 00060 00070 DVInterface(const char *config_file = NULL, OFBool useLog = OFFalse); 00071 00074 virtual ~DVInterface(); 00075 00076 /* load images, presentation states and structured reports */ 00077 00087 OFCondition loadImage(const char *studyUID, const char *seriesUID, const char *instanceUID, OFBool changeStatus = OFFalse); 00088 00095 OFCondition loadImage(const char *filename); 00096 00104 OFCondition loadReferencedImage(size_t idx, OFBool changeStatus = OFFalse); 00105 00116 OFCondition loadPState(const char *studyUID, const char *seriesUID, const char *instanceUID, OFBool changeStatus = OFFalse); 00117 00126 OFCondition loadPState(const char *pstName, const char *imgName = NULL); 00127 00136 OFCondition loadStructuredReport(const char *studyUID, const char *seriesUID, const char *instanceUID, OFBool changeStatus = OFFalse); 00137 00143 OFCondition loadStructuredReport(const char *filename); 00144 00157 OFCondition loadSRTemplate(const char *reportID); 00158 00171 OFCondition savePState(OFBool replaceSOPInstanceUID); 00172 00186 OFCondition savePState(const char *filename, OFBool replaceSOPInstanceUID, OFBool explicitVR=OFTrue); 00187 00197 OFCondition saveCurrentImage(const char *filename, OFBool explicitVR=OFTrue); 00198 00210 OFCondition saveStructuredReport(); 00211 00224 OFCondition saveStructuredReport(const char *filename, OFBool explicitVR=OFTrue); 00225 00234 OFCondition addImageReferenceToPState(const char *studyUID, const char *seriesUID, const char *instanceUID); 00235 00239 size_t getNumberOfImageReferences(); 00240 00247 DVPresentationState& getCurrentPState() 00248 { 00249 return *pState; 00250 } 00251 00257 DSRDocument& getCurrentReport() 00258 { 00259 return *pReport; 00260 } 00261 00266 DVPSStoredPrint& getPrintHandler() 00267 { 00268 return *pPrint; 00269 } 00270 00278 OFCondition resetPresentationState(); 00279 00285 OFCondition saveCurrentPStateForReset(); 00286 00295 OFCondition releaseDatabase(); 00296 00306 const char *getFilename(const char *studyUID, const char *seriesUID, const char *instanceUID); 00307 00316 Uint32 getNumberOfStudies(); 00317 00326 OFCondition selectStudy(Uint32 idx); 00327 00336 OFCondition selectStudy(const char *studyUID); 00337 00344 DVIFhierarchyStatus getStudyStatus() ; 00345 00351 const char *getStudyUID(); 00352 00358 const char *getStudyDescription(); 00359 00365 const char *getStudyDate(); 00366 00372 const char *getStudyTime(); 00373 00379 const char *getReferringPhysiciansName(); 00380 00386 const char *getAccessionNumber(); 00387 00393 const char *getNameOfPhysiciansReadingStudy(); 00394 00402 const char *getPatientName(); 00403 00411 const char *getPatientID(); 00412 00420 const char *getPatientBirthDate(); 00421 00429 const char *getPatientSex(); 00430 00438 const char *getPatientBirthTime(); 00439 00447 const char *getOtherPatientNames(); 00448 00456 const char *getOtherPatientID(); 00457 00465 const char *getEthnicGroup(); 00466 00474 Uint32 getNumberOfSeries(); 00475 00483 OFCondition selectSeries(Uint32 idx); 00484 00492 OFCondition selectSeries(const char *seriesUID); 00493 00499 const char *getSeriesUID(); 00500 00506 DVIFhierarchyStatus getSeriesStatus(); 00507 00515 DVPSInstanceType getSeriesType(); 00516 00522 DVPSInstanceType getInstanceType(); 00523 00529 const char *getSeriesNumber(); 00530 00536 const char *getSeriesDate(); 00537 00543 const char *getSeriesTime(); 00544 00550 const char *getSeriesDescription(); 00551 00557 const char *getSeriesPerformingPhysiciansName(); 00558 00564 const char *getSeriesProtocolName(); 00565 00571 const char *getSeriesOperatorsName(); 00572 00578 const char *getModality(); 00579 00587 Uint32 getNumberOfInstances(); 00588 00596 OFCondition selectInstance(Uint32 idx); 00597 00605 OFCondition selectInstance(const char *instanceUID); 00606 00616 OFCondition selectInstance(const char *instanceUID, const char *sopClassUID); 00617 00627 OFCondition selectInstance(const char *studyUID, const char *seriesUID, const char *instanceUID); 00628 00634 const char *getSOPClassUID(); 00635 00641 const char *getInstanceUID(); 00642 00648 const char *getImageNumber(); 00649 00655 const char *getFilename(); 00656 00662 DVIFhierarchyStatus getInstanceStatus() ; 00663 00669 const char *getInstanceDescription(); 00670 00676 const char *getPresentationLabel(); 00677 00678 00679 /* methods modifying the database */ 00680 00693 OFCondition instanceReviewed(const char *studyUID, const char *seriesUID, const char *instanceUID); 00694 00706 OFCondition deleteInstance(const char *studyUID, const char *seriesUID, const char *instanceUID); 00707 00718 OFCondition deleteSeries(const char *studyUID, const char *seriesUID); 00719 00729 OFCondition deleteStudy(const char *studyUID); 00730 00731 /* here follow the Network interface methods */ 00732 00744 OFCondition startReceiver(); 00745 00753 OFCondition terminateReceiver(); 00754 00770 OFCondition startQueryRetrieveServer(); 00771 00781 OFCondition terminateQueryRetrieveServer(); 00782 00793 OFBool newInstancesReceived(); 00794 00807 OFCondition sendStudy(const char *targetID, const char *studyUID) 00808 { 00809 return sendIOD(targetID, studyUID, NULL, NULL); 00810 } 00811 00826 OFCondition sendSeries(const char *targetID, const char *studyUID, const char *seriesUID) 00827 { 00828 return sendIOD(targetID, studyUID, seriesUID, NULL); 00829 } 00830 00848 OFCondition sendIOD(const char *targetID, const char *studyUID, const char *seriesUID, const char *instanceUID); 00849 00860 OFCondition dumpIOD(const char *filename); 00861 00877 OFCondition dumpIOD(const char *studyUID, const char *seriesUID, const char *instanceUID); 00878 00889 OFCondition checkIOD(const char *filename); 00890 00906 OFCondition checkIOD(const char *studyUID, const char *seriesUID, const char *instanceUID); 00907 00925 OFCondition saveDICOMImage( 00926 const char *filename, 00927 const void *pixelData, 00928 unsigned long width, 00929 unsigned long height, 00930 double aspectRatio=1.0, 00931 OFBool explicitVR=OFTrue, 00932 const char *instanceUID=NULL); 00933 00948 OFCondition saveDICOMImage( 00949 const void *pixelData, 00950 unsigned long width, 00951 unsigned long height, 00952 double aspectRatio=1.0); 00953 00971 OFCondition saveHardcopyGrayscaleImage( 00972 const char *filename, 00973 const void *pixelData, 00974 unsigned long width, 00975 unsigned long height, 00976 double aspectRatio=1.0, 00977 OFBool explicitVR=OFTrue, 00978 const char *instanceUID=NULL); 00979 00994 OFCondition saveHardcopyGrayscaleImage( 00995 const void *pixelData, 00996 unsigned long width, 00997 unsigned long height, 00998 double aspectRatio=1.0); 00999 01009 OFCondition saveFileFormatToDB(DcmFileFormat &fileformat); 01010 01020 OFCondition loadStoredPrint(const char *studyUID, const char *seriesUID, const char *instanceUID, OFBool changeStatus = OFFalse); 01021 01028 OFCondition loadStoredPrint(const char *filename); 01029 01041 OFCondition saveStoredPrint( 01042 const char *filename, 01043 OFBool writeRequestedImageSize, 01044 OFBool explicitVR=OFTrue, 01045 const char *instanceUID=NULL); 01046 01057 OFCondition saveStoredPrint(OFBool writeRequestedImageSize); 01058 01062 size_t getNumberOfPrintPreviews(); 01063 01075 OFCondition loadPrintPreview(size_t idx, OFBool printLUT = OFTrue, OFBool changeStatus = OFFalse); 01076 01079 void unloadPrintPreview(); 01080 01085 unsigned long getPrintPreviewSize(); 01086 01095 void setMaxPrintPreviewWidthHeight(unsigned long width, unsigned long height); 01096 01103 OFCondition getPrintPreviewWidthHeight(unsigned long &width, unsigned long &height); 01104 01111 OFCondition getPrintPreviewBitmap(void *bitmap, unsigned long size); 01112 01119 OFCondition disablePState(); 01120 01126 OFCondition enablePState(); 01127 01133 Uint32 getNumberOfPStates(); 01134 01141 OFCondition selectPState(Uint32 idx, OFBool changeStatus = OFFalse); 01142 01148 const char *getPStateDescription(Uint32 idx); 01149 01155 const char *getPStateLabel(Uint32 idx); 01156 01164 OFBool isDisplayTransformPossible(DVPSDisplayTransform transform = DVPSD_GSDF); 01165 01170 OFCondition setAmbientLightValue(double value); 01171 01176 OFCondition getAmbientLightValue(double &value); 01177 01178 /* print related methods */ 01179 01185 OFCondition setCurrentPrinter(const char *targetID); 01186 01191 const char *getCurrentPrinter(); 01192 01199 OFCondition setPrinterMediumType(const char *value); 01200 01204 const char *getPrinterMediumType(); 01205 01212 OFCondition setPrinterFilmDestination(const char *value); 01213 01217 const char *getPrinterFilmDestination(); 01218 01225 OFCondition setPrinterFilmSessionLabel(const char *value); 01226 01230 const char *getPrinterFilmSessionLabel(); 01231 01238 OFCondition setPrinterPriority(const char *value); 01239 01243 const char *getPrinterPriority(); 01244 01251 OFCondition setPrinterOwnerID(const char *value); 01252 01256 const char *getPrinterOwnerID(); 01257 01264 OFCondition setPrinterNumberOfCopies(unsigned long value); 01265 01269 unsigned long getPrinterNumberOfCopies(); 01270 01276 void clearFilmSessionSettings(); 01277 01283 OFCondition selectDisplayPresentationLUT(const char *lutID); 01284 01290 const char *getDisplayPresentationLUTID(); 01291 01299 OFCondition selectPrintPresentationLUT(const char *lutID); 01300 01306 const char *getPrintPresentationLUTID(); 01307 01312 OFCondition spoolPrintJob(OFBool deletePrintedImages=OFTrue); 01313 01325 OFCondition startPrintSpooler(); 01326 01333 OFCondition terminatePrintSpooler(); 01334 01347 OFCondition startPrintServer(); 01348 01356 OFCondition terminatePrintServer(); 01357 01368 OFCondition addToPrintHardcopyFromDB(const char *studyUID, const char *seriesUID, const char *instanceUID); 01369 01380 OFCondition spoolStoredPrintFromDB(const char *studyUID, const char *seriesUID, const char *instanceUID); 01381 01391 OFCondition printSCUcreateBasicFilmSession(DVPSPrintMessageHandler& printHandler, OFBool plutInSession); 01392 01393 /* annotation interface */ 01394 01398 OFBool isActiveAnnotation() { return activateAnnotation; } 01399 01403 OFBool getPrependDateTime() { return prependDateTime; } 01404 01408 OFBool getPrependPrinterName() { return prependPrinterName; } 01409 01413 OFBool getPrependLighting() { return prependLighting; } 01414 01418 const char *getAnnotationText() { return annotationText.c_str(); } 01419 01423 void setActiveAnnotation(OFBool value) { activateAnnotation=value; } 01424 01428 void setPrependDateTime(OFBool value) { prependDateTime=value; } 01429 01433 void setPrependPrinterName(OFBool value) { prependPrinterName=value; } 01434 01438 void setPrependLighting(OFBool value) { prependLighting=value; } 01439 01443 void setAnnotationText(const char *value); 01444 01445 /* user management interface */ 01446 01458 OFBool verifyUserPassword(const char *userID, const char *passwd); 01459 01483 OFCondition verifyAndSignStructuredReport(const char *userID, const char *passwd, DVPSVerifyAndSignMode mode); 01484 01485 01486 /* digital signatures */ 01487 01494 const char *getCurrentSignatureValidationHTML(DVPSObjectType objtype) const; 01495 01500 const char *getCurrentSignatureValidationOverview() const; 01501 01506 DVPSSignatureStatus getCurrentSignatureStatus(DVPSObjectType objtype) const; 01507 01511 DVPSSignatureStatus getCombinedImagePStateSignatureStatus() const; 01512 01517 unsigned long getNumberOfCorrectSignatures(DVPSObjectType objtype) const; 01518 01523 unsigned long getNumberOfUntrustworthySignatures(DVPSObjectType objtype) const; 01524 01529 unsigned long getNumberOfCorruptSignatures(DVPSObjectType objtype) const; 01530 01535 void disableImageAndPState(); 01536 01537 private: 01538 01541 DVInterface(const DVInterface&); 01542 01545 DVInterface& operator=(const DVInterface&); 01546 01554 OFCondition exchangeImageAndPState(DVPresentationState *newState, DcmFileFormat *image, DcmFileFormat *state=NULL); 01555 01562 OFCondition lockDatabase(); 01563 01570 OFCondition lockExclusive(); 01571 01575 OFCondition unlockExclusive(); 01576 01583 OFCondition createPrintJobFilenames(const char *printer, OFString& tempname, OFString& jobname); 01584 01589 OFCondition createQueryRetrieveServerConfigFile(const char *filename); 01590 01597 OFCondition startExternalApplication(const char *application, const char *filename); 01598 01599 /* member variables */ 01600 01603 DVPSStoredPrint *pPrint; 01604 01607 DVPresentationState *pState; 01608 01611 DSRDocument *pReport; 01612 01615 DVSignatureHandler *pSignatureHandler; 01616 01619 DVPresentationState *pStoredPState; 01620 01623 DcmFileFormat *pDicomImage; 01624 01628 DcmFileFormat *pDicomPState; 01629 01632 DicomImage *pHardcopyImage; 01633 01637 OFString printJobIdentifier; 01638 01641 unsigned long printJobCounter; 01642 01645 OFString configPath; 01646 01650 OFString databaseIndexFile; 01651 01655 unsigned long referenceTime; 01656 01659 DiDisplayFunction *displayFunction[DVPSD_max]; 01660 01663 DcmQueryRetrieveIndexDatabaseHandle *pHandle; 01664 01667 OFBool lockingMode; 01668 01671 DVStudyCache idxCache; 01672 01675 IdxRecord idxRec; 01676 01679 int idxRecPos; 01680 01683 OFBool imageInDatabase; 01684 01685 /* private methods for database */ 01686 01689 OFBool createIndexCache(); 01690 01693 OFBool createPStateCache(); 01694 01697 void clearIndexCache(); 01698 01701 void clearIndexRecord(IdxRecord &record, 01702 int &recpos); 01703 01707 OFBool readIndexRecord(const int pos, 01708 IdxRecord &record, 01709 int *oldpos = NULL); 01710 01714 void updateStatusCache(); 01715 01718 DVStudyCache::ItemStruct *getStudyStruct(const char *studyUID = NULL, 01719 const char *seriesUID = NULL); 01720 01723 DVSeriesCache::ItemStruct *getSeriesStruct(const char *studyUID = NULL, 01724 const char *seriesUID = NULL, 01725 const char *instanceUID = NULL); 01726 01729 DVInstanceCache::ItemStruct *getInstanceStruct(const char *studyUID = NULL, 01730 const char *seriesUID = NULL, 01731 const char *instanceUID = NULL); 01732 01735 int findStudyIdx(StudyDescRecord *study, 01736 const char *uid); 01737 01740 int deleteImageFile(const char *filename); 01741 01744 void resetDatabaseReferenceTime(); 01745 01746 01750 OFCondition instanceReviewed(int pos); 01751 01754 unsigned long minimumPrintBitmapWidth; 01755 01758 unsigned long minimumPrintBitmapHeight; 01759 01762 unsigned long maximumPrintBitmapWidth; 01763 01766 unsigned long maximumPrintBitmapHeight; 01767 01770 unsigned long maximumPrintPreviewWidth; 01771 01774 unsigned long maximumPrintPreviewHeight; 01775 01778 unsigned long maximumPreviewImageWidth; 01779 01782 unsigned long maximumPreviewImageHeight; 01783 01786 OFString currentPrinter; 01787 01790 OFString displayCurrentLUTID; 01791 01794 OFString printCurrentLUTID; 01795 01798 OFString printerMediumType; 01799 01802 OFString printerFilmDestination; 01803 01806 OFString printerFilmSessionLabel; 01807 01810 unsigned long printerNumberOfCopies; 01811 01815 OFString printerPriority; 01816 01819 OFString printerOwnerID; 01820 01823 OFBool activateAnnotation; 01824 01827 OFBool prependDateTime; 01828 01831 OFBool prependPrinterName; 01832 01835 OFBool prependLighting; 01836 01839 OFString annotationText; 01840 }; 01841 01842 01843 #endif 01844 01845 01846 /* 01847 * CVS/RCS Log: 01848 * $Log: dviface.h,v $ 01849 * Revision 1.95 2010-10-14 13:16:35 joergr 01850 * Updated copyright header. Added reference to COPYRIGHT file. 01851 * 01852 * Revision 1.94 2009-11-24 14:12:57 uli 01853 * Switched to logging mechanism provided by the "new" oflog module. 01854 * 01855 * Revision 1.93 2009-09-30 10:42:37 uli 01856 * Make dcmpstat's include headers self-sufficient by including all 01857 * needed headers directly and stop using dctk.h 01858 * 01859 * Revision 1.92 2009-05-28 10:55:38 joergr 01860 * Fixed various Doxygen API documentation issues. 01861 * 01862 * Revision 1.91 2005/12/08 16:03:31 meichel 01863 * Changed include path schema for all DCMTK header files 01864 * 01865 * Revision 1.90 2005/04/04 10:11:57 meichel 01866 * Module dcmpstat now uses the dcmqrdb API instead of imagectn for maintaining 01867 * the index database 01868 * 01869 * Revision 1.89 2004/02/04 15:48:23 joergr 01870 * Removed acknowledgements with e-mail addresses from CVS log. 01871 * 01872 * Revision 1.88 2003/04/29 10:13:56 meichel 01873 * Moved configuration file parser from module dcmpstat to ofstd and renamed 01874 * class to OFConfigFile. Cleaned up implementation (no more friend declarations). 01875 * 01876 * Revision 1.87 2002/04/16 14:02:02 joergr 01877 * Added configurable support for C++ ANSI standard includes (e.g. streams). 01878 * 01879 * Revision 1.86 2001/09/26 15:36:06 meichel 01880 * Adapted dcmpstat to class OFCondition 01881 * 01882 * Revision 1.85 2001/02/23 13:31:46 joergr 01883 * Changed behaviour of method verifyAndSignStructuredReport() with 'finalize'. 01884 * Now the entire document is always signed independently from the tree items 01885 * marked. 01886 * 01887 * Revision 1.84 2001/01/29 17:32:30 joergr 01888 * Added method to verify and digitally sign structured reports. 01889 * 01890 * Revision 1.83 2001/01/29 14:55:41 meichel 01891 * Added new methods for creating signatures and checking the signature 01892 * status in module dcmpstat. 01893 * 01894 * Revision 1.82 2001/01/25 15:18:04 meichel 01895 * Added initial support for verification of digital signatures 01896 * in presentation states, images and structured reports to module dcmpstat. 01897 * 01898 * Revision 1.81 2000/11/14 16:35:16 joergr 01899 * Added creation of new UIDs and setting of content date/time when starting 01900 * a new SR document from a "template". 01901 * 01902 * Revision 1.80 2000/11/13 15:50:42 meichel 01903 * Added dcmpstat support methods for creating image references 01904 * in SR documents. 01905 * 01906 * Revision 1.79 2000/11/13 11:52:40 meichel 01907 * Added support for user logins and certificates. 01908 * 01909 * Revision 1.78 2000/11/13 10:42:38 joergr 01910 * Added support for Structured Reporting "templates". 01911 * 01912 * Revision 1.77 2000/10/16 11:39:43 joergr 01913 * Added support for new structured reports. 01914 * Added method allowing to select an instance by instance UID and SOP class 01915 * UID (without series and study UID). Required for composite references in 01916 * DICOM SR. 01917 * 01918 * Revision 1.76 2000/10/10 12:23:39 meichel 01919 * Added extensions for TLS encrypted communication 01920 * 01921 * Revision 1.75 2000/07/18 16:02:35 joergr 01922 * Moved method convertODtoLum/PValue from class DVInterface to DVPSStoredPrint 01923 * and corrected implementation. 01924 * 01925 * Revision 1.74 2000/07/17 12:05:09 joergr 01926 * Added methods to select objects from the database directly. 01927 * 01928 * Revision 1.73 2000/07/14 17:09:47 joergr 01929 * Added changeStatus parameter to all methods loading instances from the 01930 * database. 01931 * 01932 * Revision 1.72 2000/07/06 09:41:00 joergr 01933 * Added flag to loadPrintPreview() method allowing to choose how to interpret 01934 * the presentation LUT (hardcopy or softcopy definition). 01935 * 01936 * Revision 1.71 2000/07/04 15:58:00 joergr 01937 * Added support for overriding the presentation LUT settings made for the 01938 * image boxes. 01939 * 01940 * Revision 1.70 2000/06/21 15:40:57 meichel 01941 * Added DICOMscope support for calling the Presentation State Checker. 01942 * 01943 * Revision 1.69 2000/06/09 10:13:54 joergr 01944 * Added method to get number of presentation states referencing an image 01945 * (specified by the three UIDs). 01946 * 01947 * Revision 1.68 2000/06/08 17:36:23 joergr 01948 * Added method convertODtoLum(). 01949 * 01950 * Revision 1.67 2000/06/07 14:15:52 joergr 01951 * Added configuration file entry "LogLevel" to filter log messages. 01952 * Added flag to constructor specifying whether the general log file should be 01953 * used (default: off). 01954 * 01955 * Revision 1.66 2000/06/05 16:21:30 joergr 01956 * Implemented log message methods. 01957 * Added method allowing to specify the current presentation state to be used 01958 * for resetting the pstate. 01959 * 01960 * Revision 1.65 2000/06/02 16:00:41 meichel 01961 * Adapted all dcmpstat classes to use OFConsole for log and error output 01962 * 01963 * Revision 1.64 2000/06/02 13:53:53 joergr 01964 * Implemented start/terminatePrintServer methods. 01965 * 01966 * Revision 1.63 2000/06/02 12:41:50 joergr 01967 * Corrected wrong interface descriptions. 01968 * 01969 * Revision 1.62 2000/05/31 12:56:37 meichel 01970 * Added initial Print SCP support 01971 * 01972 * Revision 1.61 2000/05/31 07:54:23 joergr 01973 * Added support for Stored Print attributes Originator and Destination 01974 * application entity title. 01975 * 01976 * Revision 1.60 2000/05/30 13:36:45 joergr 01977 * Added new private SOP class (UID definition) to allow external shutdown 01978 * of console applications via negotiation of this special SOP class 01979 * (currently used for imagectn and dcmpsrcv). 01980 * Renamed GrayscaleHardcopy to HardcopyGrayscale (which is the correct term 01981 * according to the DICOM standard). 01982 * Added support for multi-frame images and multiple references from a single 01983 * presentation to a number of images. 01984 * Removed methods which were already marked as "retired". 01985 * Added interface methods to support the following new features: 01986 * - start/terminate query/retrieve server 01987 * - load stored print objects 01988 * - create print preview from hardcopy grayscale images 01989 * - check DICOM IODs for correctness (not yet implemented) 01990 * - set presentation LUT for film session (not yet implemented) 01991 * - start/terminate print server (not yet implemented) 01992 * - write/filter log messages (not yet implemented) 01993 * 01994 * Revision 1.59 2000/03/08 16:28:47 meichel 01995 * Updated copyright header. 01996 * 01997 * Revision 1.58 2000/03/03 14:13:54 meichel 01998 * Implemented library support for redirecting error messages into memory 01999 * instead of printing them to stdout/stderr for GUI applications. 02000 * 02001 * Revision 1.57 1999/11/03 13:05:31 meichel 02002 * Added support for transmitting annotations in the film session label. 02003 * Added support for dump tool launched from DVInterface. 02004 * 02005 * Revision 1.56 1999/10/20 10:47:13 joergr 02006 * Added support for a down-scaled preview image of the current DICOM image 02007 * (e.g. useful for online-windowing or print preview). 02008 * 02009 * Revision 1.55 1999/10/19 14:46:01 meichel 02010 * added support for the Basic Annotation Box SOP Class 02011 * as well as access methods for Max Density and Min Density. 02012 * 02013 * Revision 1.54 1999/10/07 17:21:45 meichel 02014 * Reworked management of Presentation LUTs in order to create tighter 02015 * coupling between Softcopy and Print. 02016 * 02017 * Revision 1.53 1999/09/27 10:41:52 meichel 02018 * Print interface now copies current printer name, avoids JNI problems. 02019 * 02020 * Revision 1.52 1999/09/24 15:24:28 meichel 02021 * Added support for CP 173 (Presentation LUT clarifications) 02022 * 02023 * Revision 1.51 1999/09/23 17:37:12 meichel 02024 * Added support for Basic Film Session options to dcmpstat print code. 02025 * 02026 * Revision 1.50 1999/09/17 14:33:55 meichel 02027 * Completed print spool functionality including Supplement 22 support 02028 * 02029 * Revision 1.49 1999/09/15 17:43:25 meichel 02030 * Implemented print job dispatcher code for dcmpstat, adapted dcmprtsv 02031 * and dcmpsprt applications. 02032 * 02033 * Revision 1.48 1999/09/13 15:19:08 meichel 02034 * Added implementations for a number of further print API methods. 02035 * 02036 * Revision 1.47 1999/09/10 12:46:44 meichel 02037 * Added implementations for a number of print API methods. 02038 * 02039 * Revision 1.46 1999/09/10 09:37:29 joergr 02040 * Re-added automatically removed method declarations (maybe a problem with 02041 * CVS's merge algorithm). 02042 * 02043 * Revision 1.43 1999/09/08 17:03:01 joergr 02044 * Added support for new instance types in database (grayscale hardcopy and 02045 * stored print). 02046 * 02047 * Revision 1.42 1999/09/08 16:42:01 meichel 02048 * Moved configuration file evaluation to separate class. 02049 * 02050 * Revision 1.41 1999/09/01 16:14:39 meichel 02051 * Added support for requested image size to print routines 02052 * 02053 * Revision 1.40 1999/08/31 16:54:44 meichel 02054 * Added new sample application that allows to create simple print jobs. 02055 * 02056 * Revision 1.39 1999/08/31 14:02:05 meichel 02057 * Added print related config file methods 02058 * 02059 * Revision 1.38 1999/08/27 15:57:55 meichel 02060 * Added methods for saving hardcopy images and stored print objects 02061 * either in file or in the local database. 02062 * 02063 * Revision 1.37 1999/08/25 16:47:20 joergr 02064 * Moved method 'saveFileFormat()' to public part of the interface class. 02065 * 02066 * Revision 1.36 1999/05/05 14:25:26 joergr 02067 * Added optional parameter to method loadPState (from database) to change 02068 * instance reviewed flag for pstate and image. 02069 * 02070 * Revision 1.35 1999/04/29 15:25:37 joergr 02071 * Added PresentationLabel to index file. 02072 * 02073 * Revision 1.34 1999/04/27 11:23:16 joergr 02074 * Enhanced savePState() method: now image file is also added to index file 02075 * and stored in image directory (if not already there). 02076 * Added new entry to index file: Presentation Description. 02077 * 02078 * Revision 1.33 1999/03/03 13:24:32 joergr 02079 * Added methods to get and set ambient light value (re: Barten transformation). 02080 * Moved method 'isBartenTransformPossible()' from presentation state class to 02081 * interface class. 02082 * 02083 * Revision 1.32 1999/03/02 12:52:51 joergr 02084 * Added parameter to selectPState() specifying whether to change the review 02085 * status of the loaded presentation state. 02086 * 02087 * Revision 1.31 1999/02/25 18:38:58 joergr 02088 * Added some comments. 02089 * Renamed methods enable/disablePState(). 02090 * 02091 * Revision 1.30 1999/02/24 20:17:48 joergr 02092 * Added methods to get a list of presentation states referencing the 02093 * currently selected image. 02094 * Added support for exchanging current presentation state (load from file) 02095 * without deleting the current image. 02096 * 02097 * Revision 1.29 1999/02/22 14:20:20 joergr 02098 * Added deletion of image files (depending on directory where the file is 02099 * stored). 02100 * Modified comments for getGUIConfig... methods to indicate that the 02101 * specified key must be upper case. 02102 * Reset reference time for file modification checking after the index file 02103 * has been changed internally (delete and change status methods). 02104 * 02105 * Revision 1.28 1999/02/19 18:58:11 joergr 02106 * Added methods to disable and (re-)enable PresentationStates. 02107 * Added (private) helper methods to reduce redundant lines of code. 02108 * 02109 * Revision 1.27 1999/02/19 09:44:17 joergr 02110 * Added comments to new database routines and related member variables. 02111 * 02112 * Revision 1.26 1999/02/18 18:46:19 joergr 02113 * Re-implemented methods to access index file (delete methods are still 02114 * missing). 02115 * Removed parameter 'deletefile' from delete methods. This parameter is 02116 * not necessary because the decision whether a images file is deleted only 02117 * depends on the directory where the file is stored (see comments). 02118 * 02119 * Revision 1.25 1999/02/18 11:07:26 meichel 02120 * Added new parameter explicitVR to interface methods savePState, 02121 * saveDICOMImage. Allows to choose between explicit VR and implicit VR 02122 * little endian format. Added new method saveCurrentImage that allows to 02123 * save the current image to file. 02124 * 02125 * Revision 1.24 1999/02/17 10:05:30 meichel 02126 * Moved creation of Display Function object from DVPresentationState to 02127 * DVInterface to avoid unnecessary re-reads. 02128 * 02129 * Revision 1.23 1999/02/16 16:36:10 meichel 02130 * Added method newInstancesReceived() to DVInterface class. 02131 * 02132 * Revision 1.22 1999/02/12 10:02:46 vorwerk 02133 * added cache , changed deletemethods. 02134 * 02135 * Revision 1.21 1999/02/09 15:58:07 meichel 02136 * Implemented methods that save images and presentation states in the DB. 02137 * 02138 * Revision 1.20 1999/02/08 10:52:33 meichel 02139 * Updated documentation of dviface.h in Doc++ style. 02140 * Removed dummy parameter from constructor. 02141 * 02142 * Revision 1.19 1999/02/05 17:45:35 meichel 02143 * Added config file entry for monitor characteristics file. Monitor charac- 02144 * teristics are passed to dcmimage if present to activate Barten transform. 02145 * 02146 * Revision 1.18 1999/02/05 11:38:01 vorwerk 02147 * parameter in stripidxarray added. 02148 * 02149 * Revision 1.17 1999/01/29 16:01:05 meichel 02150 * Reworked index file handle acquisition and locking code. 02151 * 02152 * Revision 1.16 1999/01/28 15:30:53 vorwerk 02153 * New database lock method added. 02154 * 02155 * Revision 1.15 1999/01/27 15:28:34 vorwerk 02156 * new method idxfiletest added to handle with indexfiles of length zero. 02157 * 02158 * Revision 1.14 1999/01/27 14:59:28 meichel 02159 * Implemented DICOM network receive application "dcmpsrcv" which receives 02160 * images and presentation states and stores them in the local database. 02161 * 02162 * Revision 1.13 1999/01/25 18:18:23 meichel 02163 * Defined private SOP class UID for network receiver 02164 * shutdown function. Cleanup up some code. 02165 * 02166 * Revision 1.12 1999/01/25 16:55:17 vorwerk 02167 * function stripidxarray added. 02168 * 02169 * Revision 1.11 1999/01/25 13:05:55 meichel 02170 * Implemented DVInterface::startReceiver() 02171 * and several config file related methods. 02172 * 02173 * Revision 1.10 1999/01/20 19:25:25 meichel 02174 * Implemented sendIOD method which creates a separate process for trans- 02175 * mitting images from the local database to a remote communication peer. 02176 * 02177 * Revision 1.9 1999/01/19 15:14:48 vorwerk 02178 * Methods for acesseing additional attributes added. 02179 * 02180 * Revision 1.8 1999/01/15 17:27:14 meichel 02181 * added DVInterface method resetPresentationState() which allows to reset a 02182 * presentation state to the initial state (after loading). 02183 * 02184 * Revision 1.7 1999/01/14 17:50:30 meichel 02185 * added new method saveDICOMImage() to class DVInterface. 02186 * Allows to store a bitmap as a DICOM image. 02187 * 02188 * Revision 1.6 1999/01/04 13:27:16 vorwerk 02189 * line inserted 02190 * 02191 * Revision 1.5 1999/01/04 13:02:26 vorwerk 02192 * getSeriesPerformingPhysicainsName() changed in getSeriesPerformingPhysiciansName() 02193 * 02194 * Revision 1.4 1998/12/22 17:57:03 meichel 02195 * Implemented Presentation State interface for overlays, 02196 * VOI LUTs, VOI windows, curves. Added test program that 02197 * allows to add curve data to DICOM images. 02198 * 02199 * Revision 1.3 1998/12/22 15:50:06 vorwerk 02200 * - constructor now with parameter for directory of index.dat 02201 * - changed const methods in non-const-methods 02202 * - added methods for attributes of DICOM-documents 02203 * - added private method for operations on index.dat 02204 * 02205 * Revision 1.2 1998/11/30 11:26:59 joergr 02206 * Added CVS/RCS log at end of file. 02207 * 02208 * 02209 */