his_emr_api_lab 2.0.2 → 2.0.4
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: 97dab2fa979ff86668bb9cd45bb506877f23be046b07acc43323d291f82c10be
|
4
|
+
data.tar.gz: eee6d5f74dc18f188ebd455687623c4e5d10a3cc80fdcee9fc46d9a7d63094bd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2a34a07e977a2fdaf46981ab30fd1cd2660065244cd9a9d1a75a6c71bb4ff8b32752b44adc779c7e4d4670af1861b63586bc2bbdaead93497a928bd9217c086a
|
7
|
+
data.tar.gz: 7a82940ac8ae6ed7454a1ad309bd3d3aee3ca0f459ab929c540d039c68ce8592e1d36211b06fa600450f9442141804e4dc30ef14ac8ebca2b80c1bcb6d326354
|
@@ -6,12 +6,7 @@ module Lab
|
|
6
6
|
|
7
7
|
def print_order_label
|
8
8
|
order_id = params.require(:order_id)
|
9
|
-
|
10
|
-
label = LabellingService::OrderLabel.new(order_id)
|
11
|
-
send_data(label.print, type: 'application/label; charset=utf-8',
|
12
|
-
stream: false,
|
13
|
-
filename: "#{SecureRandom.hex(24)}.lbl",
|
14
|
-
disposition: 'inline')
|
9
|
+
render_zpl(LabellingService::OrderLabel.new(order_id).print(params[:use_small_specimen_label] == 'true'))
|
15
10
|
end
|
16
11
|
end
|
17
12
|
end
|
@@ -66,7 +66,7 @@ module Lab
|
|
66
66
|
.select(:concept_id)
|
67
67
|
|
68
68
|
ConceptSet.where(concept_set: measures, concept_id: test)
|
69
|
-
.joins(
|
69
|
+
.joins("INNER JOIN concept_name AS measure ON measure.concept_id = concept_set.concept_set AND (measure.locale_preferred = 1 OR measure.concept_name_type = 'SHORT' OR measure.concept_name_type = 'FULLY_SPECIFIED')")
|
70
70
|
.select('measure.concept_id, measure.name')
|
71
71
|
.group('measure.concept_id')
|
72
72
|
.map { |concept| { name: concept.name, concept_id: concept.concept_id } }
|
@@ -13,24 +13,51 @@ module Lab
|
|
13
13
|
@order = Lab::LabOrder.find(order_id)
|
14
14
|
end
|
15
15
|
|
16
|
-
def print
|
16
|
+
def print(use_small_specimen = false)
|
17
17
|
# NOTE: The arguments are passed into the method below not in the order
|
18
18
|
# the method expects (eg patient_id is passed to middle_name field)
|
19
19
|
# to retain compatibility with labels generated by the `lab test controller`
|
20
20
|
# application of the NLIMS suite.
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
21
|
+
zpl = if use_small_specimen
|
22
|
+
auto12epl.generate_small_specimen_label(
|
23
|
+
patient.family_name,
|
24
|
+
patient.given_name,
|
25
|
+
patient.gender,
|
26
|
+
drawer_date,
|
27
|
+
tests,
|
28
|
+
order.accession_number
|
29
|
+
)
|
30
|
+
else
|
31
|
+
auto12epl.generate_epl(
|
32
|
+
patient.given_name,
|
33
|
+
patient.family_name,
|
34
|
+
patient.nhid,
|
35
|
+
patient.birthdate.strftime('%d/%^b/%Y'),
|
36
|
+
'',
|
37
|
+
patient.gender,
|
38
|
+
'',
|
39
|
+
drawer,
|
40
|
+
'',
|
41
|
+
tests,
|
42
|
+
reason_for_test,
|
43
|
+
order.accession_number,
|
44
|
+
order.accession_number
|
45
|
+
)
|
46
|
+
end
|
47
|
+
{
|
48
|
+
zpl:,
|
49
|
+
data: {
|
50
|
+
accession_number: order.accession_number,
|
51
|
+
given_name: patient.given_name,
|
52
|
+
family_name: patient.family_name,
|
53
|
+
nhid: patient.nhid,
|
54
|
+
birthdate: patient.birthdate.strftime('%d/%^b/%Y'),
|
55
|
+
gender: patient.gender,
|
56
|
+
drawer:,
|
57
|
+
tests:,
|
58
|
+
reason_for_test:
|
59
|
+
}
|
60
|
+
}
|
34
61
|
end
|
35
62
|
|
36
63
|
def reason_for_test
|
@@ -70,6 +97,13 @@ module Lab
|
|
70
97
|
user ? "#{user.username} #{draw_date}" : 'N/A'
|
71
98
|
end
|
72
99
|
|
100
|
+
def drawer_date
|
101
|
+
return 'N/A' if order.concept_id == unknown_concept.concept_id
|
102
|
+
|
103
|
+
draw_date = (order.discontinued_date || order.start_date).strftime('%d/%^b/%Y %H:%M:%S')
|
104
|
+
"#{draw_date}" || 'N/A'
|
105
|
+
end
|
106
|
+
|
73
107
|
def specimen
|
74
108
|
return 'N/A' if order.concept_id == unknown_concept.concept_id
|
75
109
|
|
@@ -24,10 +24,6 @@ module Lab
|
|
24
24
|
'indian ink' => 'India ink'
|
25
25
|
}.freeze
|
26
26
|
|
27
|
-
TEST_INDICATOR_MAPPINGS = {
|
28
|
-
'HCT' => 10_532
|
29
|
-
}.freeze
|
30
|
-
|
31
27
|
def self.translate_test_name(test_name)
|
32
28
|
TEST_NAME_MAPPINGS.fetch(test_name.downcase, test_name)
|
33
29
|
end
|
@@ -83,11 +79,9 @@ module Lab
|
|
83
79
|
end
|
84
80
|
|
85
81
|
def self.find_concept_by_name(name)
|
86
|
-
concept_id = TEST_INDICATOR_MAPPINGS[name.upcase]
|
87
|
-
query_condition = concept_id.nil? ? { name: CGI.unescapeHTML(name) } : { concept_id: }
|
88
82
|
ConceptName.joins(:concept)
|
89
|
-
.merge(Concept.all)
|
90
|
-
.where(
|
83
|
+
.merge(Concept.all) # Filter out voided
|
84
|
+
.where(name: CGI.unescapeHTML(name))
|
91
85
|
.first
|
92
86
|
end
|
93
87
|
end
|
data/lib/auto12epl.rb
CHANGED
@@ -96,6 +96,21 @@ class Auto12Epl
|
|
96
96
|
"#{last_name}, #{first_name}#{middle_initial.nil? ? '' : " #{middle_initial}"}"
|
97
97
|
end
|
98
98
|
|
99
|
+
def generate_small_specimen_label(last_name, first_name, gender, col_date_time, tests, acc_num)
|
100
|
+
<<~TEXT
|
101
|
+
N
|
102
|
+
R216,0
|
103
|
+
ZT
|
104
|
+
S1
|
105
|
+
A100,6,0,1,1,1,N,"#{first_name}, #{last_name} - #{gender}"
|
106
|
+
B120,40,0,1A,1,2,48,N,"#{acc_num}"
|
107
|
+
A100,100,0,1,1,1,N,"#{acc_num}"
|
108
|
+
A100,118,0,1,1,1,N,"#{col_date_time}"
|
109
|
+
A100,140,0,1,1,1,N,"#{tests}"
|
110
|
+
P#{print_copies}
|
111
|
+
TEXT
|
112
|
+
end
|
113
|
+
|
99
114
|
# The main function to generate the EPL
|
100
115
|
def generate_epl(last_name, first_name, middle_initial, pid, dob, age, gender, col_date_time, col_name, tests, stat,
|
101
116
|
acc_num, schema_track)
|
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.0.
|
4
|
+
version: 2.0.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-10-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: couchrest
|
@@ -336,7 +336,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
336
336
|
- !ruby/object:Gem::Version
|
337
337
|
version: '0'
|
338
338
|
requirements: []
|
339
|
-
rubygems_version: 3.
|
339
|
+
rubygems_version: 3.4.1
|
340
340
|
signing_key:
|
341
341
|
specification_version: 4
|
342
342
|
summary: Lab extension for the HIS-EMR-API
|