Mercurial > hg > orthanc
diff OrthancServer/Sources/LuaScripting.cpp @ 4796:94616af363ec filter-store-instance
added ReceivedCStoreInstanceFilter lua callback + OrthancPluginRegisterIncomingCStoreInstanceFilter in sdk
author | Alain Mazy <am@osimis.io> |
---|---|
date | Fri, 01 Oct 2021 18:36:45 +0200 |
parents | 569d9ef165b1 |
children | 70d2a97ca8cb 7053502fbf97 |
line wrap: on
line diff
--- a/OrthancServer/Sources/LuaScripting.cpp Thu Sep 30 17:52:07 2021 +0200 +++ b/OrthancServer/Sources/LuaScripting.cpp Fri Oct 01 18:36:45 2021 +0200 @@ -43,6 +43,8 @@ #include "../../OrthancFramework/Sources/Logging.h" #include "../../OrthancFramework/Sources/Lua/LuaFunctionCall.h" +#include <dcmtk/dcmnet/dimse.h> + #include <OrthancServerResources.h> @@ -945,6 +947,41 @@ return true; } + uint16_t LuaScripting::FilterIncomingCStoreInstance(const DicomInstanceToStore& instance, + const Json::Value& simplified) + { + static const char* NAME = "ReceivedCStoreInstanceFilter"; + + boost::recursive_mutex::scoped_lock lock(mutex_); + + if (lua_.IsExistingFunction(NAME)) + { + LuaFunctionCall call(lua_, NAME); + call.PushJson(simplified); + + Json::Value origin; + instance.GetOrigin().Format(origin); + call.PushJson(origin); + + Json::Value info = Json::objectValue; + info["HasPixelData"] = instance.HasPixelData(); + + DicomTransferSyntax s; + if (instance.LookupTransferSyntax(s)) + { + info["TransferSyntaxUID"] = GetTransferSyntaxUid(s); + } + + call.PushJson(info); + + int result; + call.ExecuteToInt(result); + return static_cast<uint16_t>(result); + } + + return STATUS_Success; + } + void LuaScripting::Execute(const std::string& command) {