Leadtools.Medical.Workstation.Client.Pacs Namespace : PacsQueryClient Class |
public class PacsQueryClient : Leadtools.Medical.Workstation.Client.QueryClient
'Declaration Public Class PacsQueryClient Inherits Leadtools.Medical.Workstation.Client.QueryClient
'Usage Dim instance As PacsQueryClient
public ref class PacsQueryClient : public Leadtools.Medical.Workstation.Client.QueryClient
The implementation of this class uses the Leadtools.Dicom.Scu.QueryRetrieveScu class to run the queries.
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() #If LEADTOOLS_V175_OR_LATER Then Leadtools.Examples.Support.SetLicense() #Else Leadtools.Examples.Support.Unlock() #End If ''' #if LEADTOOLS_V175_OR_LATER 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:\Users\Public\Documents\LEADTOOLS Images" End Class
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() { #if LEADTOOLS_V175_OR_LATER Leadtools.Examples.Support.SetLicense(); #else Leadtools.Examples.Support.Unlock(); #endif // #if LEADTOOLS_V175_OR_LATER 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:\Users\Public\Documents\LEADTOOLS Images"; }