private IEnumerable <SopInstance> GetSopInstances(ImageEntry criteria) { try { string studyInstanceUid = null, seriesInstanceUid = null; if (criteria != null && criteria.Image != null) { studyInstanceUid = criteria.Image.StudyInstanceUid; seriesInstanceUid = criteria.Image.SeriesInstanceUid; } //This will throw when either Uid parameter is empty. var series = GetSeries(studyInstanceUid, seriesInstanceUid); if (series == null) { return(new List <SopInstance>()); } //TODO (Marmot): make extended data queryable, too. var dicomCriteria = criteria.Image.ToDicomAttributeCollection(); var filters = new SopInstancePropertyFilters(dicomCriteria); var results = filters.FilterResults(series.GetSopInstances().Cast <SopInstance>()); return(results); } catch (Exception e) { throw new Exception("An error occurred while performing the image query.", e); } }
private List <DicomAttributeCollection> ImageQuery(DicomAttributeCollection queryCriteria) { var series = GetSeries(queryCriteria[DicomTags.StudyInstanceUid], queryCriteria[DicomTags.SeriesInstanceUid]); if (series == null) { return(new List <DicomAttributeCollection>()); } try { var filters = new SopInstancePropertyFilters(queryCriteria); var results = filters.FilterResults(series.GetSopInstances().Cast <SopInstance>()); return(filters.ConvertResultsToDataSets(results)); } catch (Exception e) { throw new Exception("An error occurred while performing the image query.", e); } }