Mercurial > hg > orthanc
diff OrthancServer/main.cpp @ 1786:164d78911382 worklists
primitives to handle dicom worklists
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 18 Nov 2015 12:00:14 +0100 |
parents | 5ad4e4d92ecb |
children | 1b1d5470233f |
line wrap: on
line diff
--- a/OrthancServer/main.cpp Wed Nov 18 09:56:34 2015 +0100 +++ b/OrthancServer/main.cpp Wed Nov 18 12:00:14 2015 +0100 @@ -89,10 +89,32 @@ }; +class OrthancWorklistRequestHandler : public IWorklistRequestHandler +{ +private: + ServerContext& server_; + +public: + OrthancWorklistRequestHandler(ServerContext& context) : + server_(context) + { + } + + virtual bool Handle(DicomWorklistAnswers& answers, + const ParsedDicomFile& query, + const std::string& remoteIp, + const std::string& remoteAet) + { + printf("Worklist\n"); + return true; + } +}; + class MyDicomServerFactory : public IStoreRequestHandlerFactory, - public IFindRequestHandlerFactory, + public IFindRequestHandlerFactory, + public IWorklistRequestHandlerFactory, public IMoveRequestHandlerFactory { private: @@ -143,6 +165,11 @@ return new OrthancMoveRequestHandler(context_); } + virtual IWorklistRequestHandler* ConstructWorklistRequestHandler() + { + return new OrthancWorklistRequestHandler(context_); + } + void Done() { } @@ -550,6 +577,7 @@ PrintErrorCode(ErrorCode_DatabaseNotInitialized, "Plugin trying to call the database during its initialization"); PrintErrorCode(ErrorCode_SslDisabled, "Orthanc has been built without SSL support"); PrintErrorCode(ErrorCode_CannotOrderSlices, "Unable to order the slices of the series"); + PrintErrorCode(ErrorCode_NoWorklistHandler, "No request handler factory for DICOM C-Find Modality SCP"); } std::cout << std::endl; @@ -704,6 +732,10 @@ dicomServer.SetStoreRequestHandlerFactory(serverFactory); dicomServer.SetMoveRequestHandlerFactory(serverFactory); dicomServer.SetFindRequestHandlerFactory(serverFactory); + + // TODO - Disable the following line if no worklist plugin is available + dicomServer.SetWorklistRequestHandlerFactory(serverFactory); + dicomServer.SetPortNumber(Configuration::GetGlobalIntegerParameter("DicomPort", 4242)); dicomServer.SetApplicationEntityTitle(Configuration::GetGlobalStringParameter("DicomAet", "ORTHANC")); dicomServer.SetApplicationEntityFilter(dicomFilter);