Class: ONCCertificationG10TestKit::Tasks::GenerateRequirementsSpreadsheet

Inherits:
Object
  • Object
show all
Defined in:
lib/onc_certification_g10_test_kit/tasks/generate_requirements_spreadsheet.rb

Constant Summary collapse

TEST_PROCEDURE_URL =
'https://www.healthit.gov/test-method/standardized-api-patient-and-population-services#test_procedure'.freeze
FILE_NAME =
File.join('lib', 'onc_certification_g10_test_kit', 'requirements',
'(g)(10)-test-procedure_requirements.xlsx')

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#rowObject

Returns the value of attribute row.



8
9
10
# File 'lib/onc_certification_g10_test_kit/tasks/generate_requirements_spreadsheet.rb', line 8

def row
  @row
end

Instance Method Details

#add_test_procedure_requirementsObject

rubocop:disable Metrics/CyclomaticComplexity



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/onc_certification_g10_test_kit/tasks/generate_requirements_spreadsheet.rb', line 56

def add_test_procedure_requirements # rubocop:disable Metrics/CyclomaticComplexity
  requirements_worksheet = workbook['Requirements']
  self.row = 0

  test_procedure.sections.each do |section|
    section.steps.group_by(&:group).each_value do |steps|
      steps.each do |step|
        next_row

        lines = step.s_u_t&.lines&.count || 0
        requirements_worksheet.change_row_height(row, (lines * 16) + 10)
        requirements_worksheet.change_row_vertical_alignment(row, 'top')

        requirements_worksheet.add_cell(row, 0, "#{step.id.upcase} ")
        requirements_worksheet.add_cell(row, 1, TEST_PROCEDURE_URL)
        requirements_worksheet.add_cell(row, 2, step.s_u_t).change_text_wrap(true)
        requirements_worksheet.add_cell(row, 3, 'SHALL')
        requirements_worksheet.add_cell(row, 4, 'Server')
        requirements_worksheet.add_cell(row, 5, '')
        requirements_worksheet.add_cell(row, 6, 'FALSE')
      end
    end
  end
end

#clear_requirements_worksheetObject



50
51
52
53
54
# File 'lib/onc_certification_g10_test_kit/tasks/generate_requirements_spreadsheet.rb', line 50

def clear_requirements_worksheet
  requirements_worksheet = workbook['Requirements']
  requirements_worksheet.sheet_data[1]
  requirements_worksheet.delete_row(1) until requirements_worksheet.cell_at('A2').nil?
end

#inferno_to_procedure_mapObject



14
15
16
# File 'lib/onc_certification_g10_test_kit/tasks/generate_requirements_spreadsheet.rb', line 14

def inferno_to_procedure_map
  @inferno_to_procedure_map ||= Hash.new { |h, k| h[k] = [] }
end

#next_rowObject



38
39
40
# File 'lib/onc_certification_g10_test_kit/tasks/generate_requirements_spreadsheet.rb', line 38

def next_row
  self.row += 1
end

#runObject



42
43
44
45
46
47
48
# File 'lib/onc_certification_g10_test_kit/tasks/generate_requirements_spreadsheet.rb', line 42

def run
  clear_requirements_worksheet
  add_test_procedure_requirements

  Inferno.logger.info "Writing to #{FILE_NAME}"
  workbook.write(FILE_NAME)
end

#test_procedureObject



18
19
20
21
22
23
24
25
26
27
28
# File 'lib/onc_certification_g10_test_kit/tasks/generate_requirements_spreadsheet.rb', line 18

def test_procedure
  @test_procedure ||=
    if File.file? File.join('lib', 'onc_certification_g10_test_kit', 'onc_program_procedure.yml')
      TestProcedure.new(
        YAML.load_file(File.join('lib', 'onc_certification_g10_test_kit',
                                 'onc_program_procedure.yml')).deep_symbolize_keys
      )
    else
      TestProcedure.new
    end
end

#test_suiteObject



30
31
32
# File 'lib/onc_certification_g10_test_kit/tasks/generate_requirements_spreadsheet.rb', line 30

def test_suite
  ONCCertificationG10TestKit::G10CertificationSuite
end

#workbookObject



34
35
36
# File 'lib/onc_certification_g10_test_kit/tasks/generate_requirements_spreadsheet.rb', line 34

def workbook
  @workbook ||= RubyXL::Parser.parse(FILE_NAME)
end