Dicom.Data.DcmDataset.CreateOriginalAttributesSequence C# (CSharp) Method

CreateOriginalAttributesSequence() public method

Original Attributes Sequence (0400,0561) Sequence of Items containing all attributes that were removed or replaced by other values in the main dataset. One or more Items may be permitted in this sequence.
public CreateOriginalAttributesSequence ( string originalAttributesSource, string modifyingSystem, string reasonForModification, IEnumerable tagsToModify ) : void
originalAttributesSource string /// Source of Previous Values (0400,0564) /// The source that provided the SOP Instance prior to the /// removal or replacement of the values. For example, this /// might be the Institution from which imported SOP Instances /// were received. ///
modifyingSystem string /// Modifying System (0400,0563) /// Identification of the system which removed and/or replaced /// the attributes. ///
reasonForModification string /// Reason for the Attribute Modification (0400,0565) /// Reason for the attribute modification. Defined terms are: /// COERCE = Replace values of attributes such as Patient /// Name, ID, Accession Number, for example, during import /// of media from an external institution, or reconciliation /// against a master patient index. /// CORRECT = Replace incorrect values, such as Patient /// Name or ID, for example, when incorrect worklist item /// was chosen or operator input error. ///
tagsToModify IEnumerable /// Tags from this dataset to be removed or modified. ///
return void
        public void CreateOriginalAttributesSequence(string originalAttributesSource, string modifyingSystem, 
			string reasonForModification, IEnumerable<DicomTag> tagsToModify)
        {
            DcmItemSequenceItem item = new DcmItemSequenceItem();
            item.Dataset.AddElementWithValue(DicomTags.SourceOfPreviousValues, originalAttributesSource);
            item.Dataset.AddElementWithValue(DicomTags.AttributeModificationDateTime, DateTime.Now);
            item.Dataset.AddElementWithValue(DicomTags.ModifyingSystem, modifyingSystem);
            item.Dataset.AddElementWithValue(DicomTags.ReasonForTheAttributeModification, reasonForModification);

            DcmItemSequence sq = new DcmItemSequence(DicomTags.ModifiedAttributesSequence);
            item.Dataset.AddItem(sq);

            DcmItemSequenceItem modified = new DcmItemSequenceItem();
            sq.AddSequenceItem(modified);

            foreach (DicomTag tag in tagsToModify) {
                DcmItem modifiedItem = GetItem(tag);
                if (modifiedItem == null)
                    modified.Dataset.AddItem(modifiedItem.Clone());
            }

            DcmItemSequence oasq = GetSQ(DicomTags.OriginalAttributesSequence);
            if (oasq == null) {
                oasq = new DcmItemSequence(DicomTags.OriginalAttributesSequence);
                AddItem(oasq);
            }
            oasq.AddSequenceItem(item);
        }