his_emr_api_lab 2.3.0 → 2.3.2

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: 076c4e3c64155baece8e43499296d703578262b83b09bdb0adada71d3155613b
4
- data.tar.gz: 492212d77df9cec8c5639b6f097fd1f72180f9846b45b9909e49504eebd30ff1
3
+ metadata.gz: 621f287ea97c94b4c48cd73c0bcd44e38ec8232bad9c2e5a9c1bed97ffa40828
4
+ data.tar.gz: 41138387babca534befa95b3c2f07e794f2b8fe3b7812901dba45f18aa80b45d
5
5
  SHA512:
6
- metadata.gz: f96be1635dc75fc9b8207c874ebd34e53dd8f86c650434ac1ea37a5d2a3ae810b4a18c672a3c732cd14de964ff8352f00584231342340e358668f68e11db0497
7
- data.tar.gz: 868ad9bd444b0afa72713576f5ed557dc3b32cb548fbaa0cab94c5129e2bfa83f7935a08c03876c08dc41f9258af7b886e1e7f0ee80ff728d8e52661fd47d6e8
6
+ metadata.gz: 7712bd7f073b68e2b1ebc23f248902ac27b4ba08773fba780f12704b43b849f209eb75c7de421763e7bbe80dd960031abf68e2aa961514451c7d153afb62824b
7
+ data.tar.gz: b00db5c45c98f2c05a9ce6bc7f843d0a66b6db78528b2f1d8bf1c978e9d7b56848c32f8d6a98400ba1e554c72d8f34d281242151f6c23f92dadf4209fbe298b1
@@ -11,7 +11,11 @@ module Lab
11
11
  OrdersService.order_test(order_params)
12
12
  end
13
13
 
14
- orders.each { |order| Lab::PushOrderJob.perform_later(order.fetch(:order_id)) }
14
+ orders.each do |order|
15
+ Lab::PushOrderJob.perform_later(order.fetch(:order_id))
16
+ rescue StandardError => e
17
+ Rails.logger.error("Failed to enqueue PushOrderJob for order #{order.fetch(:order_id)}: #{e.message}")
18
+ end
15
19
 
16
20
  render json: orders, status: :created
17
21
  end
@@ -19,19 +23,30 @@ module Lab
19
23
  def update
20
24
  specimen = params.require(:specimen).slice(:concept_id)
21
25
  order = OrdersService.update_order(params[:id], specimen:, force_update: params[:force_update])
22
- Lab::PushOrderJob.perform_later(order.fetch(:order_id))
26
+
27
+ begin
28
+ Lab::PushOrderJob.perform_later(order.fetch(:order_id))
29
+ rescue StandardError => e
30
+ Rails.logger.error("Failed to enqueue PushOrderJob for order #{order.fetch(:order_id)}: #{e.message}")
31
+ end
23
32
 
24
33
  render json: order
25
34
  end
26
35
 
27
36
  def index
28
- filters = params.permit(%i[patient_id patient accession_number date status])
37
+ filters = params.permit(%i[patient_id patient accession_number date status visit_id])
29
38
 
30
39
  id = filters[:patient_id] || filters[:patient]
31
40
 
32
41
  patient = Patient.find(id) if filters[:patient_id] || filters[:patient]
33
42
 
34
- Lab::UpdatePatientOrdersJob.perform_later(patient.id) if filters[:patient_id] || filters[:patient]
43
+ if filters[:patient_id] || filters[:patient]
44
+ begin
45
+ Lab::UpdatePatientOrdersJob.perform_later(patient.id)
46
+ rescue StandardError => e
47
+ Rails.logger.error("Failed to enqueue UpdatePatientOrdersJob for patient #{patient.id}: #{e.message}")
48
+ end
49
+ end
35
50
  orders = OrdersSearchService.find_orders(filters)
36
51
  begin
37
52
  render json: orders.reload, status: :ok
@@ -47,7 +62,12 @@ module Lab
47
62
 
48
63
  def destroy
49
64
  OrdersService.void_order(params[:id], params[:reason])
50
- Lab::VoidOrderJob.perform_later(params[:id])
65
+
66
+ begin
67
+ Lab::VoidOrderJob.perform_later(params[:id])
68
+ rescue StandardError => e
69
+ Rails.logger.error("Failed to enqueue VoidOrderJob for order #{params[:id]}: #{e.message}")
70
+ end
51
71
 
52
72
  render status: :no_content
53
73
  end
@@ -5,7 +5,7 @@ module Lab
5
5
  module OrdersSearchService
6
6
  class << self
7
7
  def find_orders(filters)
8
- extra_filters = pop_filters(filters, :date, :end_date, :status)
8
+ extra_filters = pop_filters(filters, :date, :end_date, :status, :visit_id)
9
9
 
10
10
  uuid = filters.delete(:patient)
11
11
  patient = Patient.find(uuid) if uuid
@@ -19,6 +19,7 @@ module Lab
19
19
 
20
20
  orders = filter_orders_by_status(orders: orders, status: extra_filters[:status])
21
21
  orders = filter_orders_by_date(orders: orders, date: extra_filters[:date], end_date: extra_filters[:end_date])
22
+ orders = filter_orders_by_visit_id(orders: orders, visit_id: extra_filters[:visit_id])
22
23
 
23
24
  orders.map { |order| Lab::LabOrderSerializer.serialize_order(order) }
24
25
  end
@@ -54,6 +55,12 @@ module Lab
54
55
  end
55
56
  end
56
57
 
58
+ def filter_orders_by_visit_id(orders:, visit_id: nil)
59
+ return orders unless visit_id.present?
60
+
61
+ orders.joins(:encounter).where(encounter: { visit_id: visit_id })
62
+ end
63
+
57
64
  def unknown_concept_id
58
65
  ConceptName.find_by_name!('Unknown').concept_id
59
66
  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 = '2.3.0'
4
+ VERSION = '2.3.2'
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.0
4
+ version: 2.3.2
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-03-27 00:00:00.000000000 Z
11
+ date: 2026-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: couchrest