mahis_emr_api_lab 1.2.3 → 1.2.4
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1564986977bbbb02dab3359307faa412965cecb2a0aaa3d0cc97b9e2ef068f92
|
4
|
+
data.tar.gz: 42fcee721977f3cbc1fd29f8f184b23e532cde82bf9846494c90bf1285f0d773
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 91179c762c1d91c33d6ca6c6c751ff73102b8a4e8ac9f191e3eb2aa00e0ccfa9a1e16f69accb3f19ec9d1a54f25b0066f17de4d47560c0c976d47859ad9240b9
|
7
|
+
data.tar.gz: f91bb3ab835a5ec653fdaa9666475b2d26f1e0acc2d43d8d753456c748137051d6ef364bf5709bc9569f774ecd0758022f798f1a5786b59c638d878c473b2fac
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'rest-client'
|
3
4
|
|
4
5
|
class Lab::Lims::Api::RestApi
|
@@ -8,6 +9,8 @@ class Lab::Lims::Api::RestApi
|
|
8
9
|
|
9
10
|
class InvalidParameters < LimsApiError; end
|
10
11
|
|
12
|
+
START_DATE = Time.parse('2024-09-03').freeze
|
13
|
+
|
11
14
|
def initialize(config)
|
12
15
|
@config = config
|
13
16
|
end
|
@@ -240,7 +243,7 @@ class Lab::Lims::Api::RestApi
|
|
240
243
|
def current_district
|
241
244
|
health_centre = Location.current_health_center
|
242
245
|
raise 'Current health centre not set' unless health_centre
|
243
|
-
|
246
|
+
|
244
247
|
district = health_centre.district || Lab::Lims::Config.application['district']
|
245
248
|
|
246
249
|
unless district
|
@@ -406,7 +409,7 @@ class Lab::Lims::Api::RestApi
|
|
406
409
|
Rails.logger.debug('Looking for orders without a specimen')
|
407
410
|
unknown_specimen = ConceptName.where(name: Lab::Metadata::UNKNOWN_SPECIMEN)
|
408
411
|
.select(:concept_id)
|
409
|
-
orders = Lab::LabOrder.where(concept_id: unknown_specimen)
|
412
|
+
orders = Lab::LabOrder.where(concept_id: unknown_specimen, date_created: START_DATE..(Date.today + 1.day))
|
410
413
|
.where.not(accession_number: Lab::LimsOrderMapping.select(:lims_id))
|
411
414
|
orders = orders.where(patient_id: patient_id) if patient_id
|
412
415
|
|
@@ -418,16 +421,17 @@ class Lab::Lims::Api::RestApi
|
|
418
421
|
# Lab::OrdersSearchService.find_orders_without_results(patient_id: patient_id)
|
419
422
|
# .where.not(accession_number: Lab::LimsOrderMapping.select(:lims_id).where("pulled_at IS NULL"))
|
420
423
|
Lab::OrdersSearchService.find_orders_without_results(patient_id: patient_id)
|
421
|
-
|
424
|
+
.where(order_id: Lab::LimsOrderMapping.select(:order_id), date_created: START_DATE..(Date.today + 1.day))
|
422
425
|
end
|
423
426
|
|
424
427
|
def orders_without_reason(patient_id = nil)
|
425
428
|
Rails.logger.debug('Looking for orders without a reason for test')
|
426
429
|
orders = Lab::LabOrder.joins(:reason_for_test)
|
427
430
|
.merge(Observation.where(value_coded: nil, value_text: nil))
|
431
|
+
.where(date_created: START_DATE..(Date.today + 1.day))
|
428
432
|
.limit(1000)
|
429
433
|
.where.not(accession_number: Lab::LimsOrderMapping.select(:lims_id))
|
430
|
-
orders = orders.where(patient_id: patient_id) if patient_id
|
434
|
+
orders = orders.where(patient_id: patient_id, date_created: START_DATE..(Date.today + 1.day)) if patient_id
|
431
435
|
|
432
436
|
orders
|
433
437
|
end
|
@@ -10,6 +10,7 @@ module Lab
|
|
10
10
|
include Utils # for logger
|
11
11
|
|
12
12
|
SECONDS_TO_WAIT_FOR_ORDERS = 30
|
13
|
+
START_DATE = Time.parse('2024-09-03').freeze
|
13
14
|
|
14
15
|
def initialize(lims_api)
|
15
16
|
@lims_api = lims_api
|
@@ -23,7 +24,7 @@ module Lab
|
|
23
24
|
logger.debug("Found #{orders.size} orders...")
|
24
25
|
orders.each do |order|
|
25
26
|
push_order(order)
|
26
|
-
rescue
|
27
|
+
rescue StandardError => e
|
27
28
|
logger.error("Failed to push order ##{order.accession_number}: #{e.class} - #{e.message}")
|
28
29
|
rescue StandardError => e
|
29
30
|
logger.error("Failed to push order ##{order.id}: #{order&.accession_number} : #{e.class} - #{e.message}")
|
@@ -94,6 +95,7 @@ module Lab
|
|
94
95
|
Rails.logger.debug('Looking for new orders that need to be created in LIMS...')
|
95
96
|
Lab::LabOrder.where.not(order_id: Lab::LimsOrderMapping.all.select(:order_id))
|
96
97
|
.where("accession_number IS NOT NULL AND accession_number !=''")
|
98
|
+
.where(date_created: START_DATE..(Date.today + 1.day))
|
97
99
|
.order(date_created: :desc)
|
98
100
|
end
|
99
101
|
|
@@ -148,8 +148,7 @@ module Lab
|
|
148
148
|
'arv_number': find_arv_number(order.patient_id),
|
149
149
|
'patient_id': result.person_id,
|
150
150
|
'ordered_by': order&.provider&.person&.name,
|
151
|
-
'rejection_reason': order_params['comments']
|
152
|
-
}.as_json
|
151
|
+
'rejection_reason': order_params['comments'] }.as_json
|
153
152
|
NotificationService.new.create_notification('LIMS', data)
|
154
153
|
end
|
155
154
|
|
@@ -197,7 +196,6 @@ module Lab
|
|
197
196
|
return Encounter.find(encounter_id) if order_params[:encounter] || order_params[:encounter_id]
|
198
197
|
raise StandardError, 'encounter_id|uuid or patient_id|uuid required' unless order_params[:patient]
|
199
198
|
|
200
|
-
|
201
199
|
encounter = Encounter.new
|
202
200
|
encounter.patient = Patient.find(patient_id)
|
203
201
|
encounter.encounter_type = EncounterType.find_by_name!(Lab::Metadata::ENCOUNTER_TYPE_NAME)
|
@@ -263,7 +261,6 @@ module Lab
|
|
263
261
|
#
|
264
262
|
# Examples of reasons include: Routine, Targeted, Confirmatory, Repeat, or Stat.
|
265
263
|
def add_reason_for_test(order, params)
|
266
|
-
|
267
264
|
reason = params[:reason_for_test_id] || params[:reason_for_test]
|
268
265
|
|
269
266
|
reason = Concept.find(reason)
|
@@ -289,6 +286,8 @@ module Lab
|
|
289
286
|
end
|
290
287
|
|
291
288
|
def create_order_observation(order, concept_name, date, **values)
|
289
|
+
creator = User.find_by(username: 'lab_daemon')
|
290
|
+
User.current ||= creator
|
292
291
|
Observation.create!(
|
293
292
|
order: order,
|
294
293
|
encounter_id: order.encounter_id,
|
data/lib/lab/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mahis_emr_api_lab
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.4
|
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: 2024-
|
11
|
+
date: 2024-09-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: couchrest
|