public void ConstraintsGenTypes() { var orderInt = new OrderedIntConstraint(Order.Equal, int.MinValue, DicomTag.SeriesNumber); var orderDouble = new OrderedDoubleConstraint(Order.Equal, double.MaxValue, DicomTag.SeriesNumber); var orderDateTime = new OrderedDateTimeConstraint(Order.Equal, DateTime.UtcNow, DicomTag.SeriesNumber); var orderString = new OrderedStringConstraint(Order.Equal, new OrderedString("hOOf", StringComparisonType.CulureInvariantCaseSensitive), DicomTag.SeriesNumber); var stringOrderUID = new UIDStringOrderConstraint(Order.Equal, DicomUID.CTImageStorage.UID, DicomTag.SOPClassUID); var timeOrder = new TimeOrderConstraint(Order.GreaterThanOrEqual, new TimeSpan(0, 0, 0), DicomTag.SeriesTime); var stringContains = new StringContainsConstraint(DicomTag.PatientPosition, "HFS"); var stringRegex = new RegexConstraint(DicomTag.SeriesDescription, "(hog)", RegexOptions.ECMAScript); var compareStrings = new[] { "HOOF", "LEAF", "FLOWER", "HOG" }.Select(t => new OrderedString(t)); var stringCompountGroup = new GroupConstraint(compareStrings.Select(c => new OrderedStringConstraint(Order.Equal, c, DicomTag.BodyPartExamined)).ToArray(), LogicalOperator.Or); var stringCompound = new GroupTagConstraint(stringCompountGroup, DicomTag.BodyPartExamined); DicomConstraint[] dc = new[] { new RequiredTagConstraint(TagRequirement.Optional, orderInt), new RequiredTagConstraint(TagRequirement.Optional, orderDouble), new RequiredTagConstraint(TagRequirement.Optional, orderDateTime), new RequiredTagConstraint(TagRequirement.Optional, orderString), new RequiredTagConstraint(TagRequirement.Optional, stringOrderUID), new RequiredTagConstraint(TagRequirement.PresentCanBeEmpty, timeOrder), new RequiredTagConstraint(TagRequirement.PresentCanBeEmpty, stringContains), new RequiredTagConstraint(TagRequirement.Optional, stringRegex), new RequiredTagConstraint(TagRequirement.PresentNotEmpty, stringOrderUID), new RequiredTagConstraint(TagRequirement.Optional, orderString), new RequiredTagConstraint(TagRequirement.Optional, stringCompound), }; var dc2 = new GroupConstraint(dc, LogicalOperator.Or) as DicomConstraint; JsonConvert.SerializeObject(dc2); }
public void ConstraintsTestOptionality() { var ds = new DicomDataset(); var c0 = new OrderedIntConstraint(Order.Equal, 4, DicomTag.SeriesNumber); var c3 = new RequiredTagConstraint(TagRequirement.Optional, c0); var c2 = new RequiredTagConstraint(TagRequirement.PresentCanBeEmpty, c0); var c1 = new RequiredTagConstraint(TagRequirement.PresentNotEmpty, c0); Assert.IsTrue(c3.Check(ds).Result); Assert.IsFalse(c2.Check(ds).Result); Assert.IsFalse(c1.Check(ds).Result); ds.Add(DicomTag.SeriesNumber, string.Empty); Assert.IsTrue(c3.Check(ds).Result); Assert.IsTrue(c2.Check(ds).Result); Assert.IsFalse(c1.Check(ds).Result); ds.AddOrUpdate(DicomTag.SeriesNumber, "4"); Assert.IsTrue(c3.Check(ds).Result); Assert.IsTrue(c2.Check(ds).Result); Assert.IsTrue(c1.Check(ds).Result); ds.AddOrUpdate(DicomTag.SeriesNumber, "3"); Assert.IsFalse(c3.Check(ds).Result); Assert.IsFalse(c2.Check(ds).Result); Assert.IsFalse(c1.Check(ds).Result); }
public void ConstraintsTestOrder() { var o0 = new OrderedIntConstraint(Order.Never, 42, DicomTag.SeriesNumber); var o1 = new OrderedIntConstraint(Order.LessThan, 42, DicomTag.SeriesNumber); var o2 = new OrderedIntConstraint(Order.LessThanOrEqual, 42, DicomTag.SeriesNumber); var o3 = new OrderedIntConstraint(Order.Equal, 42, DicomTag.SeriesNumber); var o4 = new OrderedIntConstraint(Order.GreaterThan, 42, DicomTag.SeriesNumber); var o5 = new OrderedIntConstraint(Order.GreaterThanOrEqual, 42, DicomTag.SeriesNumber); var o6 = new OrderedIntConstraint(Order.NotEqual, 42, DicomTag.SeriesNumber); var o7 = new OrderedIntConstraint(Order.Always, 42, DicomTag.SeriesNumber); DicomDataset ds = new DicomDataset { { DicomTag.SeriesNumber, 41 }, }; Assert.IsFalse(o0.Check(ds).Result); Assert.IsTrue(o1.Check(ds).Result); Assert.IsTrue(o2.Check(ds).Result); Assert.IsFalse(o3.Check(ds).Result); Assert.IsFalse(o4.Check(ds).Result); Assert.IsFalse(o5.Check(ds).Result); Assert.IsTrue(o6.Check(ds).Result); Assert.IsTrue(o7.Check(ds).Result); ds.AddOrUpdate(DicomTag.SeriesNumber, 42); Assert.IsFalse(o0.Check(ds).Result); Assert.IsFalse(o1.Check(ds).Result); Assert.IsTrue(o2.Check(ds).Result); Assert.IsTrue(o3.Check(ds).Result); Assert.IsFalse(o4.Check(ds).Result); Assert.IsTrue(o5.Check(ds).Result); Assert.IsFalse(o6.Check(ds).Result); Assert.IsTrue(o7.Check(ds).Result); ds.AddOrUpdate(DicomTag.SeriesNumber, 43); Assert.IsFalse(o0.Check(ds).Result); Assert.IsFalse(o1.Check(ds).Result); Assert.IsFalse(o2.Check(ds).Result); Assert.IsFalse(o3.Check(ds).Result); Assert.IsTrue(o4.Check(ds).Result); Assert.IsTrue(o5.Check(ds).Result); Assert.IsTrue(o6.Check(ds).Result); Assert.IsTrue(o7.Check(ds).Result); }