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
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);
MessageBox.Show(msg.ToString(), title.ToString(), MessageBoxButtons.OK);
}
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);
DialogResult result = MessageBox.Show(msg.ToString(), "Context Group", MessageBoxButtons.YesNoCancel);
if (result == DialogResult.Yes)
{
EnumCodedConcepts(group);
}
else if (result == DialogResult.Cancel)
{
break;
}
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);
}