C#
Objective-C
C++/CLI
public string CodingSchemeDesignator { get; }
@property (nonatomic, copy, readonly, nullable) NSString *codingSchemeDesignator;
public:
property String^ CodingSchemeDesignator {
String^ get();
}
The Coding Scheme Designator (0008,0102) of the Coded Concept.
using Leadtools;
using Leadtools.Dicom;
public void InsertContextGroup()
{
DicomDateTimeValue version = new DicomDateTimeValue();
version.Year = 2004;
version.Month = 3;
version.Day = 22;
version.Hours = 0;
version.Minutes = 0;
version.Seconds = 0;
version.Fractions = 0;
version.Offset = 0;
// Insert a (testing) Context Group
DicomContextGroup group = DicomContextGroupTable.Instance.Insert("CID XXXX", "New Context Group", true, version, DicomContextGroupTableInsertFlags.None);
if (group == null)
{
return;
}
// Fill the Context Group with some (testing) Coded Concepts
DicomContextGroupTable.Instance.InsertCodedConcept(group, "CSD1", null, "CV1", "CM1", DicomDateTimeValue.Empty, null, DicomContextGroupTableInsertFlags.None);
DicomContextGroupTable.Instance.InsertCodedConcept(group, "CSD2", null, "CV2", "CM2", DicomDateTimeValue.Empty, null, DicomContextGroupTableInsertFlags.None);
DicomContextGroupTable.Instance.InsertCodedConcept(group, "CSD3", null, "CV3", "CM3", DicomDateTimeValue.Empty, null, DicomContextGroupTableInsertFlags.None);
EnumCodedConcepts(group);
// Delete the Context Group
DicomContextGroupTable.Instance.Delete(group);
}
void DisplayCodedConcept(DicomCodedConcept concept)
{
DicomContextGroup group = DicomContextGroupTable.Instance.GetContextGroup(concept);
StringBuilder title = new StringBuilder();
StringBuilder msg = new StringBuilder();
title.AppendFormat("Coded Concept ({0} '{1}')", group.ContextIdentifier, group.ContextIdentifierValue);
msg.AppendFormat("Coding Scheme Designator: {0}{1}Coding Scheme Version: {2}{1}Code Value:{3}{1}Code Meaning: {4}",
concept.CodingSchemeDesignator,
Environment.NewLine,
concept.CodingSchemeVersion != null ? concept.CodingSchemeVersion : "N/A",
concept.CodeValue,
concept.CodeMeaning);
Console.WriteLine($"{title.ToString()}: {msg.ToString()}");
}
void EnumCodedConcepts(DicomContextGroup group)
{
// Enumerate the Coded Concepts in the Context Group (3 possible ways)
// One possible way to enumerate the Coded Concepts
DicomCodedConcept concept = DicomContextGroupTable.Instance.GetFirstCodedConcept(group);
while (concept != null)
{
DisplayCodedConcept(concept);
concept = DicomContextGroupTable.Instance.GetNextCodedConcept(concept);
}
// This code is commented out on purpose, it shows two other ways of
// enumerating the Coded Concepts
/*
// Another way to enumerate the Coded Concepts
for (int i = 0; i < DicomContextGroupTable.Instance.GetCodedConceptCount(group); i++)
{
concept = DicomContextGroupTable.Instance.FindCodedConceptByIndex(group, i);
DisplayCodedConcept(concept);
}
// A third way to enumerate the Coded Concepts
concept = DicomContextGroupTable.Instance.GetLastCodedConcept(group);
while (concept != null)
{
DisplayCodedConcept(concept);
concept = DicomContextGroupTable.Instance.GetPreviousCodedConcept(concept);
}
*/
}
void EnumContextGroups()
{
DicomContextGroupTable.Instance.Reset();
// Load all the Context Groups
DicomContextGroupTable.Instance.Load(null);
// Enumerate them (3 possible ways)
// One possible way to enumerate the Context Groups
DicomContextGroup group = DicomContextGroupTable.Instance.GetFirst();
while (group != null)
{
StringBuilder msg = new StringBuilder();
msg.AppendFormat("{0}{2}{1}{2}{2}Enumerate Coded Concepts?",
group.ContextIdentifier,
group.Name,
Environment.NewLine);
Console.WriteLine($"Context Group: {msg}");
EnumCodedConcepts(group);
group = DicomContextGroupTable.Instance.GetNext(group);
}
// This code is commented out on purpose, it shows two other ways of
// enumerating Context Groups
/*
// Another way to enumerate the Context Groups
for (int i = 0; i < DicomContextGroupTable.Instance.Count; i++)
{
group = DicomContextGroupTable.Instance.FindIndex(i);
msg.AppendFormat("{0}{2}{1}{2}{2}Enumerate Coded Concepts?",
group.ContextIdentifier,
group.Name,
Environment.NewLine);
DialogResult result = MessageBox.Show(msg.ToString(), "Context Group", MessageBoxButtons.YesNoCancel);
if(result == DialogResult.Yes)
{
EnumCodedConcepts(group);
}
else if (result == DialogResult.Cancel)
{
break;
}
}
// A third way to enumerate the Context Groups
group = DicomContextGroupTable.Instance.GetLast();
while (group != null)
{
msg.AppendFormat("{0}{2}{1}{2}{2}Enumerate Coded Concepts?",
group.ContextIdentifier,
group.Name,
Environment.NewLine);
DialogResult result = MessageBox.Show(msg.ToString(), "Context Group", MessageBoxButtons.YesNoCancel);
if (result == DialogResult.Yes)
{
EnumCodedConcepts(group);
}
else if (result == DialogResult.Cancel)
{
break;
}
group = group = DicomContextGroupTable.Instance.GetPrev(group);
}
*/
}
void ModifyContextGroup()
{
DicomContextGroupTable.Instance.Reset();
DicomContextGroupTable.Instance.Load(null);
DicomContextGroup group = null;
DicomCodedConcept concept = null;
// Look for a Context Group
group = DicomContextGroupTable.Instance.Find(DicomContextIdentifierType.CID6019);
if (group == null)
{
return;
}
// Look for a Coded Concept in the Context Group
concept = DicomContextGroupTable.Instance.FindCodedConcept(group, "SRT", "F-01781");
if (concept == null)
{
return;
}
// Set the Code Meaning of the Coded Concept (French translation)
if (DicomContextGroupTable.Instance.SetCodeMeaning(concept, "Situé à 1 heure") == false)
{
return;
}
DisplayCodedConcept(concept);
// Delete the Coded Concept
DicomContextGroupTable.Instance.DeleteCodedConcept(concept);
// Add a (testing) Coded Concept to the Context Group
concept = DicomContextGroupTable.Instance.InsertCodedConcept(group,
"CSD",
null,
"CV",
"CM",
DicomDateTimeValue.Empty,
null,
DicomContextGroupTableInsertFlags.None);
if (concept == null)
{
return;
}
DisplayCodedConcept(concept);
// Restore the Context Group (discard all the changes made to the Group)
DicomContextGroupTable.Instance.Default(group);
EnumCodedConcepts(group);
// Delete the Context Group
DicomContextGroupTable.Instance.Delete(group);
}