his_emr_api_lab 2.3.6 → 2.3.8.streaming

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: 3a671973ef081d74e78629725cd927893b24e306ca80ab86d7481c38e1831575
4
+ data.tar.gz: b552a83c8d3ed00094143d17fc736b79b55b22ba0902c255793a19b3f6068be9
5
5
  SHA512:
6
- metadata.gz: b5562e97cd505fed7dc56e3529e7b5b38510cf3ec5d0a94dbd2fbff91a8286e7715a96bb77c6ff339cf7edf60d0eda539e57ec758109c32de26cd11892e387e7
7
- data.tar.gz: '097f26ec972cd4f79e57f5719142c6224a975dad0b4c31de4e6063df96470f01885c000544b743f4d0470b09c2d63ab1180f97dad6eb585ab0d7ff6d01350e1b'
6
+ metadata.gz: 5802072a5d4a7107474a43f4a07dda845e27303f055d333e84da591e831c96cc18c0fdebb985ae02481332798da86793ff60c587cf792f5600d60dcef505d9ce
7
+ data.tar.gz: 2ba985b8824051e51d45c302b08c6b820d7a2735ececb8500c5a08f43588ca885e5691f156519b717065f023ecf15d8b483e6fdc43ac3cc98369cf7464e48e75
@@ -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
@@ -71,7 +71,8 @@ module Lab
71
71
  def self.concept_name(concept_id)
72
72
  return concept_id unless concept_id
73
73
 
74
- ::ConceptAttribute.find_by(concept_id:, attribute_type: ConceptAttributeType.test_catalogue_name)&.value_reference
74
+ ::ConceptAttribute.find_by(concept_id:, attribute_type: ConceptAttributeType.test_catalogue_name)&.value_reference ||
75
+ ::ConceptName.find_by_concept_id(concept_id)&.name
75
76
  end
76
77
 
77
78
  def self.voided_tests(order)
@@ -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.8.streaming'
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.8.streaming
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-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: couchrest
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: rails
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 7.0.6
47
+ version: 8.0.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 7.0.6
54
+ version: 8.0.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: socket.io-client-simple
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -341,9 +341,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
341
341
  version: '0'
342
342
  required_rubygems_version: !ruby/object:Gem::Requirement
343
343
  requirements:
344
- - - ">="
344
+ - - ">"
345
345
  - !ruby/object:Gem::Version
346
- version: '0'
346
+ version: 1.3.1
347
347
  requirements: []
348
348
  rubygems_version: 3.4.1
349
349
  signing_key: