his_emr_api_lab 1.1.16 → 1.1.20

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: 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: []