Class: DaVinciPASTestKit::Generator::ServerSuiteGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/davinci_pas_test_kit/generator/server_suite_generator.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ig_metadata, base_output_dir) ⇒ ServerSuiteGenerator

Returns a new instance of ServerSuiteGenerator.



12
13
14
15
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 12

def initialize(, base_output_dir)
  self. = 
  self.base_output_dir = base_output_dir
end

Instance Attribute Details

#base_output_dirObject

Returns the value of attribute base_output_dir.



10
11
12
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 10

def base_output_dir
  @base_output_dir
end

#ig_metadataObject

Returns the value of attribute ig_metadata.



10
11
12
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 10

def 
  @ig_metadata
end

Class Method Details

.generate(ig_metadata, base_output_dir) ⇒ Object



5
6
7
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 5

def generate(, base_output_dir)
  new(, base_output_dir).generate
end

Instance Method Details

#base_output_file_nameObject



25
26
27
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 25

def base_output_file_name
  'server_suite.rb'
end

#claim_updates_group?Boolean

Claim Updates is a v2.2.x feature (it relies on the PAS Claim Update profile), so it is only wired into the v2.2+ server suites.

Returns:

  • (Boolean)


100
101
102
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 100

def claim_updates_group?
  .ig_version.start_with?('v2.2')
end

#claim_updates_group_file_nameObject



104
105
106
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 104

def claim_updates_group_file_name
  "../../#{.ig_version}/pas_server_claim_updates_group"
end

#claim_updates_group_idObject



108
109
110
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 108

def claim_updates_group_id
  "pas_server_#{.reformatted_version}_claim_updates"
end

#class_nameObject



29
30
31
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 29

def class_name
  'ServerSuite'
end

#error_group_file_nameObject



90
91
92
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 90

def error_group_file_name
  "../../#{.ig_version}/pas_error_group"
end

#error_group_idObject



94
95
96
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 94

def error_group_id
  "pas_#{.reformatted_version}_error_group"
end

#generateObject



71
72
73
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 71

def generate
  File.write(output_file_name, output)
end

#group_file_listObject



85
86
87
88
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 85

def group_file_list
  @group_file_list ||= groups.map { |group| group[:file_name].delete_suffix('.rb') }
    .reject { |name| name.include?('client') }
end

#group_id_listObject



79
80
81
82
83
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 79

def group_id_list
  @group_id_list ||= groups.map { |group| group[:id] }
    .reject { |id| id.include?('client') }
    .reject { |id| id.include?('must_support') }
end

#groupsObject



75
76
77
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 75

def groups
  .use_case_groups
end

#ig_identifierObject



49
50
51
52
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 49

def ig_identifier
  version = .ig_version[1..] # Remove leading 'v'
  "hl7.fhir.us.davinci-pas##{version}"
end


60
61
62
63
64
65
66
67
68
69
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 60

def ig_link
  case .ig_version
  when 'v2.0.1'
    'https://hl7.org/fhir/us/davinci-pas/STU2/'
  when 'v2.2.1'
    'https://hl7.org/fhir/us/davinci-pas/2.2.1/'
  else
    'https://hl7.org/fhir/us/davinci-pas/history.html'
  end
end

#module_nameObject



33
34
35
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 33

def module_name
  "DaVinciPAS#{.reformatted_version.upcase}"
end

#must_support_group_idObject



119
120
121
122
123
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 119

def must_support_group_id
  @must_support_group_id ||= groups.map { |group| group[:id] }
    .reject { |id| id.include?('client') }
    .find { |id| id.include?('must_support') }
end

#outputObject



21
22
23
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 21

def output
  @output ||= ERB.new(template).result(binding)
end

#output_file_nameObject



37
38
39
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 37

def output_file_name
  File.join(base_output_dir, base_output_file_name)
end

#pas_requirement_set_actorObject

The PAS requirement set renamed its server-side actor from "Server" (v2.0.1) to "PAS Payer" (v2.2.1). The actor must match the requirement source exactly or verifies_requirements annotations will not resolve.



115
116
117
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 115

def pas_requirement_set_actor
  .ig_version.start_with?('v2.2') ? 'PAS Payer' : 'Server'
end

#suite_idObject



41
42
43
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 41

def suite_id
  "davinci_pas_server_suite_#{.reformatted_version}"
end

#templateObject



17
18
19
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 17

def template
  @template ||= File.read(File.join(__dir__, 'templates', 'server_suite.rb.erb'))
end

#titleObject



45
46
47
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 45

def title
  "Da Vinci PAS Server Suite #{.ig_version}"
end

#validator_igs_expressionObject



54
55
56
57
58
# File 'lib/davinci_pas_test_kit/generator/server_suite_generator.rb', line 54

def validator_igs_expression
  identifiers = [ig_identifier]
  identifiers << 'hl7.fhir.us.core#6.1.0' if .ig_version.start_with?('v2.2')
  identifiers.map(&:inspect).join(', ')
end