comparison Core/DicomFormat/DicomMap.cpp @ 80:6212bf978584

status of series
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 20 Sep 2012 15:18:12 +0200
parents b8dfde8d64e8
children 9eb40cad7935
comparison
equal deleted inserted replaced
79:297bad4e1019 80:6212bf978584
34 //DicomTag(0x0010, 0x1040) // PatientAddress 34 //DicomTag(0x0010, 0x1040) // PatientAddress
35 DicomTag(0x0010, 0x0010), // PatientName 35 DicomTag(0x0010, 0x0010), // PatientName
36 DicomTag(0x0010, 0x0030), // PatientBirthDate 36 DicomTag(0x0010, 0x0030), // PatientBirthDate
37 DicomTag(0x0010, 0x0040), // PatientSex 37 DicomTag(0x0010, 0x0040), // PatientSex
38 DicomTag(0x0010, 0x1000), // OtherPatientIDs 38 DicomTag(0x0010, 0x1000), // OtherPatientIDs
39 DicomTag::PATIENT_ID 39 DICOM_TAG_PATIENT_ID
40 }; 40 };
41 41
42 static DicomTag studyTags[] = 42 static DicomTag studyTags[] =
43 { 43 {
44 //DicomTag(0x0010, 0x1020), // PatientSize 44 //DicomTag(0x0010, 0x1020), // PatientSize
45 //DicomTag(0x0010, 0x1030) // PatientWeight 45 //DicomTag(0x0010, 0x1030) // PatientWeight
46 DicomTag(0x0008, 0x0020), // StudyDate 46 DicomTag(0x0008, 0x0020), // StudyDate
47 DicomTag(0x0008, 0x0030), // StudyTime 47 DicomTag(0x0008, 0x0030), // StudyTime
48 DicomTag(0x0008, 0x1030), // StudyDescription 48 DicomTag(0x0008, 0x1030), // StudyDescription
49 DicomTag(0x0020, 0x0010), // StudyID 49 DicomTag(0x0020, 0x0010), // StudyID
50 DicomTag::ACCESSION_NUMBER, 50 DICOM_TAG_ACCESSION_NUMBER,
51 DicomTag::STUDY_INSTANCE_UID 51 DICOM_TAG_STUDY_INSTANCE_UID
52 }; 52 };
53 53
54 static DicomTag seriesTags[] = 54 static DicomTag seriesTags[] =
55 { 55 {
56 //DicomTag(0x0010, 0x1080), // MilitaryRank 56 //DicomTag(0x0010, 0x1080), // MilitaryRank
62 DicomTag(0x0008, 0x103e), // SeriesDescription 62 DicomTag(0x0008, 0x103e), // SeriesDescription
63 DicomTag(0x0018, 0x0015), // BodyPartExamined 63 DicomTag(0x0018, 0x0015), // BodyPartExamined
64 DicomTag(0x0018, 0x0024), // SequenceName 64 DicomTag(0x0018, 0x0024), // SequenceName
65 DicomTag(0x0018, 0x1030), // ProtocolName 65 DicomTag(0x0018, 0x1030), // ProtocolName
66 DicomTag(0x0020, 0x0011), // SeriesNumber 66 DicomTag(0x0020, 0x0011), // SeriesNumber
67 DicomTag::IMAGES_IN_ACQUISITION, 67 DICOM_TAG_CARDIAC_NUMBER_OF_IMAGES,
68 DicomTag::NUMBER_OF_SLICES, 68 DICOM_TAG_IMAGES_IN_ACQUISITION,
69 DicomTag::SERIES_INSTANCE_UID 69 DICOM_TAG_NUMBER_OF_FRAMES,
70 DICOM_TAG_NUMBER_OF_SLICES,
71 DICOM_TAG_SERIES_INSTANCE_UID
70 }; 72 };
71 73
72 static DicomTag instanceTags[] = 74 static DicomTag instanceTags[] =
73 { 75 {
74 DicomTag(0x0008, 0x0012), // InstanceCreationDate 76 DicomTag(0x0008, 0x0012), // InstanceCreationDate
75 DicomTag(0x0008, 0x0013), // InstanceCreationTime 77 DicomTag(0x0008, 0x0013), // InstanceCreationTime
76 DicomTag(0x0020, 0x0012), // AcquisitionNumber 78 DicomTag(0x0020, 0x0012), // AcquisitionNumber
77 DicomTag::CARDIAC_NUMBER_OF_IMAGES, 79 DICOM_TAG_IMAGE_INDEX,
78 DicomTag::IMAGE_INDEX, 80 DICOM_TAG_INSTANCE_NUMBER,
79 DicomTag::INSTANCE_NUMBER, 81 DICOM_TAG_SOP_INSTANCE_UID
80 DicomTag::NUMBER_OF_FRAMES,
81 DicomTag::SOP_INSTANCE_UID
82 }; 82 };
83 83
84 84
85 85
86 86
158 { 158 {
159 ExtractTags(result, instanceTags, sizeof(instanceTags) / sizeof(DicomTag)); 159 ExtractTags(result, instanceTags, sizeof(instanceTags) / sizeof(DicomTag));
160 } 160 }
161 161
162 162
163
163 DicomMap* DicomMap::Clone() const 164 DicomMap* DicomMap::Clone() const
164 { 165 {
165 std::auto_ptr<DicomMap> result(new DicomMap); 166 std::auto_ptr<DicomMap> result(new DicomMap);
166 167
167 for (Map::const_iterator it = map_.begin(); it != map_.end(); it++) 168 for (Map::const_iterator it = map_.begin(); it != map_.end(); it++)
173 } 174 }
174 175
175 176
176 const DicomValue& DicomMap::GetValue(const DicomTag& tag) const 177 const DicomValue& DicomMap::GetValue(const DicomTag& tag) const
177 { 178 {
179 const DicomValue* value = TestAndGetValue(tag);
180
181 if (value)
182 {
183 return *value;
184 }
185 else
186 {
187 throw OrthancException("Inexistent tag");
188 }
189 }
190
191
192 const DicomValue* DicomMap::TestAndGetValue(const DicomTag& tag) const
193 {
178 Map::const_iterator it = map_.find(tag); 194 Map::const_iterator it = map_.find(tag);
179 195
180 if (it == map_.end()) 196 if (it == map_.end())
181 { 197 {
182 throw OrthancException("Inexistent tag"); 198 return NULL;
183 } 199 }
184 else 200 else
185 { 201 {
186 return *it->second; 202 return it->second;
187 } 203 }
188 } 204 }
189 205
190 206
191 void DicomMap::Remove(const DicomTag& tag) 207 void DicomMap::Remove(const DicomTag& tag)
217 } 233 }
218 234
219 void DicomMap::SetupFindStudyTemplate(DicomMap& result) 235 void DicomMap::SetupFindStudyTemplate(DicomMap& result)
220 { 236 {
221 SetupFindTemplate(result, studyTags, sizeof(studyTags) / sizeof(DicomTag)); 237 SetupFindTemplate(result, studyTags, sizeof(studyTags) / sizeof(DicomTag));
222 result.SetValue(DicomTag::ACCESSION_NUMBER, ""); 238 result.SetValue(DICOM_TAG_ACCESSION_NUMBER, "");
223 result.SetValue(DicomTag::PATIENT_ID, ""); 239 result.SetValue(DICOM_TAG_PATIENT_ID, "");
224 } 240 }
225 241
226 void DicomMap::SetupFindSeriesTemplate(DicomMap& result) 242 void DicomMap::SetupFindSeriesTemplate(DicomMap& result)
227 { 243 {
228 SetupFindTemplate(result, seriesTags, sizeof(seriesTags) / sizeof(DicomTag)); 244 SetupFindTemplate(result, seriesTags, sizeof(seriesTags) / sizeof(DicomTag));
229 result.SetValue(DicomTag::ACCESSION_NUMBER, ""); 245 result.SetValue(DICOM_TAG_ACCESSION_NUMBER, "");
230 result.SetValue(DicomTag::PATIENT_ID, ""); 246 result.SetValue(DICOM_TAG_PATIENT_ID, "");
231 result.SetValue(DicomTag::STUDY_INSTANCE_UID, ""); 247 result.SetValue(DICOM_TAG_STUDY_INSTANCE_UID, "");
232 } 248 }
233 249
234 void DicomMap::SetupFindInstanceTemplate(DicomMap& result) 250 void DicomMap::SetupFindInstanceTemplate(DicomMap& result)
235 { 251 {
236 SetupFindTemplate(result, instanceTags, sizeof(instanceTags) / sizeof(DicomTag)); 252 SetupFindTemplate(result, instanceTags, sizeof(instanceTags) / sizeof(DicomTag));
237 result.SetValue(DicomTag::ACCESSION_NUMBER, ""); 253 result.SetValue(DICOM_TAG_ACCESSION_NUMBER, "");
238 result.SetValue(DicomTag::PATIENT_ID, ""); 254 result.SetValue(DICOM_TAG_PATIENT_ID, "");
239 result.SetValue(DicomTag::STUDY_INSTANCE_UID, ""); 255 result.SetValue(DICOM_TAG_STUDY_INSTANCE_UID, "");
240 result.SetValue(DicomTag::SERIES_INSTANCE_UID, ""); 256 result.SetValue(DICOM_TAG_SERIES_INSTANCE_UID, "");
241 } 257 }
242 258
243 259
244 void DicomMap::CopyTagIfExists(const DicomMap& source, 260 void DicomMap::CopyTagIfExists(const DicomMap& source,
245 const DicomTag& tag) 261 const DicomTag& tag)