⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wldsfs.h

📁 转化为DIB位图再显示出来的dicom文件C++代码
💻 H
字号:
/* * *  Copyright (C) 1996-2005, OFFIS * *  This software and supporting documentation were developed by * *    Kuratorium OFFIS e.V. *    Healthcare Information and Communication Systems *    Escherweg 2 *    D-26121 Oldenburg, Germany * *  THIS SOFTWARE IS MADE AVAILABLE,  AS IS,  AND OFFIS MAKES NO  WARRANTY *  REGARDING  THE  SOFTWARE,  ITS  PERFORMANCE,  ITS  MERCHANTABILITY  OR *  FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES  OR *  ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY AND *  PERFORMANCE OF THE SOFTWARE IS WITH THE USER. * *  Module:  dcmwlm * *  Author:  Thomas Wilkens * *  Purpose: Class for connecting to a file-based data source. * *  Last Update:      $Author: meichel $ *  Update Date:      $Date: 2005/12/08 16:05:41 $ *  Source File:      $Source: /share/dicom/cvs-depot/dcmtk/dcmwlm/include/dcmtk/dcmwlm/wldsfs.h,v $ *  CVS/RCS Revision: $Revision: 1.15 $ *  Status:           $State: Exp $ * *  CVS/RCS Log at end of file * */#ifndef WlmDataSourceFileSystem_h#define WlmDataSourceFileSystem_h#include "dcmtk/config/osconfig.h"#include "dcmtk/dcmwlm/wlds.h"class WlmFileSystemInteractionManager;class DcmDataset;class OFCondition;class DcmElement;class DcmItem;/** This class encapsulates data structures and operations for connecting to a file-based *  data source in the framework of the DICOM basic worklist management service. */class WlmDataSourceFileSystem : public WlmDataSource{  protected:    /// manager for file system interaction    WlmFileSystemInteractionManager *fileSystemInteractionManager;    /// path to database files    char *dfPath;    /// indicates if wl-files which are lacking return type 1 attributes or information in such attributes shall be rejected or not    OFBool enableRejectionOfIncompleteWlFiles;    /// handle to the read lock file    int handleToReadLockFile;      /** This function sets a read lock on the LOCKFILE in the directory       *  that is specified through dfPath and calledApplicationEntityTitle.       *  @return true in case the read lock has been set successfully, false otherwise.       */    OFBool SetReadlock();      /** This function releases a read lock on the LOCKFILE in the given directory.       *  @return true in case the read lock has been released successfully, false otherwise.       */    OFBool ReleaseReadlock();      /** This function takes care of handling a certain non-sequence element whithin       *  the structure of a certain result dataset. This function assumes that all       *  elements in the result dataset are supported. In detail, a value for the       *  current element with regard to the currently processed matching record will       *  be requested from the fileSystemInteractionManager, and this value will be       *  set in the element.       *  @param element Pointer to the currently processed element.       *  @param idx     Index of the matching record (identifies this record).       */    void HandleNonSequenceElementInResultDataset( DcmElement *element, unsigned long idx );      /** This function takes care of handling a certain sequence element within the structure       *  of a certain result dataset. On the basis of the matching record from the data source,       *  this function will add items and values for all elements in these items to the current       *  sequence element in the result dataset. This function assumes that all elements in the       *  result dataset are supported. In case the current sequence element contains no items or       *  more than one item, this element will be left unchanged.       *  @param element Pointer to the currently processed element.       *  @param idx     Index of the matching record (identifies this record).       */    void HandleSequenceElementInResultDataset( DcmElement *element, unsigned long idx );      /** Protected undefined copy-constructor. Shall never be called.       *  @param Src Source object.       */    WlmDataSourceFileSystem( const WlmDataSourceFileSystem &Src );      /** Protected undefined operator=. Shall never be called.       *  @param Src Source object.       *  @return Reference to this.       */    WlmDataSourceFileSystem &operator=( const WlmDataSourceFileSystem &Src );  public:      /** default constructor.       */    WlmDataSourceFileSystem();      /** destructor       */    ~WlmDataSourceFileSystem();      /** Connects to the data source.       * @return Indicates if the connection was established succesfully.       */    OFCondition ConnectToDataSource();      /** Disconnects from the data source.       * @return Indicates if the disconnection was completed succesfully.       */    OFCondition DisconnectFromDataSource();      /** Set value in member variable.       *  @param value The value to set.       */    void SetDfPath( const char *value );      /** Set value in member variable.       *  @param value The value to set.       */    void SetEnableRejectionOfIncompleteWlFiles( OFBool value );      /** Checks if the called application entity title is supported. This function expects       *  that the called application entity title was made available for this instance through       *  WlmDataSource::SetCalledApplicationEntityTitle(). If this is not the case, OFFalse       *  will be returned.       *  @return OFTrue, if the called application entity title is supported;       *          OFFalse, if the called application entity title is not supported or it is not given.       */    OFBool IsCalledApplicationEntityTitleSupported();      /** This function performs a check on two attributes in the given dataset. At two different places       *  in the definition of the DICOM worklist management service, a description attribute and a code       *  sequence attribute with a return type of 1C are mentioned, and the condition specifies that       *  either the description attribute or the code sequence attribute or both shall be supported by       *  an SCP. (I am talking about RequestedProcedureDescription vs. RequestedProcedureCodeSequence       *  and ScheduledProcedureStepDescription vs. ScheduledProtocolCodeSequence.) In both cases, this       *  implementation actually supports both, the description _and_ the code sequence attributes.       *  In cases where the description attribute is actually empty or the code sequence attribute       *  is actually empty or contains exactly one item with an empty CodeValue and an empty       *  CodingSchemeDesignator, we want to remove the empty attribute from the dataset. This is what       *  this function does. (Please note, that this function will always only delete one of the two,       *  and this function will start checking the sequence attribute.       *  @param dataset Dataset in which the consistency of the two attributes shall be checked.       *  @param descriptionTagKey DcmTagKey of the description attribute which shall be checked.       *  @param codeSequenceTagKey DcmTagKey of the codeSequence attribute which shall be checked.       */    void HandleExistentButEmptyDescriptionAndCodeSequenceAttributes( DcmItem *dataset, const DcmTagKey &descriptionTagKey, const DcmTagKey &codeSequenceTagKey );      /** This function performs a check on a sequence attribute in the given dataset. At two different places       *  in the definition of the DICOM worklist management service, a sequence attribute with a return type       *  of 2 is mentioned containing two 1C attributes in its item; the condition of the two 1C attributes       *  specifies that in case a sequence item is present, then these two attributes must be existent and       *  must contain a value. (I am talking about ReferencedStudySequence and ReferencedPatientSequence.)       *  In cases where the sequence attribute contains exactly one item with an empty ReferencedSOPClass       *  and an empty ReferencedSOPInstance, we want to remove the item from the sequence. This is what       *  this function does.       *  @param dataset Dataset in which the consistency of the sequence attribute shall be checked.       *  @param sequenceTagKey DcmTagKey of the sequence attribute which shall be checked.       */    void HandleExistentButEmptyReferencedStudyOrPatientSequenceAttributes( DcmDataset *dataset, const DcmTagKey &sequenceTagKey );      /** Based on the search mask which was passed, this function determines all the records in the       *  worklist database files which match the values of matching key attributes in the search mask.       *  For each matching record, a DcmDataset structure is generated which will later be       *  returned to the SCU as a result of query. The DcmDataset structures for all matching       *  records will be stored in the protected member variable matchingDatasets.       *  @param findRequestIdentifiers Contains the search mask.       *  @return A WlmDataSourceStatusType value denoting the following:       *          WLM_SUCCESS: No matching records found;       *          WLM_PENDING: Matching records found, all return keys supported by this application;       *          WLM_PENDING_WARNING: Matching records found, not all return keys supported by this application;       *          WLM_FAILED_IDENTIFIER_DOES_NOT_MATCH_SOP_CLASS: Error in the search mask encountered.       */    WlmDataSourceStatusType StartFindRequest( DcmDataset &findRequestIdentifiers );      /** This function will return the next dataset that matches the given search mask, if       *  there is one more resulting dataset to return. In such a case, rstatus will be set       *  to WLM_PENDING or WLM_PENDING_WARNING, depending on if an unsupported key attribute       *  was encountered in the search mask or not. If there are no more datasets that match       *  the search mask, this function will return an empty dataset and WLM_SUCCESS in rstatus.       *  @param rStatus A value of type WlmDataSourceStatusType that can be used to       *                 decide if there are still elements that have to be returned.       *  @return The next dataset that matches the given search mask, or an empty dataset if       *          there are no more matching datasets in the worklist database files.       */    DcmDataset *NextFindResponse( WlmDataSourceStatusType &rStatus );};#endif/*** CVS Log** $Log: wldsfs.h,v $** Revision 1.15  2005/12/08 16:05:41  meichel** Changed include path schema for all DCMTK header files**** Revision 1.14  2005/05/04 11:33:17  wilkens** Modified handling of the attributes ScheduledProcedureStepDescription/** ScheduledProtocolCodeSequence and RequestedProcedureDescription/** RequestedProcedureCodeSequence in wlmscpfs: in case one of the two attributes** does not contain any information in a C-Find RSP message which is about to be** sent to an SCU, the empty attribute will be removed from the C-Find RSP message** before the message is sent, in order not to send an invalid RSP message.** Added two command line options --enable-file-reject (default) and** --disable-file-reject to wlmscpfs: these options can be used to enable or** disable a file rejection mechanism which makes sure only complete worklist files** will be used during the matching process. A worklist file is considered to be** complete if it contains all necessary type 1 information which the SCP might** have to return to an SCU in a C-Find response message.**** Revision 1.13  2004/05/26 10:36:53  meichel** Fixed minor bug in worklist server regarding failed read locks.**** Revision 1.12  2004/01/07 08:32:28  wilkens** Added new sequence type return key attributes to wlmscpfs. Fixed bug that for** equally named attributes in sequences always the same value will be returned.** Added functionality that also more than one item will be returned in sequence** type return key attributes.**** Revision 1.11  2003/08/21 13:38:55  wilkens** Moved declaration and initialization of member variables matchingDatasets and** NumOfMatchingDatasets to base class.**** Revision 1.10  2003/07/02 09:17:55  wilkens** Updated documentation to get rid of doxygen warnings.**** Revision 1.9  2002/12/16 11:08:34  wilkens** Added missing #include "osconfig.h" to certain files.**** Revision 1.8  2002/12/09 13:40:49  joergr** Renamed parameter to avoid name clash with global function index().**** Revision 1.7  2002/08/12 10:56:08  wilkens** Made some modifications in in order to be able to create a new application** which contains both wlmscpdb and ppsscpdb and another application which** contains both wlmscpfs and ppsscpfs.**** Revision 1.6  2002/08/05 09:09:57  wilkens** Modfified the project's structure in order to be able to create a new** application which contains both wlmscpdb and ppsscpdb.**** Revision 1.4  2002/07/17 13:10:17  wilkens** Corrected some minor logical errors in the wlmscpdb sources and completely** updated the wlmscpfs so that it does not use the original wlistctn sources** any more but standard wlm sources which are now used by all three variants** of wlmscps.**** Revision 1.3  2002/06/10 11:24:54  wilkens** Made some corrections to keep gcc 2.95.3 quiet.**** Revision 1.2  2002/04/18 14:19:53  wilkens** Modified Makefiles. Updated latest changes again. These are the latest** sources. Added configure file.**** Revision 1.3  2002/01/08 17:45:34  joergr** Reformatted source files (replaced Windows newlines by Unix ones, replaced** tabulator characters by spaces, etc.)**** Revision 1.2  2002/01/08 16:47:53  joergr** Added preliminary database support using OTL interface library (modified by** MC/JR on 2001-12-21).**** Revision 1.1  2002/01/08 16:30:59  joergr** Added new module "dcmwlm" developed by Thomas Wilkens (initial release for** Windows, dated 2001-12-20).*****/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -