Is this page helpful?

In this page

Store(DicomScp,​string,​string,​bool) Method

Summary
Sends a C-STORE-REQ message to a peer member of a connection defined by Scp.
Syntax
C#
VB
C++
public void Store( 
   DicomScp Scp, 
   string Dir, 
   string SearchPattern, 
   bool Recurse 
) 
  
Public Overloads Sub Store( _ 
   ByVal Scp As DicomScp, _ 
   ByVal Dir As String, _ 
   ByVal SearchPattern As String, _ 
   ByVal Recurse As Boolean _ 
)  
public: 
void Store(  
   DicomScp^ Scp, 
   String^ Dir, 
   String^ SearchPattern, 
   bool Recurse 
)  

Parameters

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

Dir
The file directory to search for DICOM files.

SearchPattern
The search pattern.

Recurse
If set to true recurse the directory.

Example

Stores all DICOM files in the specified directory to a DICOM server.

C#
VB
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 StoreDirectory() 
{ 
   DicomEngine.Startup(); 
   DicomNet.Startup(); 
 
   StoreScu storeDirectory = new StoreScu(); 
   DicomScp scp = new DicomScp(); 
 
   // 
   // Change these parameters to reflect the calling AETitle. 
   // 
 
   storeDirectory.AETitle = "LEAD_CLIENT"; 
   storeDirectory.HostPort = 1000; 
   storeDirectory.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"); 
 
   storeDirectory.BeforeAssociateRequest += new BeforeAssociationRequestDelegate(storeDirectory_BeforeAssociateRequest); 
   storeDirectory.AfterAssociateRequest += new AfterAssociateRequestDelegate(storeDirectory_AfterAssociateRequest); 
   storeDirectory.BeforeCStore += new BeforeCStoreDelegate(storeDirectory_BeforeCStore); 
   storeDirectory.AfterCStore += new AfterCStoreDelegate(storeDirectory_AfterCStore); 
   storeDirectory.Compression = Compression.Native; 
   storeDirectory.Store(scp, LEAD_VARS.ImagesDir + "\\DICOM", "*.*", false); 
 
   DicomNet.Shutdown(); 
   DicomEngine.Shutdown(); 
} 
 
void storeDirectory_BeforeAssociateRequest(object sender, BeforeAssociateRequestEventArgs e) 
{ 
   Console.WriteLine("Before AssociateRequest"); 
} 
 
void storeDirectory_AfterAssociateRequest(object sender, AfterAssociateRequestEventArgs e) 
{ 
   StoreScu scu = sender as StoreScu; 
 
   Console.WriteLine("After AssociateRequest"); 
   for (int i = 0; i < e.Associate.PresentationContextCount; i++) 
   { 
      byte pid = e.Associate.GetPresentationContextID(i); 
      string absSyntax = e.Associate.GetAbstract(pid); 
      DicomAssociateAcceptResultType result = e.Associate.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 storeDirectory_BeforeCStore(object sender, BeforeCStoreEventArgs e) 
{ 
   // 
   // Stop storing if we received an error 
   // 
 
   if (e.Error != null) 
      e.Skip = SkipMethod.AllFiles; 
} 
 
void storeDirectory_AfterCStore(object sender, AfterCStoreEventArgs e) 
{ 
   string msg; 
 
   msg = string.Format("{0} store complete. Status: {1}", e.FileInfo.FullName, e.Status); 
   Console.WriteLine(msg); 
 
   if (e.Status != DicomCommandStatusType.Success) 
   { 
      string statusAllString = e.StatusAll.ToString(StatusFormatFlags.IgnoreStatus, "\n", "\t"); 
      Console.WriteLine(statusAllString); 
   } 
} 
 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS21\Resources\Images"; 
} 
Imports Leadtools 
Imports Leadtools.Dicom.Scu 
Imports Leadtools.Dicom.Scu.Common 
Imports Leadtools.Dicom 
Imports Leadtools.Dicom.Common.DataTypes 
 
 
Public Sub StoreDirectory() 
    DicomEngine.Startup() 
    DicomNet.Startup() 
 
    Dim cstoreFolder As StoreScu = New StoreScu() 
    Dim scp As DicomScp = New DicomScp() 
 
    ' 
    ' Change these parameters to reflect the calling AETitle. 
    ' 
    cstoreFolder.AETitle = "LEAD_CLIENT" 
    cstoreFolder.HostPort = 1000 
    cstoreFolder.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") 
 
    AddHandler cstoreFolder.BeforeAssociateRequest, AddressOf cstoreFolder_BeforeAssociateRequest 
    AddHandler cstoreFolder.AfterAssociateRequest, AddressOf cstoreFolder_AfterAssociateRequest 
    AddHandler cstoreFolder.BeforeCStore, AddressOf cstoreFolder_BeforeCStore 
    AddHandler cstoreFolder.AfterCStore, AddressOf cstoreFolder_AfterCStore 
    cstoreFolder.Compression = Compression.Native 
    cstoreFolder.Store(scp, LEAD_VARS.ImagesDir, "*.*", False) 
 
    DicomNet.Shutdown() 
    DicomEngine.Shutdown() 
End Sub 
 
Private Sub cstoreFolder_BeforeAssociateRequest(ByVal sender As Object, ByVal e As BeforeAssociateRequestEventArgs) 
    Console.WriteLine("Before AssociateRequest") 
End Sub 
 
Private Sub cstoreFolder_AfterAssociateRequest(ByVal sender As Object, ByVal e As AfterAssociateRequestEventArgs) 
    Dim scu As StoreScu = TryCast(sender, StoreScu) 
 
    Console.WriteLine("After AssociateRequest") 
    Dim i As Integer = 0 
    Do While i < e.Associate.PresentationContextCount 
        Dim pid As Byte = e.Associate.GetPresentationContextID(i) 
        Dim absSyntax As String = e.Associate.GetAbstract(pid) 
        Dim result As DicomAssociateAcceptResultType = e.Associate.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 cstoreFolder_BeforeCStore(ByVal sender As Object, ByVal e As BeforeCStoreEventArgs) 
    ' 
    ' Stop storing if we received an error 
    ' 
    If Not e.Error Is Nothing Then 
        e.Skip = SkipMethod.AllFiles 
    End If 
End Sub 
 
Private Sub cstoreFolder_AfterCStore(ByVal sender As Object, ByVal e As AfterCStoreEventArgs) 
    Dim msg As String 
 
    msg = String.Format("{0} store complete. Status: {1}", e.FileInfo.FullName, e.Status) 
    Console.WriteLine(msg) 
End Sub 
 
 
Public NotInheritable Class LEAD_VARS 
   Public Const ImagesDir As String = "C:\LEADTOOLS21\Resources\Images" 
End Class 
Requirements

Target Platforms

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

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