comparison OrthancServer/main.cpp @ 1797:23722a191e4e worklists

worklists are working
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 20 Nov 2015 11:37:58 +0100
parents 5e08a5fe6b27
children 4f01c9d73f02
comparison
equal deleted inserted replaced
1796:5e08a5fe6b27 1797:23722a191e4e
55 #include "Search/HierarchicalMatcher.h" 55 #include "Search/HierarchicalMatcher.h"
56 56
57 using namespace Orthanc; 57 using namespace Orthanc;
58 58
59 59
60
61
62
60 class OrthancStoreRequestHandler : public IStoreRequestHandler 63 class OrthancStoreRequestHandler : public IStoreRequestHandler
61 { 64 {
62 private: 65 private:
63 ServerContext& server_; 66 ServerContext& server_;
64 67
89 } 92 }
90 } 93 }
91 }; 94 };
92 95
93 96
97
98
94 class OrthancWorklistRequestHandler : public IWorklistRequestHandler 99 class OrthancWorklistRequestHandler : public IWorklistRequestHandler
95 { 100 {
96 private: 101 private:
97 ServerContext& server_; 102 ServerContext& server_;
98 103
105 virtual bool Handle(DicomFindAnswers& answers, 110 virtual bool Handle(DicomFindAnswers& answers,
106 ParsedDicomFile& query, 111 ParsedDicomFile& query,
107 const std::string& remoteIp, 112 const std::string& remoteIp,
108 const std::string& remoteAet) 113 const std::string& remoteAet)
109 { 114 {
110 printf("=====================================================================\n");
111 printf("Worklist\n");
112
113 bool caseSensitivePN = Configuration::GetGlobalBoolParameter("CaseSensitivePN", false); 115 bool caseSensitivePN = Configuration::GetGlobalBoolParameter("CaseSensitivePN", false);
114 HierarchicalMatcher matcher(query, caseSensitivePN); 116 HierarchicalMatcher matcher(query, caseSensitivePN);
115 117
116 std::cout << matcher.Format(); 118 boost::filesystem::path source("/tmp/worklists/db/ORTHANCTEST");
117 119 boost::filesystem::directory_iterator end;
118 for (unsigned int i = 1; i <= 10; i++) 120
119 { 121 try
120 std::string p = "/tmp/worklists/db/OFFIS/item" + boost::lexical_cast<std::string>(i) + ".wl"; 122 {
121 std::string s; 123 for (boost::filesystem::directory_iterator it(source); it != end; ++it)
122 Toolbox::ReadFile(s, p); 124 {
123 ParsedDicomFile f(s); 125 if (is_regular_file(it->status()))
124 std::cout << p << " => " << matcher.Match(f) << std::endl; 126 {
125 127 std::string extension = boost::filesystem::extension(it->path());
126 if (matcher.Match(f)) 128 Toolbox::ToLowerCase(extension);
127 { 129
128 std::auto_ptr<ParsedDicomFile> e(matcher.Extract(f)); 130 if (extension == ".wl")
129 131 {
130 Json::Value v; 132 std::string s;
131 e->ToJson(v, DicomToJsonFormat_Short, DicomToJsonFlags_Default, 0); 133 Toolbox::ReadFile(s, it->path().string());
132 std::cout << v; 134 ParsedDicomFile f(s);
133 } 135
134 } 136 if (matcher.Match(f))
135 137 {
136 return true; 138 std::auto_ptr<ParsedDicomFile> e(matcher.Extract(f));
139 answers.Add(*e);
140 }
141 }
142 }
143 }
144 }
145 catch (boost::filesystem::filesystem_error&)
146 {
147 LOG(ERROR) << "Inexistent folder while scanning for worklists: " << source;
148 }
149
150 return true; // All the worklists have been returned
137 } 151 }
138 }; 152 };
139 153
140 154
141 class MyDicomServerFactory : 155 class MyDicomServerFactory :