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