ruby_astm 1.1.2 → 1.1.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ff47022f17e44e7b468663c714471a1cf0bd91835593bc166f6ca2b61a17ae85
4
- data.tar.gz: a5d3ff3c77309b37de9982f1cefa607f6e0d5987084a561fcee8450c5a908294
3
+ metadata.gz: 749dcf0c64ea38ebdded6d8da1861145cda0da3217e1580caced8d17ab49488a
4
+ data.tar.gz: 79765a8914e651457350650b07e8382fbfb8cf7e35dcc27d9d67b16a4c06d1b2
5
5
  SHA512:
6
- metadata.gz: 3372e998ddd5efc872128ea7648d8e8c87301f70414d03faece6348571190caf3641b1350d6eac52bdb213cd7a2cbc4b1f53fb50fed17a696a4cbd9b56aeeb6d
7
- data.tar.gz: e228f0592560317f905d1d465c8e63790b67d184e4c1303ebb03772ac3d0c95e11002028df86b05c971389c1c32757961c1e9d8dcd7fb143879ba7a7c06af67d
6
+ metadata.gz: 7e51861e24962d0498871a115cb88ec521ec433247c203539d706fd66fb6e4837b9922e812c41f45f8c08931187f4079d09caeed29fb31d9cd80cdf60cd772fd
7
+ data.tar.gz: fa5d0a0e2806fc2957848c2cfb29e46e5f85aabe8544e196a6f81351794fe13b28191402ad33fa8c46aad7f3642352f668b41e338e7b0bc6c3a8c78f96de4b31
@@ -14,7 +14,7 @@ class Google_Lab_Interface < Poller
14
14
  #TOKEN_PATH = 'token.yaml'.freeze
15
15
  SCOPE = 'https://www.googleapis.com/auth/script.projects'.freeze
16
16
 
17
- SCOPES = ["https://www.googleapis.com/auth/documents","https://www.googleapis.com/auth/drive","https://www.googleapis.com/auth/script.projects","https://www.googleapis.com/auth/spreadsheets"]
17
+ SCOPES = ["https://www.googleapis.com/auth/documents","https://www.googleapis.com/auth/drive","https://www.googleapis.com/auth/script.projects","https://www.googleapis.com/auth/spreadsheets","https://www.googleapis.com/auth/script.external_request"]
18
18
 
19
19
  $service = nil
20
20
 
@@ -135,8 +135,37 @@ class Google_Lab_Interface < Poller
135
135
 
136
136
  end
137
137
 
138
+ ## sends emails of report pdfs to patients
139
+ def notify_patients
140
+ request = Google::Apis::ScriptV1::ExecutionRequest.new(
141
+ function: 'process_email_log'
142
+ )
143
+
144
+ begin
145
+ AstmServer.log("Processing Email Log")
146
+ AstmServer.log(request.parameters.to_s)
147
+ resp = $service.run_script(self.script_id, request)
148
+ if resp.error
149
+ AstmServer.log("Error Processing Email Log, message follows")
150
+ AstmServer.log("error: #{resp.error.message} : code: #{resp.error.code}")
151
+ false
152
+ else
153
+ AstmServer.log("Email log processing successfull")
154
+ true
155
+ end
156
+ rescue => e
157
+ AstmServer.log("Error processing email log, backtrace follows")
158
+ AstmServer.log(e.backtrace.to_s)
159
+ false
160
+ end
161
+ end
162
+
138
163
  def poll
139
- super
164
+ pre_poll_LIS
165
+ poll_LIS_for_requisition
166
+ update_LIS
167
+ notify_patients
168
+ post_poll_LIS
140
169
  end
141
170
 
142
171
  end
@@ -59,15 +59,37 @@ module LabInterface
59
59
  strCksm.upcase
60
60
  end
61
61
 
62
+ def generate_response
63
+ header_responses = self.headers[-1].build_one_response
64
+ header_responses.each_with_index {|response,key|
65
+ message_checksum = checksum(response + terminator + ETX)
66
+ final_resp = STX + response + terminator + ETX + message_checksum + "\r"
67
+ final_resp_arr = final_resp.bytes.to_a
68
+ final_resp_arr << 10
69
+ if (self.headers[-1].response_sent == false)
70
+ puts "sending the data as follows----------------------------------------------"
71
+ puts "response sent is:"
72
+ puts self.headers[-1].response_sent
73
+ puts final_resp_arr.to_s
74
+ puts final_resp_arr.pack('c*').gsub(/\r/,'\n')
75
+ send_data(final_resp_arr.pack('c*'))
76
+ self.headers[-1].response_sent = true if (key == (header_responses.size - 1))
77
+ else
78
+ puts "sending EOT"
79
+ send_data(EOT)
80
+ end
81
+ }
82
+ end
83
+
62
84
  def receive_data(data)
63
85
 
64
86
  self.data_buffer ||= ''
65
87
 
66
- #puts "incoming data bytes."
88
+ puts "incoming data bytes."
67
89
 
68
90
  concat = ""
69
91
 
70
- #puts data.bytes.to_a.to_s
92
+ puts data.bytes.to_a.to_s
71
93
 
72
94
  data.bytes.to_a.each do |byte|
73
95
  x = [byte].pack('c*').force_encoding('UTF-8')
@@ -95,54 +117,60 @@ module LabInterface
95
117
 
96
118
 
97
119
  if data.bytes.to_a[-1] == 4
98
- #puts self.data_buffer
99
120
  puts "GOT EOT --- PROCESSING BUFFER, AND CLEARING."
100
121
  process_text(self.data_buffer)
101
- puts "queries are:"
102
- if !self.headers.blank?
103
- puts self.headers[-1].queries
104
- end
105
122
  self.data_buffer = ''
106
- send_data(ENQ)
123
+ if self.headers[-1].queries.blank?
124
+ puts "no queries in header so sending ack after getting EOT and processing the buffer"
125
+ send_data(ACK)
126
+ else
127
+ puts "sending ENQ"
128
+ send_data(ENQ)
129
+ end
107
130
  elsif data.bytes.to_a[0] == 6
108
- puts "got ack."
109
- puts "building one response."
110
- header_responses = self.headers[-1].build_one_response
111
- header_responses.each_with_index {|response,key|
112
- message_checksum = checksum(response + terminator + ETX)
113
- final_resp = STX + response + terminator + ETX + message_checksum + "\r"
114
- final_resp_arr = final_resp.bytes.to_a
115
- final_resp_arr << 10
116
- if (self.headers[-1].response_sent == false)
117
- puts "sending the data as follows----------------------------------------------"
118
- puts "response sent is:"
119
- puts self.headers[-1].response_sent
120
- puts final_resp_arr.pack('c*').gsub(/\r/,'\n')
121
- send_data(final_resp_arr.pack('c*'))
122
- self.headers[-1].response_sent = true if (key == (header_responses.size - 1))
123
- else
124
- send_data(EOT)
131
+ puts "GOT ACK --- GENERATING RESPONSE"
132
+ unless self.headers.blank?
133
+ header_responses = self.headers[-1].build_one_response
134
+ ## if no queries then, we have to send ack.
135
+ if header_responses.blank?
136
+ puts "sending ACK since there are queries in the header"
137
+ send_data(ACK)
125
138
  end
126
- }
139
+ header_responses.each_with_index {|response,key|
140
+ message_checksum = checksum(response + terminator + ETX)
141
+ final_resp = STX + response + terminator + ETX + message_checksum + "\r"
142
+ final_resp_arr = final_resp.bytes.to_a
143
+ final_resp_arr << 10
144
+ if (self.headers[-1].response_sent == false)
145
+ puts "sending the data as follows----------------------------------------------"
146
+ puts "response sent is:"
147
+ puts self.headers[-1].response_sent
148
+ puts final_resp_arr.pack('c*').gsub(/\r/,'\n')
149
+ send_data(final_resp_arr.pack('c*'))
150
+ self.headers[-1].response_sent = true if (key == (header_responses.size - 1))
151
+ else
152
+ puts "sending EOT"
153
+ send_data(EOT)
154
+ end
155
+ }
156
+ else
157
+ puts "NO HEADERS PRESENT --- "
158
+ end
127
159
  else
160
+ puts self.data_buffer.gsub(/\r/,'\n').to_s
128
161
  ## send the header
129
162
  #puts "--------- SENT ACK -----------"
130
- if self.headers.blank?
131
- send_data(ACK)
132
- else
133
- if self.headers[-1].is_astm?
134
- send_data(ACK)
135
- elsif self.headers[-1].is_hl7?
136
- puts "processing hl7"
137
- process_text(self.data_buffer)
138
- self.data_buffer = ''
139
- if self.headers.size > 0
140
- ## commit should return the jsonified thing, if possible.
141
-
142
- self.headers[-1].commit
143
- send_data(self.headers[-1].generate_ack_success_response)
144
- end
163
+ if self.data_buffer[1..3] == "MSH"
164
+ puts " -------------- HEADERS ARE BLANK WITH HL7, sending ack. ------------ "
165
+ process_text(self.data_buffer)
166
+ self.data_buffer = ''
167
+ if self.headers.size > 0
168
+ self.headers[-1].commit
169
+ send_data(self.headers[-1].generate_ack_success_response)
145
170
  end
171
+ else
172
+ puts " -------------- HEADERS ARE BLANK NOT HL7, sending ack. ------------ "
173
+ send_data(ACK)
146
174
  end
147
175
  end
148
176
  end
@@ -38,9 +38,11 @@ class Result
38
38
 
39
39
  def set_timestamp(args)
40
40
  if line = args[:line]
41
- line.fields[12].strip.scan(/(?<year>\d{4})(?<month>\d{2})(?<day>\d{2})(?<hours>\d{2})(?<minutes>\d{2})(?<seconds>\d{2})/) {|year,month,day,hours,minutes,seconds|
42
- self.timestamp = Time.new(year,month,day,hours,minutes,seconds)
43
- }
41
+ unless line.fields[12].blank?
42
+ line.fields[12].strip.scan(/(?<year>\d{4})(?<month>\d{2})(?<day>\d{2})(?<hours>\d{2})(?<minutes>\d{2})(?<seconds>\d{2})/) {|year,month,day,hours,minutes,seconds|
43
+ self.timestamp = Time.new(year,month,day,hours,minutes,seconds)
44
+ }
45
+ end
44
46
  end
45
47
  end
46
48
 
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.1.2
4
+ version: 1.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bhargav Raut