public virtual IDataAdapterCommand <IEnumerable <fo.DicomDataset> > CreateSelectCommand ( string queryLevel, IEnumerable <IMatchingCondition> conditions, IQueryOptions options, IQueryResponseBuilder responseBuilder ) { var queryLeveTable = SchemaProvider.GetTableInfo(SchemaProvider.GetQueryTable(queryLevel)); if (queryLeveTable == null) { throw new ArgumentException("querylevel not supported"); } var queryBuilder = BuildQuery(conditions, options, queryLeveTable); var sorting = SortingStrategyFactory.Create( ); sorting.Sort(options, queryLeveTable); var selectCommand = new DicomDsQueryCommand(CreateCommand(queryBuilder.GetQueryText(queryLeveTable, options, sorting)), queryBuilder, responseBuilder); return(selectCommand); }
private static void FillStudyRelatedSeriesParameters ( IQueryResponseBuilder responseBuilder, Dictionary <string, StudyAdditionalParams> studyKeyValuePairs ) { var series = responseBuilder.GetResults(ObjectQueryLevelConstants.Series); foreach (var seriesDs in series) { var studyKey = seriesDs.GetSingleValueOrDefault(DicomTag.StudyInstanceUID, ""); var seriesKey = seriesDs.GetSingleValueOrDefault(DicomTag.SeriesInstanceUID, ""); var modality = seriesDs.GetSingleValueOrDefault(DicomTag.Modality, ""); StudyAdditionalParams studyParams = null; if (!studyKeyValuePairs.TryGetValue(studyKey, out studyParams)) { studyParams = new StudyAdditionalParams(); studyKeyValuePairs.Add(studyKey, studyParams); } studyParams.NumberOfSeries++; if (!string.IsNullOrEmpty(modality) && !studyParams.Modality.Contains(modality)) { studyParams.Modality.Add(modality); } } }
public DicomDsQueryCommand ( IDbCommand command, QueryBuilder queryBuilder, IQueryResponseBuilder responseBuilder ) : this(command, queryBuilder, responseBuilder, null) { }
protected virtual void FillAdditionalQueryParameters ( IEnumerable <IMatchingCondition> conditions, IQueryOptions options, IQueryResponseBuilder responseBuilder, string queryLevel ) { if (queryLevel == ObjectQueryLevelConstants.Study) { Dictionary <string, StudyAdditionalParams> studyKeyValuePairs = new Dictionary <string, StudyAdditionalParams>(); var studies = responseBuilder.GetResults(ObjectQueryLevelConstants.Study); FillStudyRelatedSeriesParameters(responseBuilder, studyKeyValuePairs); FillStudyRelatedInstancesParameters(responseBuilder, studyKeyValuePairs); foreach (var studyDs in studies) { string studyUid = studyDs.GetSingleValueOrDefault(DicomTag.StudyInstanceUID, ""); if (studyKeyValuePairs.ContainsKey(studyUid)) { var studyParams = studyKeyValuePairs[studyUid]; studyDs.AddOrUpdate(DicomTag.ModalitiesInStudy, studyParams.Modality.ToArray()); studyDs.AddOrUpdate(DicomTag.NumberOfStudyRelatedSeries, studyParams.NumberOfSeries); studyDs.AddOrUpdate(DicomTag.NumberOfStudyRelatedInstances, studyParams.NumberOfInstances); } } } else if (queryLevel == ObjectQueryLevelConstants.Series) { Dictionary <string, SeriesAdditionalParams> seriesKeyValuePairs = new Dictionary <string, SeriesAdditionalParams>(); var series = responseBuilder.GetResults(ObjectQueryLevelConstants.Series); FillSeriesRelatedInstancesParameters(responseBuilder, seriesKeyValuePairs); foreach (var seriesDs in series) { var seriesUid = seriesDs.GetSingleValueOrDefault(DicomTag.SeriesInstanceUID, ""); if (seriesKeyValuePairs.ContainsKey(seriesUid)) { var seriesParams = seriesKeyValuePairs[seriesUid]; seriesDs.AddOrUpdate(DicomTag.NumberOfSeriesRelatedInstances, seriesParams.NumberOfInstances); } } } }
public DicomDsQueryCommand ( IDbCommand command, QueryBuilder queryBuilder, IQueryResponseBuilder responseBuilder ) { Command = command; QueryBuilder = queryBuilder; ResponseBuilder = responseBuilder; }
public DicomDsQueryCommand ( IDbCommand command, QueryBuilder queryBuilder, IQueryResponseBuilder responseBuilder, IQueryOptions options ) { Command = command; QueryBuilder = queryBuilder; ResponseBuilder = responseBuilder; QueryOptions = options; ApplyPagination = false; }
public virtual IDataAdapterCommand <IEnumerable <fo.DicomDataset> > CreateSelectCommand ( string sourceTable, IEnumerable <IMatchingCondition> conditions, IQueryOptions options, IQueryResponseBuilder responseBuilder ) { var queryBuilder = BuildQuery(conditions, options, sourceTable); var selectCommand = new DicomDsQueryCommand(CreateCommand(queryBuilder.GetQueryText(sourceTable)), queryBuilder, responseBuilder); return(selectCommand); }
public virtual IPagedDataAdapterCommand <DicomDataset> CreateSelectCommand ( string queryLevel, IEnumerable <IMatchingCondition> conditions, IQueryOptions options, IQueryResponseBuilder responseBuilder ) { var queryLevelTable = SchemaProvider.GetTableInfo(SchemaProvider.GetQueryTable(queryLevel)); if (queryLevelTable == null) { throw new ArgumentException("querylevel not supported"); } var queryBuilder = BuildQuery(conditions, options, queryLevelTable); var sorting = SortingStrategyFactory.Create( ); sorting.ApplyPagination = sorting.CanPaginate(queryBuilder, options, queryLevelTable); var sortedQuery = sorting.Sort(queryBuilder, options, queryLevelTable); var selectCommand = new DicomDsQueryCommand(CreateCommand(sortedQuery), queryBuilder, responseBuilder, options); // if the database strategy can't paginate then we'll do pagination in code. selectCommand.ApplyPagination = !sorting.ApplyPagination; if (!string.IsNullOrEmpty(sorting.CountColumn)) { selectCommand.SetCountColumn(queryLevelTable, sorting.CountColumn); } return(selectCommand); }
private static void FillSeriesRelatedInstancesParameters ( IQueryResponseBuilder responseBuilder, Dictionary <string, SeriesAdditionalParams> seriesKeyValuePairs ) { var instances = responseBuilder.GetResults(ObjectQueryLevelConstants.Instance); foreach (var instanceDs in instances) { var seriesKey = instanceDs.GetSingleValueOrDefault(DicomTag.SeriesInstanceUID, ""); SeriesAdditionalParams seriesParams = null; if (!seriesKeyValuePairs.TryGetValue(seriesKey, out seriesParams)) { seriesParams = new SeriesAdditionalParams(); seriesKeyValuePairs.Add(seriesKey, seriesParams); } seriesParams.NumberOfInstances++; } }
private static void FillStudyRelatedInstancesParameters ( IQueryResponseBuilder responseBuilder, Dictionary <string, StudyAdditionalParams> studyKeyValuePairs ) { var instances = responseBuilder.GetResults(ObjectQueryLevelConstants.Instance); foreach (var instanceDs in instances) { var studyKey = instanceDs.Get(DicomTag.StudyInstanceUID, ""); StudyAdditionalParams studyParams = null; if (!studyKeyValuePairs.TryGetValue(studyKey, out studyParams)) { studyParams = new StudyAdditionalParams(); studyKeyValuePairs.Add(studyKey, studyParams); } studyParams.NumberOfInstances++; } }