LEADTOOLS Medical (Leadtools.Medical.Workstation.Client assembly) Send comments on this topic. | Back to Introduction - All Topics | Help Version 17.0.3.30
PacsQueryClient Class
See Also  Members  
Leadtools.Medical.Workstation.Client.Pacs Namespace : PacsQueryClient Class



Performs query operations against DICOM servers.

Object Model

PacsQueryClient Class

Syntax

Visual Basic (Declaration) 
Public Class PacsQueryClient 
   Inherits Leadtools.Medical.Workstation.Client.QueryClient
Visual Basic (Usage)Copy Code
Dim instance As PacsQueryClient
C# 
public class PacsQueryClient : Leadtools.Medical.Workstation.Client.QueryClient 
C++/CLI 
public ref class PacsQueryClient : public Leadtools.Medical.Workstation.Client.QueryClient 

Example

Visual BasicCopy Code
Public Sub QueryPACS()
         Leadtools.Examples.Support.Unlock()

         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
C#Copy Code
public void QueryPACS()
      {
         Leadtools.Examples.Support.Unlock();

         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";
}

Remarks

The implementation of this class uses the Leadtools.Dicom.Scu.QueryRetrieveScu class to run the queries.

Inheritance Hierarchy

System.Object
   Leadtools.Medical.Workstation.Client.QueryClient
      Leadtools.Medical.Workstation.Client.Pacs.PacsQueryClient

Requirements

Target Platforms: Microsoft .NET Framework 2.0, Windows 2000, Windows XP, Windows Server 2003 family, Windows Server 2008 family, Windows Vista, Windows 7

See Also

Leadtools.Medical.Workstation.Client requires a Medical toolkit license and unlock key. For more information, refer to: Imaging Pro/Document/Medical Features