annotate Sources/StructureSet.cpp @ 60:c322c949bd8e OrthancSTL-1.1

OrthancSTL-1.1
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 22 May 2024 15:33:32 +0200
parents ee3bc8f7df5b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
35
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
1 /**
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
2 * SPDX-FileCopyrightText: 2023-2024 Sebastien Jodogne, UCLouvain, Belgium
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
3 * SPDX-License-Identifier: GPL-3.0-or-later
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
4 */
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
5
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
6 /**
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
7 * STL plugin for Orthanc
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
8 * Copyright (C) 2023-2024 Sebastien Jodogne, UCLouvain, Belgium
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
9 *
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
10 * This program is free software: you can redistribute it and/or
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
11 * modify it under the terms of the GNU General Public License as
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
12 * published by the Free Software Foundation, either version 3 of the
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
13 * License, or (at your option) any later version.
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
14 *
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
15 * This program is distributed in the hope that it will be useful, but
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
16 * WITHOUT ANY WARRANTY; without even the implied warranty of
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
18 * General Public License for more details.
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
19 *
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
20 * You should have received a copy of the GNU General Public License
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
21 * along with this program. If not, see <http://www.gnu.org/licenses/>.
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
22 **/
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
23
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
24
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
25 #include "StructureSet.h"
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
26
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
27 #include "STLToolbox.h"
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
28
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
29 #include <OrthancException.h>
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
30
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
31 #include <dcmtk/dcmdata/dcdeftag.h>
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
32 #include <dcmtk/dcmdata/dcfilefo.h>
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
33
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
34
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
35 StructureSet::StructureSet(Orthanc::ParsedDicomFile& dicom) :
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
36 hasFrameOfReferenceUid_(false)
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
37 {
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
38 DcmDataset& dataset = *dicom.GetDcmtkObject().getDataset();
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
39 patientId_ = STLToolbox::GetStringValue(dataset, DCM_PatientID);
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
40 studyInstanceUid_ = STLToolbox::GetStringValue(dataset, DCM_StudyInstanceUID);
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
41 seriesInstanceUid_ = STLToolbox::GetStringValue(dataset, DCM_SeriesInstanceUID);
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
42 sopInstanceUid_ = STLToolbox::GetStringValue(dataset, DCM_SOPInstanceUID);
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
43
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
44 DcmSequenceOfItems* frame = NULL;
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
45 if (!dataset.findAndGetSequence(DCM_ReferencedFrameOfReferenceSequence, frame).good() ||
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
46 frame == NULL)
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
47 {
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
48 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
49 }
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
50
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
51 if (frame->card() == 1)
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
52 {
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
53 const char* v = NULL;
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
54 if (frame->getItem(0)->findAndGetString(DCM_FrameOfReferenceUID, v).good() &&
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
55 v != NULL)
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
56 {
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
57 hasFrameOfReferenceUid_ = true;
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
58 frameOfReferenceUid_.assign(v);
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
59 }
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
60 }
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
61
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
62 DcmSequenceOfItems* rois = NULL;
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
63 if (!dataset.findAndGetSequence(DCM_ROIContourSequence, rois).good() ||
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
64 rois == NULL)
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
65 {
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
66 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
67 }
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
68
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
69 std::vector<DcmSequenceOfItems*> contours(rois->card());
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
70 size_t countPolygons = 0;
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
71
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
72 for (unsigned long i = 0; i < rois->card(); i++)
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
73 {
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
74 DcmSequenceOfItems* contour = NULL;
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
75 if (!rois->getItem(i)->findAndGetSequence(DCM_ContourSequence, contour).good() ||
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
76 contour == NULL)
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
77 {
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
78 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
79 }
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
80 else
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
81 {
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
82 contours[i] = contour;
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
83 countPolygons += contour->card();
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
84 }
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
85 }
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
86
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
87 polygons_.resize(countPolygons);
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
88
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
89 size_t pos = 0;
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
90 for (unsigned long i = 0; i < contours.size(); i++)
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
91 {
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
92 for (unsigned long j = 0; j < contours[i]->card(); j++, pos++)
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
93 {
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
94 polygons_[pos] = new StructurePolygon(dicom, i, j);
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
95 }
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
96 }
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
97
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
98 assert(pos == countPolygons);
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
99 }
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
100
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
101
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
102 StructureSet::~StructureSet()
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
103 {
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
104 for (size_t i = 0; i < polygons_.size(); i++)
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
105 {
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
106 assert(polygons_[i] != NULL);
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
107 delete polygons_[i];
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
108 }
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
109 }
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
110
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
111
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
112 std::string StructureSet::HashStudy() const
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
113 {
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
114 Orthanc::DicomInstanceHasher hasher(patientId_, studyInstanceUid_, seriesInstanceUid_, sopInstanceUid_);
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
115 return hasher.HashStudy();
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
116 }
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
117
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
118
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
119 const StructurePolygon& StructureSet::GetPolygon(size_t i) const
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
120 {
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
121 if (i >= polygons_.size())
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
122 {
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
123 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange);
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
124 }
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
125 else
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
126 {
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
127 assert(polygons_[i] != NULL);
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
128 return *polygons_[i];
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
129 }
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
130 }
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
131
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
132
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
133 const std::string& StructureSet::GetFrameOfReferenceUid() const
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
134 {
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
135 if (hasFrameOfReferenceUid_)
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
136 {
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
137 return frameOfReferenceUid_;
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
138 }
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
139 else
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
140 {
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
141 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadSequenceOfCalls);
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
142 }
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
143 }
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
144
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
145
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
146 void StructureSet::ListStructuresNames(std::set<std::string>& target,
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
147 Orthanc::ParsedDicomFile& source)
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
148 {
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
149 target.clear();
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
150
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
151 DcmSequenceOfItems* sequence = NULL;
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
152 if (!source.GetDcmtkObject().getDataset()->findAndGetSequence(DCM_StructureSetROISequence, sequence).good() ||
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
153 sequence == NULL)
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
154 {
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
155 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
156 }
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
157
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
158 for (unsigned long i = 0; i < sequence->card(); i++)
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
159 {
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
160 DcmItem* item = sequence->getItem(i);
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
161 if (item == NULL)
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
162 {
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
163 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
164 }
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
165 else
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
166 {
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
167 target.insert(STLToolbox::GetStringValue(*item, DCM_ROIName));
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
168 }
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
169 }
ee3bc8f7df5b reorganization
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff changeset
170 }