Find(DicomScp,FindQuery,bool,string) Method

Summary

Sends a C-FIND-REQ message to a peer member of a connection defined by Scp. The C-FIND-REQ dataset is provided by Template.

Syntax
C#
VB
C++
public void Find( 
   DicomScp Scp, 
   FindQuery Query, 
   bool AddOptional, 
   string TemplateFile 
) 
  
Public Overloads Sub Find( _ 
   ByVal Scp As DicomScp, _ 
   ByVal Query As FindQuery, _ 
   ByVal AddOptional As Boolean, _ 
   ByVal TemplateFile As String _ 
)  
public: 
void Find(  
   DicomScp^ Scp, 
   FindQuery^ Query, 
   bool AddOptional, 
   String^ TemplateFile 
)  

Parameters

Scp
The peer connection to send the C-FIND-REQ to.

Query
The query information that describes the DICOM datasets to be found.

AddOptional
If set to true add optional C-FIND-REQ items.

TemplateFile
The template dataset filename used in the C-FIND-REQ.

Example

Finds all instances in the related study and series.

C#
VB
using Leadtools; 
using Leadtools.Dicom.Scu; 
using Leadtools.Dicom.Scu.Common; 
using Leadtools.Dicom; 
using Leadtools.Dicom.Common.DataTypes; 
 
public void FindInstances() 
{ 
   DicomEngine.Startup(); 
   DicomNet.Startup(); 
 
   QueryRetrieveScu findInstance = new QueryRetrieveScu(); 
   FindQuery query = new FindQuery(); 
   DicomScp scp = new DicomScp(); 
 
   // 
   // Change these parameters to reflect the calling AETitle. 
   // 
 
   findInstance.AETitle = "LEAD_CLIENT"; 
   findInstance.HostPort = 1000; 
   findInstance.HostAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList.FirstOrDefault(ip => ip.AddressFamily == AddressFamily.InterNetwork); 
 
   // 
   // Change these parameters to reflect the called AETitle (server). 
   // 
 
   scp.AETitle = "MI_SERVER"; 
   scp.Port = 104; 
   scp.Timeout = 60; 
   scp.PeerAddress = IPAddress.Parse("10.1.1.96"); 
 
   query.QueryLevel = QueryLevel.Image; 
   query.StudyInstanceUID = "1.2.840.114257.3.6.5.41964868"; 
   query.SeriesInstanceUID = "1.2.840.114257.3.6.5.5.4214471"; 
   findInstance.BeforeCFind += new BeforeCFindDelegate(findInstance_BeforeCFind); 
   findInstance.MatchInstance += new MatchInstanceDelegate(findInstance_MatchInstance); 
   findInstance.AfterCFind += new AfterCFindDelegate(findInstance_AfterCFind); 
   findInstance.Find(scp, query, true, Path.Combine(LEAD_VARS.ImagesDir, "Image1.dcm")); 
 
   DicomNet.Shutdown(); 
   DicomEngine.Shutdown(); 
} 
 
void findInstance_BeforeCFind(object sender, BeforeCFindEventArgs e) 
{ 
   Console.WriteLine("Before CFind: " + e.QueryLevel.ToString()); 
} 
 
void findInstance_MatchInstance(object sender, MatchEventArgs<CompositeObjectInstance> e) 
{ 
   Console.WriteLine("SOP Instance UID: " + e.Info.SOPInstanceUID); 
   Console.WriteLine("SOP Class UID: " + e.Info.SOPClassUID); 
   Console.WriteLine("Instance #: " + e.Info.InstanceNumber); 
   Console.WriteLine("Availability: " + e.Availability); 
} 
 
void findInstance_AfterCFind(object sender, AfterCFindEventArgs e) 
{ 
   Debug.Assert(e.Status == DicomCommandStatusType.Success); 
} 
 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; 
} 
Imports Leadtools 
Imports Leadtools.Dicom.Scu 
Imports Leadtools.Dicom.Scu.Common 
Imports Leadtools.Dicom 
Imports Leadtools.Dicom.Common.DataTypes 
 
Public Sub FindInstances() 
    DicomEngine.Startup() 
    DicomNet.Startup() 
 
    Dim findInstance As QueryRetrieveScu = New QueryRetrieveScu() 
    Dim query As FindQuery = New FindQuery() 
    Dim scp As DicomScp = New DicomScp() 
 
    ' 
    ' Change these parameters to reflect the calling AETitle. 
    ' 
    findInstance.AETitle = "LEAD_CLIENT" 
    findInstance.HostPort = 1000 
    findInstance.HostAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList.FirstOrDefault(Function(ip) ip.AddressFamily = AddressFamily.InterNetwork) 
 
    ' 
    ' Change these parameters to reflect the called AETitle (server). 
    ' 
    scp.AETitle = "MI_SERVER" 
    scp.Port = 104 
    scp.Timeout = 60 
    scp.PeerAddress = IPAddress.Parse("10.1.1.96") 
 
    query.QueryLevel = QueryLevel.Image 
    query.StudyInstanceUID = "1.2.840.114257.3.6.5.41964868" 
    query.SeriesInstanceUID = "1.2.840.114257.3.6.5.5.4214471" 
    AddHandler findInstance.BeforeCFind, AddressOf findInstance_BeforeCFind 
    AddHandler findInstance.MatchInstance, AddressOf findInstance_MatchInstance 
    AddHandler findInstance.AfterCFind, AddressOf findInstance_AfterCFind 
    findInstance.Find(scp, query, True, Path.Combine(LEAD_VARS.ImagesDir, "image1.dcm")) 
 
    DicomNet.Shutdown() 
    DicomEngine.Shutdown() 
End Sub 
 
Private Sub findInstance_BeforeCFind(ByVal sender As Object, ByVal e As BeforeCFindEventArgs) 
    Console.WriteLine("Before CFind: " & e.QueryLevel.ToString()) 
End Sub 
 
Private Sub findInstance_MatchInstance(ByVal sender As Object, ByVal e As MatchEventArgs(Of CompositeObjectInstance)) 
    Console.WriteLine("SOP Instance UID: " & e.Info.SOPInstanceUID) 
    Console.WriteLine("SOP Class UID: " & e.Info.SOPClassUID) 
    Console.WriteLine("Instance #: " & e.Info.InstanceNumber) 
    Console.WriteLine("Availability: " & e.Availability) 
End Sub 
 
Private Sub findInstance_AfterCFind(ByVal sender As Object, ByVal e As AfterCFindEventArgs) 
    Debug.Assert(e.Status = DicomCommandStatusType.Success) 
End Sub 
 
 
Public NotInheritable Class LEAD_VARS 
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" 
End Class 

Requirements

Target Platforms

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

Leadtools.Dicom.Scu Assembly