his_emr_api_lab 1.1.16 → 1.1.20

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: 31eb65eeca1c291f733da313a36a6477143ed6119afa9858cd7afb6979ef75bd
4
- data.tar.gz: 3f753f4313b69f613388c2517a8efe7936871baad6adb43dfc8475ecfe303688
3
+ metadata.gz: ef07023388b9d06939b9e9b0d09531aaecf58471eb2e62b2f883bc8112121cf8
4
+ data.tar.gz: b4aa93d96700812eed8cd0c04e37130b56f30fec563c168679b420ccd229ddb7
5
5
  SHA512:
6
- metadata.gz: 94ba7f43627d0def3edb609439535f9a715b695afda5ba43a494b673f421b1878cda6386b2b58c9960990f58c5156f308d85a5909668aad7c1dba97ab4aae2a9
7
- data.tar.gz: 2f2d3552dcbe2608623066a65bb4fff59932aea55b3ab4b8a24478cc773161b6b1149c4bba08175233e4c6a43d3ed247abd889fcf258528c31bb4c4e8c89c35e
6
+ metadata.gz: 97cb016a11e134600fb11f1017df49f819ca43efdc973f2e526a9493c02e126a7af9af19ce58caa4f4e67b2d13e18fb99b1abd45136cf2dabb54f613c92402a6
7
+ data.tar.gz: cdf3a623a0e5b25e9436aa108cafce799ca1e5fdd7a22688062fcff7a07dcda5f9a5aaab7127952e4ec5569e09c827513b6cf07b446f16b8a29921f28d2016ae
@@ -35,6 +35,10 @@ module Lab
35
35
  class_name: 'Observation',
36
36
  foreign_key: :order_id
37
37
 
38
+ has_one :mapping,
39
+ class_name: '::Lab::LimsOrderMapping',
40
+ foreign_key: :order_id
41
+
38
42
  default_scope do
39
43
  joins(:order_type)
40
44
  .merge(OrderType.where(name: Lab::Metadata::ORDER_TYPE_NAME))
@@ -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
 
@@ -57,7 +57,11 @@ module Lab
57
57
  elsif mapping
58
58
  Rails.logger.info("Updating order ##{order_dto[:accession_number]} in LIMS")
59
59
  lims_api.update_order(mapping.lims_id, order_dto)
60
- mapping.update(pushed_at: Time.now)
60
+ if order_dto['test_results'].nil? || order_dto['test_results'].empty?
61
+ mapping.update(pushed_at: Time.now)
62
+ else
63
+ mapping.update(pushed_at: Time.now, result_push_status: true)
64
+ end
61
65
  elsif order_dto[:_id] && Lab::LimsOrderMapping.where(lims_id: order_dto[:_id]).exists?
62
66
  # HACK: v1.1.7 had a bug where duplicates of recently created orders where being created by
63
67
  # the pull worker. This here detects those duplicates and voids them.
@@ -67,7 +71,7 @@ module Lab
67
71
  Rails.logger.info("Creating order ##{order_dto[:accession_number]} in LIMS")
68
72
  update = lims_api.create_order(order_dto)
69
73
  Lab::LimsOrderMapping.create!(order: order, lims_id: update['id'], revision: update['rev'],
70
- pushed_at: Time.now)
74
+ pushed_at: Time.now, result_push_status: false)
71
75
  end
72
76
  end
73
77
 
@@ -97,8 +101,9 @@ module Lab
97
101
  .last_updated
98
102
 
99
103
  Lab::LabOrder.left_joins(:results)
104
+ .joins(:mapping)
100
105
  .where('orders.discontinued_date > :last_updated
101
- OR obs.date_created > :last_updated',
106
+ OR obs.date_created > orders.date_created AND lab_lims_order_mappings.result_push_status = 0',
102
107
  last_updated: last_updated)
103
108
  .group('orders.order_id')
104
109
  .order(discontinued_date: :desc, date_created: :desc)
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.16'
4
+ VERSION = '1.1.20'
5
5
  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.16
4
+ version: 1.1.20
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-17 00:00:00.000000000 Z
11
+ date: 2022-01-05 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: []