his_emr_api_lab 2.3.6 → 2.3.7

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: 0a4ea1a6183fe75cd7d56a11e934391903cab098f8892b91380d6f6e67b3b752
4
- data.tar.gz: 4b9f2c6e7f8beabf94c5c474cd11a2cbafe833a4111d975786b9b65b85a093fd
3
+ metadata.gz: aa10ff237ade4cbd630628c0511ca04f8ab31e076a8b9b6f8413a4e0dde444f9
4
+ data.tar.gz: 4ca6cf07011ac9117fa00b0fee436e353dd5faad5cb71ed50656b89b4826c98e
5
5
  SHA512:
6
- metadata.gz: b5562e97cd505fed7dc56e3529e7b5b38510cf3ec5d0a94dbd2fbff91a8286e7715a96bb77c6ff339cf7edf60d0eda539e57ec758109c32de26cd11892e387e7
7
- data.tar.gz: '097f26ec972cd4f79e57f5719142c6224a975dad0b4c31de4e6063df96470f01885c000544b743f4d0470b09c2d63ab1180f97dad6eb585ab0d7ff6d01350e1b'
6
+ metadata.gz: 1a6aba5b3b1339126fd2f7f16959b1d1f1a11381d1d790eeeaca9909383fcd8324c3896b1a94d75aa9c19edc7ae7b7aafdbfb95b59073ff68b66be35732fc97e
7
+ data.tar.gz: 4964fbb342fc54ff534c0d90d6c43191492deb9401b7e4278ed5921be74bc32ea84cd6adbc6f6dca5c82a1fd8f6120a8412ce08b58fa55634825ae1bccb45193
@@ -58,6 +58,10 @@ module Lab
58
58
  def verify_tracking_number
59
59
  tracking_number = params.require(:accession_number)
60
60
  render json: { exists: OrdersService.check_tracking_number(tracking_number) }, status: :ok
61
+ rescue Lab::Lims::ValidationUnavailable => e
62
+ # Return 502 Bad Gateway to indicate the external service is unavailable
63
+ # This allows the frontend to prompt user for confirmation
64
+ render json: { errors: [e.message] }, status: :bad_gateway
61
65
  end
62
66
 
63
67
  def destroy
@@ -74,7 +78,7 @@ module Lab
74
78
 
75
79
  def order_status
76
80
  order_params = params.permit(:tracking_number, :status, :status_time, :comments, :status_id,
77
- updated_by: [:first_name, :last_name, :id, :phone_number])
81
+ updated_by: %i[first_name last_name id phone_number])
78
82
  OrdersService.update_order_status(order_params)
79
83
  render json: { message: "Status for order #{order_params['tracking_number']} successfully updated" }, status: :ok
80
84
  end
@@ -8,17 +8,18 @@ module Lab
8
8
  class MissingAccessionNumber < LimsException; end
9
9
  class UnknownSpecimenType < LimsException; end
10
10
  class UnknownTestType < LimsException; end
11
+ class ValidationUnavailable < LimsException; end
11
12
  end
12
13
  end
13
14
  end
14
15
 
15
-
16
16
  module Lab
17
17
  module Lims
18
- class LimsException < StandardError; end
19
- class DuplicateNHID < LimsException; end
20
- class MissingAccessionNumber < LimsException; end
21
- class UnknownSpecimenType < LimsException; end
22
- class UnknownTestType < LimsException; end
18
+ class LimsException < StandardError; end
19
+ class DuplicateNHID < LimsException; end
20
+ class MissingAccessionNumber < LimsException; end
21
+ class UnknownSpecimenType < LimsException; end
22
+ class UnknownTestType < LimsException; end
23
+ class ValidationUnavailable < LimsException; end
23
24
  end
24
25
  end
@@ -56,8 +56,14 @@ module Lab
56
56
 
57
57
  Order.transaction do
58
58
  encounter = find_encounter(order_params)
59
- if order_params[:accession_number].present? && check_tracking_number(order_params[:accession_number])
60
- raise 'Accession number already exists'
59
+ if order_params[:accession_number].present?
60
+ begin
61
+ raise 'Accession number already exists' if check_tracking_number(order_params[:accession_number])
62
+ rescue Lab::Lims::ValidationUnavailable => e
63
+ # Log warning but allow order creation to proceed
64
+ # User should have been prompted to confirm on the frontend
65
+ Rails.logger.warn("Creating order with unvalidated accession number: #{e.message}")
66
+ end
61
67
  end
62
68
 
63
69
  order = create_order(encounter, order_params)
@@ -364,6 +370,15 @@ module Lab
364
370
  # fetch from the rest api and check if it exists
365
371
  lims_api = Lab::Lims::ApiFactory.create_api
366
372
  lims_api.verify_tracking_number(accession_number).present?
373
+ rescue StandardError => e
374
+ # Log the error for debugging
375
+ Rails.logger.error("Failed to verify accession number with NLIMS: #{e.message}")
376
+ Rails.logger.error(e.backtrace.join("\n"))
377
+
378
+ # Raise a specific exception indicating validation is unavailable
379
+ # This allows the controller to handle it differently than "accession exists"
380
+ raise Lab::Lims::ValidationUnavailable,
381
+ "Failed to communicate with external service: #{e.message}"
367
382
  end
368
383
 
369
384
  ##
data/lib/lab/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Lab
4
- VERSION = '2.3.6'
4
+ VERSION = '2.3.7'
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: 2.3.6
4
+ version: 2.3.7
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: 2026-06-15 00:00:00.000000000 Z
11
+ date: 2026-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: couchrest