LEADTOOLS Medical (Leadtools.Medical.Workstation.Client assembly)
LEAD Technologies, Inc

QueryClient Class

Example 





Members 
An abstract layer for implementing DICOM Query operations.
Object Model
QueryClient Class
Syntax
public abstract class QueryClient 
'Declaration
 
Public MustInherit Class QueryClient 
'Usage
 
Dim instance As QueryClient
public sealed class QueryClient 
function Leadtools.Medical.Workstation.Client.QueryClient()
public ref class QueryClient abstract 
Remarks

Inheritors can use this class to provide an abstraction layer for their applications without the need to worry how the query is performed.

Derived classes might perform DICOM Communication queries or direct database queries.

Example
 
Public Sub DatabaseQueryLocal()
#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()


            clientInfo.Address = Dns.GetHostName() 'local machine
            clientInfo.AETitle = "TEST_CLIENT"
            clientInfo.Port = 1000

            Dim dataAccess As Medical.Storage.DataAccessLayer.IStorageDataAccessAgent

            Dim fromConfiguration As Boolean

            fromConfiguration = False
            If (fromConfiguration) Then

               'Make sure that the Sotrage Data Access is configured before creating an instance.
               dataAccess = DataAccessFactory.GetInstance(New StorageDataAccessConfigurationView()).CreateDataAccessAgent(Of IStorageDataAccessAgent)()
            Else

               Dim connectionString As String = "Data Source=local;Initial Catalog=DicomStorage;Integrated Security=True;User ID=;Password=;Pooling=True"
               'or you can directly create the data access object which works with your database
               dataAccess = New StorageSqlDbDataAccessAgent(connectionString)
            End If


            'Make sure that the FindAddIn is configured properly before using this class.
            Dim client As DbQueryClient = New DbQueryClient(clientInfo, dataAccess)

            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
public void DatabaseQueryLocal()
         {
#if LEADTOOLS_V175_OR_LATER
            Leadtools.Examples.Support.SetLicense();
#else
            Leadtools.Examples.Support.Unlock();
#endif // #if LEADTOOLS_V175_OR_LATER

            AeInfo clientInfo = new AeInfo ( );


            clientInfo.Address = Dns.GetHostName(); //local machine
            clientInfo.AETitle = "TEST_CLIENT" ;
            clientInfo.Port    = 1000 ;

            IStorageDataAccessAgent dataAccess = null;
            bool fromConfiguration = false;

            if (fromConfiguration)
            {
               //Make sure that the Sotrage Data Access is configured before creating an instance.
               dataAccess = DataAccessFactory.GetInstance(new StorageDataAccessConfigurationView()).CreateDataAccessAgent<IStorageDataAccessAgent>();
            }
            else
            {
               string connectionString = @"Data Source=local;Initial Catalog=DicomStorage;Integrated Security=True;User ID=;Password=;Pooling=True";
               //or you can directly create the data access object which works with your database
               dataAccess = new StorageSqlDbDataAccessAgent(connectionString);
            }

            DbQueryClient client = new DbQueryClient(clientInfo, dataAccess);

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

Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

See Also

Reference

QueryClient Members
Leadtools.Medical.Workstation.Client Namespace

 

 


Products | Support | Contact Us | Copyright Notices

© 2006-2012 All Rights Reserved. LEAD Technologies, Inc.

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