his_emr_api_lab 1.1.14 → 1.1.18

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f655e84314f6a25a8ecce1668132e93bbd1a175efd35cb832792b94cc9d33e42
4
- data.tar.gz: 298f226847e19dd868e7caf487b00b49dc306bed4ca2c2a0f2c07765278598e5
3
+ metadata.gz: ecb22c6981cf4627f8b862fc958949e9d8bce3258533fc7369f5ecbb51f7e35f
4
+ data.tar.gz: f361eade238cfceb9fa6d8ac390166c8747d017755e6ce543bb8d2b1222277ba
5
5
  SHA512:
6
- metadata.gz: 132e7e46b9c9c6468651b1ebde2ce182852cc17992a54928b49b3605191c53f81ab324e21657d1b421ac317d48c51cd2a73c24d11f94cd5ca4f0d47714c04d9b
7
- data.tar.gz: c49d8d971697158bf1646027935ed1e95cb825a161fef18a9d658affb7e1493b24b0f70748d8c61d4a9e69d81e00d5d3f3395eec7ea4c4189401b992a27d97f5
6
+ metadata.gz: b5ac8fff26842cdec49086800174748e8fdc36c76c8843d03cc7da2f14dd068843854775c795682739dbcc6923c3afa6bcefa9a6d73f1dc590441cb971aed7e5
7
+ data.tar.gz: f4aa9129aa56bbc4aa6dff749511a6b15556adc91383bb0dfdc040f065817974e3e21ec8d0f6d8cc0716b5e4e1341c94024665a87a9bf33c9a1081e041180bea
@@ -8,14 +8,15 @@ module Lab
8
8
  OrdersService.order_test(order_params)
9
9
  end
10
10
 
11
+ orders.each { |order| Lab::PushOrderJob.perform_later(order.fetch(:order_id)) }
12
+
11
13
  render json: orders, status: :created
12
14
  end
13
15
 
14
16
  def update
15
17
  specimen = params.require(:specimen).permit(:concept_id)
16
-
17
- order = OrdersService.update_order(params[:id], specimen: specimen,
18
- force_update: params[:force_update])
18
+ order = OrdersService.update_order(params[:id], specimen: specimen, force_update: params[:force_update])
19
+ Lab::PushOrderJob.perform_later(order.fetch(:order_id))
19
20
 
20
21
  render json: order
21
22
  end
@@ -23,11 +24,13 @@ module Lab
23
24
  def index
24
25
  filters = params.permit(%i[patient_id accession_number date status])
25
26
 
27
+ Lab::UpdatePatientOrdersJob.perform_later(filters[:patient_id]) if filters[:patient_id]
26
28
  render json: OrdersSearchService.find_orders(filters)
27
29
  end
28
30
 
29
31
  def destroy
30
32
  OrdersService.void_order(params[:id], params[:reason])
33
+ Lab::VoidOrderJob.perform_later(params[:id])
31
34
 
32
35
  render status: :no_content
33
36
  end
@@ -14,7 +14,8 @@ class Lab::TestsController < ::ApplicationController
14
14
  order_id, test_concepts = test_params.require(%i[order_id tests])
15
15
  date = test_params[:date] || Date.today
16
16
 
17
- tests = service.create_tests(Order.find(order_id), date, test_concepts)
17
+ tests = service.create_tests(Lab::LabOrder.find(order_id), date, test_concepts)
18
+ Lab::PushOrderJob.perform_later(order_id)
18
19
 
19
20
  render json: tests, status: :created
20
21
  end
@@ -44,19 +44,11 @@ module Lab
44
44
  scope :drawn, -> { where.not(concept_id: ConceptName.where(name: 'Unknown').select(:concept_id)) }
45
45
  scope :not_drawn, -> { where(concept_id: ConceptName.where(name: 'Unknown').select(:concept_id)) }
46
46
 
47
- after_save :queue_lims_push
48
-
49
47
  def self.prefetch_relationships
50
48
  includes(:reason_for_test,
51
49
  :requesting_clinician,
52
50
  :target_lab,
53
51
  tests: [:result])
54
52
  end
55
-
56
- private
57
-
58
- def queue_lims_push
59
- Lab::PushOrderJob.perform_later(order_id)
60
- end
61
53
  end
62
54
  end
@@ -377,7 +377,7 @@ class Lab::Lims::Api::RestApi
377
377
  orders_without_specimen(patient_id).each { |order| orders[order.order_id] = order }
378
378
  orders_without_results(patient_id).each { |order| orders[order.order_id] = order }
379
379
  orders_without_reason(patient_id).each { |order| orders[order.order_id] = order }
380
-
380
+
381
381
  orders.values
382
382
  end
383
383
 
@@ -394,8 +394,10 @@ class Lab::Lims::Api::RestApi
394
394
 
395
395
  def orders_without_results(patient_id = nil)
396
396
  Rails.logger.debug('Looking for orders without a result')
397
+ # Lab::OrdersSearchService.find_orders_without_results(patient_id: patient_id)
398
+ # .where.not(accession_number: Lab::LimsOrderMapping.select(:lims_id).where("pulled_at IS NULL"))
397
399
  Lab::OrdersSearchService.find_orders_without_results(patient_id: patient_id)
398
- .where.not(accession_number: Lab::LimsOrderMapping.select(:lims_id))
400
+ .where(order_id: Lab::LimsOrderMapping.select(:order_id))
399
401
  end
400
402
 
401
403
  def orders_without_reason(patient_id = nil)
@@ -45,7 +45,7 @@ module Lab
45
45
  end
46
46
 
47
47
  update_last_seq(context.current_seq)
48
- rescue DuplicateNHID
48
+ rescue Lab::Lims::DuplicateNHID
49
49
  logger.warn("Failed to import order due to duplicate patient NHID: #{order_dto[:patient][:id]}")
50
50
  save_failed_import(order_dto, "Duplicate local patient NHID: #{order_dto[:patient][:id]}")
51
51
  rescue MissingAccessionNumber
@@ -102,7 +102,7 @@ module Lab
102
102
  .distinct(:patient_id)
103
103
  .all
104
104
 
105
- raise DuplicateNHID, "Duplicate National Health ID: #{nhid}" if patients.size > 1
105
+ raise Lab::Lims::DuplicateNHID, "Duplicate National Health ID: #{nhid}" if patients.size > 1
106
106
 
107
107
  patients.first
108
108
  end
@@ -182,14 +182,14 @@ module Lab
182
182
 
183
183
  def update_results(order, lims_results)
184
184
  logger.debug("Updating results for order ##{order[:accession_number]}: #{lims_results}")
185
-
185
+
186
186
  lims_results.each do |test_name, test_results|
187
187
  test = find_test(order['id'], test_name)
188
188
  unless test
189
189
  logger.warn("Couldn't find test, #{test_name}, in order ##{order[:id]}")
190
190
  next
191
191
  end
192
-
192
+
193
193
  next if test.result || test_results['results'].blank?
194
194
 
195
195
  measures = test_results['results'].map do |indicator, value|
@@ -198,7 +198,7 @@ module Lab
198
198
 
199
199
  measure
200
200
  end
201
-
201
+
202
202
  measures = measures.compact
203
203
  next if measures.empty?
204
204
 
@@ -5,14 +5,6 @@ module Lab
5
5
  module OrdersSearchService
6
6
  class << self
7
7
  def find_orders(filters)
8
- # A bit of hack-ish solution to have a patient's orders updated upon
9
- # scanning of a patient. Done in this way to deal with LIMS' lack of
10
- # a notification system for lab order updates. We are limited to polling
11
- # for updates on a per order basis.
12
- if filters[:patient_id]
13
- Lab::UpdatePatientOrdersJob.perform_later(filters[:patient_id])
14
- end
15
-
16
8
  extra_filters = pop_filters(filters, :date, :end_date, :status)
17
9
 
18
10
  orders = Lab::LabOrder.prefetch_relationships
@@ -39,13 +31,9 @@ module Lab
39
31
  date = date&.to_date
40
32
  end_date = end_date&.to_date
41
33
 
42
- if date && end_date
43
- return orders.where('start_date BETWEEN ? AND ?', date, end_date + 1.day)
44
- end
34
+ return orders.where('start_date BETWEEN ? AND ?', date, end_date + 1.day) if date && end_date
45
35
 
46
- if date
47
- return orders.where('start_date BETWEEN ? AND ?', date, date + 1.day)
48
- end
36
+ return orders.where('start_date BETWEEN ? AND ?', date, date + 1.day) if date
49
37
 
50
38
  return orders.where('start_date < ?', end_date + 1.day) if end_date
51
39
 
@@ -100,7 +100,6 @@ module Lab
100
100
 
101
101
  order.tests.each { |test| test.void(reason) }
102
102
  voided = order.void(reason)
103
- Lab::VoidOrderJob.perform_later(order_id)
104
103
 
105
104
  voided
106
105
  end
data/lib/lab/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Lab
4
- VERSION = '1.1.14'
4
+ VERSION = '1.1.18'
5
5
  end
@@ -23,10 +23,16 @@ class LoggerMultiplexor
23
23
  end
24
24
 
25
25
  def method_missing(method_name, *args)
26
- @loggers.each { |logger| logger.method(method_name).call(*args) }
26
+ if respond_to_missing?(method_name)
27
+ @loggers.each { |logger| logger.send(method_name, *args) }
28
+ else
29
+ super
30
+ end
27
31
  end
28
32
 
29
33
  def respond_to_missing?(method_name)
30
- @loggers.all? { |logger| logger.respond_to_missing?(method_name) }
34
+ @loggers.all? do |logger|
35
+ logger.respond_to?(method_name)
36
+ end
31
37
  end
32
38
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: his_emr_api_lab
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.14
4
+ version: 1.1.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elizabeth Glaser Pediatric Foundation Malawi
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-30 00:00:00.000000000 Z
11
+ date: 2021-11-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: couchrest
@@ -319,7 +319,7 @@ licenses:
319
319
  - MIT
320
320
  metadata:
321
321
  source_code_uri: https://github.com/EGPAFMalawiHIS/his_emr_api_lab
322
- post_install_message:
322
+ post_install_message:
323
323
  rdoc_options: []
324
324
  require_paths:
325
325
  - lib
@@ -334,8 +334,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
334
334
  - !ruby/object:Gem::Version
335
335
  version: '0'
336
336
  requirements: []
337
- rubygems_version: 3.1.4
338
- signing_key:
337
+ rubygems_version: 3.0.9
338
+ signing_key:
339
339
  specification_version: 4
340
340
  summary: Lab extension for the HIS-EMR-API
341
341
  test_files: []