public class DicomKeyAttribute : Attribute Public Class DicomKeyAttributeInherits System.AttributeImplements System.Runtime.InteropServices._Attribute
public ref class DicomKeyAttribute : public System.Attribute, System.Runtime.InteropServices._Attribute This example will show how to perform several different types of LINQ based queries on a DICOM basic directory.
using Leadtools.Dicom;using Leadtools.Dicom.Common;using Leadtools.Dicom.Common.Extensions;using Leadtools;using Leadtools.Dicom.Common.Linq.BasicDirectory;using Leadtools.Dicom.Common.DataTypes;[DicomKey(DicomDirKeyType.Patient)]public class PatientEntity{[Element(DicomTag.PatientID)]public string Id{get;set;}[Element(DicomTag.PatientName)]public string Name{get;set;}}[DicomKey(DicomDirKeyType.Study)]public class StudyEntity{[Element(DicomTag.PatientID)][DicomKey(DicomDirKeyType.Patient)]public string PatientId{get;set;}[Element(DicomTag.StudyDate)]public DateTime? Date{get;set;}[Element(DicomTag.StudyTime)]public DateTime? Time{get;set;}[Element(DicomTag.StudyDescription)]public string Description{get;set;}[Element(DicomTag.StudyInstanceUID)]public string InstanceUID{get;set;}[Element(DicomTag.StudyID)]public string Id{get;set;}[Element(DicomTag.AccessionNumber)]public string AccessionNumber{get;set;}}public void TestDicomLinq(){DicomEngine.Startup();using (DicomDataSet ds = new DicomDataSet()){ds.Load(_DicomDirFile, DicomDataSetLoadFlags.None);FindPatients(ds);FindStudies(ds);FindPatientStudy(ds);}DicomEngine.Shutdown();}private void FindPatients(DicomDataSet ds){var patients = from patient in ds.DirectoryRecord<PatientEntity>()select new { Name = patient.Name, Id = patient.Id };foreach (var patient in patients){Console.WriteLine("Id: " + patient.Id);Console.WriteLine("Name: " + patient.Name);}}private void FindStudies(DicomDataSet ds){var studies = from study in ds.DirectoryRecord<StudyEntity>()select study;foreach (var study in studies){Console.WriteLine("Patient Id: " + study.PatientId);Console.WriteLine("Accession #: " + study.AccessionNumber);Console.WriteLine("Study Id: " + study.Id);}}private void FindPatientStudy(DicomDataSet ds){var query = from patient in ds.DirectoryRecord<PatientEntity>()select new{patient,Studies = from study in ds.DirectoryRecord<StudyEntity>()where study.PatientId == patient.Idselect study};foreach (var item in query){Console.WriteLine("Patient: " + item.patient.Id);foreach (StudyEntity study in item.Studies){Console.WriteLine(" Instance UID: " + study.InstanceUID);}}}
Imports Leadtools.DicomImports Leadtools.Dicom.CommonImports Leadtools.Dicom.Common.ExtensionsImports Leadtools.Dicom.Common.LinqImports Leadtools.Dicom.Common.Linq.BasicDirectoryImports LeadtoolsImports Leadtools.Dicom.Common.DataTypes<DicomKey(DicomDirKeyType.Patient)>Public Class PatientEntity<Element(DicomTag.PatientID)>Public Property Id() As StringGetReturn m_IdEnd GetSet(ByVal value As String)m_Id = valueEnd SetEnd PropertyPrivate m_Id As String<Element(DicomTag.PatientName)>Public Property Name() As StringGetReturn m_NameEnd GetSet(ByVal value As String)m_Name = valueEnd SetEnd PropertyPrivate m_Name As StringEnd Class<DicomKey(DicomDirKeyType.Study)>Public Class StudyEntity<Element(DicomTag.PatientID)><DicomKey(DicomDirKeyType.Patient)>Public Property PatientId() As StringGetReturn m_PatientIdEnd GetSet(ByVal value As String)m_PatientId = valueEnd SetEnd PropertyPrivate m_PatientId As String<Element(DicomTag.StudyDate)>Public Property [Date]() As System.Nullable(Of DateTime)GetReturn m_DateEnd GetSet(ByVal value As System.Nullable(Of DateTime))m_Date = valueEnd SetEnd PropertyPrivate m_Date As System.Nullable(Of DateTime)<Element(DicomTag.StudyTime)>Public Property Time() As System.Nullable(Of DateTime)GetReturn m_TimeEnd GetSet(ByVal value As System.Nullable(Of DateTime))m_Time = valueEnd SetEnd PropertyPrivate m_Time As System.Nullable(Of DateTime)<Element(DicomTag.StudyDescription)>Public Property Description() As StringGetReturn m_DescriptionEnd GetSet(ByVal value As String)m_Description = valueEnd SetEnd PropertyPrivate m_Description As String<Element(DicomTag.StudyInstanceUID)>Public Property InstanceUID() As StringGetReturn m_InstanceUIDEnd GetSet(ByVal value As String)m_InstanceUID = valueEnd SetEnd PropertyPrivate m_InstanceUID As String<Element(DicomTag.StudyID)>Public Property Id() As StringGetReturn m_IdEnd GetSet(ByVal value As String)m_Id = valueEnd SetEnd PropertyPrivate m_Id As String<Element(DicomTag.AccessionNumber)>Public Property AccessionNumber() As StringGetReturn m_AccessionNumberEnd GetSet(ByVal value As String)m_AccessionNumber = valueEnd SetEnd PropertyPrivate m_AccessionNumber As StringEnd ClassPublic Sub TestDicomLinq()DicomEngine.Startup()Using ds As New DicomDataSet()ds.Load(_DicomDirFile, DicomDataSetLoadFlags.None)FindPatients(ds)FindStudies(ds)FindPatientStudy(ds)End UsingDicomEngine.Shutdown()End SubPrivate Sub FindPatients(ByVal ds As DicomDataSet)Dim patients = From patient In ds.DirectoryRecord(Of PatientEntity)()Select Name = patient.Name, Id = patient.IdFor Each patient In patientsConsole.WriteLine("Id: " & Convert.ToString(patient.Id))Console.WriteLine("Name: " & Convert.ToString(patient.Name))NextEnd SubPrivate Sub FindStudies(ByVal ds As DicomDataSet)Dim studies = From study In ds.DirectoryRecord(Of StudyEntity)()Select studyFor Each study In studiesConsole.WriteLine("Patient Id: " & Convert.ToString(study.PatientId))Console.WriteLine("Accession #: " & Convert.ToString(study.AccessionNumber))Console.WriteLine("Study Id: " & Convert.ToString(study.Id))NextEnd SubPrivate Sub FindPatientStudy(ByVal ds As DicomDataSet)Dim query = From patient In ds.DirectoryRecord(Of PatientEntity)()Selectpatient,Studies = From study In ds.DirectoryRecord(Of StudyEntity)() Where study.PatientId = patient.IdSelect studyFor Each item In queryConsole.WriteLine("Patient: " & Convert.ToString(item.patient.Id))For Each study As StudyEntity In item.StudiesConsole.WriteLine(" Instance UID: " + study.InstanceUID)NextNextEnd Sub
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
