ruby_astm 1.2.4 → 1.2.5
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 +56 -22
- 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: c8929f2849304da9211d8a1bc5dda4f531d86b1efd93c0961c5911fd850b166c
|
4
|
+
data.tar.gz: 2582f498e916278c9795fbe3dd9438223e9c890eb19094c50ea8ca4b8bb38f7c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1f646e07f6c22da4abc05758095158743b1e19995beff2f90392369e2445141a3afe2ea620bd977cedc0ec79cd6d2158f5b760c527aed13af401d56c7b3a8c30
|
7
|
+
data.tar.gz: da45a2cfd005e8353e5df652e536499876684f9cb7eff7f1d89b5d246f982ed640ea47355b838e4c367df545062cf62a7d74049ad4e73618009e05f2e6895926
|
@@ -20,6 +20,7 @@ module LabInterface
|
|
20
20
|
mattr_accessor :usb_port
|
21
21
|
mattr_accessor :usb_baud
|
22
22
|
mattr_accessor :usb_parity
|
23
|
+
mattr_accessor :mid_frame_end_detected
|
23
24
|
|
24
25
|
|
25
26
|
|
@@ -89,6 +90,18 @@ module LabInterface
|
|
89
90
|
}
|
90
91
|
end
|
91
92
|
|
93
|
+
def is_mid_frame_end?(bytes_array)
|
94
|
+
unless bytes_array.blank?
|
95
|
+
if bytes_array.size >= 6
|
96
|
+
if bytes_array[-6..-1] == [23,65,52,13,10,2]
|
97
|
+
self.mid_frame_end_detected = true
|
98
|
+
return self.mid_frame_end_detected
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
return false
|
103
|
+
end
|
104
|
+
|
92
105
|
def receive_data(data)
|
93
106
|
|
94
107
|
|
@@ -97,13 +110,32 @@ module LabInterface
|
|
97
110
|
|
98
111
|
self.data_buffer ||= ''
|
99
112
|
|
100
|
-
puts "incoming data bytes."
|
113
|
+
#puts "incoming data bytes."
|
101
114
|
|
102
115
|
concat = ""
|
103
116
|
|
104
|
-
puts data.bytes.to_a.to_s
|
117
|
+
#puts data.bytes.to_a.to_s
|
105
118
|
|
106
|
-
|
119
|
+
|
120
|
+
## if the bytes end in 13,10,2
|
121
|
+
## that means frame ends and restarts
|
122
|
+
## ignore those three bytes
|
123
|
+
byte_arr = data.bytes.to_a
|
124
|
+
#puts "byte arr is:"
|
125
|
+
#puts byte_arr
|
126
|
+
|
127
|
+
if is_mid_frame_end?(byte_arr)
|
128
|
+
#puts "mid frame end is true---------------!!!!!!!!!!"
|
129
|
+
byte_arr = byte_arr[0..-7]
|
130
|
+
#puts "byte arr BECOMES mid frame end is true---------------!!!!!!!!!!"
|
131
|
+
#puts byte_arr.pack('c*')
|
132
|
+
elsif self.mid_frame_end_detected == true
|
133
|
+
## we ignore the frame number.
|
134
|
+
byte_arr = byte_arr[1..-1]
|
135
|
+
self.mid_frame_end_detected = false
|
136
|
+
end
|
137
|
+
|
138
|
+
byte_arr.each do |byte|
|
107
139
|
x = [byte].pack('c*').force_encoding('UTF-8')
|
108
140
|
if x == "\r"
|
109
141
|
concat+="\n"
|
@@ -129,23 +161,23 @@ module LabInterface
|
|
129
161
|
|
130
162
|
|
131
163
|
if data.bytes.to_a[-1] == 4
|
132
|
-
puts "GOT EOT --- PROCESSING BUFFER, AND CLEARING."
|
164
|
+
#puts "GOT EOT --- PROCESSING BUFFER, AND CLEARING."
|
133
165
|
process_text(self.data_buffer)
|
134
166
|
self.data_buffer = ''
|
135
167
|
if self.headers[-1].queries.blank?
|
136
|
-
puts "no queries in header so sending ack after getting EOT and processing the buffer"
|
168
|
+
#puts "no queries in header so sending ack after getting EOT and processing the buffer"
|
137
169
|
send_data(ACK)
|
138
170
|
else
|
139
|
-
puts "sending ENQ"
|
171
|
+
#puts "sending ENQ"
|
140
172
|
send_data(ENQ)
|
141
173
|
end
|
142
174
|
elsif data.bytes.to_a[0] == 6
|
143
|
-
puts "GOT ACK --- GENERATING RESPONSE"
|
175
|
+
#puts "GOT ACK --- GENERATING RESPONSE"
|
144
176
|
unless self.headers.blank?
|
145
177
|
header_responses = self.headers[-1].build_one_response({machine_name: self.headers[-1].machine_name})
|
146
178
|
## if no queries then, we have to send ack.
|
147
179
|
if header_responses.blank?
|
148
|
-
puts "sending ACK since there are no queries in the header"
|
180
|
+
#puts "sending ACK since there are no queries in the header"
|
149
181
|
send_data(ACK)
|
150
182
|
end
|
151
183
|
header_responses.each_with_index {|response,key|
|
@@ -154,30 +186,30 @@ module LabInterface
|
|
154
186
|
final_resp_arr = final_resp.bytes.to_a
|
155
187
|
final_resp_arr << 10
|
156
188
|
if (self.headers[-1].response_sent == false)
|
157
|
-
puts "sending the data as follows----------------------------------------------"
|
158
|
-
puts "response sent is:"
|
159
|
-
puts self.headers[-1].response_sent
|
160
|
-
puts final_resp_arr.pack('c*').gsub(/\r/,'\n')
|
189
|
+
#puts "sending the data as follows----------------------------------------------"
|
190
|
+
#puts "response sent is:"
|
191
|
+
#puts self.headers[-1].response_sent
|
192
|
+
#puts final_resp_arr.pack('c*').gsub(/\r/,'\n')
|
161
193
|
send_data(final_resp_arr.pack('c*'))
|
162
194
|
self.headers[-1].response_sent = true if (key == (header_responses.size - 1))
|
163
195
|
else
|
164
|
-
puts "sending EOT"
|
196
|
+
#puts "sending EOT"
|
165
197
|
send_data(EOT)
|
166
198
|
end
|
167
199
|
}
|
168
200
|
else
|
169
|
-
puts "NO HEADERS PRESENT --- "
|
201
|
+
#puts "NO HEADERS PRESENT --- "
|
170
202
|
end
|
171
203
|
elsif data.bytes.to_a[0] == 255
|
172
|
-
puts " ----------- got 255 data -----------, not sending anything back. "
|
204
|
+
#puts " ----------- got 255 data -----------, not sending anything back. "
|
173
205
|
else
|
174
|
-
unless self.data_buffer.blank?
|
175
|
-
|
176
|
-
end
|
206
|
+
#unless self.data_buffer.blank?
|
207
|
+
# puts self.data_buffer.gsub(/\r/,'\n').to_s
|
208
|
+
#end
|
177
209
|
## send the header
|
178
210
|
#puts "--------- SENT ACK -----------"
|
179
211
|
if self.data_buffer =~ /MSH\|/
|
180
|
-
puts " -------------- HEADERS ARE BLANK WITH HL7, sending ack. ------------ "
|
212
|
+
#puts " -------------- HEADERS ARE BLANK WITH HL7, sending ack. ------------ "
|
181
213
|
process_text(self.data_buffer)
|
182
214
|
self.data_buffer = ''
|
183
215
|
if self.headers.size > 0
|
@@ -185,7 +217,7 @@ module LabInterface
|
|
185
217
|
send_data(self.headers[-1].generate_ack_success_response)
|
186
218
|
end
|
187
219
|
else
|
188
|
-
puts " -------------- HEADERS ARE BLANK NOT HL7, sending ack. ------------ "
|
220
|
+
#puts " -------------- HEADERS ARE BLANK NOT HL7, sending ack. ------------ "
|
189
221
|
send_data(ACK)
|
190
222
|
end
|
191
223
|
end
|
@@ -199,12 +231,14 @@ module LabInterface
|
|
199
231
|
end
|
200
232
|
|
201
233
|
def send_enq
|
202
|
-
puts "enq as bytes is:"
|
203
|
-
puts ENQ.unpack('c*')
|
234
|
+
#puts "enq as bytes is:"
|
235
|
+
#puts ENQ.unpack('c*')
|
204
236
|
send_data(ENQ)
|
205
237
|
end
|
206
238
|
|
207
239
|
def process_text(text)
|
240
|
+
puts "text is:"
|
241
|
+
puts text
|
208
242
|
text.split("\n").each do |l|
|
209
243
|
line = Line.new({:text => l})
|
210
244
|
process_type(line)
|