comparison OrthancServer/Sources/OrthancRestApi/OrthancRestResources.cpp @ 5606:6e2dad336446 find-refactoring

added "IsStable" field in expanded resources
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 08 May 2024 10:46:11 +0200
parents e4e7ca3d206e
children a3732285f8b6
comparison
equal deleted inserted replaced
5605:3f24eb4013d8 5606:6e2dad336446
266 } 266 }
267 } 267 }
268 268
269 269
270 void Expand(Json::Value& target, 270 void Expand(Json::Value& target,
271 const FindResponse::Resource& resource) const 271 const FindResponse::Resource& resource,
272 { 272 ServerIndex& index) const
273 /** 273 {
274
275 TODO-FIND:
276
277 - Metadata / Series / ExpectedNumberOfInstances
278
279 - Metadata / Series / Status
280
281 - Metadata / Instance / FileSize
282
283 - Metadata / Instance / FileUuid
284
285 - Metadata / Instance / IndexInSeries
286
287 - Metadata / AnonymizedFrom
288
289 - Metadata / ModifiedFrom
290
291 **/
292
293 /** 274 /**
294 * This method closely follows "SerializeExpandedResource()" in 275 * This method closely follows "SerializeExpandedResource()" in
295 * "ServerContext.cpp" from Orthanc 1.12.3. 276 * "ServerContext.cpp" from Orthanc 1.12.3.
296 **/ 277 **/
297 278
298 if (resource.GetLevel() != request_.GetLevel()) 279 if (resource.GetLevel() != request_.GetLevel())
299 { 280 {
300 throw OrthancException(ErrorCode_InternalError); 281 throw OrthancException(ErrorCode_InternalError);
282 }
283
284 if (!requestedTags_.empty())
285 {
286 throw OrthancException(ErrorCode_NotImplemented);
301 } 287 }
302 288
303 target = Json::objectValue; 289 target = Json::objectValue;
304 290
305 target["Type"] = GetResourceTypeText(resource.GetLevel(), false, true); 291 target["Type"] = GetResourceTypeText(resource.GetLevel(), false, true);
426 412
427 if (resource.GetLevel() == ResourceType_Patient || 413 if (resource.GetLevel() == ResourceType_Patient ||
428 resource.GetLevel() == ResourceType_Study || 414 resource.GetLevel() == ResourceType_Study ||
429 resource.GetLevel() == ResourceType_Series) 415 resource.GetLevel() == ResourceType_Series)
430 { 416 {
431 // TODO-FIND: Stable 417 target["IsStable"] = !index.IsUnstableResource(resource.GetLevel(), resource.GetInternalId());
432
433 /*
434 if (resource.IsStable())
435 {
436 target["IsStable"] = true;
437 }
438 */
439 418
440 if (resource.LookupMetadata(s, resource.GetLevel(), MetadataType_LastUpdate)) 419 if (resource.LookupMetadata(s, resource.GetLevel(), MetadataType_LastUpdate))
441 { 420 {
442 target["LastUpdate"] = s; 421 target["LastUpdate"] = s;
443 } 422 }
423 }
424
425 {
426 // TODO-FIND : (expandFlags & ExpandResourceFlags_IncludeMainDicomTags)
444 } 427 }
445 428
446 { 429 {
447 Json::Value labels = Json::arrayValue; 430 Json::Value labels = Json::arrayValue;
448 431
453 } 436 }
454 437
455 target["Labels"] = labels; 438 target["Labels"] = labels;
456 } 439 }
457 440
458 if (includeAllMetadata_) 441 if (includeAllMetadata_) // new in Orthanc 1.12.4
459 { 442 {
460 const std::map<MetadataType, std::string>& m = resource.GetMetadata(resource.GetLevel()); 443 const std::map<MetadataType, std::string>& m = resource.GetMetadata(resource.GetLevel());
461 444
462 Json::Value metadata = Json::objectValue; 445 Json::Value metadata = Json::objectValue;
463 446
538 if (expand_) 521 if (expand_)
539 { 522 {
540 for (size_t i = 0; i < response.GetSize(); i++) 523 for (size_t i = 0; i < response.GetSize(); i++)
541 { 524 {
542 Json::Value item; 525 Json::Value item;
543 Expand(item, response.GetResource(i)); 526 Expand(item, response.GetResource(i), context.GetIndex());
544 527
545 #if 0 528 #if 0
546 target.append(item); 529 target.append(item);
547 #else 530 #else
548 context.AppendFindResponse(target, request_, response.GetResource(i), format_, 531 context.AppendFindResponse(target, request_, response.GetResource(i), format_,