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
            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. - Template
 
- The template dataset to use in the C-FIND-REQ.
 
 
             
              
             
             
            
Example
Finds a study series with a C-FIND-REQ dataset template.
 
             | Visual Basic |  Copy Code | 
|---|
Public Sub FindSeries() 
    DicomEngine.Startup() 
    DicomNet.Startup() 
 
    Dim cfind As QueryRetrieveScu = New QueryRetrieveScu() 
    Dim query As FindQuery = New FindQuery() 
    Dim scp As DicomScp = New DicomScp(IPAddress.Parse("10.1.1.96"), "MI_SERVER", 104) 
    Dim ds As DicomDataSet = New DicomDataSet() 
 
     
     
     
    scp.Timeout = 60 
 
     
     
     
     
    ds.Load(ResourceDir & "series.dic", DicomDataSetLoadFlags.LoadAndClose) 
    query.QueryLevel = QueryLevel.Series 
 
     
     
     
     
    query.StudyInstanceUID = "1.2.840.114257.3.6.5.41964868" 
    AddHandler cfind.BeforeCFind, AddressOf cfind_BeforeCFind 
    AddHandler cfind.MatchSeries, AddressOf cfind_MatchSeries 
    AddHandler cfind.AfterCFind, AddressOf cfind_AfterCFind 
    cfind.Find(scp, query, True, ds) 
 
    DicomNet.Shutdown() 
    DicomEngine.Shutdown() 
End Sub 
 
Private Sub cfind_BeforeCFind(ByVal sender As Object, ByVal e As BeforeCFindEventArgs) 
    Console.WriteLine("Before CFind: " & e.QueryLevel.ToString()) 
End Sub 
 
Private Sub cfind_MatchSeries(ByVal sender As Object, ByVal e As MatchEventArgs(Of Series)) 
    Console.Write("Series Instance UID: " & e.Info.InstanceUID) 
    Console.WriteLine("Series Number: " & e.Info.Number.Value) 
    If e.Info.Date.HasValue Then 
        Console.WriteLine("Series Date: " & e.Info.Date.Value) 
    Else 
        Console.WriteLine("Series Date: ") 
    End If 
    Console.WriteLine("Series Description: " & e.Info.Description) 
    Console.WriteLine("Modality: " & e.Info.Modality) 
    Console.WriteLine("Number of Related Instances: " & e.Info.NumberOfRelatedInstances) 
    Console.WriteLine("Performed Procedure Step ID:" & e.Info.PerformedProcStepId) 
 
    If e.Info.PerfProcStepStartDate.HasValue Then 
        Console.WriteLine("Performed Procedure Step Start Date: " & e.Info.PerfProcStepStartDate.Value) 
    Else 
        Console.WriteLine("Performed Procedure Step Start Date: ") 
    End If 
 
    If e.Info.PerfProcStepStartTime.HasValue Then 
        Console.WriteLine("Performed Procedure Step Start Time: " & e.Info.PerfProcStepStartTime.Value.ToString()) 
    Else 
        Console.WriteLine("Performed Procedure Step Start Time: ") 
    End If 
    Console.WriteLine("Requested Procedure ID: " & e.Info.RequestedProcId) 
    Console.WriteLine("Scheduled Procedure Step ID: " & e.Info.SchedProcStepId) 
End Sub 
 
Private Sub cfind_AfterCFind(ByVal sender As Object, ByVal e As AfterCFindEventArgs) 
    Debug.Assert(e.Status = DicomCommandStatusType.Success) 
End Sub | 
 
| C# |  Copy Code | 
|---|
public void FindSeries()  {      DicomEngine.Startup();      DicomNet.Startup();        QueryRetrieveScu findSeries = new QueryRetrieveScu();      FindQuery query = new FindQuery();      DicomScp scp = new DicomScp(IPAddress.Parse("10.1.1.96"), "MI_SERVER", 104);      DicomDataSet ds = new DicomDataSet();        //      // Change these parameters to reflect your Dicom server.      //               scp.Timeout = 60;        //      // Load a dataset that has information needed for a C-FIND-REQ at series level.  Change      // this to reflect a dataset on your computer.      //      ds.Load(ResourceDir + "series.dic", DicomDataSetLoadFlags.LoadAndClose);      query.QueryLevel = QueryLevel.Series;        //      // Query for a specific study instance uid.  Change this to a study instance      // that is available on your Dicom Server      //      query.StudyInstanceUID = "1.2.840.114257.3.6.5.41964868";      findSeries.BeforeCFind += new BeforeCFindDelegate(findSeries_BeforeCFind);      findSeries.MatchSeries += new MatchSeriesDelegate(findSeries_MatchSeries);      findSeries.AfterCFind += new AfterCFindDelegate(findSeries_AfterCFind);      findSeries.Find(scp, query, true, ds);        DicomNet.Shutdown();      DicomEngine.Shutdown();  }    void findSeries_BeforeCFind(object sender, BeforeCFindEventArgs e)  {      Console.WriteLine("Before CFind: " + e.QueryLevel.ToString());  }    void findSeries_MatchSeries(object sender, MatchEventArgs<Series> e)  {      Console.Write("Series Instance UID: " + e.Info.InstanceUID);      Console.WriteLine("Series Number: " + e.Info.Number != null ? e.Info.Number.ToString() : string.Empty);      Console.WriteLine("Series Date: " + e.Info.Date);      Console.WriteLine("Series Description: " + e.Info.Description);      Console.WriteLine("Modality: " + e.Info.Modality);      Console.WriteLine("Number of Related Instances: " + e.Info.NumberOfRelatedInstances);      Console.WriteLine("Performed Procedure Step ID:" + e.Info.PerformedProcStepId);      Console.WriteLine("Performed Procedure Step Start Date: " + e.Info.PerfProcStepStartDate);      Console.WriteLine("Performed Procedure Step Start Time: " + e.Info.PerfProcStepStartTime);      Console.WriteLine("Requested Procedure ID: " + e.Info.RequestedProcId);      Console.WriteLine("Scheduled Procedure Step ID: " + e.Info.SchedProcStepId);  }    void findSeries_AfterCFind(object sender, AfterCFindEventArgs e)  {      Debug.Assert(e.Status == DicomCommandStatusType.Success);  } | 
 
  
            
            
            
Requirements
Target Platforms: Microsoft .NET Framework 2.0, Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family
 
            
            
See Also