his_emr_api_lab 1.1.5 → 1.1.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/services/lab/lims/api/rest_api.rb +23 -0
- data/app/services/lab/lims/config.rb +1 -1
- data/app/services/lab/lims/order_dto.rb +1 -1
- data/app/services/lab/lims/push_worker.rb +3 -0
- data/app/services/lab/lims/worker.rb +1 -1
- data/db/migrate/20210807111531_add_default_to_lims_order_mapping.rb +7 -0
- data/lib/lab/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a13cacbcc7be1a44baac082c8ade406f20538dabe21c26b3b2ef249cd9ee22cd
|
4
|
+
data.tar.gz: 9b0a9cfb4676982b299600078fa0421133af14a0b8d15dd49ac9ca1933fad7e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 93092265b1d1cde16121ff005c901387e357040e32b05b3dff508564cde3832f8451e6805c7ca47c772abf90a47757a6cfd9a95084962b148cbdf7819f3a3493
|
7
|
+
data.tar.gz: d2d1dded33ca89b66ad8d99c477fa373f6cc8c33958cc17192fb1a7691abaf4802ebc800c63006ff46d64e527a630ce263c0edddc1db368d67b2848406fd997c
|
@@ -44,6 +44,9 @@ class Lab::Lims::Api::RestApi
|
|
44
44
|
|
45
45
|
def consume_orders(*_args, patient_id: nil, **_kwargs)
|
46
46
|
orders_pending_updates(patient_id).each do |order|
|
47
|
+
mapping = Lab::LimsOrderMapping.find_by(order_id: order.order_id)
|
48
|
+
next if mapping.nil? || check_and_fix_duplicate!(mapping, order)
|
49
|
+
|
47
50
|
order_dto = Lab::Lims::OrderSerializer.serialize_order(order)
|
48
51
|
|
49
52
|
if order_dto['priority'].nil? || order_dto['sample_type'].casecmp?('not_specified')
|
@@ -405,4 +408,24 @@ class Lab::Lims::Api::RestApi
|
|
405
408
|
|
406
409
|
orders
|
407
410
|
end
|
411
|
+
|
412
|
+
# Checks for duplicates previously created due to this proving orders that have
|
413
|
+
# not been pushed to LIMS as orders awaiting updates.
|
414
|
+
def check_and_fix_duplicate!(mapping, order)
|
415
|
+
duplicate_orders = Lab::LabOrder.where(accession_number: mapping.lims_id)
|
416
|
+
.where.not(order_id: mapping.order_id)
|
417
|
+
return false if duplicate_orders.size.zero?
|
418
|
+
|
419
|
+
unless order.discontinued
|
420
|
+
order.void('Duplicate created due to bug in HIS-EMR-API-Lab v1.1.7')
|
421
|
+
mapping.destroy
|
422
|
+
return true
|
423
|
+
end
|
424
|
+
|
425
|
+
duplicate_orders.each do |duplicate_order|
|
426
|
+
duplicate_order.void("Has duplicate that contains updates ##{order.order_id}: Duplicate was created by bug in HIS-EMR-API-Lab v1.1.7")
|
427
|
+
end
|
428
|
+
|
429
|
+
true
|
430
|
+
end
|
408
431
|
end
|
@@ -32,7 +32,7 @@ module Lab
|
|
32
32
|
def specimen_type_id
|
33
33
|
lims_specimen_name = self['sample_type']&.strip&.downcase
|
34
34
|
|
35
|
-
if %w[specimen_not_collected not_assigned not_specified].include?(lims_specimen_name)
|
35
|
+
if lims_specimen_name.nil? || %w[specimen_not_collected not_assigned not_specified].include?(lims_specimen_name)
|
36
36
|
return ConceptName.select(:concept_id).find_by_name!('Unknown').concept_id
|
37
37
|
end
|
38
38
|
|
@@ -58,6 +58,9 @@ module Lab
|
|
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
|
mapping.update(pushed_at: Time.now)
|
61
|
+
elsif order_dto[:_id] && Lab::LimsOrderMapping.where(lims_id: order_dto[:_id]).exists?
|
62
|
+
Rails.logger.warn("Duplicate accession number found: #{order_dto[:_id]}, skipping order...")
|
63
|
+
nil
|
61
64
|
else
|
62
65
|
Rails.logger.info("Creating order ##{order_dto['accession_number']} in LIMS")
|
63
66
|
update = lims_api.create_order(order_dto)
|
@@ -45,7 +45,7 @@ module Lab
|
|
45
45
|
|
46
46
|
def self.start_worker(worker_name)
|
47
47
|
Rails.logger = LoggerMultiplexor.new(log_path("#{worker_name}.log"), $stdout)
|
48
|
-
ActiveRecord::Base.logger = Rails.logger
|
48
|
+
# ActiveRecord::Base.logger = Rails.logger
|
49
49
|
Rails.logger.level = :debug
|
50
50
|
|
51
51
|
File.open(log_path("#{worker_name}.lock"), File::RDWR | File::CREAT, 0o644) do |fout|
|
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.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elizabeth Glaser Pediatric Foundation Malawi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: couchrest
|
@@ -290,6 +290,7 @@ files:
|
|
290
290
|
- db/migrate/20210326195504_add_order_revision_to_lims_order_mapping.rb
|
291
291
|
- db/migrate/20210407071728_create_lab_lims_failed_imports.rb
|
292
292
|
- db/migrate/20210610095024_fix_numeric_results_value_type.rb
|
293
|
+
- db/migrate/20210807111531_add_default_to_lims_order_mapping.rb
|
293
294
|
- lib/auto12epl.rb
|
294
295
|
- lib/couch_bum/couch_bum.rb
|
295
296
|
- lib/generators/lab/install/USAGE
|
@@ -330,7 +331,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
330
331
|
- !ruby/object:Gem::Version
|
331
332
|
version: '0'
|
332
333
|
requirements: []
|
333
|
-
rubygems_version: 3.
|
334
|
+
rubygems_version: 3.1.4
|
334
335
|
signing_key:
|
335
336
|
specification_version: 4
|
336
337
|
summary: Lab extension for the HIS-EMR-API
|