dcm_dict 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +3 -0
- data/LICENSE +1 -1
- data/README.md +15 -12
- data/bin/dcm_dict_converter.rb +2 -2
- data/lib/dcm_dict/dictionary/base_dictionary.rb +1 -1
- data/lib/dcm_dict/dictionary/base_record.rb +1 -1
- data/lib/dcm_dict/dictionary/data_element_dictionary.rb +1 -1
- data/lib/dcm_dict/dictionary/data_element_record.rb +1 -1
- data/lib/dcm_dict/dictionary/uid_record.rb +1 -1
- data/lib/dcm_dict/encoder/data_to_code.rb +1 -1
- data/lib/dcm_dict/error/dictionary_error.rb +1 -1
- data/lib/dcm_dict/ext/object_extension.rb +1 -1
- data/lib/dcm_dict/refine/array_refine.rb +1 -1
- data/lib/dcm_dict/refine/data_element_refine.rb +1 -1
- data/lib/dcm_dict/refine/internal/array_refine_internal.rb +1 -1
- data/lib/dcm_dict/refine/internal/hash_refine_internal.rb +1 -1
- data/lib/dcm_dict/refine/internal/string_refine_internal.rb +1 -1
- data/lib/dcm_dict/refine/string_refine.rb +1 -1
- data/lib/dcm_dict/refine/symbol_refine.rb +1 -1
- data/lib/dcm_dict/refine/uid_refine.rb +1 -1
- data/lib/dcm_dict/rubies/rb_ext.rb +1 -1
- data/lib/dcm_dict/source_data/data_elements_data.rb +24 -1
- data/lib/dcm_dict/source_data/detached_data.rb +1 -1
- data/lib/dcm_dict/source_data/uid_values_data.rb +3 -1
- data/lib/dcm_dict/version.rb +3 -3
- data/lib/dcm_dict/xml/constant.rb +1 -1
- data/lib/dcm_dict/xml/field_data.rb +1 -1
- data/lib/dcm_dict/xml/nokogiri_tool.rb +1 -1
- data/lib/dcm_dict/xml/rexml_tool.rb +1 -1
- data/lib/dcm_dict/xml/tag_field_data.rb +1 -1
- data/lib/dcm_dict/xml/uid_field_data.rb +1 -1
- data/lib/dcm_dict/xml/xml_tool.rb +1 -1
- data/lib/dcm_dict.rb +1 -1
- data/spec/data_element_sample_spec_helper.rb +1 -1
- data/spec/data_element_shared_example_spec_helper.rb +1 -1
- data/spec/dcm_dict/dictionary/data_element_dictionary_spec.rb +1 -1
- data/spec/dcm_dict/dictionary/data_element_record_spec.rb +4 -4
- data/spec/dcm_dict/dictionary/uid_record_spec.rb +1 -1
- data/spec/dcm_dict/encoder/data_to_code_spec.rb +1 -1
- data/spec/dcm_dict/ext/object_extension_spec.rb +1 -1
- data/spec/dcm_dict/refine/array_refine_spec.rb +1 -2
- data/spec/dcm_dict/refine/internal/array_refine_internal_spec.rb +1 -1
- data/spec/dcm_dict/refine/internal/hash_refine_internal_spec.rb +1 -1
- data/spec/dcm_dict/refine/internal/string_refine_internal_spec.rb +1 -1
- data/spec/dcm_dict/refine/string_refine_spec.rb +1 -1
- data/spec/dcm_dict/refine/symbol_refine_spec.rb +1 -1
- data/spec/dcm_dict/rubies/rb_ext_spec.rb +1 -1
- data/spec/dcm_dict/source_data/data_elements_data_spec.rb +1 -1
- data/spec/dcm_dict/source_data/detached_data_spec.rb +1 -1
- data/spec/dcm_dict/source_data/uid_values_data_spec.rb +1 -1
- data/spec/dcm_dict/version_spec.rb +1 -1
- data/spec/dcm_dict/xml/tag_field_data_spec.rb +1 -1
- data/spec/dcm_dict/xml/uid_field_data_spec.rb +1 -1
- data/spec/dictionary_shared_example_spec_helper.rb +1 -1
- data/spec/refine_shared_example_spec_helper.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- data/spec/xml_sample_spec_helper.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f47d669fdcd05820d9eba72902b295e74383cffa
|
4
|
+
data.tar.gz: 8e481d11c9c41c5d6b6708db8d30bc9b59b2b783
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 68b88c8d2cd692fc121eeceab38f057e181d5679ea75c27856b7d8c70d4fee57840addd557d90d6b47365b548096213fba59c709b39186f5a50a7c77f28e1872
|
7
|
+
data.tar.gz: 8a1b41f6749314bd6e171e6165c5e7294723d53e42935eb087bcbe1eb9ba7d146a22a0127c5fa29a8174a4e0b550b578803a4749247e88bf445e373c5a842bee
|
data/CHANGELOG
CHANGED
data/LICENSE
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
DcmDict is a Ruby gem (dcm_dict) to handle
|
2
2
|
in a simple way the Data defined within the DICOM Standard.
|
3
3
|
|
4
|
-
Copyright (C) 2014 Enrico Rivarola
|
4
|
+
Copyright (C) 2014-2015 Enrico Rivarola
|
5
5
|
|
6
6
|
DcmDict is free software: you can redistribute it and/or modify
|
7
7
|
it under the terms of the GNU General Public License as published by
|
data/README.md
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
# What's *DcmDict*
|
2
|
-
**DcmDict** is a Ruby gem (*dcm\_dict*) to handle in a simple way the Data defined within the [DICOM(r)][1] Standard such as DICOM Data Elements or DICOM Unique Identifiers.
|
2
|
+
**DcmDict** is a Ruby gem (*dcm\_dict*) to handle in a simple way the *Data Dictionary* defined within the [DICOM(r)][1] Standard such as DICOM Data Elements or DICOM Unique Identifiers.
|
3
3
|
|
4
4
|
# Why *DcmDict*
|
5
|
-
With the
|
6
|
-
|
5
|
+
With the new releases from year 2014 DICOM documents are available in different format including one particularly interesting, the *DocBook* XML version.
|
6
|
+
|
7
|
+
As D. Clunie writes on [his web site][2]:
|
7
8
|
|
8
9
|
> "... other formats (such as DocBook, HTML, Word and ODT) are also made available for the convenience of implementors who may need to extract machine-readable content, ..."
|
9
10
|
|
@@ -12,7 +13,9 @@ This is great news for anyone involved in the study of the standard !
|
|
12
13
|
Starting from this thing was born the idea of trying to automate the extraction of data from XML documents to make available the information in a simple way that simplifies the study of the DICOM standard, in the hope this idea will be useful and inspiration.
|
13
14
|
|
14
15
|
# *DcmDict* features
|
15
|
-
The library involve *String*, *Array* and *Symbol* class as *refinements* to access to DICOM information.
|
16
|
+
The library involve *String*, *Array* and *Symbol* class as *refinements* to access to DICOM information.
|
17
|
+
|
18
|
+
In this way is possible to *play* with the 'Patient's Birth Date' tag defined as (0010,0030) by:
|
16
19
|
|
17
20
|
```ruby
|
18
21
|
> "(0010,0030)".tag_name
|
@@ -67,7 +70,7 @@ for the Symbol object.
|
|
67
70
|
|
68
71
|
That's it.
|
69
72
|
|
70
|
-
**Note**: It is possible to use also the the *monkey patching* way, this is a *deprecated* utilization but possible, and, may be, useful technique in certain contexts or for some particular test. For the *monkey patching* is possible to include some specific *common modules*
|
73
|
+
**Note**: It is possible to use also the the *monkey patching* way, this is a *deprecated* utilization but possible, and, may be, useful technique in certain contexts or for some particular test. For the *monkey patching* is possible to include some specific *common modules* in the class you want to use as "keyword": there are two base modules *DcmDict::Refine::DataElementRefine* and *DcmDict::Refine::UidRefine*.
|
71
74
|
|
72
75
|
For example in the String class will have the code:
|
73
76
|
|
@@ -80,11 +83,11 @@ end
|
|
80
83
|
|
81
84
|
*The main way remains **Ruby Refinements***.
|
82
85
|
|
83
|
-
**Rubies compatibility**: at this moment the other considered rubies is only [Rubinius][4] (v2.2.10). In order to try to ensure a minimum compatibility there is a file under *lib/dcm_dict/rubies/* called *rb_ext.rb* able to *mask*/*simulates* the refinements
|
86
|
+
**Rubies compatibility**: at this moment the other considered rubies is only [Rubinius][4] (>= v2.2.10). In order to try to ensure a minimum compatibility there is a file under *lib/dcm_dict/rubies/* called *rb_ext.rb* able to *mask*/*simulates* the refinements by [refine gem][5] and add the required *bit_length* method to *Fixnum* class by [backports gem][6].
|
84
87
|
This sort of extension is not loaded by default but only into *spec files* for the *'rbx' Ruby Engine*. See *spec_helper.rb* and *rb_ext.rb* for details.
|
85
88
|
|
86
89
|
## Data Element data in detail
|
87
|
-
Any Data Element
|
90
|
+
Any Data Element feature can be accessed from a *String*, *Array* or *Symbol* objects.
|
88
91
|
|
89
92
|
For these objects is possible to access to Tag (group/element), Name, Keyword, Value Representation (VR) and Value Multiplicity (VM) for any single Data Element.
|
90
93
|
|
@@ -118,7 +121,7 @@ each data element is indexed by these fields:
|
|
118
121
|
|**tag_str** | String|
|
119
122
|
|**tag_name** | String|
|
120
123
|
|
121
|
-
|
124
|
+
By these fields is possible to access to data element informations.
|
122
125
|
Consider the case of the tag (0010,1005) (*Patient's Birth Name*), the primary fields are:
|
123
126
|
**'(0010,1005)'**, **"Patient's Birth Name"**, **'PatientBirthName'**, **:patient_birth_name**, **'00101005'** and **[0x0010,0x1005]**
|
124
127
|
|
@@ -255,7 +258,7 @@ For this uid all fields are expressed as:
|
|
255
258
|
```
|
256
259
|
|
257
260
|
## How data is extracted
|
258
|
-
The library also contains a script (*dcm_dict_converter.rb*
|
261
|
+
The library also contains a script (*dcm_dict_converter.rb* in the *bin* folder) able to download the xml documents and extracts the source data in a *Ruby compatible format*.
|
259
262
|
The script produces the conversion in the *stdout* so for example is possible to extract the Tag Values by:
|
260
263
|
|
261
264
|
```ruby
|
@@ -267,13 +270,13 @@ Note: the script use the [Nokogiri][3] as XML parser if installed as gem, otherw
|
|
267
270
|
Check the file for other details.
|
268
271
|
|
269
272
|
## Note
|
270
|
-
Current library version is aligned to *DICOM Base Standard **
|
273
|
+
Current library version is aligned to *DICOM Base Standard **2015b***
|
271
274
|
|
272
275
|
## Install
|
273
276
|
|
274
277
|
$ gem install dcm_dict
|
275
278
|
|
276
|
-
*Note for Windows users*: may be that it is installed a previous version of Ruby 2.1,
|
279
|
+
*Note for Windows users*: may be that it is installed a previous version of Ruby 2.1, if [RubyInstaller][7] does not provide the official release for the supported version it's still possible to make it manually by clone/download the ['git' version of RubyInstaller][8] and execute the rake command ```rake ruby21``` or equivalent (see RubyInstaller doc for details).
|
277
280
|
|
278
281
|
## What's next
|
279
282
|
The main idea is that *dictionary* should include only fixed data defined in the DICOM standard to encode and then make it available in easy way.
|
@@ -290,7 +293,7 @@ There are many possible *candidates* for inclusion in the *dictionary*, here are
|
|
290
293
|
TBD
|
291
294
|
|
292
295
|
## License
|
293
|
-
Copyright (C) 2014 Enrico Rivarola.
|
296
|
+
Copyright (C) 2014-2015 Enrico Rivarola.
|
294
297
|
See the `LICENSE` and `COPYING` files for license details.
|
295
298
|
|
296
299
|
## Ruby Gem
|
data/bin/dcm_dict_converter.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# -*- ruby -*-
|
3
3
|
#
|
4
|
-
# Copyright (C) 2014 Enrico Rivarola
|
4
|
+
# Copyright (C) 2014-2015 Enrico Rivarola
|
5
5
|
#
|
6
6
|
# This file is part of DcmDict gem (dcm_dict).
|
7
7
|
#
|
@@ -29,7 +29,7 @@ require 'dcm_dict'
|
|
29
29
|
require 'dcm_dict/xml/xml_tool'
|
30
30
|
|
31
31
|
LICENSE_TEXT=<<END_LICENSE
|
32
|
-
Copyright (C) 2014 Enrico Rivarola
|
32
|
+
Copyright (C) 2014-2015 Enrico Rivarola
|
33
33
|
|
34
34
|
This file is part of DcmDict gem (dcm_dict).
|
35
35
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
#
|
3
|
-
# Copyright (C) 2014 Enrico Rivarola
|
3
|
+
# Copyright (C) 2014-2015 Enrico Rivarola
|
4
4
|
#
|
5
5
|
# This file is part of DcmDict gem (dcm_dict).
|
6
6
|
#
|
@@ -1555,6 +1555,18 @@ HIGH = 0001H'},
|
|
1555
1555
|
{ tag_ps: '(0022,1468)', tag_name: "Registered Localizer Bottom Right Hand Corner", tag_key: 'RegisteredLocalizerBottomRightHandCorner', tag_vr: [:FL], tag_vm: ["2"], tag_str: '(0022,1468)', tag_sym: :registered_localizer_bottom_right_hand_corner, tag_ndm: '00221468', tag_ary: [0x0022,0x1468], tag_multiple: false, tag_note: ''},
|
1556
1556
|
{ tag_ps: '(0022,1470)', tag_name: "Ophthalmic Thickness Map Quality Rating Sequence", tag_key: 'OphthalmicThicknessMapQualityRatingSequence', tag_vr: [:SQ], tag_vm: ["1"], tag_str: '(0022,1470)', tag_sym: :ophthalmic_thickness_map_quality_rating_sequence, tag_ndm: '00221470', tag_ary: [0x0022,0x1470], tag_multiple: false, tag_note: ''},
|
1557
1557
|
{ tag_ps: '(0022,1472)', tag_name: "Relevant OPT Attributes Sequence", tag_key: 'RelevantOPTAttributesSequence', tag_vr: [:SQ], tag_vm: ["1"], tag_str: '(0022,1472)', tag_sym: :relevant_opt_attributes_sequence, tag_ndm: '00221472', tag_ary: [0x0022,0x1472], tag_multiple: false, tag_note: ''},
|
1558
|
+
{ tag_ps: '(0022,1512)', tag_name: "Transformation Method Code Sequence", tag_key: 'TransformationMethodCodeSequence', tag_vr: [:SQ], tag_vm: ["1"], tag_str: '(0022,1512)', tag_sym: :transformation_method_code_sequence, tag_ndm: '00221512', tag_ary: [0x0022,0x1512], tag_multiple: false, tag_note: ''},
|
1559
|
+
{ tag_ps: '(0022,1513)', tag_name: "Transformation Algorithm Sequence", tag_key: 'TransformationAlgorithmSequence', tag_vr: [:SQ], tag_vm: ["1"], tag_str: '(0022,1513)', tag_sym: :transformation_algorithm_sequence, tag_ndm: '00221513', tag_ary: [0x0022,0x1513], tag_multiple: false, tag_note: ''},
|
1560
|
+
{ tag_ps: '(0022,1515)', tag_name: "Ophthalmic Axial Length Method", tag_key: 'OphthalmicAxialLengthMethod', tag_vr: [:CS], tag_vm: ["1"], tag_str: '(0022,1515)', tag_sym: :ophthalmic_axial_length_method, tag_ndm: '00221515', tag_ary: [0x0022,0x1515], tag_multiple: false, tag_note: ''},
|
1561
|
+
{ tag_ps: '(0022,1517)', tag_name: "Ophthalmic FOV", tag_key: 'OphthalmicFOV', tag_vr: [:FL], tag_vm: ["1"], tag_str: '(0022,1517)', tag_sym: :ophthalmic_fov, tag_ndm: '00221517', tag_ary: [0x0022,0x1517], tag_multiple: false, tag_note: ''},
|
1562
|
+
{ tag_ps: '(0022,1518)', tag_name: "Two Dimensional to Three Dimensional Map Sequence", tag_key: 'TwoDimensionalToThreeDimensionalMapSequence', tag_vr: [:SQ], tag_vm: ["1"], tag_str: '(0022,1518)', tag_sym: :two_dimensional_to_three_dimensional_map_sequence, tag_ndm: '00221518', tag_ary: [0x0022,0x1518], tag_multiple: false, tag_note: ''},
|
1563
|
+
{ tag_ps: '(0022,1525)', tag_name: "Wide Field Ophthalmic Photography Quality Rating Sequence", tag_key: 'WideFieldOphthalmicPhotographyQualityRatingSequence', tag_vr: [:SQ], tag_vm: ["1"], tag_str: '(0022,1525)', tag_sym: :wide_field_ophthalmic_photography_quality_rating_sequence, tag_ndm: '00221525', tag_ary: [0x0022,0x1525], tag_multiple: false, tag_note: ''},
|
1564
|
+
{ tag_ps: '(0022,1526)', tag_name: "Wide Field Ophthalmic Photography Quality Threshold Sequence", tag_key: 'WideFieldOphthalmicPhotographyQualityThresholdSequence', tag_vr: [:SQ], tag_vm: ["1"], tag_str: '(0022,1526)', tag_sym: :wide_field_ophthalmic_photography_quality_threshold_sequence, tag_ndm: '00221526', tag_ary: [0x0022,0x1526], tag_multiple: false, tag_note: ''},
|
1565
|
+
{ tag_ps: '(0022,1527)', tag_name: "Wide Field Ophthalmic PhotographyThreshold Quality Rating", tag_key: 'WideFieldOphthalmicPhotographyThresholdQualityRating', tag_vr: [:FL], tag_vm: ["1"], tag_str: '(0022,1527)', tag_sym: :wide_field_ophthalmic_photography_threshold_quality_rating, tag_ndm: '00221527', tag_ary: [0x0022,0x1527], tag_multiple: false, tag_note: ''},
|
1566
|
+
{ tag_ps: '(0022,1528)', tag_name: "X Coordinates Center Pixel View Angle", tag_key: 'XCoordinatesCenterPixelViewAngle', tag_vr: [:FL], tag_vm: ["1"], tag_str: '(0022,1528)', tag_sym: :x_coordinates_center_pixel_view_angle, tag_ndm: '00221528', tag_ary: [0x0022,0x1528], tag_multiple: false, tag_note: ''},
|
1567
|
+
{ tag_ps: '(0022,1529)', tag_name: "Y Coordinates Center Pixel View Angle", tag_key: 'YCoordinatesCenterPixelViewAngle', tag_vr: [:FL], tag_vm: ["1"], tag_str: '(0022,1529)', tag_sym: :y_coordinates_center_pixel_view_angle, tag_ndm: '00221529', tag_ary: [0x0022,0x1529], tag_multiple: false, tag_note: ''},
|
1568
|
+
{ tag_ps: '(0022,1530)', tag_name: "Number of Map Points", tag_key: 'NumberOfMapPoints', tag_vr: [:UL], tag_vm: ["1"], tag_str: '(0022,1530)', tag_sym: :number_of_map_points, tag_ndm: '00221530', tag_ary: [0x0022,0x1530], tag_multiple: false, tag_note: ''},
|
1569
|
+
{ tag_ps: '(0022,1531)', tag_name: "Two Dimensional to Three Dimensional Map Data", tag_key: 'TwoDimensionalToThreeDimensionalMapData', tag_vr: [:OF], tag_vm: ["1"], tag_str: '(0022,1531)', tag_sym: :two_dimensional_to_three_dimensional_map_data, tag_ndm: '00221531', tag_ary: [0x0022,0x1531], tag_multiple: false, tag_note: ''},
|
1558
1570
|
{ tag_ps: '(0024,0010)', tag_name: "Visual Field Horizontal Extent", tag_key: 'VisualFieldHorizontalExtent', tag_vr: [:FL], tag_vm: ["1"], tag_str: '(0024,0010)', tag_sym: :visual_field_horizontal_extent, tag_ndm: '00240010', tag_ary: [0x0024,0x0010], tag_multiple: false, tag_note: ''},
|
1559
1571
|
{ tag_ps: '(0024,0011)', tag_name: "Visual Field Vertical Extent", tag_key: 'VisualFieldVerticalExtent', tag_vr: [:FL], tag_vm: ["1"], tag_str: '(0024,0011)', tag_sym: :visual_field_vertical_extent, tag_ndm: '00240011', tag_ary: [0x0024,0x0011], tag_multiple: false, tag_note: ''},
|
1560
1572
|
{ tag_ps: '(0024,0012)', tag_name: "Visual Field Shape", tag_key: 'VisualFieldShape', tag_vr: [:CS], tag_vm: ["1"], tag_str: '(0024,0012)', tag_sym: :visual_field_shape, tag_ndm: '00240012', tag_ary: [0x0024,0x0012], tag_multiple: false, tag_note: ''},
|
@@ -3551,6 +3563,9 @@ HIGH = 0001H'},
|
|
3551
3563
|
{ tag_ps: '(300A,012C)', tag_name: "Isocenter Position", tag_key: 'IsocenterPosition', tag_vr: [:DS], tag_vm: ["3"], tag_str: '(300A,012C)', tag_sym: :isocenter_position, tag_ndm: '300A012C', tag_ary: [0x300A,0x012C], tag_multiple: false, tag_note: ''},
|
3552
3564
|
{ tag_ps: '(300A,012E)', tag_name: "Surface Entry Point", tag_key: 'SurfaceEntryPoint', tag_vr: [:DS], tag_vm: ["3"], tag_str: '(300A,012E)', tag_sym: :surface_entry_point, tag_ndm: '300A012E', tag_ary: [0x300A,0x012E], tag_multiple: false, tag_note: ''},
|
3553
3565
|
{ tag_ps: '(300A,0130)', tag_name: "Source to Surface Distance", tag_key: 'SourceToSurfaceDistance', tag_vr: [:DS], tag_vm: ["1"], tag_str: '(300A,0130)', tag_sym: :source_to_surface_distance, tag_ndm: '300A0130', tag_ary: [0x300A,0x0130], tag_multiple: false, tag_note: ''},
|
3566
|
+
{ tag_ps: '(300A,0131)', tag_name: "Average Beam Dose Point Source to External Contour Surface Distance", tag_key: 'AverageBeamDosePointSourceToExternalContourSurfaceDistance', tag_vr: [:FL], tag_vm: ["1"], tag_str: '(300A,0131)', tag_sym: :average_beam_dose_point_source_to_external_contour_surface_distance, tag_ndm: '300A0131', tag_ary: [0x300A,0x0131], tag_multiple: false, tag_note: ''},
|
3567
|
+
{ tag_ps: '(300A,0132)', tag_name: "Source to External Contour Distance", tag_key: 'SourceToExternalContourDistance', tag_vr: [:FL], tag_vm: ["1"], tag_str: '(300A,0132)', tag_sym: :source_to_external_contour_distance, tag_ndm: '300A0132', tag_ary: [0x300A,0x0132], tag_multiple: false, tag_note: ''},
|
3568
|
+
{ tag_ps: '(300A,0133)', tag_name: "External Contour Entry Point", tag_key: 'ExternalContourEntryPoint', tag_vr: [:FL], tag_vm: ["3"], tag_str: '(300A,0133)', tag_sym: :external_contour_entry_point, tag_ndm: '300A0133', tag_ary: [0x300A,0x0133], tag_multiple: false, tag_note: ''},
|
3554
3569
|
{ tag_ps: '(300A,0134)', tag_name: "Cumulative Meterset Weight", tag_key: 'CumulativeMetersetWeight', tag_vr: [:DS], tag_vm: ["1"], tag_str: '(300A,0134)', tag_sym: :cumulative_meterset_weight, tag_ndm: '300A0134', tag_ary: [0x300A,0x0134], tag_multiple: false, tag_note: ''},
|
3555
3570
|
{ tag_ps: '(300A,0140)', tag_name: "Table Top Pitch Angle", tag_key: 'TableTopPitchAngle', tag_vr: [:FL], tag_vm: ["1"], tag_str: '(300A,0140)', tag_sym: :table_top_pitch_angle, tag_ndm: '300A0140', tag_ary: [0x300A,0x0140], tag_multiple: false, tag_note: ''},
|
3556
3571
|
{ tag_ps: '(300A,0142)', tag_name: "Table Top Pitch Rotation Direction", tag_key: 'TableTopPitchRotationDirection', tag_vr: [:CS], tag_vm: ["1"], tag_str: '(300A,0142)', tag_sym: :table_top_pitch_rotation_direction, tag_ndm: '300A0142', tag_ary: [0x300A,0x0142], tag_multiple: false, tag_note: ''},
|
@@ -3739,6 +3754,14 @@ HIGH = 0001H'},
|
|
3739
3754
|
{ tag_ps: '(300A,0434)', tag_name: "Applicator Opening X", tag_key: 'ApplicatorOpeningX', tag_vr: [:FL], tag_vm: ["1"], tag_str: '(300A,0434)', tag_sym: :applicator_opening_x, tag_ndm: '300A0434', tag_ary: [0x300A,0x0434], tag_multiple: false, tag_note: ''},
|
3740
3755
|
{ tag_ps: '(300A,0435)', tag_name: "Applicator Opening Y", tag_key: 'ApplicatorOpeningY', tag_vr: [:FL], tag_vm: ["1"], tag_str: '(300A,0435)', tag_sym: :applicator_opening_y, tag_ndm: '300A0435', tag_ary: [0x300A,0x0435], tag_multiple: false, tag_note: ''},
|
3741
3756
|
{ tag_ps: '(300A,0436)', tag_name: "Source to Applicator Mounting Position Distance", tag_key: 'SourceToApplicatorMountingPositionDistance', tag_vr: [:FL], tag_vm: ["1"], tag_str: '(300A,0436)', tag_sym: :source_to_applicator_mounting_position_distance, tag_ndm: '300A0436', tag_ary: [0x300A,0x0436], tag_multiple: false, tag_note: ''},
|
3757
|
+
{ tag_ps: '(300A,0440)', tag_name: "Number of Block Slab Items", tag_key: 'NumberOfBlockSlabItems', tag_vr: [:IS], tag_vm: ["1"], tag_str: '(300A,0440)', tag_sym: :number_of_block_slab_items, tag_ndm: '300A0440', tag_ary: [0x300A,0x0440], tag_multiple: false, tag_note: ''},
|
3758
|
+
{ tag_ps: '(300A,0441)', tag_name: "Block Slab Sequence", tag_key: 'BlockSlabSequence', tag_vr: [:SQ], tag_vm: ["1"], tag_str: '(300A,0441)', tag_sym: :block_slab_sequence, tag_ndm: '300A0441', tag_ary: [0x300A,0x0441], tag_multiple: false, tag_note: ''},
|
3759
|
+
{ tag_ps: '(300A,0442)', tag_name: "Block Slab Thickness", tag_key: 'BlockSlabThickness', tag_vr: [:DS], tag_vm: ["1"], tag_str: '(300A,0442)', tag_sym: :block_slab_thickness, tag_ndm: '300A0442', tag_ary: [0x300A,0x0442], tag_multiple: false, tag_note: ''},
|
3760
|
+
{ tag_ps: '(300A,0443)', tag_name: "Block Slab Number", tag_key: 'BlockSlabNumber', tag_vr: [:US], tag_vm: ["1"], tag_str: '(300A,0443)', tag_sym: :block_slab_number, tag_ndm: '300A0443', tag_ary: [0x300A,0x0443], tag_multiple: false, tag_note: ''},
|
3761
|
+
{ tag_ps: '(300A,0450)', tag_name: "Device Motion Control Sequence", tag_key: 'DeviceMotionControlSequence', tag_vr: [:SQ], tag_vm: ["1"], tag_str: '(300A,0450)', tag_sym: :device_motion_control_sequence, tag_ndm: '300A0450', tag_ary: [0x300A,0x0450], tag_multiple: false, tag_note: ''},
|
3762
|
+
{ tag_ps: '(300A,0451)', tag_name: "Device Motion Execution Mode", tag_key: 'DeviceMotionExecutionMode', tag_vr: [:CS], tag_vm: ["1"], tag_str: '(300A,0451)', tag_sym: :device_motion_execution_mode, tag_ndm: '300A0451', tag_ary: [0x300A,0x0451], tag_multiple: false, tag_note: ''},
|
3763
|
+
{ tag_ps: '(300A,0452)', tag_name: "Device Motion Observation Mode", tag_key: 'DeviceMotionObservationMode', tag_vr: [:CS], tag_vm: ["1"], tag_str: '(300A,0452)', tag_sym: :device_motion_observation_mode, tag_ndm: '300A0452', tag_ary: [0x300A,0x0452], tag_multiple: false, tag_note: ''},
|
3764
|
+
{ tag_ps: '(300A,0453)', tag_name: "Device Motion Parameter Code Sequence", tag_key: 'DeviceMotionParameterCodeSequence', tag_vr: [:SQ], tag_vm: ["1"], tag_str: '(300A,0453)', tag_sym: :device_motion_parameter_code_sequence, tag_ndm: '300A0453', tag_ary: [0x300A,0x0453], tag_multiple: false, tag_note: ''},
|
3742
3765
|
{ tag_ps: '(300C,0002)', tag_name: "Referenced RT Plan Sequence", tag_key: 'ReferencedRTPlanSequence', tag_vr: [:SQ], tag_vm: ["1"], tag_str: '(300C,0002)', tag_sym: :referenced_rt_plan_sequence, tag_ndm: '300C0002', tag_ary: [0x300C,0x0002], tag_multiple: false, tag_note: ''},
|
3743
3766
|
{ tag_ps: '(300C,0004)', tag_name: "Referenced Beam Sequence", tag_key: 'ReferencedBeamSequence', tag_vr: [:SQ], tag_vm: ["1"], tag_str: '(300C,0004)', tag_sym: :referenced_beam_sequence, tag_ndm: '300C0004', tag_ary: [0x300C,0x0004], tag_multiple: false, tag_note: ''},
|
3744
3767
|
{ tag_ps: '(300C,0006)', tag_name: "Referenced Beam Number", tag_key: 'ReferencedBeamNumber', tag_vr: [:IS], tag_vm: ["1"], tag_str: '(300C,0006)', tag_sym: :referenced_beam_number, tag_ndm: '300C0006', tag_ary: [0x300C,0x0006], tag_multiple: false, tag_note: ''},
|
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# Copyright (C) 2014 Enrico Rivarola
|
2
|
+
# Copyright (C) 2014-2015 Enrico Rivarola
|
3
3
|
#
|
4
4
|
# This file is part of DcmDict gem (dcm_dict).
|
5
5
|
#
|
@@ -222,6 +222,8 @@ module DcmDict
|
|
222
222
|
{ uid_value: '1.2.840.10008.5.1.4.1.1.77.1.5.2', uid_name: "Ophthalmic Photography 16 Bit Image Storage", uid_type: :sop_class},
|
223
223
|
{ uid_value: '1.2.840.10008.5.1.4.1.1.77.1.5.3', uid_name: "Stereometric Relationship Storage", uid_type: :sop_class},
|
224
224
|
{ uid_value: '1.2.840.10008.5.1.4.1.1.77.1.5.4', uid_name: "Ophthalmic Tomography Image Storage", uid_type: :sop_class},
|
225
|
+
{ uid_value: '1.2.840.10008.5.1.4.1.1.77.1.5.5', uid_name: "Wide Field Ophthalmic Photography Stereographic Projection Image Storage", uid_type: :sop_class},
|
226
|
+
{ uid_value: '1.2.840.10008.5.1.4.1.1.77.1.5.6', uid_name: "Wide Field Ophthalmic Photography 3D Coordinates Image Storage", uid_type: :sop_class},
|
225
227
|
{ uid_value: '1.2.840.10008.5.1.4.1.1.77.1.6', uid_name: "VL Whole Slide Microscopy Image Storage", uid_type: :sop_class},
|
226
228
|
{ uid_value: '1.2.840.10008.5.1.4.1.1.78.1', uid_name: "Lensometry Measurements Storage", uid_type: :sop_class},
|
227
229
|
{ uid_value: '1.2.840.10008.5.1.4.1.1.78.2', uid_name: "Autorefraction Measurements Storage", uid_type: :sop_class},
|
data/lib/dcm_dict/version.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# Copyright (C) 2014 Enrico Rivarola
|
2
|
+
# Copyright (C) 2014-2015 Enrico Rivarola
|
3
3
|
#
|
4
4
|
# This file is part of DcmDict gem (dcm_dict).
|
5
5
|
#
|
@@ -22,6 +22,6 @@
|
|
22
22
|
# applicable local, state, national or international regulations.
|
23
23
|
#
|
24
24
|
module DcmDict
|
25
|
-
VERSION = "0.
|
26
|
-
DICOM_DOC_VERSION = "
|
25
|
+
VERSION = "0.5.0"
|
26
|
+
DICOM_DOC_VERSION = "2015b"
|
27
27
|
end
|
data/lib/dcm_dict.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# Copyright (C) 2014 Enrico Rivarola
|
2
|
+
# Copyright (C) 2014-2015 Enrico Rivarola
|
3
3
|
#
|
4
4
|
# This file is part of DcmDict gem (dcm_dict).
|
5
5
|
#
|
@@ -52,12 +52,12 @@ describe DcmDict::Dictionary::DataElementRecord do
|
|
52
52
|
tag_multiple: false,
|
53
53
|
tag_note: ''},
|
54
54
|
{ tag_ps: '(0008,0118)',
|
55
|
-
tag_name: "
|
56
|
-
tag_key: '
|
55
|
+
tag_name: "Long Code Value",
|
56
|
+
tag_key: 'LongCodeValue',
|
57
57
|
tag_vr: [:UC],
|
58
58
|
tag_vm: ["1"],
|
59
59
|
tag_str: '(0008,0118)',
|
60
|
-
tag_sym: :
|
60
|
+
tag_sym: :long_code_value,
|
61
61
|
tag_ndm: '00080118',
|
62
62
|
tag_ary: [0x0008,0x0118],
|
63
63
|
tag_multiple: false,
|
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# Copyright (C) 2014 Enrico Rivarola
|
2
|
+
# Copyright (C) 2014-2015 Enrico Rivarola
|
3
3
|
#
|
4
4
|
# This file is part of DcmDict gem (dcm_dict).
|
5
5
|
#
|
@@ -36,7 +36,6 @@ describe "Array refinement" do
|
|
36
36
|
multi_data = { [0x6046,0x0040] => {
|
37
37
|
tag_name: "Overlay Type",
|
38
38
|
tag_multiple: true,
|
39
|
-
tag_name: "Overlay Type",
|
40
39
|
tag_keyword: "OverlayType",
|
41
40
|
tag_key: "OverlayType",
|
42
41
|
tag_vr: [:CS], tag_vm: ["1"],
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dcm_dict
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Enrico Rivarola
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-04-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -90,8 +90,8 @@ dependencies:
|
|
90
90
|
- - ">="
|
91
91
|
- !ruby/object:Gem::Version
|
92
92
|
version: 10.3.0
|
93
|
-
description: DcmDict is a Ruby gem (dcm_dict) to handle in a simple way the Data
|
94
|
-
within the DICOM Standard
|
93
|
+
description: DcmDict is a Ruby gem (dcm_dict) to handle in a simple way the Data Dictionary
|
94
|
+
defined within the DICOM Standard
|
95
95
|
email: henrythebuilder@yahoo.it
|
96
96
|
executables:
|
97
97
|
- dcm_dict_converter.rb
|
@@ -179,7 +179,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
179
179
|
version: '0'
|
180
180
|
requirements: []
|
181
181
|
rubyforge_project:
|
182
|
-
rubygems_version: 2.4.
|
182
|
+
rubygems_version: 2.4.6
|
183
183
|
signing_key:
|
184
184
|
specification_version: 4
|
185
185
|
summary: A simple way to handle DICOM Data Dictionary
|