public PacsQueryClient(
AeInfo clientInfo,
DicomScp scp
)
Public Function New( _
ByVal clientInfo As AeInfo, _
ByVal scp As DicomScp _
)
public:
PacsQueryClient(
AeInfo^ clientInfo,
DicomScp^ scp
)
clientInfo
The Leadtools.Dicom.AddIn.Common.AeInfo for the calling client.
scp
The Leadtools.Dicom.Scu.DicomScp information to perform the DICOM Query against.
using LeadtoolsExamples.Common;
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Dicom;
using Leadtools.Dicom.Scu.Common;
using Leadtools.ImageProcessing;
using Leadtools.Dicom.AddIn.Common;
using Leadtools.Dicom.Scu;
using Leadtools.Medical.Workstation.Client;
using Leadtools.Medical.Workstation.Client.Local;
using Leadtools.Medical.Workstation.Client.Pacs;
public void QueryPACS()
{
Leadtools.Examples.Support.SetLicense();
AeInfo clientInfo = new AeInfo();
DicomScp scpInfo = new DicomScp();
clientInfo.Address = Dns.GetHostName(); //local machine
clientInfo.AETitle = "TEST_CLIENT";
clientInfo.Port = 1000;
scpInfo.AETitle = "LEAD_SERVER";
scpInfo.Port = 104;
scpInfo.Timeout = 30;
bool addressFound;
IPAddress[] addresses;
addressFound = false;
addresses = Dns.GetHostAddresses(Dns.GetHostName());
foreach (IPAddress address in addresses)
{
//we need to get an IP V4, won't work with IP V6
if (address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
addressFound = true;
scpInfo.PeerAddress = address;
break;
}
}
if (!addressFound)
{
throw new ArgumentException("Couldn't resolve a valid host Address. Address must conform to IP version 4");
}
PacsQueryClient client = new PacsQueryClient(clientInfo, scpInfo);
client.EnableLog = true;
client.LogFileName = Path.Combine(LEAD_VARS.ImagesDir, "DicomLog.txt");
PerformClientQuery(client);
}
public void PerformClientQuery(QueryClient client)
{
FindQuery studiesQuery = new FindQuery();
DicomDataSet[] studies = client.FindStudies(studiesQuery);
if (studies.Length > 0)
{
DicomDataSet study = studies[0];
FindQuery seriesQuery = new FindQuery();
seriesQuery.StudyInstanceUID = study.GetValue<string>(DicomTag.StudyInstanceUID, string.Empty);
DicomDataSet[] series = client.FindSeries(seriesQuery);
foreach (DicomDataSet seriesDS in series)
{
FindQuery imagesQuery = new FindQuery();
imagesQuery.SeriesInstanceUID = seriesDS.GetValue<string>(DicomTag.SeriesInstanceUID, string.Empty);
DicomDataSet[] images = client.FindImages(imagesQuery);
foreach (DicomDataSet instance in images)
{
Console.WriteLine("SOPInstanceUID: {0}", instance.GetValue<string>(DicomTag.SOPInstanceUID, string.Empty));
Console.WriteLine("SeriesInstanceUID: {0}", instance.GetValue<string>(DicomTag.SeriesInstanceUID, string.Empty));
Console.WriteLine("StudyInstanceUID: {0}", instance.GetValue<string>(DicomTag.StudyInstanceUID, string.Empty));
}
}
}
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS21\Resources\Images";
}
Imports LeadtoolsExamples.Common
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.Dicom
Imports Leadtools.Dicom.Scu.Common
Imports Leadtools.ImageProcessing
Imports Leadtools.Dicom.AddIn.Common
Imports Leadtools.Dicom.Scu
Imports Leadtools.Medical.Workstation.Client
Imports Leadtools.Medical.Workstation.Client.Local
Imports Leadtools.Medical.Workstation.Client.Pacs
Public Sub QueryPACS()
Leadtools.Examples.Support.SetLicense()
Dim clientInfo As AeInfo = New AeInfo()
Dim scpInfo As DicomScp = New DicomScp()
clientInfo.Address = Dns.GetHostName() 'local machine
clientInfo.AETitle = "TEST_CLIENT"
clientInfo.Port = 1000
scpInfo.AETitle = "LEAD_SERVER"
scpInfo.Port = 104
scpInfo.Timeout = 30
Dim addressFound As Boolean
Dim addresses As IPAddress()
addressFound = False
addresses = Dns.GetHostAddresses(Dns.GetHostName())
For Each address As IPAddress In addresses
'we need to get an IP V4, won't work with IP V6
If address.AddressFamily = System.Net.Sockets.AddressFamily.InterNetwork Then
addressFound = True
scpInfo.PeerAddress = address
Exit For
End If
Next address
If (Not addressFound) Then
Throw New ArgumentException("Couldn't resolve a valid host Address. Address must conform to IP version 4")
End If
Dim client As PacsQueryClient = New PacsQueryClient(clientInfo, scpInfo)
client.EnableLog = True
client.LogFileName = Path.Combine(LEAD_VARS.ImagesDir, "DicomLog.txt")
PerformClientQuery(client)
End Sub
Public Sub PerformClientQuery(ByVal client As QueryClient)
Dim studiesQuery As FindQuery = New FindQuery()
Dim studies As DicomDataSet() = client.FindStudies(studiesQuery)
If studies.Length > 0 Then
Dim study As DicomDataSet = studies(0)
Dim seriesQuery As FindQuery = New FindQuery()
seriesQuery.StudyInstanceUID = study.GetValue(Of String)(DicomTag.StudyInstanceUID, String.Empty)
Dim series As DicomDataSet() = client.FindSeries(seriesQuery)
For Each seriesDS As DicomDataSet In series
Dim imagesQuery As FindQuery = New FindQuery()
imagesQuery.SeriesInstanceUID = seriesDS.GetValue(Of String)(DicomTag.SeriesInstanceUID, String.Empty)
Dim images As DicomDataSet() = client.FindImages(imagesQuery)
For Each instance As DicomDataSet In images
Console.WriteLine("SOPInstanceUID: {0}", instance.GetValue(Of String)(DicomTag.SOPInstanceUID, String.Empty))
Console.WriteLine("SeriesInstanceUID: {0}", instance.GetValue(Of String)(DicomTag.SeriesInstanceUID, String.Empty))
Console.WriteLine("StudyInstanceUID: {0}", instance.GetValue(Of String)(DicomTag.StudyInstanceUID, String.Empty))
Next instance
Next seriesDS
End If
End Sub
Public NotInheritable Class LEAD_VARS
Public Const ImagesDir As String = "C:\LEADTOOLS21\Resources\Images"
End Class
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