his_emr_api_lab 1.1.15 → 1.1.19

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: a0345aafa5a183730006a41e0451a129eea8b201622af42c9ae9b13fb23e410d
4
- data.tar.gz: d2003b6e1872c4d3c16b1bc80edea36d4ac353d62b37aad71932119085c5aecb
3
+ metadata.gz: 1417f8496820741d5eb37f1d2ae95da6ffdb27cc3b434242d079f6780d7eaeec
4
+ data.tar.gz: 17bf60bd54605de176c26f87f7da8653789d1df101920814b354512d8cca3c68
5
5
  SHA512:
6
- metadata.gz: afb1c33968cb197c30b9f702b04188e93c886982a2304dc21aefcfd46add7aeb62df2307d53c6f2794dba8895a049f131b82835046280de920996d70eb6f1b84
7
- data.tar.gz: ad3514949b17d623983acd6c8f7c4af305da52e4eda81e2345d94d7390e2d35aa7796d91397d819f0f64efa73803a011b4e9bd46baa574b265b04346da30b1d2
6
+ metadata.gz: 6c5722a094de688a6803de102553bdc928e29b28b208bf12f999a98e5d631cbc5b817c5982e5a1bc349a366263dcd3bd66ab2a1618a70b8d4ecbd8f2c86c0644
7
+ data.tar.gz: 8ed510173d514efcdf307cbb38d70fb4e25b19752bb95f1f20a0f4a0cdc6efd5b2d3cf5761648b8a5ac92d17072fb4a35bdbca0de929937ecccbe6525e30cfaf
@@ -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_commit :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
 
@@ -98,7 +98,7 @@ module Lab
98
98
 
99
99
  Lab::LabOrder.left_joins(:results)
100
100
  .where('orders.discontinued_date > :last_updated
101
- OR obs.date_created > :last_updated',
101
+ OR obs.date_created > orders.date_created',
102
102
  last_updated: last_updated)
103
103
  .group('orders.order_id')
104
104
  .order(discontinued_date: :desc, date_created: :desc)
@@ -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.15'
4
+ VERSION = '1.1.19'
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.15
4
+ version: 1.1.19
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-10-14 00:00:00.000000000 Z
11
+ date: 2021-11-16 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.0.8
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: []