dcm_dict 0.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +156 -0
  3. data/COPYING +674 -0
  4. data/LICENSE +22 -0
  5. data/README.md +327 -0
  6. data/Rakefile +36 -0
  7. data/bin/dcm_dict_converter.rb +194 -0
  8. data/lib/dcm_dict.rb +46 -0
  9. data/lib/dcm_dict/dictionary/base_dictionary.rb +47 -0
  10. data/lib/dcm_dict/dictionary/base_record.rb +62 -0
  11. data/lib/dcm_dict/dictionary/data_element_dictionary.rb +117 -0
  12. data/lib/dcm_dict/dictionary/data_element_record.rb +93 -0
  13. data/lib/dcm_dict/dictionary/uid_dictionary.rb +82 -0
  14. data/lib/dcm_dict/dictionary/uid_record.rb +48 -0
  15. data/lib/dcm_dict/encoder/data_to_code.rb +79 -0
  16. data/lib/dcm_dict/error/dictionary_error.rb +30 -0
  17. data/lib/dcm_dict/ext/object_extension.rb +38 -0
  18. data/lib/dcm_dict/refine/array_refine.rb +34 -0
  19. data/lib/dcm_dict/refine/data_element_refine.rb +37 -0
  20. data/lib/dcm_dict/refine/internal/array_refine_internal.rb +97 -0
  21. data/lib/dcm_dict/refine/internal/hash_refine_internal.rb +71 -0
  22. data/lib/dcm_dict/refine/internal/string_refine_internal.rb +135 -0
  23. data/lib/dcm_dict/refine/string_refine.rb +35 -0
  24. data/lib/dcm_dict/refine/symbol_refine.rb +34 -0
  25. data/lib/dcm_dict/refine/uid_refine.rb +36 -0
  26. data/lib/dcm_dict/rubies/rb_ext.rb +32 -0
  27. data/lib/dcm_dict/source_data/data_elements_data.rb +4945 -0
  28. data/lib/dcm_dict/source_data/detached_data.rb +67 -0
  29. data/lib/dcm_dict/source_data/uid_values_data.rb +467 -0
  30. data/lib/dcm_dict/version.rb +27 -0
  31. data/lib/dcm_dict/xml/constant.rb +38 -0
  32. data/lib/dcm_dict/xml/field_data.rb +47 -0
  33. data/lib/dcm_dict/xml/nokogiri_tool.rb +108 -0
  34. data/lib/dcm_dict/xml/rexml_tool.rb +105 -0
  35. data/lib/dcm_dict/xml/tag_field_data.rb +96 -0
  36. data/lib/dcm_dict/xml/uid_field_data.rb +60 -0
  37. data/lib/dcm_dict/xml/xml_tool.rb +47 -0
  38. data/spec/data_element_sample_spec_helper.rb +203 -0
  39. data/spec/data_element_shared_example_spec_helper.rb +57 -0
  40. data/spec/dcm_dict/dictionary/data_element_dictionary_spec.rb +76 -0
  41. data/spec/dcm_dict/dictionary/data_element_record_spec.rb +138 -0
  42. data/spec/dcm_dict/dictionary/uid_dictionary_spec.rb +82 -0
  43. data/spec/dcm_dict/dictionary/uid_record_spec.rb +53 -0
  44. data/spec/dcm_dict/encoder/data_to_code_spec.rb +109 -0
  45. data/spec/dcm_dict/ext/object_extension_spec.rb +53 -0
  46. data/spec/dcm_dict/refine/array_refine_spec.rb +60 -0
  47. data/spec/dcm_dict/refine/internal/array_refine_internal_spec.rb +98 -0
  48. data/spec/dcm_dict/refine/internal/hash_refine_internal_spec.rb +64 -0
  49. data/spec/dcm_dict/refine/internal/string_refine_internal_spec.rb +228 -0
  50. data/spec/dcm_dict/refine/string_refine_spec.rb +87 -0
  51. data/spec/dcm_dict/refine/symbol_refine_spec.rb +41 -0
  52. data/spec/dcm_dict/rubies/rb_ext_spec.rb +46 -0
  53. data/spec/dcm_dict/source_data/data_elements_data_spec.rb +40 -0
  54. data/spec/dcm_dict/source_data/detached_data_spec.rb +55 -0
  55. data/spec/dcm_dict/source_data/uid_values_data_spec.rb +37 -0
  56. data/spec/dcm_dict/version_spec.rb +30 -0
  57. data/spec/dcm_dict/xml/tag_field_data_spec.rb +62 -0
  58. data/spec/dcm_dict/xml/uid_field_data_spec.rb +60 -0
  59. data/spec/dictionary_shared_example_spec_helper.rb +118 -0
  60. data/spec/refine_shared_example_spec_helper.rb +54 -0
  61. data/spec/spec_helper.rb +42 -0
  62. data/spec/xml_sample_spec_helper.rb +567 -0
  63. metadata +216 -0
@@ -0,0 +1,42 @@
1
+ #
2
+ # Copyright (C) 2014-2020 Enrico Rivarola
3
+ #
4
+ # This file is part of DcmDict gem (dcm_dict).
5
+ #
6
+ # DcmDict is free software: you can redistribute it and/or modify
7
+ # it under the terms of the GNU General Public License as published by
8
+ # the Free Software Foundation, either version 3 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # DcmDict is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU General Public License
17
+ # along with DcmDict. If not, see <http://www.gnu.org/licenses/>.
18
+ #
19
+ # This software has neither been tested nor approved for clinical use
20
+ # or for incorporation in a medical device.
21
+ # It is the redistributor's or user's responsibility to comply with any
22
+ # applicable local, state, national or international regulations.
23
+ #
24
+ if ENV['COVERAGE']
25
+ begin
26
+ require 'simplecov'
27
+ SimpleCov.start
28
+ rescue LoadError
29
+ end
30
+ end
31
+
32
+ if (RUBY_ENGINE == 'rbx')
33
+ require 'dcm_dict/rubies/rb_ext'
34
+ end
35
+
36
+ require 'dcm_dict'
37
+ require 'dcm_dict/xml/nokogiri_tool'
38
+ require 'dictionary_shared_example_spec_helper'
39
+ require 'data_element_shared_example_spec_helper'
40
+ require 'refine_shared_example_spec_helper'
41
+ require 'dcm_dict/xml/rexml_tool'
42
+ require 'dcm_dict/xml/xml_tool'
@@ -0,0 +1,567 @@
1
+ # coding: utf-8
2
+ #
3
+ # Copyright (C) 2014-2020 Enrico Rivarola
4
+ #
5
+ # This file is part of DcmDict gem (dcm_dict).
6
+ #
7
+ # DcmDict is free software: you can redistribute it and/or modify
8
+ # it under the terms of the GNU General Public License as published by
9
+ # the Free Software Foundation, either version 3 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # DcmDict is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU General Public License
18
+ # along with DcmDict. If not, see <http://www.gnu.org/licenses/>.
19
+ #
20
+ # This software has neither been tested nor approved for clinical use
21
+ # or for incorporation in a medical device.
22
+ # It is the redistributor's or user's responsibility to comply with any
23
+ # applicable local, state, national or international regulations.
24
+ #
25
+ module XmlSampleSpecHelper
26
+ def self.xml_tag_sample_standard
27
+ xml_string=<<END
28
+ <book xmlns="http://docbook.org/ns/docbook">
29
+ <tr valign="top">
30
+ <td align="center" colspan="1" rowspan="1">
31
+ <para>
32
+ <emphasis role="italic">(0008,0010)</emphasis>
33
+ </para>
34
+ </td>
35
+ <td align="left" colspan="1" rowspan="1">
36
+ <para>
37
+ <emphasis role="italic">Recognition Code</emphasis>
38
+ </para>
39
+ </td>
40
+ <td align="left" colspan="1" rowspan="1">
41
+ <para>
42
+ <emphasis role="italic">Recognition​Code</emphasis>
43
+ </para>
44
+ </td>
45
+ <td align="center" colspan="1" rowspan="1">
46
+ <para>
47
+ <emphasis role="italic">SH</emphasis>
48
+ </para>
49
+ </td>
50
+ <td align="center" colspan="1" rowspan="1">
51
+ <para>
52
+ <emphasis role="italic">1</emphasis>
53
+ </para>
54
+ </td>
55
+ <td align="center" colspan="1" rowspan="1">
56
+ <para>
57
+ <emphasis role="italic">RET</emphasis>
58
+ </para>
59
+ </td>
60
+ </tr>
61
+ </book>
62
+ END
63
+ data = {tag_ps: '(0008,0010)',
64
+ tag_str: '(0008,0010)',
65
+ tag_ary: [0x0008,0x0010],
66
+ tag_sym: :recognition_code,
67
+ tag_ndm: '00080010',
68
+ tag_name: 'Recognition Code',
69
+ tag_key: 'RecognitionCode',
70
+ tag_vr: [:SH],
71
+ tag_vm: ['1'],
72
+ tag_note: 'RET',
73
+ tag_multiple: false}
74
+ {xml_string => data}
75
+ end
76
+
77
+ def self.xml_tag_sample_standard_empty_note
78
+ xml_string = <<END
79
+ <book xmlns="http://docbook.org/ns/docbook">
80
+ <tr valign="top">
81
+ <td align="center" colspan="1" rowspan="1">
82
+ <para>(0008,0012)</para>
83
+ </td>
84
+ <td align="left" colspan="1" rowspan="1">
85
+ <para>Instance Creation Date</para>
86
+ </td>
87
+ <td align="left" colspan="1" rowspan="1">
88
+ <para>Instance​Creation​Date</para>
89
+ </td>
90
+ <td align="center" colspan="1" rowspan="1">
91
+ <para>DA</para>
92
+ </td>
93
+ <td align="center" colspan="1" rowspan="1">
94
+ <para>1</para>
95
+ </td>
96
+ <td align="center" colspan="1" rowspan="1">
97
+ <para/>
98
+ </td>
99
+ </tr>
100
+ </book>
101
+ END
102
+ data = {tag_ps: '(0008,0012)',
103
+ tag_str: '(0008,0012)',
104
+ tag_ary: [0x0008,0x0012],
105
+ tag_sym: :instance_creation_date,
106
+ tag_ndm: '00080012',
107
+ tag_name: 'Instance Creation Date',
108
+ tag_key: 'InstanceCreationDate',
109
+ tag_vr: [:DA],
110
+ tag_vm: ['1'],
111
+ tag_note: '',
112
+ tag_multiple: false}
113
+ {xml_string => data}
114
+ end
115
+
116
+ def self.xml_tag_sample_multiple_tag
117
+ xml_string=<<END
118
+ <book xmlns="http://docbook.org/ns/docbook">
119
+ <tr valign="top">
120
+ <td align="center" colspan="1" rowspan="1">
121
+ <para>(60xx,0040)</para>
122
+ </td>
123
+ <td align="left" colspan="1" rowspan="1">
124
+ <para>Overlay Type</para>
125
+ </td>
126
+ <td align="left" colspan="1" rowspan="1">
127
+ <para>Overlay​Type</para>
128
+ </td>
129
+ <td align="center" colspan="1" rowspan="1">
130
+ <para>CS</para>
131
+ </td>
132
+ <td align="center" colspan="1" rowspan="1">
133
+ <para>1</para>
134
+ </td>
135
+ <td align="center" colspan="1" rowspan="1">
136
+ <para/>
137
+ </td>
138
+ </tr>
139
+ </book>
140
+ END
141
+
142
+ data = {tag_ps: '(60XX,0040)',
143
+ tag_str: '(6022,0040)',
144
+ tag_ary: [0x6022,0x0040],
145
+ tag_sym: :overlay_type,
146
+ tag_ndm: '60220040',
147
+ tag_name: 'Overlay Type',
148
+ tag_key: 'OverlayType',
149
+ tag_vr: [:CS],
150
+ tag_vm: ['1'],
151
+ tag_note: '',
152
+ tag_multiple: true}
153
+ {xml_string => data}
154
+ end
155
+
156
+ def self.xml_tag_sample_no_note
157
+ xml_string=<<END
158
+ <book xmlns="http://docbook.org/ns/docbook">
159
+ <tr valign="top">
160
+ <td align="center" colspan="1" rowspan="1">
161
+ <para>(0018,1202)</para>
162
+ </td>
163
+ <td align="left" colspan="1" rowspan="1">
164
+ <para>DateTime of Last Calibration</para>
165
+ </td>
166
+ <td align="left" colspan="1" rowspan="1">
167
+ <para>Date​Time​Of​Last​Calibration</para>
168
+ </td>
169
+ <td align="left" colspan="1" rowspan="1">
170
+ <para>DT</para>
171
+ </td>
172
+ <td align="left" colspan="1" rowspan="1">
173
+ <para>1</para>
174
+ </td>
175
+ </tr>
176
+ </book>
177
+ END
178
+ data = {tag_ps: '(0018,1202)',
179
+ tag_str: '(0018,1202)',
180
+ tag_ary: [0x0018,0x1202],
181
+ tag_sym: :date_time_of_last_calibration,
182
+ tag_ndm: '00181202',
183
+ tag_name: 'DateTime of Last Calibration',
184
+ tag_key: 'DateTimeOfLastCalibration',
185
+ tag_vr: [:DT],
186
+ tag_vm: ['1'],
187
+ tag_note: '',
188
+ tag_multiple: false}
189
+ {xml_string => data}
190
+ end
191
+
192
+ def self.xml_tag_sample_multi_vr_vm
193
+ xml_string = <<END
194
+ <book xmlns="http://docbook.org/ns/docbook">
195
+ <tr valign="top">
196
+ <td align="center" colspan="1" rowspan="1">
197
+ <para>
198
+ <emphasis role="italic">(0028,1200)</emphasis>
199
+ </para>
200
+ </td>
201
+ <td align="left" colspan="1" rowspan="1">
202
+ <para>
203
+ <emphasis role="italic">Gray Lookup Table Data</emphasis>
204
+ </para>
205
+ </td>
206
+ <td align="left" colspan="1" rowspan="1">
207
+ <para>
208
+ <emphasis role="italic">Gray​Lookup​Table​Data</emphasis>
209
+ </para>
210
+ </td>
211
+ <td align="center" colspan="1" rowspan="1">
212
+ <para>
213
+ <emphasis role="italic">US or SS or OW</emphasis>
214
+ </para>
215
+ </td>
216
+ <td align="center" colspan="1" rowspan="1">
217
+ <para>
218
+ <emphasis role="italic">1-n or 1</emphasis>
219
+ </para>
220
+ </td>
221
+ <td align="center" colspan="1" rowspan="1">
222
+ <para>
223
+ <emphasis role="italic">RET</emphasis>
224
+ </para>
225
+ </td>
226
+ </tr>
227
+ </book>
228
+ END
229
+ data = {tag_ps: '(0028,1200)',
230
+ tag_str: '(0028,1200)',
231
+ tag_ary: [0x0028,0x1200],
232
+ tag_sym: :gray_lookup_table_data,
233
+ tag_ndm: '00281200',
234
+ tag_name: 'Gray Lookup Table Data',
235
+ tag_key: 'GrayLookupTableData',
236
+ tag_vr: [:US, :SS, :OW],
237
+ tag_vm: ['1-n', '1'],
238
+ tag_note: 'RET',
239
+ tag_multiple: false}
240
+ {xml_string => data}
241
+ end
242
+
243
+ def self.xml_tag_sample_no_vr
244
+ xml_string = <<END
245
+ <book xmlns="http://docbook.org/ns/docbook">
246
+ <tr valign="top">
247
+ <td align="center" colspan="1" rowspan="1">
248
+ <para>(FFFE,E000)</para>
249
+ </td>
250
+ <td align="left" colspan="1" rowspan="1">
251
+ <para>Item</para>
252
+ </td>
253
+ <td align="left" colspan="1" rowspan="1">
254
+ <para>Item</para>
255
+ </td>
256
+ <td align="center" colspan="1" rowspan="1">
257
+ <para>See Note <xref linkend="note_6_2"/></para>
258
+ </td>
259
+ <td align="center" colspan="1" rowspan="1">
260
+ <para>1</para>
261
+ </td>
262
+ <td align="center" colspan="1" rowspan="1">
263
+ <para/>
264
+ </td>
265
+ </tr>
266
+ </book>
267
+ END
268
+ data = {tag_ps: '(FFFE,E000)',
269
+ tag_str: '(FFFE,E000)',
270
+ tag_ary: [0xfffe,0xe000],
271
+ tag_sym: :item,
272
+ tag_ndm: 'FFFEE000',
273
+ tag_name: 'Item',
274
+ tag_key: 'Item',
275
+ tag_vr: [:"See Note"],
276
+ tag_vm: ['1'],
277
+ tag_note: '',
278
+ tag_multiple: false}
279
+ {xml_string => data}
280
+ end
281
+
282
+ def self.xml_tag_sample_multi_vr
283
+ xml_string = <<END
284
+ <book xmlns="http://docbook.org/ns/docbook">
285
+ <tr valign="top">
286
+ <td align="center" colspan="1" rowspan="1">
287
+ <para>(0014,3050)</para>
288
+ </td>
289
+ <td align="left" colspan="1" rowspan="1">
290
+ <para>Dark Current Counts</para>
291
+ </td>
292
+ <td align="left" colspan="1" rowspan="1">
293
+ <para>Dark​Current​Counts</para>
294
+ </td>
295
+ <td align="center" colspan="1" rowspan="1">
296
+ <para>OB or OW</para>
297
+ </td>
298
+ <td align="center" colspan="1" rowspan="1">
299
+ <para>1</para>
300
+ </td>
301
+ <td align="center" colspan="1" rowspan="1">
302
+ <para>DICONDE</para>
303
+ </td>
304
+ </tr>
305
+ </book>
306
+ END
307
+ data = {tag_ps: '(0014,3050)',
308
+ tag_str: '(0014,3050)',
309
+ tag_ary: [0x0014,0x3050],
310
+ tag_sym: :dark_current_counts,
311
+ tag_ndm: '00143050',
312
+ tag_name: 'Dark Current Counts',
313
+ tag_key: 'DarkCurrentCounts',
314
+ tag_vr: [:OB, :OW],
315
+ tag_vm: ['1'],
316
+ tag_note: 'DICONDE',
317
+ tag_multiple: false}
318
+ {xml_string => data}
319
+ end
320
+
321
+ def self.xml_tag_sample_empty
322
+ xml_string=<<END
323
+ <book xmlns="http://docbook.org/ns/docbook">
324
+ <tr valign="top">
325
+ <td align="center" colspan="1" rowspan="1">
326
+ <para>
327
+ <emphasis role="italic">(0018,9445)</emphasis>
328
+ </para>
329
+ </td>
330
+ <td align="center" colspan="1" rowspan="1">
331
+ <para/>
332
+ </td>
333
+ <td align="center" colspan="1" rowspan="1">
334
+ <para/>
335
+ </td>
336
+ <td align="center" colspan="1" rowspan="1">
337
+ <para/>
338
+ </td>
339
+ <td align="center" colspan="1" rowspan="1">
340
+ <para/>
341
+ </td>
342
+ <td align="center" colspan="1" rowspan="1">
343
+ <para>
344
+ <emphasis role="italic">RET - See Note <xref linkend="note_6_3"/></emphasis>
345
+ </para>
346
+ </td>
347
+ </tr>
348
+ </book>
349
+ END
350
+ data = {tag_ps: '(0018,9445)',
351
+ tag_str: '(0018,9445)',
352
+ tag_ary: [0x0018,0x9445],
353
+ tag_sym: :placeholder_0018_9445,
354
+ tag_ndm: '00189445',
355
+ tag_name: 'Placeholder (0018,9445)',
356
+ tag_key: 'Placeholder_0018_9445',
357
+ tag_vr: [:UN],
358
+ tag_vm: ['1'],
359
+ tag_note: 'RET - See Note',
360
+ tag_multiple: false}
361
+ {xml_string => data}
362
+ end
363
+
364
+ def self.xml_tag_sample_lowercase_tag
365
+ xml_string = <<END
366
+ <book xmlns="http://docbook.org/ns/docbook">
367
+ <tr valign="top">
368
+ <td align="center" colspan="1" rowspan="1">
369
+ <para>(0074,100a)</para>
370
+ </td>
371
+ <td align="left" colspan="1" rowspan="1">
372
+ <para>Contact URI</para>
373
+ </td>
374
+ <td align="left" colspan="1" rowspan="1">
375
+ <para>ContactURI</para>
376
+ </td>
377
+ <td align="center" colspan="1" rowspan="1">
378
+ <para>ST</para>
379
+ </td>
380
+ <td align="center" colspan="1" rowspan="1">
381
+ <para>1</para>
382
+ </td>
383
+ <td align="center" colspan="1" rowspan="1">
384
+ <para/>
385
+ </td>
386
+ </tr>
387
+ </book>
388
+ END
389
+ data = {tag_ps: '(0074,100A)',
390
+ tag_str: '(0074,100A)',
391
+ tag_ary: [0x0074,0x100a],
392
+ tag_sym: :contact_uri,
393
+ tag_ndm: '0074100A',
394
+ tag_name: 'Contact URI',
395
+ tag_key: 'ContactURI',
396
+ tag_vr: [:ST],
397
+ tag_vm: ['1'],
398
+ tag_note: '',
399
+ tag_multiple: false}
400
+ {xml_string => data}
401
+ end
402
+
403
+ def self.xml_tag_multiline_note_set
404
+ xml_string = <<END
405
+ <book xmlns="http://docbook.org/ns/docbook">
406
+ <tr valign="top">
407
+ <td align="center" colspan="1" rowspan="1">
408
+ <para>(0000,0700)</para>
409
+ </td>
410
+ <td align="left" colspan="1" rowspan="1">
411
+ <para>Priority</para>
412
+ </td>
413
+ <td align="left" colspan="1" rowspan="1">
414
+ <para>Priority</para>
415
+ </td>
416
+ <td align="center" colspan="1" rowspan="1">
417
+ <para>US</para>
418
+ </td>
419
+ <td align="center" colspan="1" rowspan="1">
420
+ <para>1</para>
421
+ </td>
422
+ <td align="left" colspan="1" rowspan="1">
423
+ <para>The priority shall be set to one of the following values:</para>
424
+ <para>LOW = 0002H</para>
425
+ <para>MEDIUM = 0000H</para>
426
+ <para>HIGH = 0001H</para>
427
+ </td>
428
+ </tr>
429
+ </book>
430
+ END
431
+ note = <<NOTE.chop
432
+ The priority shall be set to one of the following values:
433
+ LOW = 0002H
434
+ MEDIUM = 0000H
435
+ HIGH = 0001H
436
+ NOTE
437
+ data = {tag_ps: '(0000,0700)',
438
+ tag_str: '(0000,0700)',
439
+ tag_ary: [0x0000,0x0700],
440
+ tag_sym: :priority,
441
+ tag_ndm: '00000700',
442
+ tag_name: 'Priority',
443
+ tag_key: 'Priority',
444
+ tag_vr: [:US],
445
+ tag_vm: ['1'],
446
+ tag_note: note,
447
+ tag_multiple: false}
448
+ {xml_string => data}
449
+ end
450
+
451
+ def self.xml_tag_complex_note
452
+ xml_string= <<END
453
+ <book xmlns="http://docbook.org/ns/docbook">
454
+ <tr valign="top">
455
+ <td align="center" colspan="1" rowspan="1">
456
+ <para>(0000,0900)</para>
457
+ </td>
458
+ <td align="left" colspan="1" rowspan="1">
459
+ <para>Status</para>
460
+ </td>
461
+ <td align="left" colspan="1" rowspan="1">
462
+ <para>Status</para>
463
+ </td>
464
+ <td align="center" colspan="1" rowspan="1">
465
+ <para>US</para>
466
+ </td>
467
+ <td align="center" colspan="1" rowspan="1">
468
+ <para>1</para>
469
+ </td>
470
+ <td align="left" colspan="1" rowspan="1">
471
+ <para>Confirmation status of the operation. See <xref linkend="chapter_C" xrefstyle="template: Annex %n"/>.</para>
472
+ </td>
473
+ </tr>
474
+ </book>
475
+ END
476
+ data = {tag_ps: '(0000,0900)',
477
+ tag_str: '(0000,0900)',
478
+ tag_ary: [0x0000,0x0900],
479
+ tag_sym: :status,
480
+ tag_ndm: '00000900',
481
+ tag_name: 'Status',
482
+ tag_key: 'Status',
483
+ tag_vr: [:US],
484
+ tag_vm: ['1'],
485
+ tag_note: "Confirmation status of the operation. See .",
486
+ tag_multiple: false}
487
+ {xml_string => data}
488
+ end
489
+
490
+ def self.xml_tag_single_set
491
+ { }.merge(xml_tag_sample_standard).
492
+ merge(xml_tag_multiline_note_set).
493
+ merge(xml_tag_sample_standard_empty_note).
494
+ merge(xml_tag_complex_note).
495
+ merge(xml_tag_sample_multiple_tag).
496
+ merge(xml_tag_sample_no_note).
497
+ merge(xml_tag_sample_multi_vr_vm).
498
+ merge(xml_tag_sample_no_vr).
499
+ merge(xml_tag_sample_multi_vr).
500
+ merge(xml_tag_sample_empty).
501
+ merge(xml_tag_sample_lowercase_tag)
502
+ end
503
+
504
+ def self.uid_single_standard
505
+ xml_string=<<END
506
+ <book xmlns="http://docbook.org/ns/docbook">
507
+ <tr valign="top">
508
+ <td align="left" colspan="1" rowspan="1">
509
+ <para>1.2.840.10008.1.​2</para>
510
+ </td>
511
+ <td align="left" colspan="1" rowspan="1">
512
+ <para>Implicit VR Little Endian: Default Transfer Syntax for DICOM</para>
513
+ </td>
514
+ <td align="left" colspan="1" rowspan="1">
515
+ <para>Transfer Syntax</para>
516
+ </td>
517
+ <td align="center" colspan="1" rowspan="1">
518
+ <para><olink targetdoc="PS3.5" targetptr="PS3.5" xrefstyle="select: labelnumber"/></para>
519
+ </td>
520
+ </tr>
521
+ </book>
522
+ END
523
+ data = {uid_value: "1.2.840.10008.1.2",
524
+ uid_name: "Implicit VR Little Endian: Default Transfer Syntax for DICOM",
525
+ uid_type: :transfer_syntax}
526
+ {xml_string => data}
527
+ end
528
+
529
+ def self.uid_sample_retired_noname
530
+ xml_string=<<END
531
+ <book xmlns="http://docbook.org/ns/docbook">
532
+ <tr valign="top">
533
+ <td align="left" colspan="1" rowspan="1">
534
+ <para xml:id="para_0b48f6f3-b2fe-49cf-a870-c6d3635f4266">
535
+ <emphasis role="italic">1.2.840.10008.​5.​1.​4.​1.​1.​12.​77</emphasis>
536
+ </para>
537
+ </td>
538
+ <td align="left" colspan="1" rowspan="1">
539
+ <para xml:id="para_6ca19788-eac9-4d90-b754-aaa06bebe9e9">
540
+ <emphasis role="italic">(Retired)</emphasis>
541
+ </para>
542
+ </td>
543
+ <td align="left" colspan="1" rowspan="1">
544
+ <para xml:id="para_ca5d2e50-63ea-4008-80ae-896296e83fdd">
545
+ <emphasis role="italic">SOP Class</emphasis>
546
+ </para>
547
+ </td>
548
+ <td align="center" colspan="1" rowspan="1">
549
+ <para xml:id="para_178cccfe-86a2-41a1-b905-70e5fbc5eebf">
550
+ <emphasis role="italic"/>
551
+ </para>
552
+ </td>
553
+ </tr>
554
+ </book>
555
+ END
556
+ data = {uid_value: "1.2.840.10008.5.1.4.1.1.12.77",
557
+ uid_name: "1.2.840.10008.5.1.4.1.1.12.77 (Retired)",
558
+ uid_type: :sop_class}
559
+ {xml_string => data}
560
+ end
561
+
562
+ def self.xml_uid_set
563
+ {}.merge(uid_single_standard).
564
+ merge(uid_sample_retired_noname)
565
+ end
566
+
567
+ end