Dicom_UID 0.0.13 → 0.0.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +15 -2
- data/lib/dicom_uid.rb +26 -44
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 93f2b64dd2594ac1122cc624b35597a2a18af269a26023d6bff74aeedca605cd
|
4
|
+
data.tar.gz: dc0f37dccf407397d7476692289ded0e0658313e93e8e0d07a90640e3f810ebb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d34818eefeb7579057055c4c0d457692895ff6caa4c4ba0ac9af2e33ff54d09e5bea2789525026ef1f12600aeb3c07100554fc78776cbc10faab590ab7a49ce
|
7
|
+
data.tar.gz: bcf8b9e9d594bd46aa70dc54a4898ad506f9a17ebaf009584144a6c8a91363c23217042a0a006be29440519da138f9ba83cabf0310732686666ebed8e35bbc04
|
data/README.md
CHANGED
@@ -2,10 +2,23 @@
|
|
2
2
|
|
3
3
|
Gem generating DICOM random UID
|
4
4
|
|
5
|
+
|
6
|
+
## Documentation
|
7
|
+
|
8
|
+
![Here](https://poulpy.github.io/DICOM-UID/docs/)
|
9
|
+
|
10
|
+
|
5
11
|
## Examples
|
6
12
|
|
7
13
|
```ruby
|
8
|
-
|
9
|
-
|
14
|
+
DicomUID.random_dicom_uid '10.12.6.64', 60
|
15
|
+
# 10.12.6.64.427667812798425850151433034003527467011730.452.0
|
16
|
+
DicomUID.random_dicom_uid '1.1.3.62', 30, false
|
17
|
+
# 1.1.3.62.5029609471.336514265
|
18
|
+
|
19
|
+
DicomUID.random_component 6
|
20
|
+
# 9538
|
21
|
+
DicomUID.random_component 30, false
|
22
|
+
# 59452307
|
10
23
|
```
|
11
24
|
|
data/lib/dicom_uid.rb
CHANGED
@@ -6,9 +6,32 @@
|
|
6
6
|
# The UID must not be more than 64 characters, dots included.
|
7
7
|
module DicomUID
|
8
8
|
|
9
|
-
#
|
10
|
-
|
9
|
+
# set default values, with org_root if needed
|
10
|
+
# the size of the UID is randomized
|
11
|
+
# fixed_size is the size ogf the whole UID, with the org taken into account
|
12
|
+
def self.random_dicom_uid org_root, fixed_size, odd_byte_boundary = true
|
13
|
+
|
14
|
+
raise TypeError, 'Org root must be a string or an Integer' unless org_root.is_a? String or org_root.is_a? Integer
|
15
|
+
org_root = org_root.to_s if org_root.is_a? Integer
|
16
|
+
raise TypeError unless fixed_size.is_a? Integer and odd_byte_boundary == !!odd_byte_boundary
|
17
|
+
|
18
|
+
# building the org root
|
19
|
+
org_root = self.random_component(62, odd_byte_boundary) if org_root.empty?# UID needs at least an org root
|
20
|
+
raise LeadingZeroError if leading_zero? org_root
|
21
|
+
raise OddByteError if !odd_byte_rule(org_root) and odd_byte_boundary
|
22
|
+
|
23
|
+
# if the fixed size doesn't exist, a random one is created, but
|
24
|
+
# it must be generated so that the UID musn't be above 64 chars
|
25
|
+
fixed_size ||= rand(0..(64 - org_root.length - 1))
|
26
|
+
fixed_size -= 1 if add_missing_dot org_root
|
11
27
|
|
28
|
+
raise OversizedUIDError if fixed_size > 64
|
29
|
+
raise RangeError, 'Size of Org root larger than size provided' if fixed_size < org_root.length
|
30
|
+
raise RangeError, "Size of UID can't be negative" if fixed_size < 0
|
31
|
+
|
32
|
+
# building the suffix
|
33
|
+
self.rand_duid org_root, (fixed_size - org_root.length), odd_byte_boundary
|
34
|
+
end
|
12
35
|
|
13
36
|
# Generates random component with defined, maximum length
|
14
37
|
# The maximum length is 62. Why ? Because an UID has at least an org_root
|
@@ -44,38 +67,6 @@ module DicomUID
|
|
44
67
|
component
|
45
68
|
end
|
46
69
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
# set default values, with org_root if needed
|
51
|
-
# the size of the UID is randomized
|
52
|
-
# fixed_size is the size ogf the whole UID, with the org taken into account
|
53
|
-
def self.random_dicom_uid org_root, fixed_size, odd_byte_boundary = true
|
54
|
-
|
55
|
-
raise TypeError, 'Org root must be a string or an Integer' unless org_root.is_a? String or org_root.is_a? Integer
|
56
|
-
org_root = org_root.to_s if org_root.is_a? Integer
|
57
|
-
raise TypeError unless fixed_size.is_a? Integer and odd_byte_boundary == !!odd_byte_boundary
|
58
|
-
|
59
|
-
# building the org root
|
60
|
-
org_root = self.random_component(62, odd_byte_boundary) if org_root.empty?# UID needs at least an org root
|
61
|
-
raise LeadingZeroError if leading_zero? org_root
|
62
|
-
raise OddByteError if !odd_byte_rule(org_root) and odd_byte_boundary
|
63
|
-
|
64
|
-
# if the fixed size doesn't exist, a random one is created, but
|
65
|
-
# it must be generated so that the UID musn't be above 64 chars
|
66
|
-
fixed_size ||= rand(0..(64 - org_root.length - 1))
|
67
|
-
fixed_size -= 1 if add_missing_dot org_root
|
68
|
-
|
69
|
-
raise OversizedUIDError if fixed_size > 64
|
70
|
-
raise RangeError, 'Size of Org root larger than size provided' if fixed_size < org_root.length
|
71
|
-
raise RangeError, "Size of UID can't be negative" if fixed_size < 0
|
72
|
-
|
73
|
-
# building the suffix
|
74
|
-
self.rand_duid org_root, (fixed_size - org_root.length), odd_byte_boundary
|
75
|
-
end
|
76
|
-
|
77
|
-
|
78
|
-
|
79
70
|
# Return an array of UIDs, from a common org root
|
80
71
|
def self.random_uids org_root, fixed_size, array_size, odd_byte_boundary = true
|
81
72
|
uids = Array.new array_size
|
@@ -87,8 +78,6 @@ module DicomUID
|
|
87
78
|
uids
|
88
79
|
end
|
89
80
|
|
90
|
-
|
91
|
-
|
92
81
|
private
|
93
82
|
|
94
83
|
# Generates recursively a random dicom uid
|
@@ -108,14 +97,8 @@ module DicomUID
|
|
108
97
|
self.rand_duid uid, remain - 1, obb
|
109
98
|
end
|
110
99
|
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
100
|
end
|
117
101
|
|
118
|
-
|
119
102
|
def add_missing_dot comp
|
120
103
|
raise TypeError unless comp.is_a? String
|
121
104
|
if comp[-1] != '.'
|
@@ -125,13 +108,11 @@ def add_missing_dot comp
|
|
125
108
|
false
|
126
109
|
end
|
127
110
|
|
128
|
-
|
129
111
|
def odd_byte_rule comp
|
130
112
|
return comp[-1].to_i % 2 == 0 || (comp[-2].to_i % 2 == 1 && comp[-1].to_i == 0) if comp.length != 1
|
131
113
|
comp[-1].to_i % 2 == 0
|
132
114
|
end
|
133
115
|
|
134
|
-
|
135
116
|
def leading_zero? org_root
|
136
117
|
org_root[0] == '0' and org_root.length != 1
|
137
118
|
end
|
@@ -157,3 +138,4 @@ class OversizedUIDError < StandardError
|
|
157
138
|
super
|
158
139
|
end
|
159
140
|
end
|
141
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: Dicom_UID
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Repain Paul
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-10-19 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Generates random UID for DICOM files
|
14
14
|
email: paul.repain@yahoo.com
|