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 WlmDataSource_h
00035 #define WlmDataSource_h
00036
00037 #include "osconfig.h"
00038
00039 class DcmDataset;
00040 class DcmList;
00041 class DcmAttributeTag;
00042 class DcmLongString;
00043 class DcmTagKey;
00044 class DcmElement;
00045 class OFConsole;
00046 class OFCondition;
00047 class DcmSequenceOfItems;
00048
00052 class WlmDataSource
00053 {
00054 protected:
00056 OFBool failOnInvalidQuery;
00058 char *calledApplicationEntityTitle;
00060 OFBool verbose;
00062 OFBool debug;
00064 DcmDataset *identifiers;
00066 DcmAttributeTag *errorElements;
00068 DcmAttributeTag *offendingElements;
00070 DcmLongString *errorComment;
00072 OFBool foundUnsupportedOptionalKey;
00074 OFBool readLockSetOnDataSource;
00076 OFConsole *logStream;
00078 OFBool noSequenceExpansion;
00080 WlmReturnedCharacterSetType returnedCharacterSet;
00082 DcmDataset **matchingDatasets;
00084 unsigned long numOfMatchingDatasets;
00086 OFString specificCharacterSet;
00088 WlmSuperiorSequenceInfoType *superiorSequenceArray;
00090 unsigned long numOfSuperiorSequences;
00091
00097 OFBool CheckSearchMask( DcmDataset *searchMask );
00098
00108 void CheckNonSequenceElementInSearchMask( DcmDataset *searchMask, int &invalidMatchingKeyAttributeCount, DcmElement *element, DcmSequenceOfItems *supSequenceElement=NULL );
00109
00121 void CheckSequenceElementInSearchMask( DcmDataset *searchMask, int &invalidMatchingKeyAttributeCount, DcmElement *element, DcmSequenceOfItems *supSequenceElement=NULL );
00122
00131 void ExpandEmptySequenceInSearchMask( DcmElement *&element );
00132
00157 OFBool IsSupportedMatchingKeyAttribute( DcmElement *element, DcmSequenceOfItems *supSequenceElement=NULL );
00158
00252 OFBool IsSupportedReturnKeyAttribute( DcmElement *element, DcmSequenceOfItems *supSequenceElement=NULL );
00253
00257 void ClearDataset( DcmDataset *idents );
00258
00264 void PutOffendingElements( DcmTagKey &tag );
00265
00271 void PutErrorElements( DcmTagKey &tag );
00272
00299 OFBool CheckMatchingKey( DcmElement *elem );
00300
00308 OFBool ContainsOnlyValidCharacters( const char *s, const char *charset );
00309
00314 OFBool IsValidDateOrDateRange( const char *value );
00315
00323 OFBool IsValidDate( const char *value );
00324
00329 OFBool IsValidTimeOrTimeRange( const char *value );
00330
00344 OFBool IsValidTime( const char *value );
00345
00351 char *GetStringValue( DcmElement *elem );
00352
00357 void DumpMessage( const char *message );
00358
00363 char *DeleteLeadingAndTrailingBlanks( const char *value );
00364
00368 WlmDataSource( const WlmDataSource &Src );
00369
00374 WlmDataSource &operator=( const WlmDataSource &Src );
00375
00376
00377 public:
00380 WlmDataSource();
00381
00384 virtual ~WlmDataSource();
00385
00389 virtual OFCondition ConnectToDataSource() = 0;
00390
00394 virtual OFCondition DisconnectFromDataSource() = 0;
00395
00399 void SetCalledApplicationEntityTitle( char *value );
00400
00404 void SetFailOnInvalidQuery( OFBool value );
00405
00409 void SetLogStream( OFConsole *value );
00410
00414 void SetVerbose( OFBool value );
00415
00419 void SetDebug( OFBool value );
00420
00424 void SetNoSequenceExpansion( OFBool value );
00425
00429 void SetReturnedCharacterSet( WlmReturnedCharacterSetType value );
00430
00438 virtual OFBool IsCalledApplicationEntityTitleSupported() = 0;
00439
00452 virtual WlmDataSourceStatusType StartFindRequest( DcmDataset &findRequestIdentifiers ) = 0;
00453
00464 virtual DcmDataset *NextFindResponse( WlmDataSourceStatusType &rStatus ) = 0;
00465
00472 WlmDataSourceStatusType CancelFindRequest();
00473
00477 DcmAttributeTag *GetOffendingElements();
00478
00482 DcmLongString *GetErrorComments();
00483
00486 virtual void SetDbDsn( const char * ) {}
00487
00490 virtual void SetDbUserName( const char * ) {}
00491
00494 virtual void SetDbUserPassword( const char * ) {}
00495
00498 virtual void SetCfgFileMatchRecords( const char * ) {}
00499
00502 virtual void SetCfgFileSelectValues( const char * ) {}
00503
00506 virtual void SetDatabaseType( WlmDatabaseType ) {}
00507
00511 virtual void SetSerialNumber( const int ) {}
00512
00516 virtual void SetInstitutionId( const unsigned int ) {}
00517
00520 virtual void SetDfPath( const char * ) {}
00521
00524 virtual void SetCreateNullvalues( OFBool ) {}
00525
00528 virtual void SetPfFileName( const char * ) {}
00529
00532 virtual void SetModalityToReturn( const char * ) {}
00533
00536 virtual void SetCommaSeparatePatientName( OFBool ) {}
00537
00540 virtual void SetReturnPatientUidInAccessionNumber( OFBool ) {}
00541 };
00542
00543 #endif
00544
00545
00546
00547
00548
00549
00550
00551
00552
00553
00554
00555
00556
00557
00558
00559
00560
00561
00562
00563
00564
00565
00566
00567
00568
00569
00570
00571
00572
00573
00574
00575
00576
00577
00578
00579
00580
00581
00582
00583
00584
00585
00586
00587
00588
00589
00590
00591
00592
00593
00594
00595
00596
00597
00598
00599
00600
00601
00602
00603
00604
00605
00606
00607
00608
00609
00610
00611
00612
00613
00614
00615
00616
00617
00618
00619
00620
00621
00622
00623
00624
00625
00626
00627
00628
00629