public DicomContextGroup Insert(
string contextIdentifier,
string name,
bool isExtensible,
DicomDateTimeValue contextGroupVersion,
DicomContextGroupTableInsertFlags flags
)
Public Overloads Function Insert( _
ByVal contextIdentifier As String, _
ByVal name As String, _
ByVal isExtensible As Boolean, _
ByVal contextGroupVersion As DicomDateTimeValue, _
ByVal flags As DicomContextGroupTableInsertFlags _
) As DicomContextGroup
public:
DicomContextGroup^ Insert(
String^ contextIdentifier,
String^ name,
bool isExtensible,
DicomDateTimeValue contextGroupVersion,
DicomContextGroupTableInsertFlags flags
)
contextIdentifier
The Context Identifier (0008,010F) of the new Context Group. For a list of values, refer to Context Identifier Values.
name
The name of the new Context Group.
isExtensible
Indicates whether the new Context Group is Extensible or not. true, The new Context Group is extensible. false, The new Context Group is Non-extensible.
contextGroupVersion
The Context Group Version (0008,0106) of the new Context Group.
flags
Flag that controls the behavior of this method.
DicomContextGroup object that specifies the newly inserted Context Group.
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);
}
Imports Leadtools
Imports Leadtools.Dicom
Private Sub InsertContextGroup()
Dim version As DicomDateTimeValue = 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
Dim group As DicomContextGroup = DicomContextGroupTable.Instance.Insert("CID XXXX", "New Context Group", True, version,
DicomContextGroupTableInsertFlags.None)
If group Is Nothing Then
Return
End If
' Fill the Context Group with some (testing) Coded Concepts
DicomContextGroupTable.Instance.InsertCodedConcept(group, "CSD1", Nothing, "CV1", "CM1", DicomDateTimeValue.Empty, Nothing,
DicomContextGroupTableInsertFlags.None)
DicomContextGroupTable.Instance.InsertCodedConcept(group, "CSD2", Nothing, "CV2", "CM2", DicomDateTimeValue.Empty, Nothing,
DicomContextGroupTableInsertFlags.None)
DicomContextGroupTable.Instance.InsertCodedConcept(group, "CSD3", Nothing, "CV3", "CM3", DicomDateTimeValue.Empty, Nothing,
DicomContextGroupTableInsertFlags.None)
EnumCodedConcepts(group)
' Delete the Context Group
DicomContextGroupTable.Instance.Delete(group)
End Sub
Private Sub DisplayCodedConcept(ByVal concept As DicomCodedConcept)
Dim group As DicomContextGroup = DicomContextGroupTable.Instance.GetContextGroup(concept)
Dim title As StringBuilder = New StringBuilder()
Dim msg As StringBuilder = New StringBuilder()
title.AppendFormat("Coded Concept ({0} '{1}')", group.ContextIdentifier, group.ContextIdentifierValue)
If Not concept.CodingSchemeVersion Is Nothing Then
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, concept.CodeValue, concept.CodeMeaning)
Else
msg.AppendFormat("Coding Scheme Designator: {0}{1}Coding Scheme Version: {2}{1}Code Value:{3}{1}Code Meaning: {4}", concept.CodingSchemeDesignator,
Environment.NewLine, "N/A", concept.CodeValue, concept.CodeMeaning)
End If
MessageBox.Show(msg.ToString(), title.ToString(), MessageBoxButtons.OK)
End Sub
Private Sub EnumCodedConcepts(ByVal group As DicomContextGroup)
' Enumerate the Coded Concepts in the Context Group (3 possible ways)
' One possible way to enumerate the Coded Concepts
Dim concept As DicomCodedConcept = DicomContextGroupTable.Instance.GetFirstCodedConcept(group)
Do While Not concept Is Nothing
DisplayCodedConcept(concept)
concept = DicomContextGroupTable.Instance.GetNextCodedConcept(concept)
Loop
' 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);
'}
'
End Sub
Private Sub EnumContextGroups()
DicomContextGroupTable.Instance.Reset()
' Load all the Context Groups
DicomContextGroupTable.Instance.Load(String.Empty)
' Enumerate them (3 possible ways)
' One possible way to enumerate the Context Groups
Dim group As DicomContextGroup = DicomContextGroupTable.Instance.GetFirst()
Do While Not group Is Nothing
Dim msg As StringBuilder = New StringBuilder()
msg.AppendFormat("{0}{2}{1}{2}{2}Enumerate Coded Concepts?", group.ContextIdentifier, group.Name, Environment.NewLine)
Dim result As DialogResult = MessageBox.Show(msg.ToString(), "Context Group", MessageBoxButtons.YesNoCancel)
If result = DialogResult.Yes Then
EnumCodedConcepts(group)
ElseIf result = DialogResult.Cancel Then
Exit Do
End If
group = DicomContextGroupTable.Instance.GetNext(group)
Loop
' 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);
'}
'
End Sub
Private Sub ModifyContextGroup()
DicomContextGroupTable.Instance.Reset()
DicomContextGroupTable.Instance.Load(String.Empty)
Dim group As DicomContextGroup = Nothing
Dim concept As DicomCodedConcept = Nothing
' Look for a Context Group
group = DicomContextGroupTable.Instance.Find(DicomContextIdentifierType.CID6019)
If group Is Nothing Then
Return
End If
' Look for a Coded Concept in the Context Group
concept = DicomContextGroupTable.Instance.FindCodedConcept(group, "SRT", "F-01781")
If concept Is Nothing Then
Return
End If
' Set the Code Meaning of the Coded Concept (French translation)
If DicomContextGroupTable.Instance.SetCodeMeaning(concept, "Situé à 1 heure") = False Then
Return
End If
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", Nothing, "CV", "CM", DicomDateTimeValue.Empty, Nothing,
DicomContextGroupTableInsertFlags.None)
If concept Is Nothing Then
Return
End If
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)
End Sub
DicomContextGroupTable Members
[Insert(String,String,Boolean,DicomDateTimeValue,DicomContextGroupTableInsertFlags)Method
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document