protected virtual void SaveAsXml(TextWriter textWriter,
                                         UidDictionaryEntry[] entryArray)
        {
            XmlTextWriter xmlTextWriter = new XmlTextWriter(textWriter);

            xmlTextWriter.Formatting  = Formatting.Indented;
            xmlTextWriter.Indentation = 4;
            xmlTextWriter.WriteStartDocument();
            xmlTextWriter.WriteComment(" " + fileComment + " ");
            xmlTextWriter.WriteStartElement("DicomUidDictionary");
            foreach (UidDictionaryEntry entry in entryArray)
            {
                xmlTextWriter.WriteStartElement("DictionaryEntry");
                if (entry.IsRetired)
                {
                    xmlTextWriter.WriteAttributeString("retired", "true");
                }
                xmlTextWriter.WriteElementString("Uid", entry.Uid.ToString());
                xmlTextWriter.WriteElementString("Name", entry.Name);
                xmlTextWriter.WriteElementString("Type",
                                                 UidType.GetName(typeof(UidType), entry.Type));
                xmlTextWriter.WriteEndElement();
            }
            xmlTextWriter.WriteEndElement();
            xmlTextWriter.Close();
        }
 public UidDictionaryEntry(string uid, string name, string type,
                           string retired)
 {
     this.uid = new Uid(uid);
     if (name == null)
     {
         this.name = "";
     }
     else
     {
         this.name = name.Trim();
     }
     if (type == null)
     {
         this.type = UidType.Unknown;
     }
     else
     {
         this.type = (UidType)UidType.Parse(typeof(UidType), type);
     }
     if (retired != null)
     {
         retired   = retired.Trim().ToLower();
         isRetired = (retired == "ret" || retired == "retired" ||
                      retired == "true");
     }
 }
        private void LoadFromBinary(StreamReader streamReader)
        {
            BinaryReader binaryReader = new BinaryReader(streamReader.BaseStream);

            while (streamReader.BaseStream.Position < streamReader.BaseStream.Length)
            {
                try
                {
                    int    length = binaryReader.ReadInt32();
                    byte[] buffer = new byte[length];
                    binaryReader.Read(buffer, 0, length);
                    string stringUid = ByteConvert.ToString(buffer,
                                                            CharacterRepertoire.Ascii);
                    Uid uid = new Uid(stringUid);
                    length = binaryReader.ReadInt32();
                    buffer = new byte[length];
                    binaryReader.Read(buffer, 0, length);
                    string name = ByteConvert.ToString(buffer,
                                                       CharacterRepertoire.Ascii);
                    int     intType = binaryReader.ReadInt32();
                    UidType type    = (UidType)UidType.ToObject(typeof(UidType),
                                                                intType);
                    bool retired             = binaryReader.ReadBoolean();
                    UidDictionaryEntry entry =
                        new UidDictionaryEntry(uid, name, type, retired);
                    Add(entry);
                }
                catch (Exception e)
                {
                    throw new DicomException("Wrong entry before index " +
                                             streamReader.BaseStream.Position + ": " + e.Message);
                }
            }
        }
Exemple #4
0
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="uid">The UID string.</param>
        /// <param name="desc">A description of the UID.</param>
        /// <param name="type">The type of the UID.</param>
        public DicomUid(string uid, string desc, UidType type)
        {
            if (uid.Length > 64)
                throw new DicomException("Invalid UID length: " + uid.Length + "!");

            _uid = uid;
            _description = desc;
            _type = type;
        }
Exemple #5
0
        Uid(string value, string name, UidType type, StorageCategory storageCategory = StorageCategory.None, bool isRetired = false)
        {
            if (!IsValid(value))
            {
                throw new ArgumentException($"{value} is not a valid uid.");
            }

            Value           = value;
            Name            = name;
            Type            = type;
            StorageCategory = storageCategory;
            IsRetired       = isRetired;
        }
 public UidDictionaryEntry(Uid uid, string name, UidType type,
                           bool retired)
 {
     this.uid = uid;
     if (name == null)
     {
         this.name = "";
     }
     else
     {
         this.name = name.Trim();
     }
     this.type = type;
     isRetired = retired;
 }
Exemple #7
0
        public static Uid NewUid(string name = "", UidType type = UidType.SOPInstance)
        {
            // PS3.5 - B.2 UUID Derived UID

            Span <byte> span = stackalloc byte[16];

            Guid.NewGuid().TryWriteBytes(span);
            Swap(ref span[7], ref span[6]);
            Swap(ref span[5], ref span[4]);
            Swap(ref span[3], ref span[0]);
            Swap(ref span[1], ref span[2]);

            var intValue = new BigInteger(span, isUnsigned: true, isBigEndian: true);

            Span <char> value = stackalloc char[39 + UUidRoot.Length];

            UUidRoot.AsSpan().CopyTo(value);
            intValue.TryFormat(value.Slice(UUidRoot.Length), out int charsWritten);

            return(new Uid(value.Slice(0, charsWritten + UUidRoot.Length).ToString(), name, type));
 private void SaveAsCsv(TextWriter textWriter,
                        UidDictionaryEntry[] entryArray)
 {
     textWriter.WriteLine("# " + fileComment);
     foreach (UidDictionaryEntry entry in entryArray)
     {
         if (entry.IsRetired)
         {
             textWriter.WriteLine(entry.Uid + "; " +
                                  entry.Name + "; " +
                                  UidType.GetName(typeof(UidType), entry.Type) +
                                  "; RET");
         }
         else
         {
             textWriter.WriteLine(entry.Uid + "; " +
                                  entry.Name + "; " +
                                  UidType.GetName(typeof(UidType), entry.Type));
         }
     }
 }
 private void AddDataElementToXml(XmlTextWriter xml,
                                  DataElement element)
 {
     xml.WriteStartElement("DataElement");
     xml.WriteAttributeString("streamPosition", element.StreamPosition.ToString());
     xml.WriteElementString("Tag", element.Tag.ToString());
     xml.WriteElementString("VR", element.VR.ToString());
     xml.WriteElementString("VM",
                            element.Tag.GetDictionaryEntry().VM.ToString());
     xml.WriteElementString("Description",
                            element.Tag.GetDictionaryEntry().Description);
     xml.WriteElementString("ValueLength", element.ValueLength.ToString());
     if (element.Value.IsSequence)
     {
         xml.WriteStartElement("Sequence");
         xml.WriteAttributeString("elementCount",
                                  ((Sequence)element.Value[0]).Count.ToString());
         foreach (DataElement d in (Sequence)element.Value[0])
         {
             AddDataElementToXml(xml, d);
         }
     }
     else if (element.Value.IsNestedDataSet)
     {
         xml.WriteStartElement("NestedDataSet");
         xml.WriteAttributeString("elementCount",
                                  ((NestedDataSet)element.Value[0]).Count.ToString());
         foreach (DataElement d in (NestedDataSet)element.Value[0])
         {
             AddDataElementToXml(xml, d);
         }
     }
     else if (element.Value.IsMultiValue)
     {
         xml.WriteStartElement("MultiValue");
         xml.WriteAttributeString("count", element.Value.Count.ToString());
         object[] valueArray = element.Value.ToArray();
         for (int i = 0; i < valueArray.Length; i++)
         {
             xml.WriteStartElement("Value");
             xml.WriteAttributeString("order", i.ToString());
             AddValueToXml(xml, valueArray[i], element.Value.IsDate);
             xml.WriteEndElement();
         }
     }
     else if (element.Value.IsUid)
     {
         Uid uid = (Uid)element.Value[0];
         xml.WriteStartElement("Uid");
         xml.WriteStartElement("Value");
         AddValueToXml(xml, uid, element.Value.IsDate);
         xml.WriteEndElement();
         xml.WriteStartElement("Name");
         AddValueToXml(xml, uid.GetDictionaryEntry().Name,
                       element.Value.IsDate);
         xml.WriteEndElement();
         xml.WriteStartElement("Type");
         AddValueToXml(xml, UidType.GetName(typeof(UidType),
                                            uid.GetDictionaryEntry().Type), element.Value.IsDate);
         xml.WriteEndElement();
     }
     else
     {
         xml.WriteStartElement("Value");
         if (!element.Value.IsEmpty)
         {
             AddValueToXml(xml, element.Value[0], element.Value.IsDate);
         }
     }
     // Value
     xml.WriteEndElement();
     // DataElement
     xml.WriteEndElement();
 }