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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ruby_astm/lab_interface.rb +56 -22
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 80e32a89f60fc8e6323b9de22d2b1511d8c28d3eca13e819c2195f47bb9e1707
4
- data.tar.gz: b394691adcb1355a3715fb7646d352c791357f5a7668b3183209b1f33087b335
3
+ metadata.gz: c8929f2849304da9211d8a1bc5dda4f531d86b1efd93c0961c5911fd850b166c
4
+ data.tar.gz: 2582f498e916278c9795fbe3dd9438223e9c890eb19094c50ea8ca4b8bb38f7c
5
5
  SHA512:
6
- metadata.gz: 28abc36250ca2dfaf2e429cac95a89c26585c13823ede3ed17c892423249245b3f2298f2c0a2e81bf452036f4b4cd99c73e49d63f2dbc78a4180bd7fa7dde161
7
- data.tar.gz: f1b7cde59e37731392f1ab47014e78290ea2c801a65c0e9de21e335f9d17c46a231f7f5ef785bef6cbcbb6fc3399d866caa6a71d163c648c27e10b2cd83a85f6
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
- data.bytes.to_a.each do |byte|
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
- puts self.data_buffer.gsub(/\r/,'\n').to_s
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)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_astm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.4
4
+ version: 1.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bhargav Raut