his_emr_api_lab 1.2.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +3 -1
  3. data/app/controllers/lab/application_controller.rb +5 -0
  4. data/app/controllers/lab/orders_controller.rb +3 -3
  5. data/app/controllers/lab/specimen_types_controller.rb +1 -1
  6. data/app/controllers/lab/test_result_indicators_controller.rb +6 -4
  7. data/app/controllers/lab/test_types_controller.rb +1 -1
  8. data/app/controllers/lab/tests_controller.rb +20 -17
  9. data/app/jobs/lab/application_job.rb +2 -0
  10. data/app/jobs/lab/update_patient_orders_job.rb +1 -1
  11. data/app/mailers/lab/application_mailer.rb +2 -0
  12. data/app/models/lab/application_record.rb +2 -0
  13. data/app/models/lab/lab_order.rb +1 -1
  14. data/app/models/lab/lims_failed_import.rb +2 -0
  15. data/app/serializers/lab/lab_order_serializer.rb +2 -2
  16. data/app/serializers/lab/result_serializer.rb +2 -2
  17. data/app/services/lab/accession_number_service.rb +2 -2
  18. data/app/services/lab/concepts_service.rb +2 -2
  19. data/app/services/lab/labelling_service/order_label.rb +2 -2
  20. data/app/services/lab/lims/api/blackhole_api.rb +1 -1
  21. data/app/services/lab/lims/api/couchdb_api.rb +3 -3
  22. data/app/services/lab/lims/api/mysql_api.rb +6 -6
  23. data/app/services/lab/lims/api/rest_api.rb +378 -372
  24. data/app/services/lab/lims/api/ws_api.rb +1 -1
  25. data/app/services/lab/lims/api_factory.rb +1 -1
  26. data/app/services/lab/lims/config.rb +1 -1
  27. data/app/services/lab/lims/exceptions.rb +1 -0
  28. data/app/services/lab/lims/migrator.rb +11 -12
  29. data/app/services/lab/lims/order_dto.rb +4 -4
  30. data/app/services/lab/lims/order_serializer.rb +12 -12
  31. data/app/services/lab/lims/pull_worker.rb +14 -13
  32. data/app/services/lab/lims/push_worker.rb +5 -5
  33. data/app/services/lab/lims/utils.rb +4 -6
  34. data/app/services/lab/lims/worker.rb +1 -1
  35. data/app/services/lab/orders_search_service.rb +3 -3
  36. data/app/services/lab/orders_service.rb +5 -5
  37. data/app/services/lab/results_service.rb +3 -3
  38. data/app/services/lab/tests_service.rb +5 -5
  39. data/db/migrate/20210126092910_create_lab_lab_accession_number_counters.rb +2 -0
  40. data/db/migrate/20210310115457_create_lab_lims_order_mappings.rb +2 -0
  41. data/db/migrate/20210326195504_add_order_revision_to_lims_order_mapping.rb +2 -0
  42. data/db/migrate/20210610095024_fix_numeric_results_value_type.rb +2 -0
  43. data/db/migrate/20210807111531_add_default_to_lims_order_mapping.rb +2 -0
  44. data/lib/auto12epl.rb +55 -53
  45. data/lib/couch_bum/couch_bum.rb +4 -4
  46. data/lib/generators/lab/install/templates/rswag-ui-lab.rb +2 -0
  47. data/lib/his_emr_api_lab.rb +2 -0
  48. data/lib/lab/engine.rb +2 -0
  49. data/lib/lab/version.rb +1 -1
  50. data/lib/logger_multiplexor.rb +2 -2
  51. data/lib/tasks/lab_tasks.rake +2 -0
  52. data/lib/tasks/loaders/loader_mixin.rb +4 -4
  53. data/lib/tasks/loaders/reasons_for_test_loader.rb +1 -1
  54. data/lib/tasks/loaders/specimens_loader.rb +6 -7
  55. data/lib/tasks/loaders/test_result_indicators_loader.rb +5 -5
  56. metadata +12 -17
@@ -89,7 +89,7 @@ module Lab
89
89
  end
90
90
 
91
91
  def find_order(lims_id)
92
- mapping = Lab::LimsOrderMapping.where(lims_id: lims_id).select(:order_id)
92
+ mapping = Lab::LimsOrderMapping.where(lims_id:).select(:order_id)
93
93
  Lab::LabOrder.find_by(order_id: mapping)
94
94
  end
95
95
 
@@ -10,7 +10,7 @@ module Lab
10
10
 
11
11
  case Lab::Lims::Config.preferred_api
12
12
  when /rest/i then Lab::Lims::Api::RestApi.new(Lab::Lims::Config.rest_api)
13
- when /couchdb/ then Lab::Lims::Api::CouchDbApi.new(config: Lab::Lims::Config.couchdb_api)
13
+ when /couchdb/ then Lab::Lims::Api::CouchdbApi.new(config: Lab::Lims::Config.couchdb_api)
14
14
  else raise "Invalid lims_api configuration: #{Lab::Lims::Config.preferred_api}"
15
15
  end
16
16
  end
@@ -80,7 +80,7 @@ module Lab
80
80
  # Returns: a path to a file found
81
81
  def find_config_path(filename)
82
82
  paths = [
83
- "#{ENV['HOME']}/apps/nlims_controller/config/#{filename}",
83
+ "#{Dir.home}/apps/nlims_controller/config/#{filename}",
84
84
  "/var/www/nlims_controller/config/#{filename}",
85
85
  Rails.root.parent.join("nlims_controller/config/#{filename}")
86
86
  ]
@@ -2,6 +2,7 @@
2
2
 
3
3
  module Lab
4
4
  module Lims
5
+ class Exceptions < StandardError; end
5
6
  class LimsException < StandardError; end
6
7
  class DuplicateNHID < LimsException; end
7
8
  class MissingAccessionNumber < LimsException; end
@@ -29,10 +29,10 @@ require 'lab/lab_test'
29
29
  require 'lab/lims_order_mapping'
30
30
  require 'lab/lims_failed_import'
31
31
 
32
- require_relative './api/couchdb_api'
33
- require_relative './config'
34
- require_relative './pull_worker'
35
- require_relative './utils'
32
+ require_relative 'api/couchdb_api'
33
+ require_relative 'config'
34
+ require_relative 'pull_worker'
35
+ require_relative 'utils'
36
36
 
37
37
  require_relative '../orders_service'
38
38
  require_relative '../results_service'
@@ -42,7 +42,6 @@ require_relative '../../../serializers/lab/result_serializer'
42
42
  require_relative '../../../serializers/lab/test_serializer'
43
43
 
44
44
  require_relative 'order_dto'
45
- require_relative 'utils'
46
45
 
47
46
  module Lab
48
47
  module Lims
@@ -60,7 +59,7 @@ module Lab
60
59
 
61
60
  ##
62
61
  # A Lab::Lims::Api object that supports crawling of a LIMS CouchDB instance.
63
- class CouchDbMigratorApi < Lab::Lims::Api::CouchDbApi
62
+ class CouchDbMigratorApi < Lab::Lims::Api::CouchdbApi
64
63
  def initialize(*args, processes: 1, on_merge_processes: nil, **kwargs)
65
64
  super(*args, **kwargs)
66
65
 
@@ -82,7 +81,7 @@ module Lab
82
81
  next unless row['doc']['type']&.casecmp?('Order')
83
82
 
84
83
  User.current = Utils.lab_user
85
- yield OrderDTO.new(row['doc']), OpenStruct.new(last_seq: (from || 0) + limit, current_seq: from)
84
+ yield OrderDto.new(row['doc']), OpenStruct.new(last_seq: (from || 0) + limit, current_seq: from)
86
85
  end
87
86
 
88
87
  from += orders.size
@@ -141,7 +140,7 @@ module Lab
141
140
  def order_rejected(order_dto, reason)
142
141
  @rejections ||= []
143
142
 
144
- @rejections << OpenStruct.new(order: order_dto, reason: reason)
143
+ @rejections << OpenStruct.new(order: order_dto, reason:)
145
144
  end
146
145
  end
147
146
 
@@ -168,7 +167,7 @@ module Lab
168
167
  ]
169
168
  end
170
169
 
171
- save_csv(MIGRATION_REJECTIONS_CSV_PATH, headers: headers, rows: rows)
170
+ save_csv(MIGRATION_REJECTIONS_CSV_PATH, headers:, rows:)
172
171
  end
173
172
 
174
173
  MIGRATION_FAILURES_CSV_PATH = Utils::LIMS_LOG_PATH.join('migration-failures.csv')
@@ -185,13 +184,13 @@ module Lab
185
184
  ]
186
185
  end
187
186
 
188
- save_csv(MIGRATION_FAILURES_CSV_PATH, headers: headers, rows: rows)
187
+ save_csv(MIGRATION_FAILURES_CSV_PATH, headers:, rows:)
189
188
  end
190
189
 
191
190
  MIGRATION_LOG_PATH = Utils::LIMS_LOG_PATH.join('migration.log')
192
191
 
193
192
  def self.start_migration
194
- Dir.mkdir(Utils::LIMS_LOG_PATH) unless File.exist?(Utils::LIMS_LOG_PATH)
193
+ FileUtils.mkdir_p(Utils::LIMS_LOG_PATH)
195
194
 
196
195
  logger = LoggerMultiplexor.new(Logger.new($stdout), MIGRATION_LOG_PATH)
197
196
  logger.level = :debug
@@ -202,7 +201,7 @@ module Lab
202
201
  api_class = case ENV.fetch('MIGRATION_SOURCE', 'couchdb').downcase
203
202
  when 'couchdb' then CouchDbMigratorApi
204
203
  when 'mysql' then Api::MysqlApi
205
- else raise "Invalid MIGRATION_SOURCE: #{ENV['MIGRATION_SOURCE']}"
204
+ else raise "Invalid MIGRATION_SOURCE: #{ENV.fetch('MIGRATION_SOURCE', nil)}"
206
205
  end
207
206
 
208
207
  worker = MigrationWorker.new(api_class)
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative './exceptions'
3
+ require_relative 'exceptions'
4
4
 
5
5
  module Lab
6
6
  module Lims
7
7
  ##
8
8
  # LIMS' Data Transfer Object for orders
9
- class OrderDTO < ActiveSupport::HashWithIndifferentAccess
9
+ class OrderDto < ActiveSupport::HashWithIndifferentAccess
10
10
  include Utils
11
11
 
12
12
  ##
@@ -15,10 +15,10 @@ module Lab
15
15
  ActiveSupport::HashWithIndifferentAccess.new(
16
16
  program_id: lab_program.program_id,
17
17
  accession_number: self['tracking_number'],
18
- patient_id: patient_id,
18
+ patient_id:,
19
19
  specimen: { concept_id: specimen_type_id },
20
20
  tests: self['tests']&.map { |test| { concept_id: test_type_id(test) } },
21
- requesting_clinician: requesting_clinician,
21
+ requesting_clinician:,
22
22
  date: start_date,
23
23
  target_lab: facility_name(self['receiving_facility']),
24
24
  order_location: facility_name(self['sending_facility']),
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative './config'
4
- require_relative './order_dto'
5
- require_relative './utils'
3
+ require_relative 'config'
4
+ require_relative 'order_dto'
5
+ require_relative 'utils'
6
6
 
7
7
  module Lab
8
8
  module Lims
9
9
  ##
10
- # Serializes a LabOrder into a LIMS OrderDTO.
10
+ # Serializes a LabOrder into a LIMS OrderDto.
11
11
  module OrderSerializer
12
12
  class << self
13
13
  include Utils
@@ -15,8 +15,8 @@ module Lab
15
15
  def serialize_order(order)
16
16
  serialized_order = Lims::Utils.structify(Lab::LabOrderSerializer.serialize_order(order))
17
17
 
18
- Lims::OrderDTO.new(
19
- _id: Lab::LimsOrderMapping.find_by(order: order)&.lims_id || serialized_order.accession_number,
18
+ Lims::OrderDto.new(
19
+ _id: Lab::LimsOrderMapping.find_by(order:)&.lims_id || serialized_order.accession_number,
20
20
  tracking_number: serialized_order.accession_number,
21
21
  sending_facility: current_facility_name,
22
22
  receiving_facility: serialized_order.target_lab,
@@ -39,9 +39,9 @@ module Lab
39
39
  private
40
40
 
41
41
  def format_order_location(encounter_id)
42
- location_id = Encounter.select(:location_id).where(encounter_id: encounter_id)
42
+ location_id = Encounter.select(:location_id).where(encounter_id:)
43
43
  location = Location.select(:name)
44
- .where(location_id: location_id)
44
+ .where(location_id:)
45
45
  .first
46
46
 
47
47
  location&.name
@@ -53,7 +53,7 @@ module Lab
53
53
  name = PersonName.find_by_person_id(patient_id)
54
54
  national_id = PatientIdentifier.joins(:type)
55
55
  .merge(PatientIdentifierType.where(name: 'National ID'))
56
- .where(patient_id: patient_id)
56
+ .where(patient_id:)
57
57
  .first
58
58
  phone_number = PersonAttribute.joins(:type)
59
59
  .merge(PersonAttributeType.where(name: 'Cell phone Number'))
@@ -86,7 +86,7 @@ module Lab
86
86
  def find_arv_number(patient_id)
87
87
  PatientIdentifier.joins(:type)
88
88
  .merge(PatientIdentifierType.where(name: 'ARV Number'))
89
- .where(patient_id: patient_id)
89
+ .where(patient_id:)
90
90
  .first&.identifier
91
91
  end
92
92
 
@@ -209,8 +209,8 @@ module Lab
209
209
  end
210
210
 
211
211
  def current_district
212
- district = current_health_center.city_village\
213
- || current_health_center.parent&.name\
212
+ district = current_health_center.city_village \
213
+ || current_health_center.parent&.name \
214
214
  || GlobalProperty.find_by_property('current_health_center_district')&.property_value
215
215
 
216
216
  return district if district
@@ -17,10 +17,10 @@ module Lab
17
17
 
18
18
  ##
19
19
  # Pulls orders from the LIMS queue and writes them to the local database
20
- def pull_orders(batch_size: 10_000, **kwargs)
20
+ def pull_orders(batch_size: 10_000, **)
21
21
  logger.info("Retrieving LIMS orders starting from #{last_seq}")
22
22
 
23
- lims_api.consume_orders(from: last_seq, limit: batch_size, **kwargs) do |order_dto, context|
23
+ lims_api.consume_orders(from: last_seq, limit: batch_size, **) do |order_dto, context|
24
24
  logger.debug("Retrieved order ##{order_dto[:tracking_number]}: #{order_dto}")
25
25
 
26
26
  patient = find_patient_by_nhid(order_dto[:patient][:id])
@@ -137,7 +137,7 @@ module Lab
137
137
  person = Person.find(local_patient.id)
138
138
  person_name = PersonName.find_by_person_id(local_patient.id)
139
139
 
140
- unless (person.gender.blank? && lims_patient['gender'].blank?)\
140
+ unless (person.gender.blank? && lims_patient['gender'].blank?) \
141
141
  || person.gender&.first&.casecmp?(lims_patient['gender']&.first)
142
142
  diff[:gender] = { local: person.gender, lims: lims_patient['gender'] }
143
143
  end
@@ -154,8 +154,8 @@ module Lab
154
154
  end
155
155
 
156
156
  def names_match?(name1, name2)
157
- name1 = name1&.gsub(/'/, '')&.strip
158
- name2 = name2&.gsub(/'/, '')&.strip
157
+ name1 = name1&.gsub("'", '')&.strip
158
+ name2 = name2&.gsub("'", '')&.strip
159
159
 
160
160
  return true if name1.blank? && name2.blank?
161
161
 
@@ -229,10 +229,11 @@ module Lab
229
229
 
230
230
  creator = format_result_entered_by(test_results['result_entered_by'])
231
231
 
232
- ResultsService.create_results(test.id, { provider_id: User.current.person_id,
233
- date: Utils.parse_date(test_results['date_result_entered'], result_date),
234
- comments: "LIMS import: Entered by: #{creator}",
235
- measures: measures } )
232
+ ResultsService.create_results(test.id, { provider_id: User.current.person_id,
233
+ date: Utils.parse_date(test_results['date_result_entered'],
234
+ order[:order_date].to_s),
235
+ comments: "LIMS import: Entered by: #{creator}",
236
+ measures: })
236
237
  end
237
238
  end
238
239
 
@@ -241,7 +242,7 @@ module Lab
241
242
  test_concept = Utils.find_concept_by_name(test_name)
242
243
  raise "Unknown test name, #{test_name}!" unless test_concept
243
244
 
244
- LabTest.find_by(order_id: order_id, value_coded: test_concept.concept_id)
245
+ LabTest.find_by(order_id:, value_coded: test_concept.concept_id)
245
246
  end
246
247
 
247
248
  def find_measure(_order, indicator_name, value)
@@ -256,7 +257,7 @@ module Lab
256
257
 
257
258
  ActiveSupport::HashWithIndifferentAccess.new(
258
259
  indicator: { concept_id: indicator.concept_id },
259
- value_type: value_type,
260
+ value_type:,
260
261
  value: value_type == 'numeric' ? value.to_f : value,
261
262
  value_modifier: value_modifier.blank? ? '=' : value_modifier
262
263
  )
@@ -292,7 +293,7 @@ module Lab
292
293
  LimsFailedImport.create!(lims_id: order_dto[:_id],
293
294
  tracking_number: order_dto[:tracking_number],
294
295
  patient_nhid: order_dto[:patient][:id],
295
- reason: reason,
296
+ reason:,
296
297
  diff: diff&.to_json)
297
298
  end
298
299
 
@@ -301,7 +302,7 @@ module Lab
301
302
  end
302
303
 
303
304
  def find_order_mapping_by_lims_id(lims_id)
304
- mapping = Lab::LimsOrderMapping.find_by(lims_id: lims_id)
305
+ mapping = Lab::LimsOrderMapping.find_by(lims_id:)
305
306
  return nil unless mapping
306
307
 
307
308
  return mapping if Lab::LabOrder.where(order_id: mapping.order_id).exists?
@@ -60,10 +60,10 @@ module Lab
60
60
  Rails.logger.info("Updating order ##{order_dto[:accession_number]} in LIMS")
61
61
  lims_api.update_order(mapping.lims_id, order_dto)
62
62
  if order_dto['test_results'].nil? || order_dto['test_results'].empty?
63
- mapping.update(pushed_at: Time.now)
63
+ mapping.update(pushed_at: Time.now)
64
64
  else
65
- mapping.update(pushed_at: Time.now, result_push_status: true)
66
- end
65
+ mapping.update(pushed_at: Time.now, result_push_status: true)
66
+ end
67
67
  elsif order_dto[:_id] && Lab::LimsOrderMapping.where(lims_id: order_dto[:_id]).exists?
68
68
  # HACK: v1.1.7 had a bug where duplicates of recently created orders where being created by
69
69
  # the pull worker. This here detects those duplicates and voids them.
@@ -72,7 +72,7 @@ module Lab
72
72
  else
73
73
  Rails.logger.info("Creating order ##{order_dto[:accession_number]} in LIMS")
74
74
  update = lims_api.create_order(order_dto)
75
- Lab::LimsOrderMapping.create!(order: order, lims_id: update['id'], revision: update['rev'],
75
+ Lab::LimsOrderMapping.create!(order:, lims_id: update['id'], revision: update['rev'],
76
76
  pushed_at: Time.now, result_push_status: false)
77
77
  end
78
78
  end
@@ -107,7 +107,7 @@ module Lab
107
107
  .joins(:mapping)
108
108
  .where('orders.discontinued_date > :last_updated
109
109
  OR obs.date_created > orders.date_created AND lab_lims_order_mappings.result_push_status = 0',
110
- last_updated: last_updated)
110
+ last_updated:)
111
111
  .group('orders.order_id')
112
112
  .order(discontinued_date: :desc, date_created: :desc)
113
113
  end
@@ -8,7 +8,7 @@ module Lab
8
8
  # Various helper methods for modules in the Lims namespaces...
9
9
  module Utils
10
10
  LIMS_LOG_PATH = Rails.root.join('log', 'lims')
11
- FileUtils.mkdir_p(LIMS_LOG_PATH) unless File.exist?(LIMS_LOG_PATH)
11
+ FileUtils.mkdir_p(LIMS_LOG_PATH)
12
12
 
13
13
  def logger
14
14
  Rails.logger
@@ -49,17 +49,15 @@ module Lab
49
49
  god_user = User.first
50
50
 
51
51
  person = Person.create!(creator: god_user.user_id)
52
- PersonName.create!(person: person, given_name: 'Lab', family_name: 'Daemon', creator: god_user.user_id)
52
+ PersonName.create!(person:, given_name: 'Lab', family_name: 'Daemon', creator: god_user.user_id)
53
53
 
54
- User.create!(username: 'lab_daemon', person: person, creator: god_user.user_id)
54
+ User.create!(username: 'lab_daemon', person:, creator: god_user.user_id)
55
55
  end
56
56
 
57
57
  def self.parse_date(str_date, fallback_date = nil)
58
58
  str_date = str_date&.to_s
59
59
 
60
- if str_date.blank? && fallback_date.blank?
61
- raise "Can't parse blank date"
62
- end
60
+ raise "Can't parse blank date" if str_date.blank? && fallback_date.blank?
63
61
 
64
62
  return parse_date(fallback_date) if str_date.blank?
65
63
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'logger_multiplexor'
4
4
 
5
- require_relative './api/couchdb_api'
5
+ require_relative 'api/couchdb_api'
6
6
 
7
7
  module Lab
8
8
  module Lims
@@ -11,8 +11,8 @@ module Lab
11
11
  .where(filters)
12
12
  .order(start_date: :desc)
13
13
 
14
- orders = filter_orders_by_status(orders, pop_filters(extra_filters, :status))
15
- orders = filter_orders_by_date(orders, extra_filters)
14
+ orders = filter_orders_by_status(orders, **pop_filters(extra_filters, :status))
15
+ orders = filter_orders_by_date(orders, **extra_filters)
16
16
 
17
17
  orders.map { |order| Lab::LabOrderSerializer.serialize_order(order) }
18
18
  end
@@ -22,7 +22,7 @@ module Lab
22
22
  results_query = results_query.where(person_id: patient_id) if patient_id
23
23
 
24
24
  query = Lab::LabOrder.where.not(order_id: results_query.select(:order_id))
25
- query = query.where(patient_id: patient_id) if patient_id
25
+ query = query.where(patient_id:) if patient_id
26
26
 
27
27
  query
28
28
  end
@@ -196,7 +196,7 @@ module Lab
196
196
 
197
197
  Encounter.create!(
198
198
  patient_id: order_params[:patient_id],
199
- program_id: program_id,
199
+ program_id:,
200
200
  type: EncounterType.find_by_name!(Lab::Metadata::ENCOUNTER_TYPE_NAME),
201
201
  encounter_datetime: order_params[:date] || Date.today,
202
202
  provider_id: order_params[:provider_id] || User.current.person.person_id
@@ -220,7 +220,7 @@ module Lab
220
220
  end
221
221
 
222
222
  def accession_number_exists?(accession_number)
223
- Lab::LabOrder.where(accession_number: accession_number).exists?
223
+ Lab::LabOrder.where(accession_number:).exists?
224
224
  end
225
225
 
226
226
  def nlims_accession_number_exists?(accession_number)
@@ -269,14 +269,14 @@ module Lab
269
269
  )
270
270
  end
271
271
 
272
- def create_order_observation(order, concept_name, date, **values)
272
+ def create_order_observation(order, concept_name, date, **)
273
273
  Observation.create!(
274
- order: order,
274
+ order:,
275
275
  encounter_id: order.encounter_id,
276
276
  person_id: order.patient_id,
277
277
  concept_id: ConceptName.find_by_name!(concept_name).concept_id,
278
278
  obs_datetime: date&.to_time || Time.now,
279
- **values
279
+ **
280
280
  )
281
281
  end
282
282
 
@@ -50,7 +50,7 @@ module Lab
50
50
  PatientID: result.person_id,
51
51
  'Ordered By': order&.provider&.person&.name,
52
52
  Result: values }.as_json
53
- NotificationService.new.create_notification(result_enter_by, data)
53
+ NotificationService.new.create_notification(result_enter_by, data)
54
54
  end
55
55
 
56
56
  def process_acknowledgement(results, results_enter_by)
@@ -62,7 +62,7 @@ module Lab
62
62
  def find_arv_number(patient_id)
63
63
  PatientIdentifier.joins(:type)
64
64
  .merge(PatientIdentifierType.where(name: 'ARV Number'))
65
- .where(patient_id: patient_id)
65
+ .where(patient_id:)
66
66
  .first&.identifier
67
67
  end
68
68
 
@@ -89,7 +89,7 @@ module Lab
89
89
  order_id: test.order_id,
90
90
  obs_group_id: test.obs_id,
91
91
  obs_datetime: date&.to_datetime || DateTime.now,
92
- comments: comments
92
+ comments:
93
93
  )
94
94
  end
95
95
 
@@ -35,7 +35,7 @@ module Lab
35
35
  value_coded: params[:concept_id]
36
36
  )
37
37
 
38
- Lab::TestSerializer.serialize(test, order: order)
38
+ Lab::TestSerializer.serialize(test, order:)
39
39
  end
40
40
  end
41
41
  end
@@ -62,9 +62,9 @@ module Lab
62
62
  def filter_tests_by_order(tests, accession_number: nil, order_date: nil, specimen_type_id: nil)
63
63
  return tests unless accession_number || order_date || specimen_type_id
64
64
 
65
- lab_orders = filter_orders(Lab::LabOrder.all, accession_number: accession_number,
66
- order_date: order_date,
67
- specimen_type_id: specimen_type_id)
65
+ lab_orders = filter_orders(Lab::LabOrder.all, accession_number:,
66
+ order_date:,
67
+ specimen_type_id:)
68
68
  tests.joins(:order).merge(lab_orders)
69
69
  end
70
70
 
@@ -74,7 +74,7 @@ module Lab
74
74
  orders = orders.where('start_date >= ? AND start_date < ?', order_date, order_date + 1.day)
75
75
  end
76
76
 
77
- orders = orders.where(accession_number: accession_number) if accession_number
77
+ orders = orders.where(accession_number:) if accession_number
78
78
  orders = orders.where(concept_id: specimen_type_id) if specimen_type_id
79
79
 
80
80
  orders
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class CreateLabLabAccessionNumberCounters < ActiveRecord::Migration[5.2]
2
4
  def change
3
5
  create_table :lab_accession_number_counters do |t|
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class CreateLabLimsOrderMappings < ActiveRecord::Migration[5.2]
2
4
  def change
3
5
  create_table :lab_lims_order_mappings do |t|
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AddOrderRevisionToLimsOrderMapping < ActiveRecord::Migration[5.2]
2
4
  def change
3
5
  add_column :lab_lims_order_mappings, :revision, :string
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class FixNumericResultsValueType < ActiveRecord::Migration[5.2]
2
4
  def up
3
5
  results = Lab::LabResult.all.includes(:children)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class AddDefaultToLimsOrderMapping < ActiveRecord::Migration[5.2]
2
4
  def up
3
5
  change_column :lab_lims_order_mappings, :revision, :string, limit: 256, default: nil, null: true