module Lab::Loaders::TestResultIndicatorsLoader

Load specimens and their tests into the database

Public Class Methods

add_measure_to_test(test_name, measure_concept) click to toggle source
# File lib/tasks/loaders/test_result_indicators_loader.rb, line 41
def add_measure_to_test(test_name, measure_concept)
  [
    add_concept_to_set(set_concept_id: find_or_create_concept(Lab::Metadata::TEST_RESULT_INDICATOR_CONCEPT_NAME).concept_id,
                       concept_id: measure_concept.concept_id),
    add_concept_to_set(set_concept_id: measure_concept.concept_id,
                       concept_id: find_or_create_concept(test_name).concept_id)
  ]
rescue StandardError => e
  raise "Failed to create measure for test `#{name}`: #{e}"
end
create_test_type(name) click to toggle source
# File lib/tasks/loaders/test_result_indicators_loader.rb, line 33
def create_test_type(name)
  concept_id = find_or_create_concept(name, is_set: true).concept_id

  create_concept_set(concept_set: test_type_concept_id, concept_id: concept_id)
rescue StandardError => e
  raise "Failed to create test type `#{name}`: #{e}"
end
load() click to toggle source
# File lib/tasks/loaders/test_result_indicators_loader.rb, line 14
def load
  puts "------- Loading measures ------------"
  CSV.open(data_path('test-measures.csv'), headers: :first_row) do |csv|
    csv.each_with_object({}) do |row, test_measures|
      test_name = row['test_name']
      measure_name = row['measure_name']

      ActiveRecord::Base.transaction do
        measure_concept = find_or_create_concept(measure_name)
        add_measure_to_test(test_name, measure_concept)
      end

      puts "Created measure #{test_name} <--< #{measure_name}"
    rescue StandardError => e
      puts "Error: #{measure_name}: #{e}"
    end
  end
end