// // - Methods - // /// <summary> /// Visit the supplied Content Item instance to validate its Concept Name. /// </summary> /// <param name="contentItem">The ContentItem instance to visit.</param> public void Visit(ContentItem contentItem) { ConceptCode conceptName = contentItem.ConceptName; if (conceptName == null) { contentItem.ValidationResults.Add(new ValidationResult("Sequence Item encoding the Concept Name does not exist.")); } else { conceptCodeValidationRule.ValidateUsingContextGroups(conceptName); } }
/// <summary> /// Visit the supplied Content Item instance to validate its value. /// </summary> /// <param name="contentItem">The ContentItem instance to visit.</param> public void Visit(ContentItem contentItem) { if (contentItem is ContentItemWithValueTypeCode) { ValidateValue(contentItem as ContentItemWithValueTypeCode); } else if (contentItem is ContentItemWithValueTypeNum) { ValidateValue(contentItem as ContentItemWithValueTypeNum); } else { // Do nothing for the first increment. } }
/// <summary> /// Constructor. /// </summary> /// <param name="sequenceItem"> /// The SequenceItem instance containing the DICOM attributes to construct this instance with. /// </param> /// <param name="parentContentItem">The parent Content Item.</param> /// <param name="position">The ordinal position of the associated Sequence Item in it's contained Content Sequence Item.</param> public ContentItemWithValueTypeNum(AttributeSet attributeSet, ContentItem parentContentItem, uint position) : base(attributeSet, parentContentItem, position) { DvtkHighLevelInterface.Dicom.Other.Attribute attribute = attributeSet["0x0040A300"]; if (attribute.Exists) { if (attribute.VR == VR.SQ) { if (attribute.ItemCount > 0) { this.measuredValue = new MeasuredValue(attribute.GetItem(1)); } } } this.numericValueQualifier = ConceptCode.CreateConceptCode(attributeSet, "0x0040A301", numericValueQualifierContext); }
/// <summary> /// Create both a Content Item instance and all its direct and indirect child Content Item instances. /// </summary> /// <param name="attributeSet"> /// <param name="dataSet"> /// The AttributeSet instance containing the DICOM attributes to construct this Content /// Item instance and its direct and indirect child Content Item instances with. /// </param> /// </param> /// <param name="parentContentItem"> /// The parent Content Item instance. /// If no parent exists, supply null. /// </param> /// <param name="position"> /// The ordinal position of the associated Sequence Item in it's contained Content Sequence. /// Item. /// </param> /// <returns>A Content Item instance.</returns> private static ContentItem CreateContentItems(AttributeSet attributeSet, ContentItem parentContentItem, uint position) { // // Create the single Content Item instance using the Attribute Set instance supplied. // ContentItem contentItem = CreateContentItem(attributeSet, parentContentItem, position); // // If existing, create its child Content Item instances. // DvtkHighLevelInterface.Dicom.Other.Attribute attribute = attributeSet["0x0040A730"]; // Content Sequence Attribute. if (attribute.Exists) { if (attribute.VR == VR.SQ) { for (uint sequenceItemIndex = 1; sequenceItemIndex <= attribute.ItemCount; sequenceItemIndex++) { SequenceItem sequenceItem = attribute.GetItem(System.Convert.ToInt32(sequenceItemIndex)); ContentItem childContentItem = CreateContentItems(sequenceItem, contentItem, sequenceItemIndex); contentItem.childContentItems.Add(childContentItem); } } } return (contentItem); }
/// <summary> /// Create a single Content Item instance without creating (possible) child Content Item instances. /// </summary> /// <remarks> /// The child Content Items will be created by the CreateContentItems methods. /// </remarks> /// <param name="attributeSet">The Attribute Set from which the Content Item is constructed.</param> /// <returns>A single Content Item instance.</returns> private static ContentItem CreateContentItem(AttributeSet attributeSet, ContentItem parentContentItem, uint position) { ContentItem contentItem = null; String valueType = Convert.FirstAttributeValueToString(attributeSet, "0x0040A040"); valueType = valueType.TrimStart(' '); valueType = valueType.TrimEnd(' '); switch (valueType) { case "CODE": contentItem = new ContentItemWithValueTypeCode(attributeSet, parentContentItem, position); break; case "NUM": contentItem = new ContentItemWithValueTypeNum(attributeSet, parentContentItem, position); break; default: contentItem = new ContentItem(attributeSet, parentContentItem, position); break; } return (contentItem); }
/// <summary> /// Constructor. /// </summary> /// <param name="sequenceItem"> /// The attributeSet instance containing the DICOM attributes to construct this instance with. /// </param> /// <param name="parentContentItem">The parent Content Item.</param> /// <param name="position"> /// The ordinal position of the associated Sequence Item in it's contained Content Sequence /// Item. /// </param> internal ContentItem(AttributeSet attributeSet, ContentItem parentContentItem, uint position) { this.attributeSet = attributeSet; this.conceptName = ConceptCode.CreateConceptCode(attributeSet, "0x0040A043", conceptNameContext); this.position = position; this.parentContentItem = parentContentItem; childContentItems = new List<ContentItem>(); }
/// <summary> /// Constructor. /// </summary> /// <param name="dataSet">The Structured Report encoded as a Data Set.</param> public StructuredReport(DvtkHighLevelInterface.Dicom.Other.DataSet dataSet) { this.dataSet = dataSet; this.rootContentItem = ContentItem.CreateContentItems(dataSet); }