Mercurial > hg > orthanc
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) |