DYT/Tool/3rdParty_x64/include/dcmtk/dcmwlm/wlds.h

522 lines
31 KiB
C
Raw Normal View History

2024-11-22 15:19:31 +00:00
/*
*
* Copyright (C) 1996-2012, OFFIS e.V.
* All rights reserved. See COPYRIGHT file for details.
*
* This software and supporting documentation were developed by
*
* OFFIS e.V.
* R&D Division Health
* Escherweg 2
* D-26121 Oldenburg, Germany
*
*
* Module: dcmwlm
*
* Author: Thomas Wilkens
*
* Purpose: (Partially) abstract class for connecting to an arbitrary data source.
*
*/
#ifndef WlmDataSource_h
#define WlmDataSource_h
#include "dcmtk/config/osconfig.h"
#include "dcmtk/dcmwlm/wltypdef.h"
#include "dcmtk/dcmdata/dcdatset.h"
#include "dcmtk/oflog/oflog.h"
extern DCMTK_DCMWLM_EXPORT OFLogger DCM_dcmwlmLogger;
#define DCMWLM_TRACE(msg) OFLOG_TRACE(DCM_dcmwlmLogger, msg)
#define DCMWLM_DEBUG(msg) OFLOG_DEBUG(DCM_dcmwlmLogger, msg)
#define DCMWLM_INFO(msg) OFLOG_INFO(DCM_dcmwlmLogger, msg)
#define DCMWLM_WARN(msg) OFLOG_WARN(DCM_dcmwlmLogger, msg)
#define DCMWLM_ERROR(msg) OFLOG_ERROR(DCM_dcmwlmLogger, msg)
#define DCMWLM_FATAL(msg) OFLOG_FATAL(DCM_dcmwlmLogger, msg)
class DcmAttributeTag;
class DcmLongString;
/** 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 DCMTK_DCMWLM_EXPORT WlmDataSource
{
protected:
/// indicates if the application shall fail on an invalid C-Find RQ message
OFBool failOnInvalidQuery;
/// called AE title
OFString calledApplicationEntityTitle;
/// 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;
/// 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
OFList<DcmDataset*> matchingDatasets;
/// 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_ScheduledPerformingPhysicianName (0040,0006) PN R 2
* DCM_PatientName (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_ReferringPhysicianName (0008,0090) PN O 2
* DCM_PatientSex (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_PatientBirthDate (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_ScheduledPerformingPhysicianName (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_StudyDate (0008,0020) DA O 3
* DCM_StudyTime (0008,0030) TM O 3
* 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_ReferringPhysicianName (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_PatientName (0010,0010) PN R 1
* DCM_PatientID (0010,0020) LO R 1
* DCM_IssuerOfPatientID (0010,0021) LO O 3 (from the Patient Identification Module)
* DCM_PatientBirthDate (0010,0030) DA O 2
* DCM_PatientSex (0010,0040) CS O 2
* DCM_PatientWeight (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_PatientSize (0010,1020) DS O 3 (from the Patient Demographic Module)
* DCM_EthnicGroup (0010,2160) SH O 3 (from the Patient Demographic Module)
* DCM_PatientComments (0010,4000) LT O 3 (from the Patient Demographic Module)
* DCM_AdditionalPatientHistory (0010,21b0) LT O 3 (from the Patient Medical Module)
* DCM_LastMenstrualDate (0010,21d0) DA O 3 (from the Patient Medical Module)
* DCM_InstitutionAddress (0008,0081) ST O 3 (from the Visit Identification Module)
* DCM_OtherPatientNames (0010,1001) PN O 3 (from the Patient Identification Module)
* DCM_PatientAddress (0010,1040) LO O 3 (from the Patient Demographic Module)
* DCM_MilitaryRank (0010,1080) LO O 3 (from the Patient Demographic Module)
* DCM_SmokingStatus (0010,21a0) CS O 3 (from the Patient Medical Module)
* DCM_RequestingService (0032,1033) LO O 3 (from the Imaging Service Request Module)
* DCM_IssuerOfAdmissionID (0038,0011) LO O 3 (from the Visit Identification Module)
* DCM_ReasonForTheRequestedProcedure (0040,1002) LO O 3 (from the Requested Procedure Module)
* DCM_RequestedProcedureLocation (0040,1005) LO O 3 (from the Requested Procedure Module)
* DCM_ConfidentialityCode (0040,1008) LO O 3 (from the Requested Procedure Module)
* DCM_ReportingPriority (0040,1009) SH O 3 (from the Requested Procedure Module)
* DCM_RequestedProcedureComments (0040,1400) LT O 3 (from the Requested Procedure Module)
* DCM_RETIRED_ReasonForTheImagingServiceRequest (0040,2001) LO O 3 (from the Imaging Service Request Module)
* DCM_IssueDateOfImagingServiceRequest (0040,2004) DA O 3 (from the Imaging Service Request Module)
* DCM_IssueTimeOfImagingServiceRequest (0040,2005) TM O 3 (from the Imaging Service Request Module)
* DCM_OrderEnteredBy (0040,2008) PN O 3 (from the Imaging Service Request Module)
* DCM_OrderEnterersLocation (0040,2009) SH O 3 (from the Imaging Service Request Module)
* DCM_OrderCallbackPhoneNumber (0040,2010) SH O 3 (from the Imaging Service Request Module)
* DCM_PlacerOrderNumberImagingServiceRequest (0040,2016) LO O 3 (from the Imaging Service Request Module)
* DCM_FillerOrderNumberImagingServiceRequest (0040,2017) LO O 3 (from the Imaging Service Request Module)
* DCM_ImagingServiceRequestComments (0040,2400) LT O 3 (from the Imaging Service Request Module)
* DCM_RequestedProcedureCodeSequence (0032,1064) SQ O 3 (from the Requested Procedure Module)
* > 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
* @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 return key attribute, OFFalse otherwise.
*/
OFBool IsSupportedReturnKeyAttribute( DcmElement *element, DcmSequenceOfItems *supSequenceElement=NULL );
/** This function removes all elements from the given DcmDataset object.
* @param idents pointer to object which shall be cleared.
*/
void ClearDataset( DcmDataset *idents );
/** This function inserts the tag of an offending element into the
* corresponding member variable, unless this tag is already con-
* tained in this variable.
* @param tag The tag that shall be inserted.
*/
void PutOffendingElements( const DcmTagKey &tag );
/** This function inserts the tag of an error element into the
* corresponding member variable, without checking if it is already
* contained in this variable.
* @param tag The tag that shall be inserted.
*/
void PutErrorElements( const DcmTagKey &tag );
/** This function checks if the passed matching key's value only uses characters
* which are part of its data type's character repertoire. Note that at the moment
* this application supports the following matching key attributes:
* 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_ScheduledPerformingPhysicianName (0040,0006) PN R 2
* DCM_PatientName (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_ReferringPhysicianName (0008,0090) PN O 2
* DCM_PatientSex (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_PatientBirthDate (0010,0030) DA O 2
* As a result, the following data types have to be supported in this function:
* AE, DA, TM, CS, PN, LO and SH. For the correct specification of these datatypes
* 2003 DICOM standard, part 5, section 6.2, table 6.2-1.
* @param elem Element which shall be checked.
* @return OFTrue in case the given element's value only uses characters which are part of
* the element's data type's character repertoire. OFFalse in case the given element's value
* does not only use characters which are part of the element's data type's character repertoire.
*/
OFBool CheckMatchingKey( const DcmElement *elem );
/** This function returns OFTrue if all the characters of s can be found
* in the string charset.
* @param s String which shall be checked.
* @param charset Possible character set for s. (valid pointer expected.)
* @return This function returns OFTrue if all the characters of s can be found
* in the string charset. If s equals NULL, OFTrue will be returned.
*/
OFBool ContainsOnlyValidCharacters( const char *s, const char *charset );
/** This function checks if the given value is a valid date or date range.
* @param value The value which shall be checked.
* @return OFTrue in case the given value is a valid date or date range, OFFalse otherwise.
*/
OFBool IsValidDateOrDateRange( const OFString& value );
/** This function checks if the given date value is valid.
* According to the 2001 DICOM standard, part 5, Table 6.2-1, a date
* value is either in format "yyyymmdd" or in format "yyyy.mm.dd",
* so that e.g. "19840822" represents August 22, 1984.
* @param value The value which shall be checked.
* @return OFTrue in case the Date is valid, OFFalse otherwise.
*/
OFBool IsValidDate( const OFString& value );
/** This function checks if the given value is a valid time or time range.
* @param value The value which shall be checked.
* @return OFTrue in case the given value is a valid time or time range, OFFalse otherwise.
*/
OFBool IsValidTimeOrTimeRange( const OFString& value );
/** This function checks if the given time value is valid.
* According to the 2001 DICOM standard, part 5, Table 6.2-1, a time
* value is either in format "hhmmss.fracxx" or "hh:mm:ss.fracxx" where
* - hh represents the hour (0-23)
* - mm represents the minutes (0-59)
* - ss represents the seconds (0-59)
* - fracxx represents the fraction of a second in millionths of seconds (000000-999999)
* Note that one or more of the components mm, ss, or fracxx may be missing as
* long as every component to the right of a missing component is also missing.
* If fracxx is missing, the "." character in front of fracxx is also missing.
* @param value The value which shall be checked.
* @return OFTrue in case the time is valid, OFFalse otherwise.
*/
OFBool IsValidTime( const OFString& value );
/** This function returns the value of the given DICOM string element (attribute)
* in the parameter resultVal and returns OFTrue if successful.
* If the element does not refer to a string attribute or contains an empty value,
* OFFalse is returned.
* @param elem The DICOM element.
* @param resultVal The resulting string value
* @return The value of the given DICOM (string) element or NULL.
*/
OFBool GetStringValue( const DcmElement *elem,
OFString& resultVal );
/** This function makes a copy of value without leading and trailing blanks.
* @param value The source string.
* @return A copy of the given string without leading and trailing blanks.
*/
OFString DeleteLeadingAndTrailingBlanks( const OFString& value );
/** Protected undefined copy-constructor. Shall never be called.
* @param Src Source object.
*/
WlmDataSource( const WlmDataSource &Src );
/** Protected undefined operator=. Shall never be called.
* @param Src Source object.
* @return Reference to this.
*/
WlmDataSource &operator=( const WlmDataSource &Src );
public:
/** default constructor.
*/
WlmDataSource();
/** destructor
*/
virtual ~WlmDataSource();
/** Connects to the data source.
* @return Indicates if the connection was established succesfully.
*/
virtual OFCondition ConnectToDataSource() = 0;
/** Disconnects from the data source.
* @return Indicates if the disconnection was completed succesfully.
*/
virtual OFCondition DisconnectFromDataSource() = 0;
/** Set value in member variable.
* @param value The value to set.
*/
void SetCalledApplicationEntityTitle( const OFString& value );
/** Set value in member variable.
* @param value The value to set.
*/
void SetFailOnInvalidQuery( OFBool value );
/** Set value in a member variable.
* @param value The value to set.
*/
void SetNoSequenceExpansion( OFBool value );
/** Set value in member variable.
* @param value The value to set.
*/
void SetReturnedCharacterSet( WlmReturnedCharacterSetType 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.
*/
virtual OFBool IsCalledApplicationEntityTitleSupported() = 0;
/** Based on the search mask which was passed, this function determines all the records
* in the database 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.
*/
virtual WlmDataSourceStatusType StartFindRequest( const DcmDataset &findRequestIdentifiers ) = 0;
/** 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 database.
*/
virtual DcmDataset *NextFindResponse( WlmDataSourceStatusType &rStatus ) = 0;
/** This function handles a C-CANCEL Request during the processing of a C-FIND Request.
* In detail, in case there are still matching datasets captured in member variable
* matchingDatasets, memory for these datasets (and the array itself) is freed and
* all pointers are set to NULL.
* @return Always WLM_CANCEL.
*/
WlmDataSourceStatusType CancelFindRequest();
/** Get value from member variable.
* @return The member variable's value.
*/
DcmAttributeTag *GetOffendingElements();
/** Get value from member variable.
* @return The member variable's value.
*/
DcmLongString *GetErrorComments();
/** Set value in a member variable in a derived class.
*/
virtual void SetDbDsn( const OFString& /*value*/ ) {}
/** Set value in a member variable in a derived class.
*/
virtual void SetDbUserName( const OFString& /*value*/ ) {}
/** Set value in a member variable in a derived class.
*/
virtual void SetDbUserPassword( const OFString& /*value*/ ) {}
/** Set value in a member variable in a derived class.
*/
virtual void SetCfgFileMatchRecords( const OFString& /*value*/ ) {}
/** Set value in a member variable in a derived class.
*/
virtual void SetCfgFileSelectValues( const OFString& /*value*/ ) {}
/** Set value in a member variable in a derived class.
*/
virtual void SetDatabaseType( WlmDatabaseType /*value*/ ) {}
/** Set value in a member variable in a derived class.
* @param int The value to set.
*/
virtual void SetSerialNumber( const int /*value*/ ) {}
/** Set value in a member variable in a derived class.
* @param int The value to set.
*/
virtual void SetInstitutionId( const unsigned int /*value*/ ) {}
/** Set value in a member variable in a derived class.
*/
virtual void SetDfPath( const OFString& /*value*/ ) {}
/** Set value in a member variable in a derived class.
*/
virtual void SetEnableRejectionOfIncompleteWlFiles( OFBool /*value*/ ) {}
/** Set value in a member variable in a derived class.
*/
virtual void SetCreateNullvalues( OFBool /*value*/ ) {}
/** Set value in a member variable in a derived class.
*/
virtual void SetPfFileName( const OFString& /*value*/ ) {}
/** Set value in a member variable in a derived class.
*/
virtual void SetModalityToReturn( const OFString& /*value*/ ) {}
/** Set value in a member variable in a derived class.
*/
virtual void SetCommaSeparatePatientName( OFBool /*value*/ ) {}
/** Set value in a member variable in a derived class.
*/
virtual void SetReturnPatientUidInAccessionNumber( OFBool /*value*/ ) {}
};
#endif