comparison OrthancServer/OrthancRestApi/OrthancRestResources.cpp @ 3025:039a9d262d64 db-changes

preparing to speed up find in databases
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 17 Dec 2018 17:05:28 +0100
parents 2cbafb5d5a62
children fd587cf51a89
comparison
equal deleted inserted replaced
3024:ef17a587e10d 3025:039a9d262d64
38 #include "../../Core/DicomParsing/FromDcmtkBridge.h" 38 #include "../../Core/DicomParsing/FromDcmtkBridge.h"
39 #include "../../Core/DicomParsing/Internals/DicomImageDecoder.h" 39 #include "../../Core/DicomParsing/Internals/DicomImageDecoder.h"
40 #include "../../Core/HttpServer/HttpContentNegociation.h" 40 #include "../../Core/HttpServer/HttpContentNegociation.h"
41 #include "../../Core/Logging.h" 41 #include "../../Core/Logging.h"
42 #include "../OrthancConfiguration.h" 42 #include "../OrthancConfiguration.h"
43 #include "../Search/DatabaseLookup.h"
43 #include "../Search/LookupResource.h" 44 #include "../Search/LookupResource.h"
44 #include "../ServerContext.h" 45 #include "../ServerContext.h"
45 #include "../ServerToolbox.h" 46 #include "../ServerToolbox.h"
46 #include "../SliceOrdering.h" 47 #include "../SliceOrdering.h"
47 48
1401 } 1402 }
1402 1403
1403 std::string level = request[KEY_LEVEL].asString(); 1404 std::string level = request[KEY_LEVEL].asString();
1404 1405
1405 LookupResource query(StringToResourceType(level.c_str())); 1406 LookupResource query(StringToResourceType(level.c_str()));
1407 DatabaseLookup query2;
1406 1408
1407 Json::Value::Members members = request[KEY_QUERY].getMemberNames(); 1409 Json::Value::Members members = request[KEY_QUERY].getMemberNames();
1408 for (size_t i = 0; i < members.size(); i++) 1410 for (size_t i = 0; i < members.size(); i++)
1409 { 1411 {
1410 if (request[KEY_QUERY][members[i]].type() != Json::stringValue) 1412 if (request[KEY_QUERY][members[i]].type() != Json::stringValue)
1414 } 1416 }
1415 1417
1416 query.AddDicomConstraint(FromDcmtkBridge::ParseTag(members[i]), 1418 query.AddDicomConstraint(FromDcmtkBridge::ParseTag(members[i]),
1417 request[KEY_QUERY][members[i]].asString(), 1419 request[KEY_QUERY][members[i]].asString(),
1418 caseSensitive); 1420 caseSensitive);
1421 query2.AddDicomConstraint(FromDcmtkBridge::ParseTag(members[i]),
1422 request[KEY_QUERY][members[i]].asString(),
1423 caseSensitive, true);
1419 } 1424 }
1420 1425
1421 FindVisitor visitor; 1426 FindVisitor visitor;
1422 context.Apply(visitor, query, since, limit); 1427 context.Apply(visitor, query, query2, since, limit);
1423 visitor.Answer(call.GetOutput(), context.GetIndex(), query.GetLevel(), expand); 1428 visitor.Answer(call.GetOutput(), context.GetIndex(), query.GetLevel(), expand);
1424 } 1429 }
1425 } 1430 }
1426 1431
1427 1432