private void ValidateSimpleDataSets(string[] values, List <InstanceXmlDicomAttributeCollection> dataSets, StudyXmlOutputSettings settings) { if (values.Length != dataSets.Count) { throw new ArgumentException("Test value and data set lists must have same number of values."); } for (int i = 0; i < dataSets.Count; ++i) { string originalValue = values[i]; InstanceXmlDicomAttributeCollection dataSet = dataSets[i]; if (originalValue == null) { Assert.IsFalse(dataSet.IsTagExcluded(DicomTags.ImageComments), "Tag should NOT be excluded."); Assert.IsTrue(dataSet[DicomTags.ImageComments].IsEmpty, "Tag should be empty."); } else if (originalValue.Length > (int)settings.MaxTagLength) { Assert.IsTrue(dataSet.IsTagExcluded(DicomTags.ImageComments), "Tag should be excluded."); Assert.AreNotEqual(dataSet[DicomTags.ImageComments].ToString(), originalValue, "Value doesn't match original."); } else { Assert.IsFalse(dataSet.IsTagExcluded(DicomTags.ImageComments), "Tag should not be excluded."); Assert.AreEqual(dataSet[DicomTags.ImageComments].ToString(), originalValue, "Value doesn't match original."); } } }
private void TestOverlappingSequence(SqId[] sequenceIds, bool setMaxTagLength) { List <DicomFile> images = SetupImagesWithVoiLutSequenceA(sequenceIds.Length); for (int i = 0; i < sequenceIds.Length; ++i) { DicomFile image = images[i]; SqId sequenceId = sequenceIds[i]; if (sequenceId == SqId.X) { image.DataSet[DicomTags.VoiLutSequence] = null; } else if (sequenceId == SqId.B) { MakeVoiLutSequenceB(image.DataSet); } } StudyXml newStudyXml; StudyXmlOutputSettings settings = new StudyXmlOutputSettings(); if (setMaxTagLength) { settings.MaxTagLength = 1024; } List <InstanceXmlDicomAttributeCollection> dataSets = GetInstanceXmlDataSets(images, out newStudyXml, settings); for (int i = 0; i < dataSets.Count; ++i) { InstanceXmlDicomAttributeCollection dataSet = dataSets[i]; SqId sequenceId = sequenceIds[i]; DicomAttribute sequence = dataSets[i][DicomTags.VoiLutSequence]; DicomSequenceItem[] items = (DicomSequenceItem[])sequence.Values; if (sequenceId == SqId.X) { Assert.IsTrue(sequence.IsEmpty, "Tag should be empty."); Assert.IsFalse(dataSet.HasExcludedTags(true), "There should be no excluded tags."); } else { Assert.IsFalse(sequence.IsEmpty, "Tag should NOT be empty."); if (!setMaxTagLength) { Assert.AreEqual(sequence, images[i].DataSet[DicomTags.VoiLutSequence], "Tag doesn't match original."); Assert.IsFalse(dataSet.HasExcludedTags(true), "There should be no excluded tags."); } else { foreach (InstanceXmlDicomSequenceItem item in items) { Assert.IsTrue(item.IsTagExcluded(DicomTags.LutData), "Tag should be excluded."); } } if (sequenceId == SqId.B) { Assert.AreEqual(items.Length, 2, "Sequence length should be 2."); } else { Assert.AreEqual(items.Length, 3, "Sequence length should be 3."); } } } }
public InstanceXml(XmlNode instanceNode, DicomAttributeCollection baseCollection) { InstanceXmlDicomAttributeCollection thisCollection = new InstanceXmlDicomAttributeCollection(); _collection = thisCollection; _collection.ValidateVrValues = false; _collection.ValidateVrLengths = false; if (baseCollection != null) { AddExcludedTagsFromBase(baseCollection); _baseCollectionEnumerator = baseCollection.GetEnumerator(); if (!_baseCollectionEnumerator.MoveNext()) _baseCollectionEnumerator = null; } if (!instanceNode.HasChildNodes) return; _instanceXmlEnumerator = instanceNode.ChildNodes.GetEnumerator(); if (!_instanceXmlEnumerator.MoveNext()) _instanceXmlEnumerator = null; if (instanceNode.Attributes["UID"] != null) { _sopInstanceUid = instanceNode.Attributes["UID"].Value; } if (instanceNode.Attributes["SopClassUID"] != null) { _sopClass = SopClass.GetSopClass(instanceNode.Attributes["SopClassUID"].Value); } _transferSyntax = instanceNode.Attributes["TransferSyntaxUID"] != null ? TransferSyntax.GetTransferSyntax(instanceNode.Attributes["TransferSyntaxUID"].Value) : TransferSyntax.ExplicitVrLittleEndian; if (instanceNode.Attributes["SourceFileName"] != null) { _sourceFileName = instanceNode.Attributes["SourceFileName"].Value; } if (instanceNode.Attributes["FileSize"] != null) { long.TryParse(instanceNode.Attributes["FileSize"].Value, out _fileSize); } // This should never happen if (_sopClass == null) { _sopClass = SopClass.GetSopClass(Collection[DicomTags.SopClassUid].GetString(0, String.Empty)); } }