comparison OrthancStone/Sources/Toolbox/OrthancDatasets/DicomPath.cpp @ 1512:244ad1e4e76a

reorganization of folders
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 07 Jul 2020 16:21:02 +0200
parents Framework/Toolbox/OrthancDatasets/DicomPath.cpp@d8af188ab545
children 4fb8fdf03314
comparison
equal deleted inserted replaced
1511:9dfeee74c1e6 1512:244ad1e4e76a
1 /**
2 * Stone of Orthanc
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
4 * Department, University Hospital of Liege, Belgium
5 * Copyright (C) 2017-2020 Osimis S.A., Belgium
6 *
7 * This program is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU Affero General Public License
9 * as published by the Free Software Foundation, either version 3 of
10 * the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Affero General Public License for more details.
16 *
17 * You should have received a copy of the GNU Affero General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 **/
20
21
22 #include "DicomPath.h"
23
24 #include <OrthancException.h>
25
26 #include <boost/lexical_cast.hpp>
27
28 namespace OrthancStone
29 {
30 const DicomPath::Prefix& DicomPath::GetPrefixItem(size_t depth) const
31 {
32 if (depth >= prefix_.size())
33 {
34 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
35 }
36 else
37 {
38 return prefix_[depth];
39 }
40 }
41
42
43 DicomPath::Prefix& DicomPath::GetPrefixItem(size_t depth)
44 {
45 if (depth >= prefix_.size())
46 {
47 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
48 }
49 else
50 {
51 return prefix_[depth];
52 }
53 }
54
55
56 DicomPath::DicomPath(const Orthanc::DicomTag& sequence,
57 size_t index,
58 const Orthanc::DicomTag& tag) :
59 finalTag_(tag)
60 {
61 AddToPrefix(sequence, index);
62 }
63
64
65 DicomPath::DicomPath(const Orthanc::DicomTag& sequence1,
66 size_t index1,
67 const Orthanc::DicomTag& sequence2,
68 size_t index2,
69 const Orthanc::DicomTag& tag) :
70 finalTag_(tag)
71 {
72 AddToPrefix(sequence1, index1);
73 AddToPrefix(sequence2, index2);
74 }
75
76
77 DicomPath::DicomPath(const Orthanc::DicomTag& sequence1,
78 size_t index1,
79 const Orthanc::DicomTag& sequence2,
80 size_t index2,
81 const Orthanc::DicomTag& sequence3,
82 size_t index3,
83 const Orthanc::DicomTag& tag) :
84 finalTag_(tag)
85 {
86 AddToPrefix(sequence1, index1);
87 AddToPrefix(sequence2, index2);
88 AddToPrefix(sequence3, index3);
89 }
90
91
92 static std::string FormatHexadecimal(const Orthanc::DicomTag& tag)
93 {
94 char buf[16];
95 sprintf(buf, "(%04x,%04x)", tag.GetGroup(), tag.GetElement());
96 return buf;
97 }
98
99
100 std::string DicomPath::Format() const
101 {
102 std::string s;
103
104 for (size_t i = 0; i < GetPrefixLength(); i++)
105 {
106 s += (FormatHexadecimal(GetPrefixTag(i)) + " / " +
107 boost::lexical_cast<std::string>(i) + " / ");
108 }
109
110 return s + FormatHexadecimal(GetFinalTag());
111 }
112 }