| LEADTOOLS DICOM C DLL Help > Function References > L_DicomSendNGetResponse | 
#include "ltdic.h"
L_LTDIC_API L_INT L_DicomSendNGetResponse(hNet, nPresentationID, nMessageID, pszClass, pszInstance, nStatus, hDS)
| HDICOMNET hNet; | /* a DICOM Network handle */ | 
| L_UCHAR nPresentationID; | /* presentation ID */ | 
| L_UINT16 nMessageID; | /* message ID */ | 
| L_TCHAR * pszClass; | /* class type */ | 
| L_TCHAR * pszInstance; | /* instance */ | 
| L_UINT16 nStatus; | /* status */ | 
| HDICOMDS hDS; | /* data set */ | 
Sends an N-GET-RSP message to a peer member of a connection.
| Parameter | Description | 
| hNet | A DICOM Network handle to the peer member of the connection. | 
| 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. | 
| 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. | 
| pszClass | Class affected by the request. This will be an SOP Class or an SOP MetaClass. | 
| 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. | 
| nStatus | The status of the original request. For a list of possible values, refer to Status Constants. | 
| hDS | Data set that contains the retrieved elements. | 
Returns
| DICOM_SUCCESS | The function was successful. | 
| >0 | An error occurred. Refer to Return Codes. | 
Comments
L_DicomSendNGetResponse is sent by the SCP in response to an L_DicomSendNGetRequest call placed by an SCU. This generates a call to RECEIVENGETRESPONSECALLBACK on the SCU.
Required DLLs and Libraries
| For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application | 
Win32, x64, Linux.
See Also
| Functions: | L_DicomSendNGetRequest, RECEIVENGETREQUESTCALLBACK, RECEIVENGETRESPONSECALLBACK | 
| Topics: | 
Example
#define MAKE_IMAGE_PATH(pFileName) TEXT("C:\\Users\\Public\\Documents\\LEADTOOLS Images\\")pFileName
#include <windowsx.h>
static HWND hList;      /* handle to list box */
L_INT16 PerformNGETCommand(
   L_TCHAR* pszClass,
   L_TCHAR* pszInstance,
   HDICOMDS hDS,
   L_UINT32* pnAttribute,
   L_UINT32 nCount)
{
   UNREFERENCED_PARAMETER(pszInstance);
   UNREFERENCED_PARAMETER(pszClass);
   L_INT16 nRet;
   L_UINT32 x;
   HDICOMDS hDSTemp=NULL;
   pDICOMELEMENT pElement=NULL;
   pDICOMELEMENT pNewElement=NULL;
   pDICOMTAG pTag=NULL;
   L_TCHAR  *pVal=NULL;
   L_UINT32 uSize;
   L_UINT32 uCount;
   
   /* 
       this sample simply loads a fixed data set
       here, a server should check the class and instance against
       all SOP classes it manages, and then fill out hDS from the
       correctly matching instance, if one is found
   */
       
   hDSTemp = L_DicomCreateDS(NULL);
   nRet = L_DicomLoadDS(hDSTemp, MAKE_IMAGE_PATH(TEXT("IMAGE1.dcm")), 0);
   L_DicomInitDS(hDS, CLASS_UNKNOWN, 0);
   L_DicomResetDS(hDS);
           
   if(nRet != DICOM_SUCCESS)
   {
      L_DicomFreeDS(hDSTemp);
      return nRet;
   }
   
   for(x=0; x<nCount; x++)
   {
      /* get each element */
      pTag = L_DicomFindTag(pnAttribute[x]);
      pElement = L_DicomFindFirstElement(hDSTemp, NULL, pnAttribute[x], FALSE);
      /* in this sample, if we don't find the requested tag, we */
      /* do not return an empty element! */
      if(pElement)
      {
         /* copy the element value */
         uCount = L_DicomGetCountValue(hDSTemp, pElement);
         uSize = L_DicomGetConvertValue(hDSTemp, pElement, NULL, 0);
         pVal = (L_TCHAR *)GlobalAllocPtr(GMEM_MOVEABLE, uSize * sizeof(L_TCHAR));
         L_DicomGetConvertValue(hDSTemp, pElement, pVal, uSize);
         pNewElement = L_DicomInsertElement(hDS, NULL, FALSE, pnAttribute[x], pTag->nVR, FALSE, 0);
         if (pElement == NULL)
         {
            L_DicomFreeDS(hDS);
            return DICOM_ERROR_MEMORY;
         }
         L_DicomSetConvertValue(hDS, pNewElement, pVal, uCount);
         GlobalFreePtr(pVal);
      }
   }
   L_DicomFreeDS(hDSTemp);
   return(DICOM_SUCCESS);
}
L_VOID EXT_CALLBACK OnReceiveNGetRequest(HDICOMNET hNet, L_UCHAR nPresentationID, L_UINT16 nMessageID, L_TCHAR *pszClass, L_TCHAR *pszInstance, L_UINT32 *pnAttribute, L_UINT32 nCount, L_VOID *pUserData)
{
   UNREFERENCED_PARAMETER(pUserData);
   UNREFERENCED_PARAMETER(pszInstance);
   UNREFERENCED_PARAMETER(pszClass);
   L_TCHAR szMsg[800];
   HDICOMDS hDS=NULL;
   L_INT nRet;
   ListBox_AddString(hList, TEXT("Command Set - N-GET-REQUEST"));
   wsprintf(szMsg, TEXT("     Presentation ID: %d"), nPresentationID);
   ListBox_AddString(hList, szMsg);
   wsprintf(szMsg, TEXT("     Message ID: %d"), nMessageID);
   ListBox_AddString(hList, szMsg);
   wsprintf(szMsg, TEXT("     Affected SOP Class: %s"), pszClass);
   ListBox_AddString(hList, szMsg);
   wsprintf(szMsg, TEXT("     Affected SOP Instance: %s"), pszInstance);
   ListBox_AddString(hList, szMsg);
   
   /* this function will fill the values the data set elements in LEADDICOM2.hDicomDS */
   hDS = L_DicomCreateDS(NULL);
   
   nRet = PerformNGETCommand(pszClass, pszInstance, hDS, pnAttribute, nCount);
   if(nRet != DICOM_SUCCESS)
      nRet = COMMAND_STATUS_NO_SUCH_OBJECT_INSTANCE;
   /* send a response */
   L_DicomSendNGetResponse(hNet, nPresentationID, nMessageID, pszClass, pszInstance, (L_UINT16) nRet, (nRet==DICOM_SUCCESS)?hDS:0);
   L_DicomFreeDS(hDS);
}