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); } } }
/// <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; }
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; }
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(); }