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