Mercurial > hg > orthanc
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 : |