📄 wlds.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: (Partially) abstract class for connecting to an arbitrary data source. * * Last Update: $Author: meichel $ * Update Date: $Date: 2005/12/08 16:05:40 $ * Source File: $Source: /share/dicom/cvs-depot/dcmtk/dcmwlm/include/dcmtk/dcmwlm/wlds.h,v $ * CVS/RCS Revision: $Revision: 1.23 $ * Status: $State: Exp $ * * CVS/RCS Log at end of file * */#ifndef WlmDataSource_h#define WlmDataSource_h#include "dcmtk/config/osconfig.h"class DcmDataset;class DcmList;class DcmAttributeTag;class DcmLongString;class DcmTagKey;class DcmElement;class OFConsole;class OFCondition;class DcmSequenceOfItems;/** This class encapsulates data structures and operations for connecting to an arbitrary * data source in the framework of the DICOM basic worklist management service. */class WlmDataSource{ protected: /// indicates if the application shall fail on an invalid C-Find RQ message OFBool failOnInvalidQuery; /// called AE title char *calledApplicationEntityTitle; /// indicates if the application is run in verbose mode or not OFBool verbose; /// indicates if the application is run in debug mode or not OFBool debug; /// the search mask which is contained in the C-Find RQ message DcmDataset *identifiers; /// list of error elements DcmAttributeTag *errorElements; /// list of offending elements DcmAttributeTag *offendingElements; /// error comment DcmLongString *errorComment; /// indicates if we encountered an unsupported optional key attribute in the search mask OFBool foundUnsupportedOptionalKey; /// indicates if a read lock was set on the data source OFBool readLockSetOnDataSource; /// stream logging information will be dumped to OFConsole *logStream; /// indicates if the expansion of empty sequence attributes shall take place or not OFBool noSequenceExpansion; /// returned character set type WlmReturnedCharacterSetType returnedCharacterSet; /// array of matching datasets DcmDataset **matchingDatasets; /// number of array fields unsigned long numOfMatchingDatasets; /// potentially specified specific character set (in search mask) OFString specificCharacterSet; /// information about superior sequence elements; necessary for inserting values into resultDataset WlmSuperiorSequenceInfoType *superiorSequenceArray; /// number of elements in above array unsigned long numOfSuperiorSequences; /** This function checks if the search mask has a correct format. It returns OFTrue if this * is the case, OFFalse if this is not the case. * @param searchMask Contains the search mask. * @return OFTrue, in case the search mask has a correct format, OFFalse otherwise. */ OFBool CheckSearchMask( DcmDataset *searchMask ); /** This function checks if a non-sequence element in the search mask has a correct format. * Note that if the current element is an unsupported element, the entire element will be re- * moved from the search mask, since unsupported elements shall not be returned to the caller. * @param searchMask Pointer to the search mask. * @param invalidMatchingKeyAttributeCount Counter that counts invalid elements in the search mask. * @param element Pointer to the currently processed element. * @param supSequenceElement Pointer to the superordinate sequence element of which * the currently processed element is an attribute. */ void CheckNonSequenceElementInSearchMask( DcmDataset *searchMask, int &invalidMatchingKeyAttributeCount, DcmElement *element, DcmSequenceOfItems *supSequenceElement=NULL ); /** This function checks if a sequence element in the search mask has a correct format. * Note that if the current element is an unsupported element, the entire element will be re- * moved from the search mask, since unsupported elements shall not be returned to the caller. * Moreover, in case the sequence element in the search mask is supported but empty, this * function will expand the sequence element by inserting all required attributes into that sequence. * @param searchMask Pointer to the search mask. * @param invalidMatchingKeyAttributeCount Counter that counts invalid elements in the search mask. * @param element Pointer to the currently processed element. * @param supSequenceElement Pointer to the superordinate sequence element of which * the currently processed element is an attribute. */ void CheckSequenceElementInSearchMask( DcmDataset *searchMask, int &invalidMatchingKeyAttributeCount, DcmElement *element, DcmSequenceOfItems *supSequenceElement=NULL ); /** According to the 2001 DICOM standard (part 4, section C.2.2.2.6), if a search mask * contains a sequence attribute which contains no item or a single empty item, all * attributes from that particular sequence are in fact queried and shall be returned * by the SCP. This implementation accounts for this specification by inserting a * corresponding single item with all required attributes into such emtpy sequences. * This function performs the insertion of the required item and attributes. * @param element Pointer to the currently processed element. */ void ExpandEmptySequenceInSearchMask( DcmElement *&element ); /** This function checks if the given element refers to an attribute which is a supported * matching key attribute. If this is the case OFTrue is returned, else OFFalse. * Currently, the following attributes are supported as matching keys: * DCM_ScheduledProcedureStepSequence (0040,0100) SQ R 1 * > DCM_ScheduledStationAETitle (0040,0001) AE R 1 * > DCM_ScheduledProcedureStepStartDate (0040,0002) DA R 1 * > DCM_ScheduledProcedureStepStartTime (0040,0003) TM R 1 * > DCM_Modality (0008,0060) CS R 1 * > DCM_ScheduledPerformingPhysiciansName (0040,0006) PN R 2 * DCM_PatientsName (0010,0010) PN R 1 * DCM_PatientID (0010,0020) LO R 1 * DCM_AccessionNumber (0008,0050) SH O 2 * DCM_RequestedProcedureID (0040,1001) SH O 1 * DCM_ReferringPhysiciansName (0008,0090) PN O 2 * DCM_PatientsSex (0010,0040) CS O 2 * DCM_RequestingPhysician (0032,1032) PN O 2 * DCM_AdmissionID (0038,0010) LO O 2 * DCM_RequestedProcedurePriority (0040,1003) SH O 2 * DCM_PatientsBirthDate (0010,0030) DA O 2 * @param element Pointer to the element which shall be checked. * @param supSequenceElement Pointer to the superordinate sequence element of which * the currently processed element is an attribute, or NULL if * the currently processed element does not belong to any sequence. * @return OFTrue, in case the given tag is a supported matching key attribute, OFFalse otherwise. */ OFBool IsSupportedMatchingKeyAttribute( DcmElement *element, DcmSequenceOfItems *supSequenceElement=NULL ); /** This function checks if the given element refers to an attribute which is a supported * return key attribute. If this is the case OFTrue is returned, else OFFalse. * Currently, the following attributes are supported as return keys: * DCM_SpecificCharacterSet (0008,0005) CS O 1 * DCM_ScheduledProcedureStepSequence (0040,0100) SQ R 1 * > DCM_ScheduledStationAETitle (0040,0001) AE R 1 * > DCM_ScheduledProcedureStepStartDate (0040,0002) DA R 1 * > DCM_ScheduledProcedureStepStartTime (0040,0003) TM R 1 * > DCM_Modality (0008,0060) CS R 1 * > DCM_ScheduledPerformingPhysiciansName (0040,0006) PN R 2 * > DCM_ScheduledProcedureStepDescription (0040,0007) LO O 1 * > DCM_ScheduledStationName (0040,0010) SH O 2 * > DCM_ScheduledProcedureStepLocation (0040,0011) SH O 2 * > DCM_PreMedication (0040,0012) LO O 2 * > DCM_ScheduledProcedureStepID (0040,0009) SH O 1 * > DCM_RequestedContrastAgent (0032,1070) LO O 2 * > DCM_CommentsOnTheScheduledProcedureStep (0040,0400) LT O 3 (from the Scheduled Procedure Step Module) * > DCM_ScheduledProcedureStepStatus (0040,0020) CS O 3 * > DCM_ScheduledProcedureStepEndDate (0040,0004) DA O 3 (from the Scheduled Procedure Step Module) * > DCM_ScheduledProcedureStepEndTime (0040,0005) TM O 3 (from the Scheduled Procedure Step Module) * > DCM_ScheduledProtocolCodeSequence (0040,0008) SQ O 1C * > > DCM_CodeValue (0008,0100) SH O 1C * > > DCM_CodingSchemeVersion (0008,0103) SH O 3 * > > DCM_CodingSchemeDesignator (0008,0102) SH O 1C * > > DCM_CodeMeaning (0008,0104) LO O 3 * DCM_RequestedProcedureID (0040,1001) SH O 1 * DCM_RequestedProcedureDescription (0032,1060) LO O 1 * DCM_StudyInstanceUID (0020,000d) UI O 1 * DCM_ReferencedStudySequence (0008,1110) SQ O 2 * > DCM_ReferencedSOPClassUID (0008,1150) UI O 1 * > DCM_ReferencedSOPInstanceUID (0008,1155) UI O 1 * DCM_RequestedProcedurePriority (0040,1003) SH O 2 * DCM_PatientTransportArrangements (0040,1004) LO O 2 * DCM_AccessionNumber (0008,0050) SH O 2 * DCM_RequestingPhysician (0032,1032) PN O 2 * DCM_ReferringPhysiciansName (0008,0090) PN O 2 * DCM_AdmissionID (0038,0010) LO O 2 * DCM_CurrentPatientLocation (0038,0300) LO O 2 * DCM_ReferencedPatientSequence (0008,1120) SQ O 2 * > DCM_ReferencedSOPClassUID (0008,1150) UI O 2 * > DCM_ReferencedSOPInstanceUID (0008,1155) UI O 2 * DCM_PatientsName (0010,0010) PN R 1 * DCM_PatientID (0010,0020) LO R 1 * DCM_PatientsBirthDate (0010,0030) DA O 2 * DCM_PatientsSex (0010,0040) CS O 2 * DCM_PatientsWeight (0010,1030) DS O 2 * DCM_ConfidentialityConstraintOnPatientDataDescription (0040,3001) LO O 2 * DCM_PatientState (0038,0500) LO O 2 * DCM_PregnancyStatus (0010,21c0) US O 2 * DCM_MedicalAlerts (0010,2000) LO O 2 * DCM_ContrastAllergies (0010,2110) LO O 2 * DCM_SpecialNeeds (0038,0050) LO O 2 * DCM_NamesOfIntendedRecipientsOfResults (0040,1010) PN O 3 (from the Requested Procedure Module) * DCM_InstitutionName (0008,0080) LO O 3 (from the Visit Identification Module) * DCM_AdmittingDiagnosesDescription (0008,1080) LO O 3 (from the Visit Admission Module) * DCM_OtherPatientIDs (0010,1000) LO O 3 (from the Patient Identification Module) * DCM_PatientsSize (0010,1020) DS O 3 (from the Patient Demographic Module) * DCM_EthnicGroup (0010,2160) SH O 3 (from the Patient Demographic Module)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -