private static Expression<Func<Study, bool>> FilterByModality(DcmDataset query)
{
Expression<Func<Study, bool>> allMatch = p => true;
var studyQuery = query.GetElement(DicomTags.ModalitiesInStudy);
if (studyQuery == null)
return allMatch;
var valueString = studyQuery.GetValueString();
if (String.IsNullOrWhiteSpace(valueString))
return allMatch;
var modalities = valueString.Replace(@"\\", @"\").Split('\\');
if (modalities.Length == 1)
{
return s => s.ModalityAggregation.Contains(modalities[0]);
}
else
{
return s => s.Series.Any( series => modalities.Contains(series.PerformedModalityType));
}
}