Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
                }
            }
        }
Ejemplo n.º 3
0
 public DicomDsQueryCommand
 (
     IDbCommand command,
     QueryBuilder queryBuilder,
     IQueryResponseBuilder responseBuilder
 ) : this(command, queryBuilder, responseBuilder, null)
 {
 }
Ejemplo n.º 4
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 5
0
 public DicomDsQueryCommand
 (
     IDbCommand command,
     QueryBuilder queryBuilder,
     IQueryResponseBuilder responseBuilder
 )
 {
     Command         = command;
     QueryBuilder    = queryBuilder;
     ResponseBuilder = responseBuilder;
 }
Ejemplo n.º 6
0
 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);
        }
Ejemplo n.º 9
0
        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++;
            }
        }