Leadtools.Dicom.Scu Namespace > QueryRetrieveScu Class > Find Method : Find(DicomScp,FindQuery) Method |
'Usage Dim instance As QueryRetrieveScu Dim Scp As DicomScp Dim Query As FindQuery instance.Find(Scp, Query)
public: void Find( DicomScp^ Scp, FindQuery^ Query )
Public Sub FindStudy() DicomEngine.Startup() DicomNet.Startup() Dim cfindStudy As QueryRetrieveScu = New QueryRetrieveScu() Dim query As FindQuery = New FindQuery() Dim scp As DicomScp = New DicomScp() ' ' Change these parameters to reflect the calling AETitle. ' cfindStudy.AETitle = "LEAD_CLIENT" cfindStudy.HostPort = 1000 cfindStudy.HostAddress = IPAddress.Parse(Dns.GetHostByName(Dns.GetHostName()).AddressList(0).ToString()) ' ' 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") ' ' Find all studies ' query.QueryLevel = QueryLevel.Study AddHandler cfindStudy.BeforeConnect, AddressOf cfindStudy_BeforeConnect AddHandler cfindStudy.AfterConnect, AddressOf cfindStudy_AfterConnect AddHandler cfindStudy.BeforeCFind, AddressOf cfindStudy_BeforeCFind AddHandler cfindStudy.MatchStudy, AddressOf cfindStudy_MatchStudy AddHandler cfindStudy.AfterCFind, AddressOf cfindStudy_AfterCFind cfindStudy.Find(scp, query) cfindStudy = Nothing query = Nothing scp = Nothing DicomNet.Shutdown() DicomEngine.Shutdown() End Sub Private Sub cfindStudy_BeforeConnect(ByVal sender As Object, ByVal e As BeforeConnectEventArgs) Console.WriteLine("Connecting to: " & e.Scp.PeerAddress.ToString()) End Sub Private Sub cfindStudy_AfterConnect(ByVal sender As Object, ByVal e As AfterConnectEventArgs) Console.WriteLine("Connection status: " & e.Error) End Sub Private Sub cfindStudy_BeforeCFind(ByVal sender As Object, ByVal e As BeforeCFindEventArgs) Console.WriteLine("Before CFind: " & e.QueryLevel.ToString()) Console.WriteLine("Association supports relational queries: {0}", e.Scp.Relational) Console.WriteLine("Association Information") Dim i As Integer = 0 Do While i < e.Scp.Association.PresentationContextCount Dim pid As Byte = e.Scp.Association.GetPresentationContextID(i) Dim absSyntax As String = e.Scp.Association.GetAbstract(pid) Dim result As DicomAssociateAcceptResultType = e.Scp.Association.GetResult(pid) Dim uid As DicomUid = DicomUidTable.Instance.Find(absSyntax) Console.WriteLine(Constants.vbTab & "PresentationContext ({0})", pid) Console.WriteLine(Constants.vbTab + Constants.vbTab & "AbstractSyntax: {0}", absSyntax) If Not uid Is Nothing Then Console.WriteLine(Constants.vbTab + Constants.vbTab & "Description: {0}", uid.Name) End If Console.WriteLine(Constants.vbTab + Constants.vbTab & "Result: {0}", result) i += 1 Loop End Sub Private Sub cfindStudy_MatchStudy(ByVal sender As Object, ByVal e As MatchEventArgs(Of Study)) Console.WriteLine("Accession #: " & e.Info.AccessionNumber) Console.WriteLine("Admitting Diagnosis Description: " & e.Info.AdmitDiagDescrp) If e.Info.Age.HasValue Then Console.WriteLine("Age: " & (e.Info.Age.Value.Number.ToString() & e.Info.Age.Value.Reference)) Else Console.WriteLine("Age: " & ("No Age")) End If Console.WriteLine("Study Date: " & e.Info.Date.Value) If (e.Info.Time.HasValue) Then Console.WriteLine("Study Time: " & e.Info.Time.ToString()) End If Console.WriteLine("Study Description: " & e.Info.Description) Console.WriteLine("Study Id: " & e.Info.Id) Console.WriteLine("Study Instance: " & e.Info.InstanceUID) If Not e.Info.ModalitiesInStudy Is Nothing Then Console.WriteLine("Modalities in Study: " & e.Info.ModalitiesInStudy.ToString()) End If If Not e.Info.NameOfDrsReading Is Nothing Then Console.WriteLine("Name of drs reading Study: " & e.Info.NameOfDrsReading.ToString()) End If Console.WriteLine("Number of Related Instances: " & e.Info.NumberOfRelatedInstances) Console.WriteLine("Number of Related Series: " & e.Info.NumberofRelatedSeries) Console.WriteLine("Referring Dr Name: " & e.Info.ReferringPhysiciansName.Full) Console.WriteLine("Patient Size: " & e.Info.Size.Value) Console.WriteLine("Patient Weight: " & e.Info.Weight.Value) Console.WriteLine("Patient Birth Date: " & e.Info.Patient.BirthDate.Value) Console.WriteLine("Patient Comments: " & e.Info.Patient.Comments) Console.WriteLine("Patient Id: " & e.Info.Patient.Id) Console.WriteLine("Patient Sex: " & e.Info.Patient.Sex) Console.WriteLine("Patient Name") Console.WriteLine(Constants.vbTab & "Family Name: " & e.Info.Patient.Name.Family) Console.WriteLine(Constants.vbTab & "Given Name: " & e.Info.Patient.Name.Given) Console.WriteLine(Constants.vbTab & "Middle Name: " & e.Info.Patient.Name.Middle) Console.WriteLine(Constants.vbTab & "Name Prefix: " & e.Info.Patient.Name.Prefix) Console.WriteLine(Constants.vbTab & "Name Suffix: " & e.Info.Patient.Name.Suffix) Console.WriteLine(Constants.vbTab & "Full Name: " & e.Info.Patient.Name.Full) Console.WriteLine(Constants.vbTab & "Full Name Dicom Encoded: " & e.Info.Patient.Name.FullDicomEncoded) Console.WriteLine("==========================================================" & Constants.vbCrLf) End Sub Private Sub cfindStudy_AfterCFind(ByVal sender As Object, ByVal e As AfterCFindEventArgs) Debug.Assert(e.Status = DicomCommandStatusType.Success) End Sub
public void FindStudy() { DicomEngine.Startup(); DicomNet.Startup(); QueryRetrieveScu findStudy = new QueryRetrieveScu(); FindQuery query = new FindQuery(); DicomScp scp = new DicomScp(); // // Change these parameters to reflect the calling AETitle. // findStudy.AETitle = "LEAD_CLIENT"; findStudy.HostPort = 1000; findStudy.HostAddress = IPAddress.Parse(Dns.GetHostByName(Dns.GetHostName()).AddressList[0].ToString()); // // 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"); // // Find all studies // query.QueryLevel = QueryLevel.Study; findStudy.BeforeConnect += new BeforeConnectDelegate(findStudy_BeforeConnect); findStudy.AfterConnect += new AfterConnectDelegate(findStudy_AfterConnect); findStudy.BeforeCFind += new BeforeCFindDelegate(findStudy_BeforeCFind); findStudy.MatchStudy += new MatchStudyDelegate(findStudy_MatchStudy); findStudy.AfterCFind += new AfterCFindDelegate(findStudy_AfterCFind); findStudy.Find(scp, query); findStudy = null; query = null; scp = null; DicomNet.Shutdown(); DicomEngine.Shutdown(); } void findStudy_BeforeConnect(object sender, BeforeConnectEventArgs e) { Console.WriteLine("Connecting to: " + e.Scp.PeerAddress.ToString()); } void findStudy_AfterConnect(object sender, AfterConnectEventArgs e) { Console.WriteLine("Connection status: " + e.Error); } void findStudy_BeforeCFind(object sender, BeforeCFindEventArgs e) { Console.WriteLine("Before CFind: " + e.QueryLevel.ToString()); Console.WriteLine("Association supports relational queries: {0}", e.Scp.Relational); Console.WriteLine("Association Information"); for (int i = 0; i < e.Scp.Association.PresentationContextCount; i++) { byte pid = e.Scp.Association.GetPresentationContextID(i); string absSyntax = e.Scp.Association.GetAbstract(pid); DicomAssociateAcceptResultType result = e.Scp.Association.GetResult(pid); DicomUid uid = DicomUidTable.Instance.Find(absSyntax); Console.WriteLine("\tPresentationContext ({0})", pid); Console.WriteLine("\t\tAbstractSyntax: {0}", absSyntax); if (uid != null) Console.WriteLine("\t\tDescription: {0}", uid.Name); Console.WriteLine("\t\tResult: {0}", result); } } void findStudy_MatchStudy(object sender, MatchEventArgs<Study> e) { Console.WriteLine("Accession #: " + e.Info.AccessionNumber); Console.WriteLine("Admitting Diagnosis Description: " + e.Info.AdmitDiagDescrp); Console.WriteLine("Age: " + (e.Info.Age.HasValue ? e.Info.Age.Value.Number.ToString() + e.Info.Age.Value.Reference : "No Age")); Console.WriteLine("Study Date: " + e.Info.Date); Console.WriteLine("Study Time: " + e.Info.Time); Console.WriteLine("Study Description: " + e.Info.Description); Console.WriteLine("Study Id: " + e.Info.Id); Console.WriteLine("Study Instance: " + e.Info.InstanceUID); if (e.Info.ModalitiesInStudy != null) Console.WriteLine("Modalities in Study: " + e.Info.ModalitiesInStudy.ToString()); if (e.Info.NameOfDrsReading != null) Console.WriteLine("Name of drs reading Study: " + e.Info.NameOfDrsReading.ToString()); Console.WriteLine("Number of Related Instances: " + e.Info.NumberOfRelatedInstances); Console.WriteLine("Number of Related Series: " + e.Info.NumberofRelatedSeries); Console.WriteLine("Referring Dr Name: " + e.Info.ReferringPhysiciansName.Full); Console.WriteLine("Patient Size: " + e.Info.Size); Console.WriteLine("Patient Weight: " + e.Info.Weight); Console.WriteLine("Patient Birth Date: " + e.Info.Patient.BirthDate); Console.WriteLine("Patient Comments: " + e.Info.Patient.Comments); Console.WriteLine("Patient Id: " + e.Info.Patient.Id); Console.WriteLine("Patient Sex: " + e.Info.Patient.Sex); Console.WriteLine("Patient Name"); Console.WriteLine("\tFamily Name: " + e.Info.Patient.Name.Family); Console.WriteLine("\tGiven Name: " + e.Info.Patient.Name.Given); Console.WriteLine("\tMiddle Name: " + e.Info.Patient.Name.Middle); Console.WriteLine("\tName Prefix: " + e.Info.Patient.Name.Prefix); Console.WriteLine("\tName Suffix: " + e.Info.Patient.Name.Suffix); Console.WriteLine("\tFull Name: " + e.Info.Patient.Name.Full); Console.WriteLine("\tFull Name Dicom Encoded: " + e.Info.Patient.Name.FullDicomEncoded); Console.WriteLine("==========================================================\r\n"); } void findStudy_AfterCFind(object sender, AfterCFindEventArgs e) { Debug.Assert(e.Status == DicomCommandStatusType.Success); }
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