his_emr_api_lab 0.0.5.pre.p1 → 0.0.6
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/services/lab/orders_search_service.rb +26 -16
- data/lib/generators/lab/install/templates/swagger.yaml +32 -0
- data/lib/lab/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d79ce0bd4282f205bd510bc5fbbaa09cbf50abf9038e98a906cfa0ec241da535
|
4
|
+
data.tar.gz: afb6a736ceefeab7ac2b58227e4a3e3214cd562368f8750b0584eae6cdbb163b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: affeaac951ade6771fe0b0b14a9ab3ef8795a40ce1a994c7f90a82c0d522bb8b8f44e8363c4532a8bc2a600dc2446aee3f3f677ae211cdf6feadc27f9fd1bf22
|
7
|
+
data.tar.gz: dd4ada5f115a2953c45bf20476ac32c5072a25b15f4dbaf1b451e55bd20c3e12dcd9663b8d474f0fefe8599e3dffdd8984b03b728d1fdcbdb3735090ca0175e3
|
@@ -5,44 +5,54 @@ module Lab
|
|
5
5
|
module OrdersSearchService
|
6
6
|
class << self
|
7
7
|
def find_orders(filters)
|
8
|
-
|
9
|
-
status = filters.delete(:status)
|
8
|
+
extra_filters = pop_filters(filters, :date, :end_date, :status)
|
10
9
|
|
11
10
|
orders = Lab::LabOrder.prefetch_relationships
|
12
11
|
.where(filters)
|
13
12
|
.order(start_date: :desc)
|
14
13
|
|
15
|
-
orders =
|
16
|
-
orders =
|
14
|
+
orders = filter_orders_by_status(orders, pop_filters(extra_filters, :status))
|
15
|
+
orders = filter_orders_by_date(orders, extra_filters)
|
17
16
|
|
18
17
|
orders.map { |order| Lab::LabOrderSerializer.serialize_order(order) }
|
19
18
|
end
|
20
19
|
|
21
|
-
def filter_orders_by_date(orders, date)
|
22
|
-
|
23
|
-
|
20
|
+
def filter_orders_by_date(orders, date: nil, end_date: nil)
|
21
|
+
date = date&.to_date
|
22
|
+
end_date = end_date&.to_date
|
24
23
|
|
25
|
-
|
26
|
-
|
27
|
-
when 'ordered' then orders.where(concept_id: unknown_concept_id)
|
28
|
-
when 'drawn' then orders.where.not(concept_id: unknown_concept_id)
|
24
|
+
if date && end_date
|
25
|
+
return orders.where('start_date BETWEEN ? AND ?', date, end_date + 1.day)
|
29
26
|
end
|
30
|
-
end
|
31
27
|
|
32
|
-
|
33
|
-
|
28
|
+
if date
|
29
|
+
return orders.where('start_date BETWEEN ? AND ?', date, date + 1.day)
|
30
|
+
end
|
31
|
+
|
32
|
+
return orders.where('start_date < ?', end_date + 1.day) if end_date
|
33
|
+
|
34
|
+
orders
|
34
35
|
end
|
35
36
|
|
36
|
-
def filter_orders_by_status(orders, status)
|
37
|
-
case status
|
37
|
+
def filter_orders_by_status(orders, status: nil)
|
38
|
+
case status&.downcase
|
38
39
|
when 'ordered' then orders.where(concept_id: unknown_concept_id)
|
39
40
|
when 'drawn' then orders.where.not(concept_id: unknown_concept_id)
|
41
|
+
else orders
|
40
42
|
end
|
41
43
|
end
|
42
44
|
|
43
45
|
def unknown_concept_id
|
44
46
|
ConceptName.find_by_name!('Unknown').concept_id
|
45
47
|
end
|
48
|
+
|
49
|
+
def pop_filters(params, *filters)
|
50
|
+
filters.each_with_object({}) do |filter, popped_params|
|
51
|
+
next unless params.key?(filter)
|
52
|
+
|
53
|
+
popped_params[filter.to_sym] = params.delete(filter)
|
54
|
+
end
|
55
|
+
end
|
46
56
|
end
|
47
57
|
end
|
48
58
|
end
|
@@ -175,6 +175,12 @@ paths:
|
|
175
175
|
description: 'Filter by sample status: ordered, drawn'
|
176
176
|
schema:
|
177
177
|
type: string
|
178
|
+
- name: end_date
|
179
|
+
in: query
|
180
|
+
required: false
|
181
|
+
description: Select all results before this date
|
182
|
+
schema:
|
183
|
+
type: date
|
178
184
|
responses:
|
179
185
|
'200':
|
180
186
|
description: Success
|
@@ -396,6 +402,32 @@ paths:
|
|
396
402
|
responses:
|
397
403
|
'204':
|
398
404
|
description: No Content
|
405
|
+
"/api/v1/lab/reasons_for_test":
|
406
|
+
get:
|
407
|
+
summary: Reasons for test
|
408
|
+
description: Retrieve default reasons for test concept set
|
409
|
+
tags:
|
410
|
+
- Concepts
|
411
|
+
security:
|
412
|
+
- api_key: []
|
413
|
+
responses:
|
414
|
+
'200':
|
415
|
+
description: Success
|
416
|
+
content:
|
417
|
+
application/json:
|
418
|
+
schema:
|
419
|
+
type: array
|
420
|
+
items:
|
421
|
+
type: object
|
422
|
+
properties:
|
423
|
+
concept_id:
|
424
|
+
type: integer
|
425
|
+
name:
|
426
|
+
type: string
|
427
|
+
example: Routine
|
428
|
+
required:
|
429
|
+
- concept_id
|
430
|
+
- name
|
399
431
|
"/api/v1/lab/tests/{test_id}/results":
|
400
432
|
post:
|
401
433
|
summary: Add results to order
|
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: 0.0.
|
4
|
+
version: 0.0.6
|
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: 2021-04-
|
11
|
+
date: 2021-04-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: couchrest
|
@@ -304,9 +304,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
304
304
|
version: '0'
|
305
305
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
306
306
|
requirements:
|
307
|
-
- - "
|
307
|
+
- - ">="
|
308
308
|
- !ruby/object:Gem::Version
|
309
|
-
version:
|
309
|
+
version: '0'
|
310
310
|
requirements: []
|
311
311
|
rubygems_version: 3.0.8
|
312
312
|
signing_key:
|