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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ef07023388b9d06939b9e9b0d09531aaecf58471eb2e62b2f883bc8112121cf8
|
4
|
+
data.tar.gz: b4aa93d96700812eed8cd0c04e37130b56f30fec563c168679b420ccd229ddb7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 97cb016a11e134600fb11f1017df49f819ca43efdc973f2e526a9493c02e126a7af9af19ce58caa4f4e67b2d13e18fb99b1abd45136cf2dabb54f613c92402a6
|
7
|
+
data.tar.gz: cdf3a623a0e5b25e9436aa108cafce799ca1e5fdd7a22688062fcff7a07dcda5f9a5aaab7127952e4ec5569e09c827513b6cf07b446f16b8a29921f28d2016ae
|
data/app/models/lab/lab_order.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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 >
|
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
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.
|
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:
|
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.
|
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: []
|