Mercurial > hg > orthanc
diff Plugins/Include/orthanc/OrthancCPlugin.h @ 1801:2c60c357ee3e worklists
sdk primitives to handle worklists
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 20 Nov 2015 14:33:41 +0100 |
parents | 30e97a1f4093 |
children | 138664eb59de |
line wrap: on
line diff
--- a/Plugins/Include/orthanc/OrthancCPlugin.h Fri Nov 20 13:53:20 2015 +0100 +++ b/Plugins/Include/orthanc/OrthancCPlugin.h Fri Nov 20 14:33:41 2015 +0100 @@ -469,6 +469,9 @@ /* Primitives for handling worklists */ _OrthancPluginService_AddWorklistAnswer = 7000, + _OrthancPluginService_MarkWorklistAnswersIncomplete = 7001, + _OrthancPluginService_IsWorklistMatch = 7002, + _OrthancPluginService_GetWorklistQueryDicom = 7003, _OrthancPluginService_INTERNAL = 0x7fffffff } _OrthancPluginService; @@ -4100,27 +4103,91 @@ typedef struct { - OrthancPluginWorklistAnswers* target; - const void* answerDicom; - uint32_t answerSize; - } _OrthancPluginAddWorklistAnswer; - - - ORTHANC_PLUGIN_INLINE OrthancPluginErrorCode OrthancPluginAddWorklistAnswer( + OrthancPluginWorklistAnswers* answers; + const void* dicom; + uint32_t size; + } _OrthancPluginWorklistAnswersOperation; + + ORTHANC_PLUGIN_INLINE OrthancPluginErrorCode OrthancPluginWorklistAnswersOperation( OrthancPluginContext* context, - OrthancPluginWorklistAnswers* target, - const void* answerDicom, - uint32_t answerSize) + OrthancPluginWorklistAnswers* answers, + const void* dicom, + uint32_t size) { - _OrthancPluginAddWorklistAnswer params; - params.target = target; - params.answerDicom = answerDicom; - params.answerSize = answerSize; + _OrthancPluginWorklistAnswersOperation params; + params.answers = answers; + params.dicom = dicom; + params.size = size; return context->InvokeService(context, _OrthancPluginService_AddWorklistAnswer, ¶ms); } + ORTHANC_PLUGIN_INLINE OrthancPluginErrorCode OrthancPluginMarkWorklistAnswersIncomplete( + OrthancPluginContext* context, + OrthancPluginWorklistAnswers* answers) + { + _OrthancPluginWorklistAnswersOperation params; + params.answers = answers; + params.dicom = NULL; + params.size = 0; + + return context->InvokeService(context, _OrthancPluginService_MarkWorklistAnswersIncomplete, ¶ms); + } + + + typedef struct + { + const OrthancPluginWorklistQuery* query; + const void* dicom; + uint32_t size; + int32_t* isMatch; + OrthancPluginMemoryBuffer* target; + } _OrthancPluginWorklistQueryOperation; + + ORTHANC_PLUGIN_INLINE int32_t OrthancPluginIsWorklistMatch( + OrthancPluginContext* context, + const OrthancPluginWorklistQuery* query, + const void* dicom, + uint32_t size) + { + int32_t isMatch = 0; + + _OrthancPluginWorklistQueryOperation params; + params.query = query; + params.dicom = dicom; + params.size = size; + params.isMatch = &isMatch; + params.target = NULL; + + if (context->InvokeService(context, _OrthancPluginService_IsWorklistMatch, ¶ms) == OrthancPluginErrorCode_Success) + { + return isMatch; + } + else + { + /* Error: Assume non-match */ + return 0; + } + } + + + ORTHANC_PLUGIN_INLINE OrthancPluginErrorCode OrthancPluginGetWorklistQueryDicom( + OrthancPluginContext* context, + OrthancPluginMemoryBuffer* target, + const OrthancPluginWorklistQuery* query) + { + _OrthancPluginWorklistQueryOperation params; + params.query = query; + params.dicom = NULL; + params.size = 0; + params.isMatch = NULL; + params.target = target; + + return context->InvokeService(context, _OrthancPluginService_GetWorklistQueryDicom, ¶ms); + } + + #ifdef __cplusplus } #endif