comparison OrthancServer/OrthancRestApi.cpp @ 436:d51186bf7602

read access to metadata
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 15 May 2013 16:28:00 +0200
parents ccf3a0a43dac
children beca6747945e
comparison
equal deleted inserted replaced
435:28ba73274919 436:d51186bf7602
1495 ResourceType_Patient, call); 1495 ResourceType_Patient, call);
1496 } 1496 }
1497 } 1497 }
1498 1498
1499 1499
1500 // Handling of metadata -----------------------------------------------------
1501
1502 template <enum ResourceType resourceType>
1503 static void ListMetadata(RestApi::GetCall& call)
1504 {
1505 RETRIEVE_CONTEXT(call);
1506
1507 std::string publicId = call.GetUriComponent("id", "");
1508 std::list<MetadataType> metadata;
1509 if (context.GetIndex().ListAvailableMetadata(metadata, publicId))
1510 {
1511 Json::Value result = Json::arrayValue;
1512
1513 for (std::list<MetadataType>::const_iterator
1514 it = metadata.begin(); it != metadata.end(); it++)
1515 {
1516 result.append(EnumerationToString(*it));
1517 }
1518
1519 call.GetOutput().AnswerJson(result);
1520 }
1521 }
1522
1523
1524 template <enum ResourceType resourceType>
1525 static void GetMetadata(RestApi::GetCall& call)
1526 {
1527 RETRIEVE_CONTEXT(call);
1528
1529 std::string publicId = call.GetUriComponent("id", "");
1530 std::string name = call.GetUriComponent("name", "");
1531 MetadataType metadata = StringToMetadata(name);
1532
1533 std::string value;
1534 if (context.GetIndex().LookupMetadata(value, publicId, metadata))
1535 {
1536 call.GetOutput().AnswerBuffer(value, "text/plain");
1537 }
1538 }
1539
1500 1540
1501 // Registration of the various REST handlers -------------------------------- 1541 // Registration of the various REST handlers --------------------------------
1502 1542
1503 OrthancRestApi::OrthancRestApi(ServerContext& context) : 1543 OrthancRestApi::OrthancRestApi(ServerContext& context) :
1504 context_(context) 1544 context_(context)
1530 1570
1531 Register("/patients/{id}/archive", GetArchive<ResourceType_Patient>); 1571 Register("/patients/{id}/archive", GetArchive<ResourceType_Patient>);
1532 Register("/studies/{id}/archive", GetArchive<ResourceType_Study>); 1572 Register("/studies/{id}/archive", GetArchive<ResourceType_Study>);
1533 Register("/series/{id}/archive", GetArchive<ResourceType_Series>); 1573 Register("/series/{id}/archive", GetArchive<ResourceType_Series>);
1534 1574
1575 Register("/instances/{id}/metadata", ListMetadata<ResourceType_Instance>);
1576 Register("/instances/{id}/metadata/{name}", GetMetadata<ResourceType_Instance>);
1577 Register("/patients/{id}/metadata", ListMetadata<ResourceType_Patient>);
1578 Register("/patients/{id}/metadata/{name}", GetMetadata<ResourceType_Patient>);
1579 Register("/series/{id}/metadata", ListMetadata<ResourceType_Series>);
1580 Register("/series/{id}/metadata/{name}", GetMetadata<ResourceType_Series>);
1581 Register("/studies/{id}/metadata", ListMetadata<ResourceType_Study>);
1582 Register("/studies/{id}/metadata/{name}", GetMetadata<ResourceType_Study>);
1583
1535 Register("/patients/{id}/protected", IsProtectedPatient); 1584 Register("/patients/{id}/protected", IsProtectedPatient);
1536 Register("/patients/{id}/protected", SetPatientProtection); 1585 Register("/patients/{id}/protected", SetPatientProtection);
1537 Register("/instances/{id}/file", GetInstanceFile); 1586 Register("/instances/{id}/file", GetInstanceFile);
1538 Register("/instances/{id}/tags", GetInstanceTags<false>); 1587 Register("/instances/{id}/tags", GetInstanceTags<false>);
1539 Register("/instances/{id}/simplified-tags", GetInstanceTags<true>); 1588 Register("/instances/{id}/simplified-tags", GetInstanceTags<true>);