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 +4 -4
- data/app/controllers/lab/orders_controller.rb +25 -5
- data/app/services/lab/orders_search_service.rb +8 -1
- data/lib/lab/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 621f287ea97c94b4c48cd73c0bcd44e38ec8232bad9c2e5a9c1bed97ffa40828
|
|
4
|
+
data.tar.gz: 41138387babca534befa95b3c2f07e794f2b8fe3b7812901dba45f18aa80b45d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
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.
|
|
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-
|
|
11
|
+
date: 2026-04-01 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: couchrest
|