@@ -198,7 +198,163 @@ const Tags SERIES_TAGS = {
198198 Tag (0x0020 , 0x1040 ), // "Position Reference Indicator"
199199};
200200
201- std::pair<const char *, size_t > getTagBuffer (const gdcm::DataSet &ds, const gdcm::Tag &tag)
201+ const Tags NON_INSTANCE = {
202+ // Patient Module Elements
203+ Tag (0x0010 , 0x0010 ), // "Patient's Name"
204+ Tag (0x0010 , 0x0020 ), // "Patient ID"
205+ // Issuer of Patient ID Macro Elements
206+ Tag (0x0010 , 0x0021 ), // "Issuer of Patient ID"
207+ Tag (0x0010 , 0x0024 ), // "Issuer of Patient ID Qualifiers Sequence"
208+ Tag (0x0010 , 0x0022 ), // "Type of Patient ID"
209+ Tag (0x0010 , 0x0030 ), // "Patient's Birth Date"
210+ Tag (0x0010 , 0x0033 ), // "Patient's Birth Date in Alternative Calendar"
211+ Tag (0x0010 , 0x0034 ), // "Patient's Death Date in Alternative Calendar"
212+ Tag (0x0010 , 0x0035 ), // "Patient's Alternative Calendar Attribute"
213+ Tag (0x0010 , 0x0040 ), // "Patient's Sex"
214+ Tag (0x0010 , 0x1100 ), // "Referenced Patient Photo Sequence"
215+ Tag (0x0010 , 0x0200 ), // "Quality Control Subject"
216+ Tag (0x0008 , 0x1120 ), // "Referenced Patient Sequence"
217+ Tag (0x0010 , 0x0032 ), // "Patient's Birth Time"
218+ Tag (0x0010 , 0x1002 ), // "Other Patient IDs Sequence"
219+ Tag (0x0010 , 0x1001 ), // "Other Patient Names"
220+ Tag (0x0010 , 0x2160 ), // "Ethnic Group"
221+ Tag (0x0010 , 0x4000 ), // "Patient Comments"
222+ Tag (0x0010 , 0x2201 ), // "Patient Species Description"
223+ Tag (0x0010 , 0x2202 ), // "Patient Species Code Sequence Attribute"
224+ Tag (0x0010 , 0x2292 ), // "Patient Breed Description"
225+ Tag (0x0010 , 0x2293 ), // "Patient Breed Code Sequence"
226+ Tag (0x0010 , 0x2294 ), // "Breed Registration Sequence Attribute"
227+ Tag (0x0010 , 0x0212 ), // "Strain Description"
228+ Tag (0x0010 , 0x0213 ), // "Strain Nomenclature Attribute"
229+ Tag (0x0010 , 0x0219 ), // "Strain Code Sequence"
230+ Tag (0x0010 , 0x0218 ), // "Strain Additional Information Attribute"
231+ Tag (0x0010 , 0x0216 ), // "Strain Stock Sequence"
232+ Tag (0x0010 , 0x0221 ), // "Genetic Modifications Sequence Attribute"
233+ Tag (0x0010 , 0x2297 ), // "Responsible Person"
234+ Tag (0x0010 , 0x2298 ), // "Responsible Person Role Attribute"
235+ Tag (0x0010 , 0x2299 ), // "Responsible Organization"
236+ Tag (0x0012 , 0x0062 ), // "Patient Identity Removed"
237+ Tag (0x0012 , 0x0063 ), // "De-identification Method"
238+ Tag (0x0012 , 0x0064 ), // "De-identification Method Code Sequence"
239+ // Patient Group Macro Elements
240+ Tag (0x0010 , 0x0026 ), // "Source Patient Group Identification Sequence"
241+ Tag (0x0010 , 0x0027 ), // "Group of Patients Identification Sequence"
242+ // Clinical Trial Subject Module
243+ Tag (0x0012 , 0x0010 ), // "Clinical Trial Sponsor Name"
244+ Tag (0x0012 , 0x0020 ), // "Clinical Trial Protocol ID"
245+ Tag (0x0012 , 0x0021 ), // "Clinical Trial Protocol Name Attribute"
246+ Tag (0x0012 , 0x0030 ), // "Clinical Trial Site ID"
247+ Tag (0x0012 , 0x0031 ), // "Clinical Trial Site Name"
248+ Tag (0x0012 , 0x0040 ), // "Clinical Trial Subject ID"
249+ Tag (0x0012 , 0x0042 ), // "Clinical Trial Subject Reading ID"
250+ Tag (0x0012 , 0x0081 ), // "Clinical Trial Protocol Ethics Committee Name"
251+ Tag (0x0012 , 0x0082 ), // "Clinical Trial Protocol Ethics Committee Approval Number"
252+ // General Study Module
253+ Tag (0x0020 , 0x000d ), // "Study Instance UID"
254+ Tag (0x0008 , 0x0020 ), // "Study Date"
255+ Tag (0x0008 , 0x0030 ), // "Study Time"
256+ Tag (0x0008 , 0x0090 ), // "Referring Physician's Name"
257+ Tag (0x0008 , 0x0096 ), // "Referring Physician Identification Sequence"
258+ Tag (0x0008 , 0x009c ), // "Consulting Physician's Name"
259+ Tag (0x0008 , 0x009d ), // "Consulting Physician Identification Sequence"
260+ Tag (0x0020 , 0x0010 ), // "Study ID"
261+ Tag (0x0008 , 0x0050 ), // "Accession Number"
262+ Tag (0x0008 , 0x0051 ), // "Issuer of Accession Number Sequence"
263+ Tag (0x0008 , 0x1030 ), // "Study Description"
264+ Tag (0x0008 , 0x1048 ), // "Physician(s) of Record"
265+ Tag (0x0008 , 0x1049 ), // "Physician(s) of Record Identification Sequence"
266+ Tag (0x0008 , 0x1060 ), // "Name of Physician(s) Reading Study"
267+ Tag (0x0008 , 0x1062 ), // "Physician(s) Reading Study Identification Sequence"
268+ Tag (0x0032 , 0x1033 ), // "Requesting Service"
269+ Tag (0x0032 , 0x1034 ), // "Requesting Service Code Sequence"
270+ Tag (0x0008 , 0x1110 ), // "Referenced Study Sequence"
271+ Tag (0x0008 , 0x1032 ), // "Procedure Code Sequence"
272+ Tag (0x0040 , 0x1012 ), // "Reason For Performed Procedure Code Sequence"
273+ // Patient Study Module
274+ Tag (0x0008 , 0x1080 ), // "Admitting Diagnoses Description"
275+ Tag (0x0008 , 0x1084 ), // "Admitting Diagnoses Code Sequence"
276+ Tag (0x0010 , 0x1010 ), // "Patient's Age"
277+ Tag (0x0010 , 0x1020 ), // "Patient's Size"
278+ Tag (0x0010 , 0x1030 ), // "Patient's Weight"
279+ Tag (0x0010 , 0x1022 ), // "Patient's Body Mass Index"
280+ Tag (0x0010 , 0x1023 ), // "Measured AP Dimension"
281+ Tag (0x0010 , 0x1024 ), // "Measured Lateral Dimension"
282+ Tag (0x0010 , 0x1021 ), // "Patient's Size Code Sequence"
283+ Tag (0x0010 , 0x2000 ), // "Medical Alerts"
284+ Tag (0x0010 , 0x2110 ), // "Allergies"
285+ Tag (0x0010 , 0x21a0 ), // "Smoking Status"
286+ Tag (0x0010 , 0x21c0 ), // "Pregnancy Status"
287+ Tag (0x0010 , 0x21d0 ), // "Last Menstrual Date"
288+ Tag (0x0038 , 0x0500 ), // "Patient State"
289+ Tag (0x0010 , 0x2180 ), // "Occupation"
290+ Tag (0x0010 , 0x21b0 ), // "Additional Patient History"
291+ Tag (0x0038 , 0x0010 ), // "Admission ID"
292+ Tag (0x0038 , 0x0014 ), // "Issuer of Admission ID Sequence"
293+ Tag (0x0032 , 0x1066 ), // "Reason for Visit"
294+ Tag (0x0032 , 0x1067 ), // "Reason for Visit Code Sequence"
295+ Tag (0x0038 , 0x0060 ), // "Service Episode ID"
296+ Tag (0x0038 , 0x0064 ), // "Issuer of Service Episode ID Sequence"
297+ Tag (0x0038 , 0x0062 ), // "Service Episode Description"
298+ Tag (0x0010 , 0x2203 ), // "Patient's Sex Neutered"
299+ // Clinical Trial Study Module
300+ Tag (0x0012 , 0x0050 ), // "Clinical Trial Time Point ID"
301+ Tag (0x0012 , 0x0051 ), // "Clinical Trial Time Point Description"
302+ Tag (0x0012 , 0x0052 ), // "Longitudinal Temporal Offset from Event"
303+ Tag (0x0012 , 0x0053 ), // "Longitudinal Temporal Event Type"
304+ Tag (0x0012 , 0x0083 ), // "Consent for Clinical Trial Use Sequence"
305+
306+ // General Series Module
307+ Tag (0x0008 , 0x0060 ), // "Modality"
308+ Tag (0x0020 , 0x000e ), // "Series Instance UID"
309+ Tag (0x0020 , 0x0011 ), // "Series Number"
310+ Tag (0x0020 , 0x0060 ), // "Laterality"
311+ Tag (0x0008 , 0x0021 ), // "Series Date"
312+ Tag (0x0008 , 0x0031 ), // "Series Time"
313+ Tag (0x0008 , 0x1050 ), // "Performing Physician's Name"
314+ Tag (0x0008 , 0x1052 ), // "Performing Physician Identification Sequence"
315+ Tag (0x0018 , 0x1030 ), // "Protocol Name"
316+ Tag (0x0008 , 0x103e ), // "Series Description"
317+ Tag (0x0008 , 0x103f ), // "Series Description Code Sequence"
318+ Tag (0x0008 , 0x1070 ), // "Operators' Name"
319+ Tag (0x0008 , 0x1072 ), // "Operator Identification Sequence"
320+ Tag (0x0008 , 0x1111 ), // "Referenced Performed Procedure Step Sequence"
321+ Tag (0x0008 , 0x1250 ), // "Related Series Sequence"
322+ Tag (0x0018 , 0x0015 ), // "Body Part Examined"
323+ Tag (0x0018 , 0x5100 ), // "Patient Position"
324+ Tag (0x0028 , 0x0108 ), // "Smallest Pixel Value in Series"
325+ Tag (0x0028 , 0x0109 ), // "Largest Pixel Value in Series"
326+ Tag (0x0040 , 0x0275 ), // "Request Attributes Sequence"
327+ Tag (0x0010 , 0x2210 ), // "Anatomical Orientation Type"
328+ Tag (0x300a , 0x0700 ), // "Treatment Session UID"
329+ // Clinical Trial Series Module
330+ Tag (0x0012 , 0x0060 ), // "Clinical Trial Coordinating Center Name"
331+ Tag (0x0012 , 0x0071 ), // "Clinical Trial Series ID"
332+ Tag (0x0012 , 0x0072 ), // "Clinical Trial Series Description"
333+ // General Equipment Module
334+ Tag (0x0008 , 0x0070 ), // "Manufacturer"
335+ Tag (0x0008 , 0x0080 ), // "Institution Name"
336+ Tag (0x0008 , 0x0081 ), // "Institution Address"
337+ Tag (0x0008 , 0x1010 ), // "Station Name"
338+ Tag (0x0008 , 0x1040 ), // "Institutional Department Name"
339+ Tag (0x0008 , 0x1041 ), // "Institutional Department Type Code Sequence"
340+ Tag (0x0008 , 0x1090 ), // "Manufacturer's Model Name"
341+ Tag (0x0018 , 0x100b ), // "Manufacturer's Device Class UID"
342+ Tag (0x0018 , 0x1000 ), // "Device Serial Number"
343+ Tag (0x0018 , 0x1020 ), // "Software Versions"
344+ Tag (0x0018 , 0x1008 ), // "Gantry ID"
345+ Tag (0x0018 , 0x100a ), // "UDI Sequence"
346+ Tag (0x0018 , 0x1002 ), // "Device UID"
347+ Tag (0x0018 , 0x1050 ), // "Spatial Resolution"
348+ Tag (0x0018 , 0x1200 ), // "Date of Last Calibration"
349+ Tag (0x0018 , 0x1201 ), // "Time of Last Calibration"
350+ Tag (0x0028 , 0x0120 ), // "Pixel Padding Value"
351+ // Frame of Reference Module
352+ Tag (0x0020 , 0x0052 ), // "Frame of Reference UID"
353+ Tag (0x0020 , 0x1040 ), // "Position Reference Indicator"
354+ };
355+
356+ std::pair<const char *, size_t >
357+ getTagBuffer (const gdcm::DataSet &ds, const gdcm::Tag &tag)
202358{
203359 if (!ds.FindDataElement (tag) || ds.GetDataElement (tag).IsEmpty ())
204360 {
0 commit comments