Class: FHIR::Generator

Inherits:
Object
  • Object
show all
Defined in:
lib/fhir_models/generator/template.rb,
lib/fhir_models/generator/generator.rb,
lib/fhir_models/generator/ig_loader.rb,
lib/fhir_models/generator/ig_metadata.rb,
lib/fhir_models/generator/ig_resources.rb,
lib/fhir_models/generator/class_generator.rb,
lib/fhir_models/generator/metadata_generator.rb

Defined Under Namespace

Classes: ClassGenerator, IGLoader, IGMetadata, IGResources, MetadataGenerator, Template

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ig_file_name) ⇒ Generator

Returns a new instance of Generator.



24
25
26
# File 'lib/fhir_models/generator/generator.rb', line 24

def initialize(ig_file_name)
  self.ig_file_name = ig_file_name
end

Instance Attribute Details

#ig_file_nameObject

Returns the value of attribute ig_file_name.



22
23
24
# File 'lib/fhir_models/generator/generator.rb', line 22

def ig_file_name
  @ig_file_name
end

#ig_resourcesObject

Returns the value of attribute ig_resources.



22
23
24
# File 'lib/fhir_models/generator/generator.rb', line 22

def ig_resources
  @ig_resources
end

Class Method Details

.generateObject



14
15
16
17
18
19
20
# File 'lib/fhir_models/generator/generator.rb', line 14

def self.generate
  ig_packages = Dir.glob(File.join(Dir.pwd, 'lib', 'fhir_models', 'igs', '*.tgz'))

  ig_packages.each do |ig_package|
    new(ig_package).generate
  end
end

Instance Method Details

#base_output_folderObject



36
37
38
# File 'lib/fhir_models/generator/generator.rb', line 36

def base_output_folder
  File.join(__dir__, '../', VERSION_MAP[ig_resources..version].to_s, 'generated')
end

#generateObject



28
29
30
31
32
33
34
# File 'lib/fhir_models/generator/generator.rb', line 28

def generate
  puts "Generating tests for IG #{File.basename(ig_file_name)}"
  load_ig_package
  
  generate_types
  generate_resources
end

#generate_metadataObject



47
48
49
# File 'lib/fhir_models/generator/generator.rb', line 47

def 
  MetadataGenerator.new(ig_resources, base_output_folder).generate
end

#generate_resourcesObject



59
60
61
62
63
64
65
# File 'lib/fhir_models/generator/generator.rb', line 59

def generate_resources
  output_folder = File.join(base_output_folder, 'resources')
  FileUtils.mkdir_p(output_folder)

  resource_definitions = ig_resources.resource_definitions
  ClassGenerator.new(resource_definitions, ig_resources, output_folder).generate
end

#generate_typesObject



51
52
53
54
55
56
57
# File 'lib/fhir_models/generator/generator.rb', line 51

def generate_types
  output_folder = File.join(base_output_folder, 'types')
  FileUtils.mkdir_p(output_folder)

  complex_types = ig_resources.complex_types
  ClassGenerator.new(complex_types, ig_resources, output_folder).generate
end

#load_ig_packageObject



40
41
42
43
44
45
# File 'lib/fhir_models/generator/generator.rb', line 40

def load_ig_package
  FHIR.logger = Logger.new('/dev/null')
  ig_loader = IGLoader.new(ig_file_name)
  self.ig_resources = ig_loader.load(show_summary: true)
  FileUtils.mkdir_p(base_output_folder)
end