his_emr_api_lab 1.1.27 → 1.1.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 72360d1d4609f72a118e05884e36b2f040a2d9eb7be8d5bed1ec3aa2fde4739b
4
- data.tar.gz: 95065b63bbb52fcbbaca143e0cd6e62b62211bfc633a3da12a47149ae411bc48
3
+ metadata.gz: e8830688d3c9f3a5c1eaf915060e61c89110b7602f44233d9a6d6c87628d7bfa
4
+ data.tar.gz: 394f57a548c41b25303ea9cf6f7cd205094a18c2c1b471d847d7d02a7828487a
5
5
  SHA512:
6
- metadata.gz: bfb51d340011b1d5e4dbc22d36b2b41519183e2e32250f81e205f4da5b58224ef9919781961e9ca12571a87fc9faac0d93b822f75b0e59716cda14fef9f4548b
7
- data.tar.gz: e5547b239504482d6c0661cdf65d4603d94a1391a8932f5bfda12b60e3007f7ebdb0b6c0b904a6ffa41de63b5b1f285790dbc44270a3acf0bc45b2da43adebbd
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])
@@ -8,7 +8,7 @@ module Lab
8
8
  test_types = test_types.filter_members(name: name) if name
9
9
 
10
10
  unless specimen_type
11
- return test_types.joins('INNER JOIN concept_name ON concept_set.concept_id = concept_name.concept_id')
11
+ return test_types.joins('INNER JOIN concept_name ON concept_set.concept_id = concept_name.concept_id AND concept_name.voided = 0 AND concept_name.locale_preferred = 1')
12
12
  .select('concept_name.name, concept_name.concept_id')
13
13
  .group('concept_name.concept_id')
14
14
  end
@@ -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.27'
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.27
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-09 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