comparison Plugin/AccessedResource.cpp @ 109:7381a7674b36

wip: adding labels
author Alain Mazy <am@osimis.io>
date Fri, 18 Aug 2023 12:08:49 +0200
parents 1a13c4fbc9a1
children ba9d72ecdbc4
comparison
equal deleted inserted replaced
108:68ce6fd8b22a 109:7381a7674b36
22 22
23 namespace OrthancPlugins 23 namespace OrthancPlugins
24 { 24 {
25 AccessedResource::AccessedResource(AccessLevel level, 25 AccessedResource::AccessedResource(AccessLevel level,
26 const std::string& orthancId, 26 const std::string& orthancId,
27 const std::string& dicomUid) : 27 const std::string& dicomUid,
28 const std::set<std::string>& labels) :
28 level_(level), 29 level_(level),
29 orthancId_(orthancId), 30 orthancId_(orthancId),
30 dicomUid_(dicomUid) 31 dicomUid_(dicomUid),
32 labels_(labels)
31 { 33 {
32 if (level_ == AccessLevel_System && 34 if (level_ == AccessLevel_System &&
33 !dicomUid.empty()) 35 (!dicomUid.empty() || !labels.empty()))
34 { 36 {
35 // The "DICOM UID" makes no sense for custom Orthanc URIs 37 // The "DICOM UID" and labels make no sense for custom Orthanc URIs
36 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); 38 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
37 } 39 }
38 } 40 }
39 41
40 42
41 AccessedResource::AccessedResource(Orthanc::ResourceType level, 43 AccessedResource::AccessedResource(Orthanc::ResourceType level,
42 const std::string& orthancId, 44 const std::string& orthancId,
43 const std::string& dicomUid) : 45 const std::string& dicomUid,
46 const std::set<std::string>& labels) :
44 orthancId_(orthancId), 47 orthancId_(orthancId),
45 dicomUid_(dicomUid) 48 dicomUid_(dicomUid),
49 labels_(labels)
46 { 50 {
47 switch (level) 51 switch (level)
48 { 52 {
49 case Orthanc::ResourceType_Patient: 53 case Orthanc::ResourceType_Patient:
50 level_ = AccessLevel_Patient; 54 level_ = AccessLevel_Patient;
77 else 81 else
78 { 82 {
79 return dicomUid_; 83 return dicomUid_;
80 } 84 }
81 } 85 }
86
87 const std::set<std::string>& AccessedResource::GetLabels() const
88 {
89 if (level_ == AccessLevel_System)
90 {
91 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
92 }
93 else
94 {
95 return labels_;
96 }
97 }
98
82 } 99 }