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: b33f866b86cd84bf4f88956e9358f00996f7f6ba7ac6c3878680f6db2281b493
4
- data.tar.gz: e774a119159caf8c5a7f628606603f270b8746287afe5955fb4f722591239824
3
+ metadata.gz: 97dab2fa979ff86668bb9cd45bb506877f23be046b07acc43323d291f82c10be
4
+ data.tar.gz: eee6d5f74dc18f188ebd455687623c4e5d10a3cc80fdcee9fc46d9a7d63094bd
5
5
  SHA512:
6
- metadata.gz: 7202aaaac5cc85be3d3f489e05f7d9aa537915b58e28f5961804a3cce07c3960a45373cabc8649d8b0fef7dd8333e27e4ed6434a7881022043b7f1c2a9ab058b
7
- data.tar.gz: 787a155bfc9bf1af6dd202ba6ec18d07a5185f4dec661c2889968567f02d17529b536f30036c708cbaa316925e505818863596725b371219576a1082aae830c2
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('INNER JOIN concept_name AS measure ON measure.concept_id = concept_set.concept_set')
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
- auto12epl.generate_epl(patient.given_name,
22
- patient.family_name,
23
- patient.nhid,
24
- patient.birthdate.strftime('%d/%^b/%Y'),
25
- '',
26
- patient.gender,
27
- '',
28
- drawer,
29
- '',
30
- tests,
31
- reason_for_test,
32
- order.accession_number,
33
- order.accession_number)
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(query_condition)
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Lab
4
- VERSION = '2.0.2'
4
+ VERSION = '2.0.4'
5
5
  end
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.2
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-07-05 00:00:00.000000000 Z
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.5.6
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