private IQueryable <Study> GetStudies(Query query) { var studies = StudyDatabase.Instance().GetStudies().Values.AsQueryable(); // apply filters studies = ApplyStudyDateFilter(studies, query.FindQueryAttribute(0x0008, 0x0020)); studies = ApplyStudyTimeFilter(studies, query.FindQueryAttribute(0x0008, 0x0030)); studies = ApplyAccessionNumberFilter(studies, query.FindQueryAttribute(0x0008, 0x0050)); studies = ApplyModalitiesInStudyFilter(studies, query.FindQueryAttribute(0x0008, 0x0061)); studies = ApplyReferringPhysiciansNameFilter(studies, query.FindQueryAttribute(0x0008, 0x0090)); studies = ApplyStudyDescriptionFilter(studies, query.FindQueryAttribute(0x0008, 0x1030)); studies = ApplyPatientNameFilter(studies, query.FindQueryAttribute(0x0010, 0x0010)); studies = ApplyPatientIdFilter(studies, query.FindQueryAttribute(0x0010, 0x0020)); studies = ApplyStudyUidFilter(studies, query.FindQueryAttribute(0x0020, 0x000D)); studies = ApplyStudyIdFilter(studies, query.FindQueryAttribute(0x0020, 0x0010)); studies = ApplyInstanceAvailabilityFilter(studies, query.FindQueryAttribute(0x0008, 0x0056)); studies = studies.Take(query.Limit); studies = studies.Skip(query.Offset); return(studies); }
private IQueryable <Instance> GetInstances(string studyUid, string seriesUid, Query query) { Study study = StudyDatabase.Instance().FindByStudyUid(studyUid); if (study == null) { return(new List <Instance>().AsQueryable()); } var instances = GetInstances(study, seriesUid); // apply filters instances = ApplySOPClassUidFilter(instances, query.FindQueryAttribute(0x0008, 0x0016)); instances = ApplySOPInstanceUidFilter(instances, query.FindQueryAttribute(0x0008, 0x0018)); instances = ApplyInstanceNumberFilter(instances, query.FindQueryAttribute(0x0020, 0x0013)); instances = ApplyInstanceAvailabilityFilter(instances, query.FindQueryAttribute(0x0008, 0x0056)); instances = instances.Take(query.Limit); instances = instances.Skip(query.Offset); return(instances); }
private IQueryable <Series> GetSeries(string studyUid, Query query) { Study study = StudyDatabase.Instance().FindByStudyUid(studyUid); if (study == null) { return(new List <Series>().AsQueryable()); } var series = study.Series.Values.AsQueryable(); // apply filters series = ApplyModalityFilter(series, query.FindQueryAttribute(0x0008, 0x0060)); series = ApplySeriesDescriptionFilter(series, query.FindQueryAttribute(0x0008, 0x103E)); series = ApplySeriesUidFilter(series, query.FindQueryAttribute(0x0020, 0x000E)); series = ApplySeriesNumberFilter(series, query.FindQueryAttribute(0x0020, 0x0011)); series = ApplyPerformedProcedureStepStartDateFilter(series, query.FindQueryAttribute(0x0040, 0x0244)); series = ApplyPerformedProcedureStepStartTimeFilter(series, query.FindQueryAttribute(0x0040, 0x0245)); series = ApplyInstanceAvailabilityFilter(series, query.FindQueryAttribute(0x0008, 0x0056)); series = series.Take(query.Limit); series = series.Skip(query.Offset); return(series); }