his_emr_api_lab 1.1.4 → 1.1.8

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: 35dbaa06f074b2d36afe9fbc02c26b9bfdee3b9faee2d929246f1c2bd001e2fb
4
- data.tar.gz: 956381a9da4af7bdc49a3f35ad2e7b155d241ae3f45dd08888f20d21ca376ca5
3
+ metadata.gz: e5421bf2b632a395fa9870ba1a3e855aea8033f8c54034bda352fdf23409812e
4
+ data.tar.gz: 4cd24426fa0f0a5fe39c416bb0f35f28769c36b95eac72a8abca7579efd75c58
5
5
  SHA512:
6
- metadata.gz: 18e5288bbdd1783cf8cb4ff54f1fa29403370a37353a6c94fa2cd26dc114cc6c0624a4cbfb115f70f686b21aff77b0859e54255e1d1a5a4b92db34bb3b3c159a
7
- data.tar.gz: a00e126ff73058474f17bce296259e8ce5c5619ba441611074c0b1a5a6c1e269846f7296185e0d323bf798c4c626069693e2912bee5837307253d8bc5553053e
6
+ metadata.gz: 54815cf740ce0c0882752a341df21acbd51bde4102b0dcd2ddd581575efb70b9aa1284295dda7e6cb78b5e6355a3c983d5b41acf5f8f40fe8318737a6cce08a5
7
+ data.tar.gz: b516dd7ac285004b6d4e5125b73e159adf180a07b1cf0470ae4380d02ad274b72d2a68ec697c99deb3f4e8a5f057ec9d0682925e1d1a72b6986852285feea996
@@ -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')
@@ -59,6 +62,9 @@ class Lab::Lims::Api::RestApi
59
62
  end
60
63
 
61
64
  yield order_dto, OpenStruct.new(last_seq: 0)
65
+ rescue LimsApiError => e
66
+ Rails.logger.error("Failed to fetch updates for ##{order.accession_number}: #{e.class} - #{e.message}")
67
+ sleep(1)
62
68
  end
63
69
  end
64
70
 
@@ -402,4 +408,24 @@ class Lab::Lims::Api::RestApi
402
408
 
403
409
  orders
404
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
405
431
  end
@@ -12,7 +12,7 @@ module Lab
12
12
 
13
13
  class << self
14
14
  def preferred_api
15
- emr_api_application('lims_api', 'couchdb')
15
+ emr_api_application('lims_api')
16
16
  end
17
17
 
18
18
  ##
@@ -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
 
@@ -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|
@@ -0,0 +1,7 @@
1
+ class AddDefaultToLimsOrderMapping < ActiveRecord::Migration[5.2]
2
+ def up
3
+ change_column :lab_lims_order_mappings, :revision, :string, limit: 256, default: nil, null: true
4
+ end
5
+
6
+ def down; end
7
+ 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.4'
4
+ VERSION = '1.1.8'
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.4
4
+ version: 1.1.8
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-07-21 00:00:00.000000000 Z
11
+ date: 2021-08-20 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.0.8
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