LDicomNet::SendNSetRequest

Summary

Sends an N-GET-RSP message to a peer member of a connection. This function is available in the PACS Imaging Toolkit.

Syntax

#include "ltdic.h"

L_INT LDicomNet::SendNSetRequest(nPresentationID, nMessageID, pszClass, pszInstance, pDS)

Parameters

L_UCHAR nPresentationID

Presentation ID. The presentation ID provides information about both the class type of the data and the transfer syntax to use when transferring the data.

L_UINT16 nMessageID

Message ID. Each message sent by a member of a connection should have a unique ID. Since a member of a connection may send several messages, this ID allows that member to identify when a specific request has been completed.

L_TCHAR * pszClass

Class affected by the request. This will be an SOP Class or an SOP MetaClass.

L_TCHAR * pszInstance

The instance of the class. A server may, for example, have three instances of the Nuclear Medicine Class. This value identifies the data with a specific instance.

LDicomDS *pDS

Data set that contains the new information to set.

Returns

Value Meaning
0 SUCCESS
>0 An error occurred. Refer to Return Codes.

Comments

Calling this function generates a call to LDicomNet::OnReceiveNSetRequest on the SCP. The SCP should respond by calling LDicomNet::SendNSetResponse which will generate a call to LDicomNet::OnReceiveNSetResponse.

Required DLLs and Libraries

Platforms

Win32, x64

See Also

Functions

Topics

Example

This example sends an N-Set request to the server that changes the patient id of an SOP Instance
In this example:

  1. LMyDicomNet is a class derived from LDicomNet
  2. LMyDicomNet has the following member variables:
    m_nClientOrServer: can be (STATUS_NONE, STATUS_SERVER, STATUS_CLIENT)
    identifies the LMyDicomNet object as a server or a client
    m_nDataCommand: can be (COMMAND_C_MOVE,COMMAND_C_GET)
    set so the server knows how a C-Store Response was generated
  3. m_pDicomNet points to a valid LMyDicomNet object
    LMyDicomNet *m_pDicomNet

  4. A connection exists between client and server

  5. An association exists between the client and server
    L_INT LDicomNet__SendNSetRequestExample(LMyDicomNet *m_pDicomNet) 
    { 
       L_INT nRet; 
       CString strMsg = TEXT("N-Set\n"); 
        
       //Choose an SOP Class to find 
       CString strClassUID = UID_SC_IMAGE_STORAGE; 
        
       //Choose an SOP Instance to modify 
       CString strInstanceUID = TEXT("1.1.1.1"); 
        
       //create the data set that encodes the changed element(s) 
       LDicomDS DicomDS; 
       DicomDS.InitDS(CLASS_UNKNOWN, 0); 
        
       pDICOMTAG pDicomTag = LDicomTag::Find(TAG_PATIENT_ID); 
        
       pDICOMELEMENT pElement = DicomDS.InsertElement(  
          NULL,                      //pDICOMELEMENT pNeighbor 
          FALSE,                     //L_BOOL bChild 
          TAG_PATIENT_ID,            //L_UINT32 nTag 
          pDicomTag->nVR,            //L_UINT16 nVR 
          FALSE,                     //L_BOOL bSequence, 
          0                        //L_UINT32 nIndex 
          ); 
        
       //Choose new patient ID 
       CString strNewPatientID = TEXT("123-45-6789"); 
       DicomDS.SetStringValue(pElement, (L_TCHAR *)(LPCTSTR)strNewPatientID, 1, 
        DICOM_CHARACTER_SET_DEFAULT); 
        
       //Get the associate object 
       LDicomAssociate *pDicomAssociate = m_pDicomNet->GetAssociate(); 
        
       //Is class supported in the assocation? 
       L_UCHAR nPresentationID = pDicomAssociate->FindAbstract((L_TCHAR *)(LPCTSTR)strClassUID); 
        
       //nPresentationID must be odd--0 indicates failure 
       if (nPresentationID==0) 
       { 
          CString strTmp; 
          strTmp.Format(TEXT("Abstract Syntax[%s] Not Included in the Association"), strClassUID); 
          strMsg = strMsg + strTmp; 
       } 
       else //success 
       {       
          //send a request 
          L_UINT16 uUniqueID = 99; 
          nRet =m_pDicomNet->SendNSetRequest( nPresentationID,  
                                        uUniqueID,  
                                       (L_TCHAR *)(LPCTSTR)strClassUID,  
                                       (L_TCHAR *)(LPCTSTR)strInstanceUID,  
                                        &DicomDS 
                                      ); 
          if(nRet > 0) 
             return nRet; 
       } 
       AfxMessageBox(strMsg); 
     
       return DICOM_SUCCESS; 
    } 
Help Version 22.0.2022.12.7
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.

LEADTOOLS DICOM C++ Class Library Help
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.