00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifndef WlmFileSystemInteractionManager_h
00035 #define WlmFileSystemInteractionManager_h
00036
00037 #include "dcmtk/config/osconfig.h"
00038
00039 template <class T> class OFOrderedSet;
00040 class DcmTagKey;
00041 class OFConsole;
00042 class OFCondition;
00043
00048 class WlmFileSystemInteractionManager
00049 {
00050 private:
00054 WlmFileSystemInteractionManager(const WlmFileSystemInteractionManager &old);
00055
00059 WlmFileSystemInteractionManager &operator=(const WlmFileSystemInteractionManager &obj);
00060
00061 protected:
00063 OFBool verboseMode;
00065 OFBool debugMode;
00067 OFConsole *logStream;
00069 char *dfPath;
00071 OFBool enableRejectionOfIncompleteWlFiles;
00073 char *calledApplicationEntityTitle;
00075 DcmDataset **matchingRecords;
00077 unsigned long numOfMatchingRecords;
00078
00083 void DumpMessage( const char *message );
00084
00090 void DetermineWorklistFiles( OFOrderedSet<OFString> &worklistFiles );
00091
00097 OFBool IsWorklistFile( const char *fname );
00098
00133 OFBool DatasetIsComplete( DcmDataset *dataset );
00134
00141 OFBool ReferencedStudyOrPatientSequenceIsAbsentOrExistentButNonEmptyAndIncomplete( DcmTagKey sequenceTagKey, DcmItem *dset );
00142
00149 OFBool DescriptionAndCodeSequenceAttributesAreIncomplete( DcmTagKey descriptionTagKey, DcmTagKey codeSequenceTagKey, DcmItem *dset );
00150
00156 OFBool AttributeIsAbsentOrEmpty( DcmTagKey elemTagKey, DcmItem *dset );
00157
00164 OFBool DatasetMatchesSearchMask( DcmDataset *dataset, DcmDataset *searchMask );
00165
00171 void DetermineMatchingKeyAttributeValues( DcmDataset *dataset, const char **&matchingKeyAttrValues );
00172
00179 OFBool ScheduledStationAETitlesMatch( const char *datasetValue, const char *searchMaskValue );
00180
00190 OFBool ScheduledProcedureStepStartDateTimesMatch( const char *datasetDateValue, const char *datasetTimeValue, const char *searchMaskDateValue, const char *searchMaskTimeValue );
00191
00198 OFBool ModalitiesMatch( const char *datasetValue, const char *searchMaskValue );
00199
00206 OFBool ScheduledPerformingPhysiciansNamesMatch( const char *datasetValue, const char *searchMaskValue );
00207
00214 OFBool PatientsNamesMatch( const char *datasetValue, const char *searchMaskValue );
00215
00222 OFBool PatientIdsMatch( const char *datasetValue, const char *searchMaskValue );
00223
00230 OFBool AccessionNumbersMatch( const char *datasetValue, const char *searchMaskValue );
00231
00238 OFBool RequestedProcedureIdsMatch( const char *datasetValue, const char *searchMaskValue );
00239
00246 OFBool ReferringPhysiciansNamesMatch( const char *datasetValue, const char *searchMaskValue );
00247
00254 OFBool PatientsSexesMatch( const char *datasetValue, const char *searchMaskValue );
00255
00262 OFBool RequestingPhysiciansMatch( const char *datasetValue, const char *searchMaskValue );
00263
00270 OFBool AdmissionIdsMatch( const char *datasetValue, const char *searchMaskValue );
00271
00278 OFBool RequestedProcedurePrioritiesMatch( const char *datasetValue, const char *searchMaskValue );
00279
00286 OFBool PatientsBirthDatesMatch( const char *datasetValue, const char *searchMaskValue );
00287
00297 OFBool DateTimeRangeMatch( const char *datasetDateValue, const char *datasetTimeValue, const char *searchMaskDateValue, const char *searchMaskTimeValue );
00298
00306 OFBool DateRangeMatch( const char *datasetDateValue, const char *searchMaskDateValue );
00307
00315 OFBool TimeRangeMatch( const char *datasetTimeValue, const char *searchMaskTimeValue );
00316
00326 OFBool DateTimeSingleValueMatch( const char *datasetDateValue, const char *datasetTimeValue, const char *searchMaskDateValue, const char *searchMaskTimeValue );
00327
00335 OFBool DateSingleValueMatch( const char *datasetDateValue, const char *searchMaskDateValue );
00336
00344 OFBool TimeSingleValueMatch( const char *datasetTimeValue, const char *searchMaskTimeValue );
00345
00353 OFBool CaseSensitiveSingleValueMatch( const char *datasetValue, const char *searchMaskValue );
00354
00361 OFBool WildcardMatch( const char *datasetValue, const char *searchMaskValue );
00362
00372 OFBool MatchStarSymbol( const char *dv, const char *sv );
00373
00382 void ExtractValuesFromRange( const char *range, char *&lower, char *&upper );
00383
00384 public:
00387 WlmFileSystemInteractionManager();
00388
00391 ~WlmFileSystemInteractionManager();
00392
00396 void SetLogStream( OFConsole *value );
00397
00401 void SetVerbose( OFBool value );
00402
00406 void SetDebug( OFBool value );
00407
00411 void SetEnableRejectionOfIncompleteWlFiles( OFBool value );
00412
00417 OFCondition ConnectToFileSystem( char *dfPathv );
00418
00422 OFCondition DisconnectFromFileSystem();
00423
00431 OFBool IsCalledApplicationEntityTitleSupported( char *calledApplicationEntityTitlev );
00432
00440 unsigned long DetermineMatchingRecords( DcmDataset *searchMask );
00441
00457 unsigned long GetNumberOfSequenceItemsForMatchingRecord( DcmTagKey sequenceTag, WlmSuperiorSequenceInfoType *superiorSequenceArray, unsigned long numOfSuperiorSequences, unsigned long idx );
00458
00469 void GetAttributeValueForMatchingRecord( DcmTagKey tag, WlmSuperiorSequenceInfoType *superiorSequenceArray, unsigned long numOfSuperiorSequences, unsigned long idx, char *&value );
00470
00474 void ClearMatchingRecords();
00475 };
00476
00477 #endif
00478
00479
00480
00481
00482
00483
00484
00485
00486
00487
00488
00489
00490
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500
00501
00502
00503
00504
00505
00506
00507
00508
00509
00510
00511
00512
00513
00514
00515
00516
00517
00518
00519
00520
00521
00522
00523
00524
00525
00526
00527
00528
00529
00530
00531
00532
00533
00534
00535
00536