Available in LEADTOOLS Medical Imaging toolkits. |
#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
LTDIC 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
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); }