FindStudies(FindQuery) Method

Summary
Overloaded. Runs a study-based query with the specified parameters.
Syntax
C#
VB
C++
public virtual DicomDataSet[] FindStudies( 
   FindQuery query 
) 
  
Public Overloads Overridable Function FindStudies( _ 
   ByVal query As FindQuery _ 
) As DicomDataSet() 
public: 
virtual array<DicomDataSet^>^ FindStudies(  
   FindQuery^ query 
)  

Parameters

query
The Leadtools.Dicom.Scu.Common.FindQuery which contains the parameters for the query.

Return Value

An Array of Leadtools.Dicom.DicomDataSet objects which contains the query results.

Remarks

Calling this method while the Processing property is true will result in an InvalidOperationException being thrown.

If the operation is cancelled this method will throw a ClientCommunicationCanceled exception.

Example
C#
VB
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; 
using Leadtools.Medical.Storage.DataAccessLayer; 
using Leadtools.Medical.DataAccessLayer; 
using Leadtools.Medical.Storage.DataAccessLayer.Configuration; 
 
public void DatabaseQueryLocal() 
{ 
   Leadtools.Examples.Support.SetLicense(); 
 
   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(); 
 
   DicomEngine.Startup(); 
   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)); 
         } 
      } 
   } 
   DicomEngine.Shutdown(); 
} 
 
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.DataAccessLayer 
Imports Leadtools.Medical.Storage.DataAccessLayer 
Imports Leadtools.Medical.Storage.DataAccessLayer.Configuration 
Imports Leadtools.Medical.Workstation.Client 
Imports Leadtools.Medical.Workstation.Client.Local 
Imports Leadtools.Medical.Workstation.Client.Pacs 
 
Public Sub DatabaseQueryLocal() 
   Leadtools.Examples.Support.SetLicense() 
   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:\LEADTOOLS21\Resources\Images" 
End Class 
Requirements

Target Platforms

Help Version 21.0.2021.6.30
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2021 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Medical.Workstation.Client Assembly

Products | Support | Contact Us | Intellectual Property Notices
© 1991-2021 LEAD Technologies, Inc. All Rights Reserved.