22
22
#include < unordered_set>
23
23
#include " itkGDCMImageIO.h"
24
24
25
- using TagKey = std::string;
26
- using TagKeys = std::unordered_set<TagKey>;
27
- using TagNames = std::unordered_map<TagKey, std::string>;
28
- using TagMap = TagNames; // TagKey -> TagValue
25
+ using Tag = gdcm::Tag;
26
+ using Tags = std::set<Tag>;
27
+
28
+ const Tag STUDY_UID (0x0020 , 0x000d ); // "Study Instance UID"
29
+ const Tag SERIES_UID (0x0020 , 0x000e ); // "Series Instance UID"
30
+ const Tag INSTANCE_UID (0x0008 , 0x0018 ); // "Instance UID"
31
+
32
+ const Tag FRAME_OF_REFERENCE_UID (0x0020 , 0x0052 );
33
+ const Tag IMAGE_ORIENTATION_PATIENT (0x0020 , 0x0037 );
29
34
30
35
// Tag names from https://docs.aws.amazon.com/healthimaging/latest/devguide/reference-dicom-support.html
31
- const TagNames PATIENT_TAG_NAMES = {
36
+ const Tags PATIENT_TAGS = {
32
37
// Patient Module Elements
33
- { " 0010|0010 " , " Patient's Name" },
34
- { " 0010|0020 " , " Patient ID" },
38
+ Tag ( 0x0010 , 0x0010 ), // "Patient's Name"
39
+ Tag ( 0x0010 , 0x0020 ), // "Patient ID"
35
40
// Issuer of Patient ID Macro Elements
36
- { " 0010|0021 " , " Issuer of Patient ID" },
37
- { " 0010|0024 " , " Issuer of Patient ID Qualifiers Sequence" },
38
- { " 0010|0022 " , " Type of Patient ID" },
39
- { " 0010|0030 " , " Patient's Birth Date" },
40
- { " 0010|0033 " , " Patient's Birth Date in Alternative Calendar" },
41
- { " 0010|0034 " , " Patient's Death Date in Alternative Calendar" },
42
- { " 0010|0035 " , " Patient's Alternative Calendar Attribute" },
43
- { " 0010|0040 " , " Patient's Sex" },
44
- { " 0010|1100 " , " Referenced Patient Photo Sequence" },
45
- { " 0010|0200 " , " Quality Control Subject" },
46
- { " 0008|1120 " , " Referenced Patient Sequence" },
47
- { " 0010|0032 " , " Patient's Birth Time" },
48
- { " 0010|1002 " , " Other Patient IDs Sequence" },
49
- { " 0010|1001 " , " Other Patient Names" },
50
- { " 0010|2160 " , " Ethnic Group" },
51
- { " 0010|4000 " , " Patient Comments" },
52
- { " 0010|2201 " , " Patient Species Description" },
53
- { " 0010|2202 " , " Patient Species Code Sequence Attribute" },
54
- { " 0010|2292 " , " Patient Breed Description" },
55
- { " 0010|2293 " , " Patient Breed Code Sequence" },
56
- { " 0010|2294 " , " Breed Registration Sequence Attribute" },
57
- { " 0010|0212 " , " Strain Description" },
58
- { " 0010|0213 " , " Strain Nomenclature Attribute" },
59
- { " 0010|0219 " , " Strain Code Sequence" },
60
- { " 0010|0218 " , " Strain Additional Information Attribute" },
61
- { " 0010|0216 " , " Strain Stock Sequence" },
62
- { " 0010|0221 " , " Genetic Modifications Sequence Attribute" },
63
- { " 0010|2297 " , " Responsible Person" },
64
- { " 0010|2298 " , " Responsible Person Role Attribute" },
65
- { " 0010|2299 " , " Responsible Organization" },
66
- { " 0012|0062 " , " Patient Identity Removed" },
67
- { " 0012|0063 " , " De-identification Method" },
68
- { " 0012|0064 " , " De-identification Method Code Sequence" },
41
+ Tag ( 0x0010 , 0x0021 ), // "Issuer of Patient ID"
42
+ Tag ( 0x0010 , 0x0024 ), // "Issuer of Patient ID Qualifiers Sequence"
43
+ Tag ( 0x0010 , 0x0022 ), // "Type of Patient ID"
44
+ Tag ( 0x0010 , 0x0030 ), // "Patient's Birth Date"
45
+ Tag ( 0x0010 , 0x0033 ), // "Patient's Birth Date in Alternative Calendar"
46
+ Tag ( 0x0010 , 0x0034 ), // "Patient's Death Date in Alternative Calendar"
47
+ Tag ( 0x0010 , 0x0035 ), // "Patient's Alternative Calendar Attribute"
48
+ Tag ( 0x0010 , 0x0040 ), // "Patient's Sex"
49
+ Tag ( 0x0010 , 0x1100 ), // "Referenced Patient Photo Sequence"
50
+ Tag ( 0x0010 , 0x0200 ), // "Quality Control Subject"
51
+ Tag ( 0x0008 , 0x1120 ), // "Referenced Patient Sequence"
52
+ Tag ( 0x0010 , 0x0032 ), // "Patient's Birth Time"
53
+ Tag ( 0x0010 , 0x1002 ), // "Other Patient IDs Sequence"
54
+ Tag ( 0x0010 , 0x1001 ), // "Other Patient Names"
55
+ Tag ( 0x0010 , 0x2160 ), // "Ethnic Group"
56
+ Tag ( 0x0010 , 0x4000 ), // "Patient Comments"
57
+ Tag ( 0x0010 , 0x2201 ), // "Patient Species Description"
58
+ Tag ( 0x0010 , 0x2202 ), // "Patient Species Code Sequence Attribute"
59
+ Tag ( 0x0010 , 0x2292 ), // "Patient Breed Description"
60
+ Tag ( 0x0010 , 0x2293 ), // "Patient Breed Code Sequence"
61
+ Tag ( 0x0010 , 0x2294 ), // "Breed Registration Sequence Attribute"
62
+ Tag ( 0x0010 , 0x0212 ), // "Strain Description"
63
+ Tag ( 0x0010 , 0x0213 ), // "Strain Nomenclature Attribute"
64
+ Tag ( 0x0010 , 0x0219 ), // "Strain Code Sequence"
65
+ Tag ( 0x0010 , 0x0218 ), // "Strain Additional Information Attribute"
66
+ Tag ( 0x0010 , 0x0216 ), // "Strain Stock Sequence"
67
+ Tag ( 0x0010 , 0x0221 ), // "Genetic Modifications Sequence Attribute"
68
+ Tag ( 0x0010 , 0x2297 ), // "Responsible Person"
69
+ Tag ( 0x0010 , 0x2298 ), // "Responsible Person Role Attribute"
70
+ Tag ( 0x0010 , 0x2299 ), // "Responsible Organization"
71
+ Tag ( 0x0012 , 0x0062 ), // "Patient Identity Removed"
72
+ Tag ( 0x0012 , 0x0063 ), // "De-identification Method"
73
+ Tag ( 0x0012 , 0x0064 ), // "De-identification Method Code Sequence"
69
74
// Patient Group Macro Elements
70
- { " 0010|0026 " , " Source Patient Group Identification Sequence" },
71
- { " 0010|0027 " , " Group of Patients Identification Sequence" },
75
+ Tag ( 0x0010 , 0x0026 ), // "Source Patient Group Identification Sequence"
76
+ Tag ( 0x0010 , 0x0027 ), // "Group of Patients Identification Sequence"
72
77
// Clinical Trial Subject Module
73
- { " 0012|0010 " , " Clinical Trial Sponsor Name" },
74
- { " 0012|0020 " , " Clinical Trial Protocol ID" },
75
- { " 0012|0021 " , " Clinical Trial Protocol Name Attribute" },
76
- { " 0012|0030 " , " Clinical Trial Site ID" },
77
- { " 0012|0031 " , " Clinical Trial Site Name" },
78
- { " 0012|0040 " , " Clinical Trial Subject ID" },
79
- { " 0012|0042 " , " Clinical Trial Subject Reading ID" },
80
- { " 0012|0081 " , " Clinical Trial Protocol Ethics Committee Name" },
81
- { " 0012|0082 " , " Clinical Trial Protocol Ethics Committee Approval Number" },
78
+ Tag ( 0x0012 , 0x0010 ), // "Clinical Trial Sponsor Name"
79
+ Tag ( 0x0012 , 0x0020 ), // "Clinical Trial Protocol ID"
80
+ Tag ( 0x0012 , 0x0021 ), // "Clinical Trial Protocol Name Attribute"
81
+ Tag ( 0x0012 , 0x0030 ), // "Clinical Trial Site ID"
82
+ Tag ( 0x0012 , 0x0031 ), // "Clinical Trial Site Name"
83
+ Tag ( 0x0012 , 0x0040 ), // "Clinical Trial Subject ID"
84
+ Tag ( 0x0012 , 0x0042 ), // "Clinical Trial Subject Reading ID"
85
+ Tag ( 0x0012 , 0x0081 ), // "Clinical Trial Protocol Ethics Committee Name"
86
+ Tag ( 0x0012 , 0x0082 ) // "Clinical Trial Protocol Ethics Committee Approval Number"
82
87
};
83
88
84
- const TagNames STUDY_TAG_NAMES = {
89
+ const Tags STUDY_TAGS = {
85
90
// General Study Module
86
- { " 0020|000d " , " Study Instance UID" },
87
- { " 0008|0020 " , " Study Date" },
88
- { " 0008|0030 " , " Study Time" },
89
- { " 0008|0090 " , " Referring Physician's Name" },
90
- { " 0008|0096 " , " Referring Physician Identification Sequence" },
91
- { " 0008|009c " , " Consulting Physician's Name" },
92
- { " 0008|009d " , " Consulting Physician Identification Sequence" },
93
- { " 0020|0010 " , " Study ID" },
94
- { " 0008|0050 " , " Accession Number" },
95
- { " 0008|0051 " , " Issuer of Accession Number Sequence" },
96
- { " 0008|1030 " , " Study Description" },
97
- { " 0008|1048 " , " Physician(s) of Record" },
98
- { " 0008|1049 " , " Physician(s) of Record Identification Sequence" },
99
- { " 0008|1060 " , " Name of Physician(s) Reading Study" },
100
- { " 0008|1062 " , " Physician(s) Reading Study Identification Sequence" },
101
- { " 0032|1033 " , " Requesting Service" },
102
- { " 0032|1034 " , " Requesting Service Code Sequence" },
103
- { " 0008|1110 " , " Referenced Study Sequence" },
104
- { " 0008|1032 " , " Procedure Code Sequence" },
105
- { " 0040|1012 " , " Reason For Performed Procedure Code Sequence" },
91
+ Tag ( 0x0020 , 0x000d ), // "Study Instance UID"
92
+ Tag ( 0x0008 , 0x0020 ), // "Study Date"
93
+ Tag ( 0x0008 , 0x0030 ), // "Study Time"
94
+ Tag ( 0x0008 , 0x0090 ), // "Referring Physician's Name"
95
+ Tag ( 0x0008 , 0x0096 ), // "Referring Physician Identification Sequence"
96
+ Tag ( 0x0008 , 0x009c ), // "Consulting Physician's Name"
97
+ Tag ( 0x0008 , 0x009d ), // "Consulting Physician Identification Sequence"
98
+ Tag ( 0x0020 , 0x0010 ), // "Study ID"
99
+ Tag ( 0x0008 , 0x0050 ), // "Accession Number"
100
+ Tag ( 0x0008 , 0x0051 ), // "Issuer of Accession Number Sequence"
101
+ Tag ( 0x0008 , 0x1030 ), // "Study Description"
102
+ Tag ( 0x0008 , 0x1048 ), // "Physician(s) of Record"
103
+ Tag ( 0x0008 , 0x1049 ), // "Physician(s) of Record Identification Sequence"
104
+ Tag ( 0x0008 , 0x1060 ), // "Name of Physician(s) Reading Study"
105
+ Tag ( 0x0008 , 0x1062 ), // "Physician(s) Reading Study Identification Sequence"
106
+ Tag ( 0x0032 , 0x1033 ), // "Requesting Service"
107
+ Tag ( 0x0032 , 0x1034 ), // "Requesting Service Code Sequence"
108
+ Tag ( 0x0008 , 0x1110 ), // "Referenced Study Sequence"
109
+ Tag ( 0x0008 , 0x1032 ), // "Procedure Code Sequence"
110
+ Tag ( 0x0040 , 0x1012 ), // "Reason For Performed Procedure Code Sequence"
106
111
// Patient Study Module
107
- { " 0008|1080 " , " Admitting Diagnoses Description" },
108
- { " 0008|1084 " , " Admitting Diagnoses Code Sequence" },
109
- { " 0010|1010 " , " Patient's Age" },
110
- { " 0010|1020 " , " Patient's Size" },
111
- { " 0010|1030 " , " Patient's Weight" },
112
- { " 0010|1022 " , " Patient's Body Mass Index" },
113
- { " 0010|1023 " , " Measured AP Dimension" },
114
- { " 0010|1024 " , " Measured Lateral Dimension" },
115
- { " 0010|1021 " , " Patient's Size Code Sequence" },
116
- { " 0010|2000 " , " Medical Alerts" },
117
- { " 0010|2110 " , " Allergies" },
118
- { " 0010|21a0 " , " Smoking Status" },
119
- { " 0010|21c0 " , " Pregnancy Status" },
120
- { " 0010|21d0 " , " Last Menstrual Date" },
121
- { " 0038|0500 " , " Patient State" },
122
- { " 0010|2180 " , " Occupation" },
123
- { " 0010|21b0 " , " Additional Patient History" },
124
- { " 0038|0010 " , " Admission ID" },
125
- { " 0038|0014 " , " Issuer of Admission ID Sequence" },
126
- { " 0032|1066 " , " Reason for Visit" },
127
- { " 0032|1067 " , " Reason for Visit Code Sequence" },
128
- { " 0038|0060 " , " Service Episode ID" },
129
- { " 0038|0064 " , " Issuer of Service Episode ID Sequence" },
130
- { " 0038|0062 " , " Service Episode Description" },
131
- { " 0010|2203 " , " Patient's Sex Neutered" },
112
+ Tag ( 0x0008 , 0x1080 ), // "Admitting Diagnoses Description"
113
+ Tag ( 0x0008 , 0x1084 ), // "Admitting Diagnoses Code Sequence"
114
+ Tag ( 0x0010 , 0x1010 ), // "Patient's Age"
115
+ Tag ( 0x0010 , 0x1020 ), // "Patient's Size"
116
+ Tag ( 0x0010 , 0x1030 ), // "Patient's Weight"
117
+ Tag ( 0x0010 , 0x1022 ), // "Patient's Body Mass Index"
118
+ Tag ( 0x0010 , 0x1023 ), // "Measured AP Dimension"
119
+ Tag ( 0x0010 , 0x1024 ), // "Measured Lateral Dimension"
120
+ Tag ( 0x0010 , 0x1021 ), // "Patient's Size Code Sequence"
121
+ Tag ( 0x0010 , 0x2000 ), // "Medical Alerts"
122
+ Tag ( 0x0010 , 0x2110 ), // "Allergies"
123
+ Tag ( 0x0010 , 0x21a0 ), // "Smoking Status"
124
+ Tag ( 0x0010 , 0x21c0 ), // "Pregnancy Status"
125
+ Tag ( 0x0010 , 0x21d0 ), // "Last Menstrual Date"
126
+ Tag ( 0x0038 , 0x0500 ), // "Patient State"
127
+ Tag ( 0x0010 , 0x2180 ), // "Occupation"
128
+ Tag ( 0x0010 , 0x21b0 ), // "Additional Patient History"
129
+ Tag ( 0x0038 , 0x0010 ), // "Admission ID"
130
+ Tag ( 0x0038 , 0x0014 ), // "Issuer of Admission ID Sequence"
131
+ Tag ( 0x0032 , 0x1066 ), // "Reason for Visit"
132
+ Tag ( 0x0032 , 0x1067 ), // "Reason for Visit Code Sequence"
133
+ Tag ( 0x0038 , 0x0060 ), // "Service Episode ID"
134
+ Tag ( 0x0038 , 0x0064 ), // "Issuer of Service Episode ID Sequence"
135
+ Tag ( 0x0038 , 0x0062 ), // "Service Episode Description"
136
+ Tag ( 0x0010 , 0x2203 ), // "Patient's Sex Neutered"
132
137
// Clinical Trial Study Module
133
- { " 0012|0050 " , " Clinical Trial Time Point ID" },
134
- { " 0012|0051 " , " Clinical Trial Time Point Description" },
135
- { " 0012|0052 " , " Longitudinal Temporal Offset from Event" },
136
- { " 0012|0053 " , " Longitudinal Temporal Event Type" },
137
- { " 0012|0083 " , " Consent for Clinical Trial Use Sequence" },
138
+ Tag ( 0x0012 , 0x0050 ), // "Clinical Trial Time Point ID"
139
+ Tag ( 0x0012 , 0x0051 ), // "Clinical Trial Time Point Description"
140
+ Tag ( 0x0012 , 0x0052 ), // "Longitudinal Temporal Offset from Event"
141
+ Tag ( 0x0012 , 0x0053 ), // "Longitudinal Temporal Event Type"
142
+ Tag ( 0x0012 , 0x0083 ) // "Consent for Clinical Trial Use Sequence"
138
143
};
139
144
140
- const TagNames SERIES_TAG_NAMES = {
145
+ const Tags SERIES_TAGS = {
141
146
// General Series Module
142
- { " 0008|0060 " , " Modality" },
143
- { " 0020|000e " , " Series Instance UID" },
144
- { " 0020|0011 " , " Series Number" },
145
- { " 0020|0060 " , " Laterality" },
146
- { " 0008|0021 " , " Series Date" },
147
- { " 0008|0031 " , " Series Time" },
148
- { " 0008|1050 " , " Performing Physician's Name" },
149
- { " 0008|1052 " , " Performing Physician Identification Sequence" },
150
- { " 0018|1030 " , " Protocol Name" },
151
- { " 0008|103e " , " Series Description" },
152
- { " 0008|103f " , " Series Description Code Sequence" },
153
- { " 0008|1070 " , " Operators' Name" },
154
- { " 0008|1072 " , " Operator Identification Sequence" },
155
- { " 0008|1111 " , " Referenced Performed Procedure Step Sequence" },
156
- { " 0008|1250 " , " Related Series Sequence" },
157
- { " 0018|0015 " , " Body Part Examined" },
158
- { " 0018|5100 " , " Patient Position" },
159
- { " 0028|0108 " , " Smallest Pixel Value in Series" },
160
- { " 0028|0109 " , " Largest Pixel Value in Series" },
161
- { " 0040|0275 " , " Request Attributes Sequence" },
162
- { " 0010|2210 " , " Anatomical Orientation Type" },
163
- { " 300a|0700 " , " Treatment Session UID" },
147
+ Tag ( 0x0008 , 0x0060 ), // "Modality"
148
+ Tag ( 0x0020 , 0x000e ), // "Series Instance UID"
149
+ Tag ( 0x0020 , 0x0011 ), // "Series Number"
150
+ Tag ( 0x0020 , 0x0060 ), // "Laterality"
151
+ Tag ( 0x0008 , 0x0021 ), // "Series Date"
152
+ Tag ( 0x0008 , 0x0031 ), // "Series Time"
153
+ Tag ( 0x0008 , 0x1050 ), // "Performing Physician's Name"
154
+ Tag ( 0x0008 , 0x1052 ), // "Performing Physician Identification Sequence"
155
+ Tag ( 0x0018 , 0x1030 ), // "Protocol Name"
156
+ Tag ( 0x0008 , 0x103e ), // "Series Description"
157
+ Tag ( 0x0008 , 0x103f ), // "Series Description Code Sequence"
158
+ Tag ( 0x0008 , 0x1070 ), // "Operators' Name"
159
+ Tag ( 0x0008 , 0x1072 ), // "Operator Identification Sequence"
160
+ Tag ( 0x0008 , 0x1111 ), // "Referenced Performed Procedure Step Sequence"
161
+ Tag ( 0x0008 , 0x1250 ), // "Related Series Sequence"
162
+ Tag ( 0x0018 , 0x0015 ), // "Body Part Examined"
163
+ Tag ( 0x0018 , 0x5100 ), // "Patient Position"
164
+ Tag ( 0x0028 , 0x0108 ), // "Smallest Pixel Value in Series"
165
+ Tag ( 0x0028 , 0x0109 ), // "Largest Pixel Value in Series"
166
+ Tag ( 0x0040 , 0x0275 ), // "Request Attributes Sequence"
167
+ Tag ( 0x0010 , 0x2210 ), // "Anatomical Orientation Type"
168
+ Tag ( 0x300a , 0x0700 ), // "Treatment Session UID"
164
169
// Clinical Trial Series Module
165
- { " 0012|0060 " , " Clinical Trial Coordinating Center Name" },
166
- { " 0012|0071 " , " Clinical Trial Series ID" },
167
- { " 0012|0072 " , " Clinical Trial Series Description" },
170
+ Tag ( 0x0012 , 0x0060 ), // "Clinical Trial Coordinating Center Name"
171
+ Tag ( 0x0012 , 0x0071 ), // "Clinical Trial Series ID"
172
+ Tag ( 0x0012 , 0x0072 ), // "Clinical Trial Series Description"
168
173
// General Equipment Module
169
- { " 0008|0070 " , " Manufacturer" },
170
- { " 0008|0080 " , " Institution Name" },
171
- { " 0008|0081 " , " Institution Address" },
172
- { " 0008|1010 " , " Station Name" },
173
- { " 0008|1040 " , " Institutional Department Name" },
174
- { " 0008|1041 " , " Institutional Department Type Code Sequence" },
175
- { " 0008|1090 " , " Manufacturer's Model Name" },
176
- { " 0018|100b " , " Manufacturer's Device Class UID" },
177
- { " 0018|1000 " , " Device Serial Number" },
178
- { " 0018|1020 " , " Software Versions" },
179
- { " 0018|1008 " , " Gantry ID" },
180
- { " 0018|100a " , " UDI Sequence" },
181
- { " 0018|1002 " , " Device UID" },
182
- { " 0018|1050 " , " Spatial Resolution" },
183
- { " 0018|1200 " , " Date of Last Calibration" },
184
- { " 0018|1201 " , " Time of Last Calibration" },
185
- { " 0028|0120 " , " Pixel Padding Value" },
174
+ Tag ( 0x0008 , 0x0070 ), // "Manufacturer"
175
+ Tag ( 0x0008 , 0x0080 ), // "Institution Name"
176
+ Tag ( 0x0008 , 0x0081 ), // "Institution Address"
177
+ Tag ( 0x0008 , 0x1010 ), // "Station Name"
178
+ Tag ( 0x0008 , 0x1040 ), // "Institutional Department Name"
179
+ Tag ( 0x0008 , 0x1041 ), // "Institutional Department Type Code Sequence"
180
+ Tag ( 0x0008 , 0x1090 ), // "Manufacturer's Model Name"
181
+ Tag ( 0x0018 , 0x100b ), // "Manufacturer's Device Class UID"
182
+ Tag ( 0x0018 , 0x1000 ), // "Device Serial Number"
183
+ Tag ( 0x0018 , 0x1020 ), // "Software Versions"
184
+ Tag ( 0x0018 , 0x1008 ), // "Gantry ID"
185
+ Tag ( 0x0018 , 0x100a ), // "UDI Sequence"
186
+ Tag ( 0x0018 , 0x1002 ), // "Device UID"
187
+ Tag ( 0x0018 , 0x1050 ), // "Spatial Resolution"
188
+ Tag ( 0x0018 , 0x1200 ), // "Date of Last Calibration"
189
+ Tag ( 0x0018 , 0x1201 ), // "Time of Last Calibration"
190
+ Tag ( 0x0028 , 0x0120 ), // "Pixel Padding Value"
186
191
// Frame of Reference Module
187
- { " 0020|0052 " , " Frame of Reference UID" },
188
- { " 0020|1040 " , " Position Reference Indicator" },
192
+ Tag ( 0x0020 , 0x0052 ), // "Frame of Reference UID"
193
+ Tag ( 0x0020 , 0x1040 ), // "Position Reference Indicator"
189
194
};
190
195
191
- TagMap extractAndRename (const TagMap &tags, const TagNames &keeperTags)
192
- {
193
- TagMap extracted;
194
- for (const auto &[key, name] : keeperTags)
195
- {
196
- const auto it = tags.find (key);
197
- if (it != tags.end ())
198
- {
199
- extracted[name] = it->second ;
200
- }
201
- }
202
- return extracted;
203
- }
204
-
205
- TagMap remove (const TagMap &tags, const TagNames &removeTags)
206
- {
207
- TagMap filteredTags = tags;
208
- for (const auto &[key, name] : removeTags)
209
- {
210
- filteredTags.erase (key);
211
- }
212
- return filteredTags;
213
- }
214
-
215
- TagMap relabel (const TagMap &tags)
216
- {
217
- TagMap relabelTags;
218
- for (const auto &[key, value] : tags)
219
- {
220
- std::string name = key;
221
- if (itk::GDCMImageIO::GetLabelFromTag (key, name))
222
- {
223
- relabelTags[name] = value;
224
- }
225
- else
226
- {
227
- relabelTags[key] = value;
228
- }
229
- }
230
- return relabelTags;
231
- }
232
-
233
196
#endif // TAGS_H
0 commit comments