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 #ifndef WlmDataSource_h
00030 #define WlmDataSource_h
00031
00032 #include "dcmtk/config/osconfig.h"
00033 #include "dcmtk/dcmwlm/wltypdef.h"
00034 #include "dcmtk/dcmdata/dcdatset.h"
00035 #include "dcmtk/oflog/oflog.h"
00036
00037 OFLogger DCM_dcmwlmGetLogger();
00038
00039 #define DCMWLM_TRACE(msg) OFLOG_TRACE(DCM_dcmwlmGetLogger(), msg)
00040 #define DCMWLM_DEBUG(msg) OFLOG_DEBUG(DCM_dcmwlmGetLogger(), msg)
00041 #define DCMWLM_INFO(msg) OFLOG_INFO(DCM_dcmwlmGetLogger(), msg)
00042 #define DCMWLM_WARN(msg) OFLOG_WARN(DCM_dcmwlmGetLogger(), msg)
00043 #define DCMWLM_ERROR(msg) OFLOG_ERROR(DCM_dcmwlmGetLogger(), msg)
00044 #define DCMWLM_FATAL(msg) OFLOG_FATAL(DCM_dcmwlmGetLogger(), msg)
00045
00046 class DcmAttributeTag;
00047 class DcmLongString;
00048
00052 class WlmDataSource
00053 {
00054 protected:
00055
00057 OFBool failOnInvalidQuery;
00059 OFString calledApplicationEntityTitle;
00061 DcmDataset *identifiers;
00063 DcmAttributeTag *errorElements;
00065 DcmAttributeTag *offendingElements;
00067 DcmLongString *errorComment;
00069 OFBool foundUnsupportedOptionalKey;
00071 OFBool readLockSetOnDataSource;
00073 OFBool noSequenceExpansion;
00075 WlmReturnedCharacterSetType returnedCharacterSet;
00077 OFList<DcmDataset*> matchingDatasets;
00079 OFString specificCharacterSet;
00081 WlmSuperiorSequenceInfoType *superiorSequenceArray;
00083 unsigned long numOfSuperiorSequences;
00084
00090 OFBool CheckSearchMask( DcmDataset *searchMask );
00091
00101 void CheckNonSequenceElementInSearchMask( DcmDataset *searchMask, int &invalidMatchingKeyAttributeCount, DcmElement *element, DcmSequenceOfItems *supSequenceElement=NULL );
00102
00114 void CheckSequenceElementInSearchMask( DcmDataset *searchMask, int &invalidMatchingKeyAttributeCount, DcmElement *element, DcmSequenceOfItems *supSequenceElement=NULL );
00115
00124 void ExpandEmptySequenceInSearchMask( DcmElement *&element );
00125
00151 OFBool IsSupportedMatchingKeyAttribute( DcmElement *element, DcmSequenceOfItems *supSequenceElement=NULL );
00152
00246 OFBool IsSupportedReturnKeyAttribute( DcmElement *element, DcmSequenceOfItems *supSequenceElement=NULL );
00247
00251 void ClearDataset( DcmDataset *idents );
00252
00258 void PutOffendingElements( const DcmTagKey &tag );
00259
00265 void PutErrorElements( const DcmTagKey &tag );
00266
00294 OFBool CheckMatchingKey( const DcmElement *elem );
00295
00303 OFBool ContainsOnlyValidCharacters( const char *s, const char *charset );
00304
00309 OFBool IsValidDateOrDateRange( const OFString& value );
00310
00318 OFBool IsValidDate( const OFString& value );
00319
00324 OFBool IsValidTimeOrTimeRange( const OFString& value );
00325
00339 OFBool IsValidTime( const OFString& value );
00340
00349 OFBool GetStringValue( const DcmElement *elem,
00350 OFString& resultVal );
00351
00356 OFString DeleteLeadingAndTrailingBlanks( const OFString& value );
00357
00361 WlmDataSource( const WlmDataSource &Src );
00362
00367 WlmDataSource &operator=( const WlmDataSource &Src );
00368
00369
00370 public:
00373 WlmDataSource();
00374
00377 virtual ~WlmDataSource();
00378
00382 virtual OFCondition ConnectToDataSource() = 0;
00383
00387 virtual OFCondition DisconnectFromDataSource() = 0;
00388
00392 void SetCalledApplicationEntityTitle( const OFString& value );
00393
00397 void SetFailOnInvalidQuery( OFBool value );
00398
00402 void SetNoSequenceExpansion( OFBool value );
00403
00407 void SetReturnedCharacterSet( WlmReturnedCharacterSetType value );
00408
00416 virtual OFBool IsCalledApplicationEntityTitleSupported() = 0;
00417
00430 virtual WlmDataSourceStatusType StartFindRequest( const DcmDataset &findRequestIdentifiers ) = 0;
00431
00442 virtual DcmDataset *NextFindResponse( WlmDataSourceStatusType &rStatus ) = 0;
00443
00450 WlmDataSourceStatusType CancelFindRequest();
00451
00455 DcmAttributeTag *GetOffendingElements();
00456
00460 DcmLongString *GetErrorComments();
00461
00464 virtual void SetDbDsn( const OFString& ) {}
00465
00468 virtual void SetDbUserName( const OFString& ) {}
00469
00472 virtual void SetDbUserPassword( const OFString& ) {}
00473
00476 virtual void SetCfgFileMatchRecords( const OFString& ) {}
00477
00480 virtual void SetCfgFileSelectValues( const OFString& ) {}
00481
00484 virtual void SetDatabaseType( WlmDatabaseType ) {}
00485
00489 virtual void SetSerialNumber( const int ) {}
00490
00494 virtual void SetInstitutionId( const unsigned int ) {}
00495
00498 virtual void SetDfPath( const OFString& ) {}
00499
00502 virtual void SetEnableRejectionOfIncompleteWlFiles( OFBool ) {}
00503
00506 virtual void SetCreateNullvalues( OFBool ) {}
00507
00510 virtual void SetPfFileName( const OFString& ) {}
00511
00514 virtual void SetModalityToReturn( const OFString& ) {}
00515
00518 virtual void SetCommaSeparatePatientName( OFBool ) {}
00519
00522 virtual void SetReturnPatientUidInAccessionNumber( OFBool ) {}
00523 };
00524
00525 #endif
00526
00527
00528
00529
00530
00531
00532
00533
00534
00535
00536
00537
00538
00539
00540
00541
00542
00543
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
00630
00631
00632
00633
00634
00635
00636
00637
00638
00639
00640
00641
00642
00643
00644
00645