Class: FHIR::Generator::MetadataGenerator
- Inherits:
-
Object
- Object
- FHIR::Generator::MetadataGenerator
- Defined in:
- lib/fhir_models/generator/metadata_generator.rb
Instance Attribute Summary collapse
-
#ig_resources ⇒ Object
Returns the value of attribute ig_resources.
-
#output_folder ⇒ Object
Returns the value of attribute output_folder.
Instance Method Summary collapse
- #generate ⇒ Object
-
#initialize(ig_resources, output_folder) ⇒ MetadataGenerator
constructor
A new instance of MetadataGenerator.
Constructor Details
#initialize(ig_resources, output_folder) ⇒ MetadataGenerator
Returns a new instance of MetadataGenerator.
8 9 10 11 |
# File 'lib/fhir_models/generator/metadata_generator.rb', line 8 def initialize(ig_resources, output_folder) self.ig_resources = ig_resources self.output_folder = output_folder end |
Instance Attribute Details
#ig_resources ⇒ Object
Returns the value of attribute ig_resources.
6 7 8 |
# File 'lib/fhir_models/generator/metadata_generator.rb', line 6 def ig_resources @ig_resources end |
#output_folder ⇒ Object
Returns the value of attribute output_folder.
6 7 8 |
# File 'lib/fhir_models/generator/metadata_generator.rb', line 6 def output_folder @output_folder end |
Instance Method Details
#generate ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/fhir_models/generator/metadata_generator.rb', line 13 def generate template = Template.new([], true) template.fhir_version = ig_resources..shortName primitives = ig_resources.primitive_types hash = {} primitives.each do |p| field = FHIR::Field.new field.name = nil # try to find the element that describes the value type = p['snapshot']['element'].select { |e| e['path'].end_with?('.value') }.first['type'].first # try to find the JSON data type field.type = type['code'].gsub('http://hl7.org/fhirpath/System.', '').downcase # try to find a regex if type['extension'] ext = type['extension'].find { |e| e['url'] == 'http://hl7.org/fhir/StructureDefinition/regex' } field.regex = ext['valueString'] if ext end hash[p['id']] = field.serialize end template.constants['PRIMITIVES'] = hash template.constants['TYPES'] = ig_resources.complex_types.map { |t| t['id'] } # resources template.constants['RESOURCES'] = ig_resources.resource_definitions.map { |r| r['id'] } output_file_name = File.join(output_folder, "#{output_folder.split('/')[-2]}.rb") file = File.open(output_file_name, 'w:UTF-8') file.write(template.to_s) file.close end |