ruby_astm 1.0.9 → 1.1.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.
- checksums.yaml +4 -4
- data/lib/ruby_astm/lab_interface.rb +22 -7
- data/lib/ruby_astm/order.rb +4 -4
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b5aad9b688056b23b5252d954ec6f6e53d11decab2e5adbd33251613642f5ee0
|
4
|
+
data.tar.gz: 1b9b7cac6d3122b4cd62a36611a05226254453a124788078ba51ab0ea03f22fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8ca884192d09d41a0982012a22fd79a832f7737697f1b182ba125e28cfc4a194c4908a62d7e5eae127e4acfa6bdf248a3012d26a5d557fcacdb083625bd1fad2
|
7
|
+
data.tar.gz: 6e1896e259496d069a9aa86e255a38b70c119b4460b3e875958360bbcfc013a86dd88aed79a2a78192c729fad14de321794573bdf4008fe5b0e58a4eaee89fdf
|
@@ -10,13 +10,18 @@ module LabInterface
|
|
10
10
|
ETX = "\x03"
|
11
11
|
EOT = "\x04"
|
12
12
|
|
13
|
+
|
14
|
+
|
13
15
|
mattr_accessor :headers
|
14
16
|
mattr_accessor :ethernet_server
|
15
17
|
mattr_accessor :server_ip
|
16
18
|
mattr_accessor :server_port
|
17
19
|
mattr_accessor :mapping
|
18
20
|
mattr_accessor :respond_to_queries
|
19
|
-
|
21
|
+
|
22
|
+
## buffer of incoming data.
|
23
|
+
mattr_accessor :data_buffer
|
24
|
+
|
20
25
|
|
21
26
|
## returns the root directory of the gem.
|
22
27
|
def root
|
@@ -56,7 +61,9 @@ module LabInterface
|
|
56
61
|
|
57
62
|
def receive_data(data)
|
58
63
|
|
59
|
-
|
64
|
+
self.data_buffer ||= ''
|
65
|
+
|
66
|
+
#puts "incoming data bytes."
|
60
67
|
|
61
68
|
concat = ""
|
62
69
|
|
@@ -77,10 +84,20 @@ module LabInterface
|
|
77
84
|
end
|
78
85
|
|
79
86
|
#puts "concat is:"
|
87
|
+
|
80
88
|
#puts concat.to_s
|
81
|
-
process_text(concat)
|
82
89
|
|
83
|
-
|
90
|
+
self.data_buffer << concat
|
91
|
+
|
92
|
+
## if the last byte is EOT, then call process text.
|
93
|
+
## inside that split by line and process one at a time.
|
94
|
+
##process_text(concat)
|
95
|
+
|
96
|
+
|
97
|
+
if data.bytes.to_a[-1] == 4
|
98
|
+
puts self.data_buffer
|
99
|
+
process_text(self.data_buffer)
|
100
|
+
self.data_buffer = ''
|
84
101
|
send_data(ENQ)
|
85
102
|
elsif data.bytes.to_a[0] == 6
|
86
103
|
self.headers[-1].build_responses.each do |response|
|
@@ -99,7 +116,7 @@ module LabInterface
|
|
99
116
|
end
|
100
117
|
else
|
101
118
|
## send the header
|
102
|
-
puts "--------- SENT ACK -----------"
|
119
|
+
#puts "--------- SENT ACK -----------"
|
103
120
|
if self.headers.blank?
|
104
121
|
send_data(ACK)
|
105
122
|
else
|
@@ -123,8 +140,6 @@ module LabInterface
|
|
123
140
|
end
|
124
141
|
|
125
142
|
def process_text(text)
|
126
|
-
## should replace carriage returns with new lines, before processing any file.
|
127
|
-
## or text.
|
128
143
|
text.split("\n").each do |l|
|
129
144
|
line = Line.new({:text => l})
|
130
145
|
process_type(line)
|
data/lib/ruby_astm/order.rb
CHANGED
@@ -36,13 +36,13 @@ class Order
|
|
36
36
|
|
37
37
|
def set_id(args)
|
38
38
|
if line = args[:line]
|
39
|
-
if !line.fields[2].
|
39
|
+
if !line.fields[2].blank?
|
40
40
|
line.fields[2].strip.scan(/(?<specimen_id>[^\^]+)/) { |specimen_id|
|
41
|
-
self.id ||= specimen_id
|
41
|
+
self.id ||= specimen_id[0]
|
42
42
|
}
|
43
|
-
elsif !line.fields[3].
|
43
|
+
elsif !line.fields[3].blank?
|
44
44
|
## for the sysmex xn-550 this is the regex.
|
45
|
-
line.fields[3].strip.scan(/(?<tube_rack>\d+\^)+(?<patient_id>.+)\^/) { |tube_rack,patient_id| self.id = patient_id.strip}
|
45
|
+
line.fields[3].strip.scan(/(?<tube_rack>\d+\^)+(?<patient_id>.+)\^/) { |tube_rack,patient_id| self.id = patient_id.strip}
|
46
46
|
end
|
47
47
|
else
|
48
48
|
self.id = args[:specimen_id]
|