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); } } } }
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); } } }
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++; } }