his_emr_api_lab 1.1.28 → 1.1.29

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: '09cfdf606b1084b4bda331d27fa85e69b831e3c3329be923692011d403c4ab4d'
4
- data.tar.gz: 6aa364d1c6e1965df73aa05cc1a6a3dc31b160171cf9443c974aa333fbcfd9d4
3
+ metadata.gz: e8830688d3c9f3a5c1eaf915060e61c89110b7602f44233d9a6d6c87628d7bfa
4
+ data.tar.gz: 394f57a548c41b25303ea9cf6f7cd205094a18c2c1b471d847d7d02a7828487a
5
5
  SHA512:
6
- metadata.gz: 27809c7ad5e07ba4502665b4d289f007562fb159d81ba7b847d344fed25585fa8b3fe73e89def79cccd9d95a01adfdf6c82fa260e664f5cb51ad71ad27efc29f
7
- data.tar.gz: 4326993c19083cbffa2521eddb16a04e719b7406940bdbd0fead6acedb408568c94628060fb5c359c99dbb6f22edbe504fbf64a533a2d0f861d1e627e8bc162f
6
+ metadata.gz: 8061088cf2210df529f524d410441f647386402ae0c706953d5dbf4b2a439b48c3d9377180b028ba5d456b5598f8b6c75c0a598f8550732785ce53853eafdb15
7
+ data.tar.gz: 06a06e00a9051548ee69387fa5c9078cb86d119968a5ef81a37fbddc3e60147fe57b743232aadc20fb7f9adbfa74caddd8f8eb1f6f05bb56219f96ca0762ccdd
@@ -28,6 +28,11 @@ module Lab
28
28
  render json: OrdersSearchService.find_orders(filters)
29
29
  end
30
30
 
31
+ def verify_tracking_number
32
+ tracking_number = params.require(:accession_number)
33
+ render json: { exists: OrdersService.check_tracking_number(tracking_number) }, status: :ok
34
+ end
35
+
31
36
  def destroy
32
37
  OrdersService.void_order(params[:id], params[:reason])
33
38
  Lab::VoidOrderJob.perform_later(params[:id])
@@ -87,6 +87,13 @@ class Lab::Lims::Api::RestApi
87
87
  end
88
88
  end
89
89
 
90
+ def verify_tracking_number(tracking_number)
91
+ find_lims_order(tracking_number)
92
+ rescue InvalidParameters => e
93
+ Rails.logger.error("Failed to verify tracking number #{tracking_number}: #{e.message}")
94
+ false
95
+ end
96
+
90
97
  private
91
98
 
92
99
  attr_reader :config
@@ -52,6 +52,10 @@ module Lab
52
52
  def order_test(order_params)
53
53
  Order.transaction do
54
54
  encounter = find_encounter(order_params)
55
+ if order_params[:accession_number].present? && check_tracking_number(order_params[:accession_number])
56
+ raise 'Accession number already exists'
57
+ end
58
+
55
59
  order = create_order(encounter, order_params)
56
60
 
57
61
  Lab::TestsService.create_tests(order, order_params[:date], order_params[:tests])
@@ -104,6 +108,10 @@ module Lab
104
108
  voided
105
109
  end
106
110
 
111
+ def check_tracking_number(tracking_number)
112
+ accession_number_exists?(tracking_number) || nlims_accession_number_exists?(tracking_number)
113
+ end
114
+
107
115
  private
108
116
 
109
117
  ##
@@ -141,6 +149,19 @@ module Lab
141
149
  )
142
150
  end
143
151
 
152
+ def accession_number_exists?(accession_number)
153
+ Lab::LabOrder.where(accession_number: accession_number).exists?
154
+ end
155
+
156
+ def nlims_accession_number_exists?(accession_number)
157
+ config = YAML.load_file('config/application.yml')
158
+ return false unless config['lims_api']
159
+
160
+ # fetch from the rest api and check if it exists
161
+ lims_api = Lab::Lims::ApiFactory.create_api
162
+ lims_api.verify_tracking_number(accession_number).present?
163
+ end
164
+
144
165
  ##
145
166
  # Attach the requesting clinician to an order
146
167
  def add_requesting_clinician(order, params)
data/config/routes.rb CHANGED
@@ -7,6 +7,7 @@ Lab::Engine.routes.draw do
7
7
  end
8
8
 
9
9
  get 'api/v1/lab/labels/order', to: 'labels#print_order_label'
10
+ get 'api/v1/lab/accession_number', to: 'orders#verify_tracking_number'
10
11
 
11
12
  # Metadata
12
13
  # TODO: Move the following to namespace /concepts
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.28'
4
+ VERSION = '1.1.29'
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.28
4
+ version: 1.1.29
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: 2023-03-15 00:00:00.000000000 Z
11
+ date: 2023-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: couchrest