his_emr_api_lab 2.3.4 → 2.3.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
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0a4ea1a6183fe75cd7d56a11e934391903cab098f8892b91380d6f6e67b3b752
|
|
4
|
+
data.tar.gz: 4b9f2c6e7f8beabf94c5c474cd11a2cbafe833a4111d975786b9b65b85a093fd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b5562e97cd505fed7dc56e3529e7b5b38510cf3ec5d0a94dbd2fbff91a8286e7715a96bb77c6ff339cf7edf60d0eda539e57ec758109c32de26cd11892e387e7
|
|
7
|
+
data.tar.gz: '097f26ec972cd4f79e57f5719142c6224a975dad0b4c31de4e6063df96470f01885c000544b743f4d0470b09c2d63ab1180f97dad6eb585ab0d7ff6d01350e1b'
|
|
@@ -14,12 +14,11 @@ module Lab
|
|
|
14
14
|
date_received: params[:date_received])
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
def acknowledgements_pending_sync(batch_size, start_date: nil)
|
|
17
|
+
def acknowledgements_pending_sync(batch_size, start_date: nil, last_order_id: 0)
|
|
18
18
|
query = Lab::LabAcknowledgement.joins(:order).where(pushed: false)
|
|
19
|
-
|
|
19
|
+
.where('lims_acknowledgement_statuses.order_id > ?', last_order_id)
|
|
20
20
|
query = query.where('orders.date_created >= ?', start_date) if start_date
|
|
21
|
-
|
|
22
|
-
query.limit(batch_size)
|
|
21
|
+
query.order('lims_acknowledgement_statuses.order_id ASC').limit(batch_size)
|
|
23
22
|
end
|
|
24
23
|
|
|
25
24
|
def push_acknowledgement(acknowledgement, lims_api)
|
|
@@ -117,8 +117,13 @@ module Lab
|
|
|
117
117
|
# From the members above, filter out only those concepts that are result indicators
|
|
118
118
|
measures = ConceptSet.find_members_by_name(Lab::Metadata::TEST_RESULT_INDICATOR_CONCEPT_NAME)
|
|
119
119
|
.select(:concept_id)
|
|
120
|
+
# Get specimen types to exclude from results
|
|
121
|
+
specimen_types = ConceptSet.find_members_by_name(Lab::Metadata::SPECIMEN_TYPE_CONCEPT_NAME)
|
|
122
|
+
.select(:concept_id)
|
|
120
123
|
|
|
124
|
+
# Find concepts that are linked to the test type AND are measures (but NOT specimens)
|
|
121
125
|
sets = ConceptSet.where(concept_set: test, concept_id: measures)
|
|
126
|
+
.where.not(concept_id: specimen_types)
|
|
122
127
|
|
|
123
128
|
return ActiveRecord::Base.connection.select_all <<~SQL
|
|
124
129
|
SELECT ca.concept_id, ca.value_reference as name, ca2.value_reference as nlims_code, c.uuid
|
|
@@ -16,19 +16,33 @@ module Lab
|
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
def push_acknowledgement(batch_size: 1000, wait: false)
|
|
19
|
+
last_order_id = 0
|
|
19
20
|
loop do
|
|
20
21
|
logger.info('Looking for new acknowledgements to push to LIMS...')
|
|
21
22
|
acknowledgements = Lab::AcknowledgementService.acknowledgements_pending_sync(batch_size,
|
|
22
|
-
start_date: start_date
|
|
23
|
+
start_date: start_date,
|
|
24
|
+
last_order_id: last_order_id).all
|
|
23
25
|
|
|
24
26
|
logger.debug("Found #{acknowledgements.size} acknowledgements...")
|
|
25
27
|
acknowledgements.each do |acknowledgement|
|
|
26
28
|
Lab::AcknowledgementService.push_acknowledgement(acknowledgement, @lims_api)
|
|
29
|
+
last_order_id = acknowledgement.order_id
|
|
27
30
|
rescue StandardError => e
|
|
28
31
|
logger.error("Failed to push acknowledgement ##{acknowledgement.order_id}: #{e.class} - #{e.message}")
|
|
29
32
|
end
|
|
30
33
|
|
|
31
|
-
|
|
34
|
+
# If no records found or not waiting, check if we should continue
|
|
35
|
+
if acknowledgements.empty?
|
|
36
|
+
break unless wait
|
|
37
|
+
elsif !wait && acknowledgements.size < batch_size
|
|
38
|
+
# Processed final partial batch in one-shot mode
|
|
39
|
+
logger.info("Processed final batch of #{acknowledgements.size} acknowledgements")
|
|
40
|
+
break
|
|
41
|
+
elsif !wait
|
|
42
|
+
# More records likely exist, continue processing
|
|
43
|
+
logger.info('Batch complete, checking for more acknowledgements...')
|
|
44
|
+
next
|
|
45
|
+
end
|
|
32
46
|
|
|
33
47
|
logger.info('Waiting for acknowledgements...')
|
|
34
48
|
sleep(Lab::Lims::Config.updates_poll_frequency)
|
|
@@ -82,6 +82,9 @@ module Lab
|
|
|
82
82
|
unescaped_name = CGI.unescapeHTML(name)
|
|
83
83
|
attribute_type_id = ConceptAttributeType.test_catalogue_name.concept_attribute_type_id
|
|
84
84
|
|
|
85
|
+
attribute = ConceptAttribute.where('attribute_type_id = ? AND value_reference = ?', attribute_type_id, unescaped_name).first
|
|
86
|
+
return attribute.concept if attribute
|
|
87
|
+
|
|
85
88
|
ConceptName.joins('INNER JOIN concept_attribute ON concept_attribute.concept_id = concept_name.concept_id')
|
|
86
89
|
.where('concept_attribute.attribute_type_id = ? AND concept_attribute.value_reference = ? AND concept_name.name = ?',
|
|
87
90
|
attribute_type_id, unescaped_name, unescaped_name)
|
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.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: 2026-
|
|
11
|
+
date: 2026-06-15 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: couchrest
|