L_DicomSendNGetResponse

Summary

Sends an N-GET-RSP message to a peer member of a connection.

Syntax

#include "ltdic.h"

L_LTDIC_API L_INT L_DicomSendNGetResponse(hNet, nPresentationID, nMessageID, pszClass, pszInstance, nStatus, hDS)

Parameters

HDICOMNET hNet

A DICOM Network handle to the peer member of the connection.

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.

L_UINT16 nStatus

The status of the original request. For a list of possible values, refer to Status Constants.

HDICOMDS hDS

Data set that contains the retrieved elements.

Returns

Value Meaning
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

Platforms

Win32, x64, Linux.

See Also

Functions

Topics

Example

#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); 
} 
Help Version 23.0.2024.7.1
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2024 LEAD Technologies, Inc. All Rights Reserved.

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