EnableMoveToSelf Property

Summary
Gets or sets a value indicating whether to enable the internal server on a C-MOVE operation.
Syntax
C#
C++/CLI
public bool EnableMoveToSelf { get; set; } 
public: 
property bool EnableMoveToSelf { 
   bool get(); 
   void set (    bool ); 
} 

Property Value

true if internal server is enabled, otherwise it is false.

Remarks

This property is only valid if the Destination AE Title is not provided in a move operation. Normally if a destination ae title is not provided the QueryRetrieveScu will create an internal server to respond to the move operation. However, if this property is false the internal server will not be created.

Example
C#
using Leadtools; 
using Leadtools.Dicom.Scu; 
using Leadtools.Dicom.Scu.Common; 
using Leadtools.Dicom; 
using Leadtools.Dicom.Common.DataTypes; 
using Leadtools.Dicom.Common.DataTypes.Status; 
 
 
public void MoveInstance() 
{ 
   DicomEngine.Startup(); 
   DicomNet.Startup(); 
 
   QueryRetrieveScu retrieveInstance = new QueryRetrieveScu(); 
   FindQuery query = new FindQuery(); 
   DicomScp scp = new DicomScp(); 
 
   // 
   // Change these parameters to reflect the calling AETitle. 
   // 
 
   retrieveInstance.AETitle = "LEAD_CLIENT"; 
   retrieveInstance.HostPort = 1000; 
   retrieveInstance.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"); 
 
   retrieveInstance.EnableMoveToSelf = true; 
   retrieveInstance.BeforeCMove += new BeforeCMoveDelegate(retrieveInstance_BeforeCMove); 
   retrieveInstance.Moved += new MovedDelegate(retrieveInstance_Moved); 
   retrieveInstance.AfterCMove += new AfterCMoveDelegate(retrieveInstance_AfterCMove); 
   retrieveInstance.HostReady += RetrieveInstance_HostReady; 
   retrieveInstance.Move(scp, string.Empty, "1.2.840.114257.3.6.5.41964868", "1.2.840.114257.3.6.5.5.4214471", 
                         "1.2.840.114257.3.6.5.5.18900282"); 
 
   DicomNet.Shutdown(); 
   DicomEngine.Shutdown(); 
 
} 
 
private void RetrieveInstance_HostReady(object sender, HostReadyEventArgs e) 
{ 
   if (e.ScpHost != null) 
   { 
      Console.WriteLine("HostReady: Host AETitle:{0} Host Port:{1}", e.ScpHost.AETitle, e.ScpHost.HostPort); 
   } 
} 
 
void retrieveInstance_BeforeCMove(object sender, BeforeCMoveEventArgs e) 
{ 
   Console.WriteLine("Before CMove"); 
} 
 
void PrintReferencedRequestSequence(List<ReferencedRequestSequence> rrs) 
{ 
   if (rrs.Count > 0) 
   { 
      Console.WriteLine("Referenced Request Sequence"); 
      foreach (ReferencedRequestSequence rr in rrs) 
      { 
         Console.WriteLine("\tAccession Number: ", rr.AccessionNumber); 
         Console.WriteLine("\tStudy Instance UID: " + rr.StudyInstanceUID); 
         Console.WriteLine("\tRequested Procedure ID: " + rr.RequestedProcedureId); 
         if (rr.RequestedProcedureCodeSequence.Count > 0) 
         { 
            Console.WriteLine("\tRequested Procedure Code Sequence"); 
            foreach (CodeSequence rpc in rr.RequestedProcedureCodeSequence) 
            { 
               Console.WriteLine("\t\tCode Meaning: " + rpc.CodeMeaning); 
               if (rpc.EnhancedEncoding != null) 
                  Console.WriteLine("\t\tContext Identifier: " + rpc.EnhancedEncoding.ContextIdentifier); 
               Console.WriteLine("\t\tScheme Designator: " + rpc.CodeSchemeDesignator); 
               Console.WriteLine("\t\tScheme Version: " + rpc.CodingSchemeVersion); 
               Console.WriteLine("\t\tValue: " + rpc.CodeValue); 
               Console.WriteLine("\t\t----------------------------------"); 
            } 
         } 
         Console.WriteLine("\t----------------------------------"); 
      } 
   } 
} 
 
void PrintConceptCodeNameSequence(CodeSequence ccs) 
{ 
   if (ccs != null) 
   { 
      Console.WriteLine("Content Code Name Sequence"); 
      Console.WriteLine("\tCode Meaning: " + ccs.CodeMeaning); 
      if (ccs.EnhancedEncoding != null) 
         Console.WriteLine("\t\tContext Identifier: " + ccs.EnhancedEncoding.ContextIdentifier); 
      Console.WriteLine("\tScheme Designator: " + ccs.CodeSchemeDesignator); 
      Console.WriteLine("\tScheme Version: " + ccs.CodingSchemeVersion); 
      Console.WriteLine("\tValue: " + ccs.CodeValue); 
   } 
} 
 
void retrieveInstance_Moved(object sender, MovedEventArgs e) 
{ 
   switch (e.Instance.InstanceType) 
   { 
      case InstanceLevel.EvidenceDocument: 
         EvidenceDocumentInstance ed = e.Instance as EvidenceDocumentInstance; 
 
         Console.WriteLine("Content Date: " + ed.ContentDate); 
         Console.WriteLine("Content Time: " + ed.ContentTime); 
 
 
         if (ed.ContentTemplateSequence != null) 
         { 
            Console.WriteLine("Content Template Sequence"); 
            Console.WriteLine("\tTemplate Identifier: " + ed.ContentTemplateSequence.TemplateIdentifer); 
         } 
         PrintReferencedRequestSequence(ed.ReferencedRequestSeqence); 
         PrintConceptCodeNameSequence(ed.ConceptNameCodeSequence); 
         break; 
      case InstanceLevel.Image: 
         ImageInstance ii = e.Instance as ImageInstance; 
 
         Console.WriteLine("Bits Allocated: " + ii.BitsAllocated); 
         Console.WriteLine("Columns: " + ii.Columns); 
         Console.WriteLine("Frames: " + ii.Frames); 
         Console.WriteLine("Rows: " + ii.Rows); 
         if (ii.Images != null) 
            Console.WriteLine("Image Size: " + ii.Images.BytesPerLine * ii.Images.Height); 
         break; 
      case InstanceLevel.KeyImageNote: 
         KeyImageInstance ki = e.Instance as KeyImageInstance; 
 
         Console.WriteLine("Content Date: " + ki.ContentDate); 
         Console.WriteLine("Content Time: " + ki.ContentTime); 
         Console.WriteLine("Observation Date/Time: " + ki.ObservationDateTime); 
         PrintReferencedRequestSequence(ki.ReferencedRequestSequence); 
         PrintConceptCodeNameSequence(ki.ConceptNameCodeSequence); 
         break; 
      case InstanceLevel.PresentationState: 
         PresentationStateInstance pi = e.Instance as PresentationStateInstance; 
 
         Console.WriteLine("Presentation Label: " + pi.Label); 
         Console.WriteLine("Creation Date: " + pi.CreateDate); 
         Console.WriteLine("Creation Time: " + pi.CreateTime); 
         Console.WriteLine("Creators Name: " + pi.CreatorsName); 
         Console.WriteLine("Description: " + pi.Description); 
         if (pi.ReferencedSeriesSequence.Count > 0) 
         { 
            Console.WriteLine("Referenced Series Sequence"); 
            foreach (ReferencedSeriesSequence rss in pi.ReferencedSeriesSequence) 
            { 
               Console.WriteLine("\tSeries Instance UID: " + rss.SeriesInstanceUID); 
               if (rss.ReferencedImageSequence.Count > 0) 
               { 
                  Console.WriteLine("\tReferenced Image Sequence"); 
                  foreach (ReferencedImageSequence ris in rss.ReferencedImageSequence) 
                  { 
                     Console.WriteLine("\t\tReferenced SOP Class UID: " + ris.ReferencedSOPClassUID); 
                     Console.WriteLine("\t\tReferenced SOP Instance UID: " + ris.ReferencedSOPInstanceUID); 
                     Console.WriteLine("\t\t----------------------------------"); 
                  } 
               } 
               Console.WriteLine("\t----------------------------------"); 
            } 
         } 
         break; 
      case InstanceLevel.StructuredReport: 
         SRInstance si = e.Instance as SRInstance; 
 
         Console.WriteLine("Completion Flag: " + si.CompletionFlag); 
         Console.WriteLine("Verification Flag: " + si.VerificationFlag); 
         Console.WriteLine("Content Date: " + si.ContentDate); 
         Console.WriteLine("Content Time: " + si.ContentTime); 
         Console.WriteLine("Observation Date/Time: " + si.ObservationDateTime); 
 
         if (si.VerifyingObserverSequence.Count > 0) 
         { 
            Console.WriteLine("Verifying Observer Sequence"); 
            foreach (VerifyingObserverSequence vos in si.VerifyingObserverSequence) 
            { 
               Console.WriteLine("\tVerifying Organization: " + vos.VerifyingOrganization); 
               Console.WriteLine("\tVerification Date/Time: " + vos.VerificationDateTime); 
               Console.WriteLine("\tVerifying Observer Name: " + vos.VerifyingObserverName); 
               if (vos.VerifyingObserverIdentificationCodeSequence.Count > 0) 
               { 
                  Console.WriteLine("Verifying Observer Identification Code Sequence"); 
                  foreach (CodeSequence cs in vos.VerifyingObserverIdentificationCodeSequence) 
                  { 
                     Console.WriteLine("\t\tCode Meaning: " + cs.CodeMeaning); 
                     if (cs.EnhancedEncoding != null) 
                        Console.WriteLine("\t\tContext Identifier: " + cs.EnhancedEncoding.ContextIdentifier); 
                     Console.WriteLine("\t\tScheme Designator: " + cs.CodeSchemeDesignator); 
                     Console.WriteLine("\t\tScheme Version: " + cs.CodingSchemeVersion); 
                     Console.WriteLine("\t\tValue: " + cs.CodeValue); 
                     Console.WriteLine("\t\t----------------------------------"); 
                  } 
               } 
               Console.WriteLine("\t----------------------------------"); 
            } 
         } 
 
 
         PrintReferencedRequestSequence(si.ReferencedRequestSequence); 
         PrintConceptCodeNameSequence(si.ConceptNameCodeSequence); 
         break; 
   } 
 
} 
 
void retrieveInstance_AfterCMove(object sender, AfterCMoveEventArgs e) 
{ 
   Console.WriteLine("{0} Completed", e.Completed); 
   Console.WriteLine("{0} Failed", e.Failed); 
   Console.WriteLine("{0} Warning", e.Warning); 
   Console.WriteLine("Status: {0}", e.Status); 
 
   if (e.Status != DicomCommandStatusType.Success) 
   { 
      string statusAllString = e.StatusAll.ToString(StatusFormatFlags.IgnoreStatus, "\n", "\t"); 
      Console.WriteLine(statusAllString); 
   } 
} 
Requirements

Target Platforms

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

Leadtools.Dicom.Scu Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.