public void AddPrivateTagAndReadOut() { var dict = new DicomDictionary { new DicomDictionaryEntry(new DicomTag(0x0011, 0x0010), "Private Creator", "PrivateCreator", DicomVM.VM_1, false, DicomVR.LO) }; DicomPrivateCreator privateCreator = dict.GetPrivateCreator("TESTCREATOR"); DicomDictionary privDict = dict[privateCreator]; var dictEntry = new DicomDictionaryEntry(new DicomTag(0x0011, 0x1010), "TestPrivTagName", "TestPrivTagKeyword", DicomVM.VM_1, false, DicomVR.DT); privDict.Add(dictEntry); Assert.True(dictEntry.Equals(dict[dictEntry.Tag.PrivateCreator][dictEntry.Tag])); }
public void Enumerate_DictionaryEntriesWithPrivateTags_ContainsAllExpectedEntries() { var dict = new DicomDictionary(); var tag1 = new DicomTag(0x0010, 0x0020); var dictEntry1 = new DicomDictionaryEntry( tag1, "TestPublicTagName", "TestPublicTagKeyword", DicomVM.VM_1, false, DicomVR.DT); var privCreatorDictEntry = new DicomDictionaryEntry( new DicomTag(0x0011, 0x0010), "Private Creator", "PrivateCreator", DicomVM.VM_1, false, DicomVR.LO); dict.Add(privCreatorDictEntry); DicomPrivateCreator privateCreator = dict.GetPrivateCreator("TESTCREATOR"); DicomDictionary privDict = dict[privateCreator]; var dictEntry2 = new DicomDictionaryEntry( DicomMaskedTag.Parse("0011", "xx10"), "TestPrivTagName", "TestPrivTagKeyword", DicomVM.VM_1, false, DicomVR.DT); privDict.Add(dictEntry2); dict.Add(dictEntry1); Assert.Contains(dictEntry1, dict); Assert.Contains(privCreatorDictEntry, dict); Assert.Contains(dictEntry2, dict[dictEntry2.Tag.PrivateCreator]); }
public void EnumerateBothPublicAndPrivateEntries() { var dict = new DicomDictionary(); var tag1 = new DicomTag(0x0010, 0x0020); var dictEntry1 = new DicomDictionaryEntry(tag1, "TestPublicTagName", "TestPublicTagKeyword", DicomVM.VM_1, false, DicomVR.DT); var privCreatorDictEntry = new DicomDictionaryEntry(new DicomTag(0x0011, 0x0010), "Private Creator", "PrivateCreator", DicomVM.VM_1, false, DicomVR.LO); dict.Add(privCreatorDictEntry); DicomPrivateCreator privateCreator = dict.GetPrivateCreator("TESTCREATOR"); DicomDictionary privDict = dict[privateCreator]; var dictEntry2 = new DicomDictionaryEntry(DicomMaskedTag.Parse("0011", "xx10"), "TestPrivTagName", "TestPrivTagKeyword", DicomVM.VM_1, false, DicomVR.DT); privDict.Add(dictEntry2); dict.Add(dictEntry1); Assert.True(dict.Contains(dictEntry1)); Assert.True(dict.Contains(privCreatorDictEntry)); Assert.True(dict[dictEntry2.Tag.PrivateCreator].Contains(dictEntry2)); Assert.True(dict.PrivateCreators.Any(pc => dict[pc].Contains(dictEntry2))); }
private void ReadDictionaryXML() { DicomDictionary dict = _dict; XDocument xdoc = XDocument.Load(_stream); IEnumerable <XElement> xdicts; if (xdoc.Root.Name == "dictionaries") { xdicts = xdoc.Root.Elements("dictionary"); } else { XElement xdict = xdoc.Element("dictionary"); if (xdict == null) { throw new DicomDataException("Expected <dictionary> root node in DICOM dictionary."); } List <XElement> dicts = new List <XElement>(); dicts.Add(xdict); xdicts = dicts; } foreach (var xdict in xdicts) { XAttribute creator = xdict.Attribute("creator"); if (creator != null && !String.IsNullOrEmpty(creator.Value)) { dict = _dict[_dict.GetPrivateCreator(creator.Value)]; } else { dict = _dict; } foreach (XElement xentry in xdict.Elements("tag")) { string name = xentry.Value ?? "Unknown"; string keyword = String.Empty; if (xentry.Attribute("keyword") != null) { keyword = xentry.Attribute("keyword").Value; } List <DicomVR> vrs = new List <DicomVR>(); XAttribute xvr = xentry.Attribute("vr"); if (xvr != null && !String.IsNullOrEmpty(xvr.Value)) { string[] vra = xvr.Value.Split('_', '/', '\\', ',', '|'); foreach (string vr in vra) { vrs.Add(DicomVR.Parse(vr)); } } else { vrs.Add(DicomVR.NONE); } DicomVM vm = DicomVM.Parse(xentry.Attribute("vm").Value); bool retired = false; XAttribute xretired = xentry.Attribute("retired"); if (xretired != null && !String.IsNullOrEmpty(xretired.Value) && Boolean.Parse(xretired.Value)) { retired = true; } string group = xentry.Attribute("group").Value; string element = xentry.Attribute("element").Value; if (group.ToLower().Contains("x") || element.ToLower().Contains("x")) { DicomMaskedTag tag = DicomMaskedTag.Parse(group, element); tag.Tag.PrivateCreator = dict.PrivateCreator; dict.Add(new DicomDictionaryEntry(tag, name, keyword, vm, retired, vrs.ToArray())); } else { DicomTag tag = DicomTag.Parse(group + "," + element); tag.PrivateCreator = dict.PrivateCreator; dict.Add(new DicomDictionaryEntry(tag, name, keyword, vm, retired, vrs.ToArray())); } } } }