Mercurial > hg > orthanc-stone
annotate OrthancStone/Sources/Toolbox/OrthancDatasets/DicomWebDataset.cpp @ 2175:43ef60388fa2
removed useless function
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 22 Oct 2024 21:54:39 +0200 |
parents | 2410a171ebfb |
children |
rev | line source |
---|---|
2174
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
1 /** |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
2 * Stone of Orthanc |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
4 * Department, University Hospital of Liege, Belgium |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
5 * Copyright (C) 2017-2023 Osimis S.A., Belgium |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
6 * Copyright (C) 2021-2024 Sebastien Jodogne, ICTEAM UCLouvain, Belgium |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
7 * |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
8 * This program is free software: you can redistribute it and/or |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
9 * modify it under the terms of the GNU Lesser General Public License |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
10 * as published by the Free Software Foundation, either version 3 of |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
11 * the License, or (at your option) any later version. |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
12 * |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
13 * This program is distributed in the hope that it will be useful, but |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
14 * WITHOUT ANY WARRANTY; without even the implied warranty of |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
16 * Lesser General Public License for more details. |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
17 * |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
18 * You should have received a copy of the GNU Lesser General Public |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
19 * License along with this program. If not, see |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
20 * <http://www.gnu.org/licenses/>. |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
21 **/ |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
22 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
23 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
24 #include "DicomWebDataset.h" |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
25 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
26 #include <OrthancException.h> |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
27 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
28 #include <boost/lexical_cast.hpp> |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
29 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
30 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
31 static const char* const VALUE = "Value"; |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
32 static const char* const VR = "vr"; |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
33 static const char* const SQ = "SQ"; |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
34 static const char* const ALPHABETIC = "Alphabetic"; |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
35 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
36 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
37 namespace OrthancStone |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
38 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
39 static const Json::Value* GetValue(std::string& vr, |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
40 const Json::Value& node, |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
41 const Orthanc::DicomTag& tag) |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
42 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
43 char id[16]; |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
44 sprintf(id, "%04X%04X", tag.GetGroup(), tag.GetElement()); |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
45 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
46 if (node.type() != Json::objectValue) |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
47 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
48 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat); |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
49 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
50 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
51 if (!node.isMember(id)) |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
52 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
53 return NULL; |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
54 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
55 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
56 if (node[id].type() == Json::objectValue && |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
57 node[id].isMember(VALUE) && |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
58 node[id].isMember(VR) && |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
59 node[id][VR].type() == Json::stringValue) |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
60 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
61 vr = node[id][VR].asString(); |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
62 return &node[id][VALUE]; |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
63 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
64 else |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
65 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
66 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat); |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
67 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
68 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
69 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
70 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
71 static const Json::Value* GetSequenceArray(const Json::Value& node, |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
72 const Orthanc::DicomTag& tag) |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
73 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
74 std::string vr; |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
75 const Json::Value* value = GetValue(vr, node, tag); |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
76 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
77 if (value != NULL && |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
78 vr == SQ && |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
79 value->type() == Json::arrayValue) |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
80 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
81 return value; |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
82 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
83 else |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
84 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
85 return NULL; |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
86 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
87 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
88 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
89 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
90 const Json::Value* DicomWebDataset::LookupValue(std::string& vr, |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
91 const Orthanc::DicomPath& path) const |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
92 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
93 const Json::Value* current = &dicomweb_; |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
94 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
95 for (size_t i = 0; i < path.GetPrefixLength(); i++) |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
96 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
97 if (path.IsPrefixUniversal(i)) |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
98 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
99 throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented); |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
100 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
101 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
102 Json::ArrayIndex index = path.GetPrefixIndex(i); |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
103 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
104 const Json::Value* next = GetSequenceArray(*current, path.GetPrefixTag(i)); |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
105 if (next != NULL && |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
106 index < next->size()) |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
107 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
108 current = &((*next) [index]); |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
109 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
110 else |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
111 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
112 return NULL; |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
113 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
114 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
115 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
116 return GetValue(vr, *current, path.GetFinalTag()); |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
117 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
118 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
119 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
120 DicomWebDataset::DicomWebDataset(const Json::Value& dicomweb) : |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
121 dicomweb_(dicomweb) |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
122 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
123 if (dicomweb.type() != Json::objectValue) |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
124 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
125 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat); |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
126 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
127 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
128 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
129 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
130 bool DicomWebDataset::GetStringValue(std::string& result, |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
131 const Orthanc::DicomPath& path) const |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
132 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
133 std::string vr; |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
134 const Json::Value* value = LookupValue(vr, path); |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
135 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
136 if (value == NULL) |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
137 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
138 return false; |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
139 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
140 else if (value->type() == Json::arrayValue && |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
141 value->size() == 1u && |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
142 (*value) [0].type() == Json::stringValue && ( |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
143 // This is the list of all the string value representations: |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
144 // https://dicom.nema.org/medical/dicom/current/output/chtml/part05/sect_6.2.html |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
145 vr == "AE" || |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
146 vr == "AS" || |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
147 vr == "CS" || |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
148 vr == "DA" || |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
149 vr == "DS" || |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
150 vr == "DT" || |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
151 vr == "IS" || |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
152 vr == "LO" || |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
153 vr == "LT" || |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
154 vr == "SH" || |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
155 vr == "ST" || |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
156 vr == "TM" || |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
157 vr == "UC" || |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
158 vr == "UI" || |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
159 vr == "UR" || |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
160 vr == "UT")) |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
161 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
162 result = (*value) [0].asString(); |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
163 return true; |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
164 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
165 else if (value->type() == Json::arrayValue && |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
166 value->size() == 1u && |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
167 vr == "PN" && |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
168 (*value) [0].type() == Json::objectValue && |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
169 (*value) [0].isMember(ALPHABETIC) && |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
170 (*value) [0][ALPHABETIC].type() == Json::stringValue) |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
171 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
172 result = (*value) [0][ALPHABETIC].asString(); |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
173 return true; |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
174 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
175 else if (value->type() == Json::arrayValue && |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
176 value->size() == 1u && |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
177 (vr == "FD" || vr == "FL") && |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
178 (*value) [0].isDouble()) |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
179 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
180 result = boost::lexical_cast<std::string>((*value) [0].asDouble()); |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
181 return true; |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
182 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
183 else if (value->type() == Json::arrayValue && |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
184 value->size() == 1u && |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
185 (vr == "UL" || |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
186 vr == "US") && |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
187 (*value) [0].isUInt64()) |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
188 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
189 result = boost::lexical_cast<std::string>((*value) [0].asUInt64()); |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
190 return true; |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
191 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
192 else if (value->type() == Json::arrayValue && |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
193 value->size() == 1u && |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
194 (vr == "SL" || |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
195 vr == "SS") && |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
196 (*value) [0].isInt64()) |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
197 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
198 result = boost::lexical_cast<std::string>((*value) [0].asInt64()); |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
199 return true; |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
200 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
201 else if (value->type() == Json::arrayValue && |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
202 vr == "SQ") |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
203 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
204 return false; |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
205 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
206 else |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
207 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
208 throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented); |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
209 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
210 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
211 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
212 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
213 bool DicomWebDataset::GetSequenceSize(size_t& size, |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
214 const Orthanc::DicomPath& path) const |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
215 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
216 std::string vr; |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
217 const Json::Value* value = LookupValue(vr, path); |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
218 |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
219 if (value != NULL && |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
220 vr == SQ && |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
221 value->type() == Json::arrayValue) |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
222 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
223 size = value->size(); |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
224 return true; |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
225 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
226 else |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
227 { |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
228 return false; |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
229 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
230 } |
2410a171ebfb
refactoring using DicomWebDataset and OrthancNativeDataset
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
231 } |