コード例 #1
0
 public DicomUID(string uid, string name, DicomUidType type, bool retired = false)
 {
     _uid     = uid;
     _name    = name;
     _type    = type;
     _retired = retired;
 }
コード例 #2
0
ファイル: DicomUID.cs プロジェクト: zhaohh1985/fo-dicom
 public DicomUID(string uid, string name, DicomUidType type, bool retired = false)
 {
     UID       = uid;
     Name      = name;
     Type      = type;
     IsRetired = retired;
 }
コード例 #3
0
ファイル: DicomUID.cs プロジェクト: vdrm/fo-dicom
 public DicomUID(string uid, string name, DicomUidType type, bool retired=false)
 {
     _uid = uid;
     _name = name;
     _type = type;
     _retired = retired;
 }
コード例 #4
0
        public static DicomUID Parse(string s, string name = "Unknown", DicomUidType type = DicomUidType.Unknown)
        {
            string u = s.TrimEnd(' ', '\0');

            return(_uids.TryGetValue(u, out DicomUID uid)
                ? uid
                : new DicomUID(u, name, type));
        }
コード例 #5
0
ファイル: DicomUIDTest.cs プロジェクト: GMZ/fo-dicom
 public void Enumerate_TestKnownUids_TypeAndRetirementShouldMatch(
     DicomUID uid,
     DicomUidType type,
     bool isRetired)
 {
     var found = KnownUids.Single(item => item.UID.Equals(uid.UID));
     Assert.Equal(type, found.Type);
     Assert.Equal(isRetired, found.IsRetired);
 }
コード例 #6
0
ファイル: DicomUIDTest.cs プロジェクト: zinan/fo-dicom
        public void Enumerate_TestKnownUids_TypeAndRetirementShouldMatch(
            DicomUID uid,
            DicomUidType type,
            bool isRetired)
        {
            var found = KnownUids.Single(item => item.UID.Equals(uid.UID));

            Assert.Equal(type, found.Type);
            Assert.Equal(isRetired, found.IsRetired);
        }
コード例 #7
0
ファイル: DicomUID.cs プロジェクト: zhaohh1985/fo-dicom
        public static DicomUID Parse(string s, string name = "Unknown", DicomUidType type = DicomUidType.Unknown)
        {
            string u = s.TrimEnd(' ', '\0');

            DicomUID uid = null;

            if (_uids.TryGetValue(u, out uid))
            {
                return(uid);
            }

            //if (!IsValid(u))
            //	throw new DicomDataException("Invalid characters in UID string ['" + u + "']");

            return(new DicomUID(u, name, type));
        }
コード例 #8
0
        public static IEnumerable <DicomUID> Parse(string file)
        {
            XDocument doc   = XDocument.Load(file);
            XElement  xdict = doc.Element("dictionary");

            if (xdict == null)
            {
                throw new DicomDataException("Expected <dictionary> root node in DICOM dictionary.");
            }

            foreach (XElement xuid in xdict.Elements("uid"))
            {
                string name = xuid.Value;

                if (xuid.Attribute("uid") == null)
                {
                    continue;
                }
                string uid = xuid.Attribute("uid").Value;

                if (xuid.Attribute("keyword") == null)
                {
                    continue;
                }
                string keyword = xuid.Attribute("keyword").Value;

                bool       retired  = false;
                XAttribute xretired = xuid.Attribute("retired");
                if (xretired != null && !String.IsNullOrEmpty(xretired.Value) && Boolean.Parse(xretired.Value))
                {
                    retired = true;
                }

                if (retired)
                {
                    keyword += "RETIRED";
                }

                if (xuid.Attribute("type") == null)
                {
                    continue;
                }
                string type = xuid.Attribute("type").Value;

                DicomUidType uidType = DicomUidType.Unknown;
                switch (type)
                {
                case "Transfer":
                case "Transfer Syntax":
                    uidType = DicomUidType.TransferSyntax;
                    break;

                case "SOP Class":
                case "Query/Retrieve":
                    uidType = DicomUidType.SOPClass;
                    break;

                case "Meta SOP Class":
                    uidType = DicomUidType.MetaSOPClass;
                    break;

                case "Service Class":
                    uidType = DicomUidType.ServiceClass;
                    break;

                case "Well-known frame of reference":
                case "Synchronization Frame of Reference":
                    uidType = DicomUidType.FrameOfReference;
                    break;

                case "Well-known SOP Instance":
                case "Well-known Printer SOP Instance":
                case "Well-known Print Queue SOP Instance":
                    uidType = DicomUidType.SOPInstance;
                    break;

                case "Coding Scheme":
                case "DICOM UIDs as a Coding Scheme":
                    uidType = DicomUidType.CodingScheme;
                    break;

                case "Application Context Name":
                    uidType = DicomUidType.ApplicationContextName;
                    break;

                case "LDAP":
                case "LDAP OID":
                    uidType = DicomUidType.LDAP;
                    break;

                case "Context Group Name":
                    uidType = DicomUidType.ContextGroupName;
                    break;

                case "Application Hosting Model":
                    uidType = DicomUidType.ApplicationHostingModel;
                    break;

                case "":
                    uidType = DicomUidType.Unknown;
                    break;

                default:
                    throw new DicomDataException("Unkown UID type: {0}", type);
                }
                yield return(new DicomUID(uid, name, uidType, retired));
            }
        }
コード例 #9
0
ファイル: DicomUID.cs プロジェクト: curasystems/mdcm
 internal DicomUID(string uid, string desc, DicomUidType type)
 {
     UID = uid;
     Description = desc;
     Type = type;
 }
コード例 #10
0
        public static string Process(string file)
        {
            StringBuilder list = new StringBuilder();
            StringBuilder uids = new StringBuilder();

            XDocument doc   = XDocument.Load(file);
            XElement  xdict = doc.Element("dictionary");

            if (xdict == null)
            {
                throw new DicomDataException("Expected <dictionary> root node in DICOM dictionary.");
            }

            foreach (XElement xuid in xdict.Elements("uid"))
            {
                string name = xuid.Value;

                if (xuid.Attribute("uid") == null)
                {
                    continue;
                }
                string uid = xuid.Attribute("uid").Value;

                if (xuid.Attribute("keyword") == null)
                {
                    continue;
                }
                string keyword = xuid.Attribute("keyword").Value;

                bool       retired  = false;
                XAttribute xretired = xuid.Attribute("retired");
                if (xretired != null && !String.IsNullOrEmpty(xretired.Value) && Boolean.Parse(xretired.Value))
                {
                    retired = true;
                }

                if (retired)
                {
                    keyword += "RETIRED";
                }

                if (xuid.Attribute("type") == null)
                {
                    continue;
                }
                string type = xuid.Attribute("type").Value;

                DicomUidType uidType = DicomUidType.Unknown;
                switch (type)
                {
                case "Transfer":
                case "Transfer Syntax":
                    uidType = DicomUidType.TransferSyntax;
                    break;

                case "SOP Class":
                case "Query/Retrieve":
                    uidType = DicomUidType.SOPClass;
                    break;

                case "Meta SOP Class":
                    uidType = DicomUidType.MetaSOPClass;
                    break;

                case "Service Class":
                    uidType = DicomUidType.ServiceClass;
                    break;

                case "Well-known frame of reference":
                case "Synchronization Frame of Reference":
                    uidType = DicomUidType.FrameOfReference;
                    break;

                case "Well-known SOP Instance":
                case "Well-known Printer SOP Instance":
                case "Well-known Print Queue SOP Instance":
                    uidType = DicomUidType.SOPInstance;
                    break;

                case "Coding Scheme":
                case "DICOM UIDs as a Coding Scheme":
                    uidType = DicomUidType.CodingScheme;
                    break;

                case "Application Context Name":
                    uidType = DicomUidType.ApplicationContextName;
                    break;

                case "LDAP":
                case "LDAP OID":
                    uidType = DicomUidType.LDAP;
                    break;

                case "Context Group Name":
                    uidType = DicomUidType.ContextGroupName;
                    break;

                case "Application Hosting Model":
                    uidType = DicomUidType.ApplicationHostingModel;
                    break;

                case "":
                    uidType = DicomUidType.Unknown;
                    break;

                default:
                    throw new DicomDataException("Unkown UID type: {0}", type);
                }

                list.AppendFormat("\t\t\t_uids.Add(DicomUID.{0}.UID, DicomUID.{0});", keyword).AppendLine();

                uids.AppendLine();
                uids.AppendFormat("\t\t/// <summary>{0}: {1}</summary>", type, name).AppendLine();
                uids.AppendFormat("\t\tpublic readonly static DicomUID {0} = new DicomUID(\"{1}\", \"{2}\", DicomUidType.{3}, {4});", keyword, uid, name, uidType, retired ? "true" : "false").AppendLine();
            }

            string code = @"using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Dicom {
	public partial class DicomUID {
		private static void LoadInternalUIDs() {
";

            code += list.ToString();
            code += "		}";
            code += uids.ToString();

            code += @"	}
}";
            return(code);
        }