comparison OrthancServer/Sources/OrthancWebDav.cpp @ 4460:6831de40acd9

New metadata automatically computed at the series level: "RemoteAET"
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 20 Jan 2021 14:20:37 +0100
parents d9473bd5ed43
children 8f9090b137f1
comparison
equal deleted inserted replaced
4459:16392fe89ce0 4460:6831de40acd9
64 64
65 65
66 static void LookupTime(boost::posix_time::ptime& target, 66 static void LookupTime(boost::posix_time::ptime& target,
67 ServerContext& context, 67 ServerContext& context,
68 const std::string& publicId, 68 const std::string& publicId,
69 ResourceType level,
69 MetadataType metadata) 70 MetadataType metadata)
70 { 71 {
71 std::string value; 72 std::string value;
72 if (context.GetIndex().LookupMetadata(value, publicId, metadata)) 73 if (context.GetIndex().LookupMetadata(value, publicId, level, metadata))
73 { 74 {
74 try 75 try
75 { 76 {
76 target = boost::posix_time::from_iso_string(value); 77 target = boost::posix_time::from_iso_string(value);
77 return; 78 return;
166 } 167 }
167 168
168 if (resource.get() != NULL) 169 if (resource.get() != NULL)
169 { 170 {
170 boost::posix_time::ptime t; 171 boost::posix_time::ptime t;
171 LookupTime(t, context_, publicId, timeMetadata); 172 LookupTime(t, context_, publicId, level_, timeMetadata);
172 resource->SetCreationTime(t); 173 resource->SetCreationTime(t);
173 target_.AddResource(resource.release()); 174 target_.AddResource(resource.release());
174 } 175 }
175 } 176 }
176 } 177 }
219 { 220 {
220 success_ = false; // Two matches => Error 221 success_ = false; // Two matches => Error
221 } 222 }
222 else 223 else
223 { 224 {
224 LookupTime(time_, context_, publicId, MetadataType_Instance_ReceptionDate); 225 LookupTime(time_, context_, publicId, ResourceType_Instance, MetadataType_Instance_ReceptionDate);
225 context_.ReadDicom(target_, publicId); 226 context_.ReadDicom(target_, publicId);
226 success_ = true; 227 success_ = true;
227 } 228 }
228 } 229 }
229 }; 230 };
502 503
503 for (std::list<std::string>::const_iterator 504 for (std::list<std::string>::const_iterator
504 it = resources.begin(); it != resources.end(); ++it) 505 it = resources.begin(); it != resources.end(); ++it)
505 { 506 {
506 boost::posix_time::ptime time; 507 boost::posix_time::ptime time;
507 LookupTime(time, context_, *it, MetadataType_Instance_ReceptionDate); 508 LookupTime(time, context_, *it, ResourceType_Instance, MetadataType_Instance_ReceptionDate);
508 509
509 FileInfo info; 510 FileInfo info;
510 if (context_.GetIndex().LookupAttachment(info, *it, FileContentType_Dicom)) 511 if (context_.GetIndex().LookupAttachment(info, *it, FileContentType_Dicom))
511 { 512 {
512 std::unique_ptr<File> resource(new File(*it + ".dcm")); 513 std::unique_ptr<File> resource(new File(*it + ".dcm"));
535 { 536 {
536 try 537 try
537 { 538 {
538 mime = MimeType_Dicom; 539 mime = MimeType_Dicom;
539 context_.ReadDicom(content, instanceId); 540 context_.ReadDicom(content, instanceId);
540 LookupTime(time, context_, instanceId, MetadataType_Instance_ReceptionDate); 541 LookupTime(time, context_, instanceId, ResourceType_Instance, MetadataType_Instance_ReceptionDate);
541 return true; 542 return true;
542 } 543 }
543 catch (OrthancException&) 544 catch (OrthancException&)
544 { 545 {
545 // File was removed 546 // File was removed
802 const ResourcesIndex::Map& paths = index_->GetPathToResource(); 803 const ResourcesIndex::Map& paths = index_->GetPathToResource();
803 804
804 for (ResourcesIndex::Map::const_iterator it = paths.begin(); it != paths.end(); ++it) 805 for (ResourcesIndex::Map::const_iterator it = paths.begin(); it != paths.end(); ++it)
805 { 806 {
806 boost::posix_time::ptime time; 807 boost::posix_time::ptime time;
807 LookupTime(time, context_, it->second, timeMetadata_); 808 LookupTime(time, context_, it->second, index_->GetLevel(), timeMetadata_);
808 809
809 std::unique_ptr<IWebDavBucket::Resource> resource(new IWebDavBucket::Folder(it->first)); 810 std::unique_ptr<IWebDavBucket::Resource> resource(new IWebDavBucket::Folder(it->first));
810 resource->SetCreationTime(time); 811 resource->SetCreationTime(time);
811 target.AddResource(resource.release()); 812 target.AddResource(resource.release());
812 } 813 }