//
        // - 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);
        }
Example #4
0
        /// <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);
        }
Example #5
0
        /// <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);
        }
Example #6
0
 /// <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>();
 }
Example #7
0
        /// <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);
        }