private void Initialize() { //Figure out which UID columns exist in the Catalogue, do not require file path to be in Catalogue _columnSet = QueryToExecuteColumnSet.Create(_catalogue, false); //Tells us the DBMS type var syntax = _catalogue.GetQuerySyntaxHelper(); //For storing the OR container and filter(s) var memory = new MemoryCatalogueRepository(); //builds SQL we will run in lookup stage _queryBuilder = new QueryBuilder(null, null); //all we care about is if the uid appears if it does then we are rejecting it _queryBuilder.TopX = 1; //Filter is OR i.e. StudyInstanceUID = @StudyInstanceUID OR SeriesInstanceUID = @SeriesInstanceUID var container = _queryBuilder.RootFilterContainer = new SpontaneouslyInventedFilterContainer(memory, null, null, FilterContainerOperation.OR); //Build SELECT and WHERE bits of the query if (_columnSet.StudyTagColumn != null) { _queryBuilder.AddColumn(_columnSet.StudyTagColumn); string whereSql = $"{_columnSet.StudyTagColumn.SelectSQL} = {syntax.ParameterSymbol}{QueryToExecuteColumnSet.DefaultStudyIdColumnName}"; _studyFilter = new SpontaneouslyInventedFilter(memory, container, whereSql, "Study UID Filter", "", null); container.AddChild(_studyFilter); } if (_columnSet.SeriesTagColumn != null) { _queryBuilder.AddColumn(_columnSet.SeriesTagColumn); string whereSql = $"{_columnSet.SeriesTagColumn.SelectSQL} = {syntax.ParameterSymbol}{QueryToExecuteColumnSet.DefaultSeriesIdColumnName}"; _seriesFilter = new SpontaneouslyInventedFilter(memory, container, whereSql, "Series UID Filter", "", null); container.AddChild(_seriesFilter); } if (_columnSet.InstanceTagColumn != null) { _queryBuilder.AddColumn(_columnSet.InstanceTagColumn); string whereSql = $"{_columnSet.InstanceTagColumn.SelectSQL} = {syntax.ParameterSymbol}{QueryToExecuteColumnSet.DefaultInstanceIdColumnName}"; _instanceFilter = new SpontaneouslyInventedFilter(memory, container, whereSql, "Instance UID Filter", "", null); container.AddChild(_instanceFilter); } // Make sure the query builder looks valid if (!_queryBuilder.SelectColumns.Any()) { throw new NotSupportedException($"Blacklist Catalogue {_catalogue} (ID={_catalogue.ID}) did not have any Core ExtractionInformation columns corresponding to any of the image UID tags (e.g. StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID)."); } try { // make sure we can connect to the server _server = _catalogue.GetDistinctLiveDatabaseServer(DataAccessContext.DataExport, true); _server.TestConnection(); } catch (Exception e) { throw new Exception($"Failed to test connection for Catalogue {_catalogue}", e); } // run a test lookup query against the remote database DoLookup("test1", "test2", "test3"); }