public void GivenAllInstanceLevel_WithIncludeField_ValidReturned()
        {
            var includeField    = QueryIncludeField.AllFields;
            var filters         = new List <QueryFilterCondition>();
            var query           = new QueryExpression(QueryResource.AllInstances, includeField, false, 0, 0, filters, Array.Empty <string>());
            var responseBuilder = new QueryResponseBuilder(query);

            DicomDataset responseDataset = responseBuilder.GenerateResponseDataset(GenerateTestDataSet());
            var          tags            = responseDataset.Select(i => i.Tag).ToList();

            Assert.Contains <DicomTag>(DicomTag.StudyInstanceUID, tags);  // Valid study field
            Assert.Contains <DicomTag>(DicomTag.StudyDescription, tags);  // Valid all study field
            Assert.Contains <DicomTag>(DicomTag.Modality, tags);          // Valid instance field
            Assert.Contains <DicomTag>(DicomTag.SeriesInstanceUID, tags); // Valid instance resource
            Assert.Contains <DicomTag>(DicomTag.SOPInstanceUID, tags);    // Valid instance resource
        }
        public void GivenStudySeriesInstanceLevel_WithIncludeField_ValidReturned()
        {
            var includeField = new QueryIncludeField(new List <DicomTag>());

            var filters = new List <QueryFilterCondition>()
            {
                new StringSingleValueMatchCondition(new QueryTag(DicomTag.StudyInstanceUID), "35"),
                new StringSingleValueMatchCondition(new QueryTag(DicomTag.SeriesInstanceUID), "351"),
            };
            var query           = new QueryExpression(QueryResource.StudySeriesInstances, includeField, false, 0, 0, filters, Array.Empty <string>());
            var responseBuilder = new QueryResponseBuilder(query);

            DicomDataset responseDataset = responseBuilder.GenerateResponseDataset(GenerateTestDataSet());
            var          tags            = responseDataset.Select(i => i.Tag).ToList();

            Assert.Contains <DicomTag>(DicomTag.StudyInstanceUID, tags);       // Valid filter
            Assert.DoesNotContain <DicomTag>(DicomTag.StudyDescription, tags); // StudySeriesInstance does not include study tags by deault
            Assert.DoesNotContain <DicomTag>(DicomTag.Modality, tags);         // StudySeriesInstance does not include series tags by deault
            Assert.Contains <DicomTag>(DicomTag.SeriesInstanceUID, tags);      // Valid series tag
            Assert.Contains <DicomTag>(DicomTag.SOPInstanceUID, tags);         // Valid instance tag
        }
        public void GivenStudySeriesLevel_WithIncludeField_ValidReturned()
        {
            var includeField = new QueryIncludeField(false, new List <DicomTag>()
            {
                DicomTag.StudyDescription, DicomTag.Modality
            });
            var filters = new List <QueryFilterCondition>()
            {
                new StringSingleValueMatchCondition(DicomTag.StudyInstanceUID, "35"),
            };
            var query           = new QueryExpression(QueryResource.StudySeries, includeField, false, 0, 0, filters);
            var responseBuilder = new QueryResponseBuilder(query);

            DicomDataset responseDataset = responseBuilder.GenerateResponseDataset(GenerateTestDataSet());
            var          tags            = responseDataset.Select(i => i.Tag).ToList();

            Assert.Contains <DicomTag>(DicomTag.StudyInstanceUID, tags);     // Valid filter
            Assert.Contains <DicomTag>(DicomTag.StudyDescription, tags);     // Valid include
            Assert.Contains <DicomTag>(DicomTag.Modality, tags);             // Valid include
            Assert.Contains <DicomTag>(DicomTag.SeriesInstanceUID, tags);    // Valid Series resource
            Assert.DoesNotContain <DicomTag>(DicomTag.SOPInstanceUID, tags); // Invalid Series resource
        }
        public void GivenStudyLevel_WithIncludeField_ValidReturned()
        {
            var includeField = new QueryIncludeField(new List <DicomTag> {
                DicomTag.StudyDescription, DicomTag.IssuerOfPatientID
            });
            var queryTag = new QueryTag(DicomTag.PatientAge.BuildExtendedQueryTagStoreEntry(level: QueryTagLevel.Study));
            var filters  = new List <QueryFilterCondition>()
            {
                new StringSingleValueMatchCondition(queryTag, "35"),
            };
            var query           = new QueryExpression(QueryResource.AllStudies, includeField, false, 0, 0, filters, Array.Empty <string>());
            var responseBuilder = new QueryResponseBuilder(query);

            DicomDataset responseDataset = responseBuilder.GenerateResponseDataset(GenerateTestDataSet());
            var          tags            = responseDataset.Select(i => i.Tag).ToList();

            Assert.Contains <DicomTag>(DicomTag.StudyInstanceUID, tags);        // Default
            Assert.Contains <DicomTag>(DicomTag.PatientAge, tags);              // Match condition
            Assert.Contains <DicomTag>(DicomTag.StudyDescription, tags);        // Valid include
            Assert.Contains <DicomTag>(DicomTag.IssuerOfPatientID, tags);       // non standard include
            Assert.DoesNotContain <DicomTag>(DicomTag.SeriesInstanceUID, tags); // Invalid study resource
            Assert.DoesNotContain <DicomTag>(DicomTag.SOPInstanceUID, tags);    // Invalid study resource
        }