Skip to content

Commit

Permalink
Merge pull request #14 from wesrich/rubocop-revisions
Browse files Browse the repository at this point in the history
Rubocop revisions
  • Loading branch information
jawalonoski authored Nov 15, 2016
2 parents bd46421 + efed585 commit cd9e907
Show file tree
Hide file tree
Showing 35 changed files with 1,002 additions and 1,151 deletions.
76 changes: 37 additions & 39 deletions lib/fhir_models/bootstrap/definitions.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
require 'tempfile'
module FHIR
class Definitions

@@defns = File.expand_path '../definitions', File.dirname(File.absolute_path(__FILE__))
@@types = nil
@@resources = nil
Expand All @@ -20,28 +19,28 @@ def self.load_types
# load the types
filename = File.join(@@defns, 'structures', 'profiles-types.json')
raw = File.open(filename, 'r:UTF-8', &:read)
@@types = JSON.parse(raw)['entry'].map{|e|e['resource']}
@@types = JSON.parse(raw)['entry'].map { |e| e['resource'] }
end
end

def self.get_primitive_types
load_types
# primitive data types start with a lowercase letter
@@types.select{|t|t['id'][0]==t['id'][0].downcase}
@@types.select { |t| t['id'][0] == t['id'][0].downcase }
end

def self.get_complex_types
load_types
# complex data types start with an uppercase letter
# and we'll filter out profiles on types (for example, Age is a profile on Quantity)
@@types.select{|t| (t['id'][0]==t['id'][0].upcase) && (t['id']==t['snapshot']['element'].first['path'])}
@@types.select { |t| (t['id'][0] == t['id'][0].upcase) && (t['id'] == t['snapshot']['element'].first['path']) }
end

def self.get_type_definition(type_name)
return nil if type_name.nil?
load_types
d = @@types.find{|x|x['xmlId']==type_name || x['name']==type_name || x['url']==type_name}
d = FHIR::StructureDefinition.new(d) if !d.nil?
d = @@types.find { |x| x['xmlId'] == type_name || x['name'] == type_name || x['url'] == type_name }
d = FHIR::StructureDefinition.new(d) unless d.nil?
d
end

Expand All @@ -54,7 +53,7 @@ def self.load_resources
# load the resources
filename = File.join(@@defns, 'structures', 'profiles-resources.json')
raw = File.open(filename, 'r:UTF-8', &:read)
@@resources = JSON.parse(raw)['entry'].map{|e|e['resource']}
@@resources = JSON.parse(raw)['entry'].map { |e| e['resource'] }
end
end

Expand All @@ -66,8 +65,8 @@ def self.get_resource_definitions
def self.get_resource_definition(resource_name)
return nil if resource_name.nil?
load_resources
d = @@resources.find{|x|x['xmlId']==resource_name || x['name']==resource_name || x['url']==resource_name}
d = FHIR::StructureDefinition.new(d) if !d.nil?
d = @@resources.find { |x| x['xmlId'] == resource_name || x['name'] == resource_name || x['url'] == resource_name }
d = FHIR::StructureDefinition.new(d) unless d.nil?
d
end

Expand All @@ -76,7 +75,7 @@ def self.load_profiles
# load the built-in profiles
filename = File.join(@@defns, 'structures', 'profiles-others.json')
raw = File.open(filename, 'r:UTF-8', &:read)
@@profiles = JSON.parse(raw)['entry'].map{|e|e['resource']}
@@profiles = JSON.parse(raw)['entry'].map { |e| e['resource'] }
end
end

Expand All @@ -85,15 +84,15 @@ def self.load_extensions
# load the built-in extensions
filename = File.join(@@defns, 'structures', 'extension-definitions.json')
raw = File.open(filename, 'r:UTF-8', &:read)
@@extensions = JSON.parse(raw)['entry'].map{|e|e['resource']}
@@extensions = JSON.parse(raw)['entry'].map { |e| e['resource'] }
end
end

def self.get_extension_definition(extension_name)
return nil if extension_name.nil?
load_extensions
d = @@extensions.find{|x|x['xmlId']==extension_name || x['name']==extension_name || x['url']==extension_name}
d = FHIR::StructureDefinition.new(d) if !d.nil?
d = @@extensions.find { |x| x['xmlId'] == extension_name || x['name'] == extension_name || x['url'] == extension_name }
d = FHIR::StructureDefinition.new(d) unless d.nil?
d
end

Expand All @@ -103,11 +102,11 @@ def self.get_basetype(uri)
load_profiles
load_extensions

defn = @@profiles.select{|x|x['url']==uri}.first
defn = @@extensions.select{|x|x['url']==uri}.first if defn.nil?
defn = @@profiles.select { |x| x['url'] == uri }.first
defn = @@extensions.select { |x| x['url'] == uri }.first if defn.nil?

basetype = nil
basetype = defn['baseType'] if !defn.nil?
basetype = defn['baseType'] unless defn.nil?
basetype
end

Expand All @@ -117,18 +116,18 @@ def self.get_profile(uri)
load_profiles
load_extensions

defn = @@profiles.select{|x|x['url']==uri}.first
defn = @@extensions.select{|x|x['url']==uri}.first if defn.nil?
defn = @@profiles.select { |x| x['url'] == uri }.first
defn = @@extensions.select { |x| x['url'] == uri }.first if defn.nil?

profile = nil
profile = FHIR::StructureDefinition.new(defn) if !defn.nil?
profile = FHIR::StructureDefinition.new(defn) unless defn.nil?
profile
end

def self.get_profiles_for_resource(resource_name)
return nil if resource_name.nil?
load_profiles
@@profiles.select{|x|x['baseType']==resource_name}.map{|x| FHIR::StructureDefinition.new(x) }
@@profiles.select { |x| x['baseType'] == resource_name }.map { |x| FHIR::StructureDefinition.new(x) }
end

# Get a dynamically generated class for a given profile.
Expand All @@ -137,22 +136,22 @@ def self.get_profile_class(uri)
load_profiles
load_extensions

defn = @@profiles.select{|x|x['url']==uri}.first
defn = @@extensions.select{|x|x['url']==uri}.first if defn.nil?
defn = @@profiles.select { |x| x['url'] == uri }.first
defn = @@extensions.select { |x| x['url'] == uri }.first if defn.nil?

klass = nil
if !defn.nil?
unless defn.nil?
generator = FHIR::Boot::Generator.new(false)
type = defn['baseType']
id = defn['id'].gsub(/-|_/, '').capitalize
defn['id'] = type # override profile id with baseType name for generator
template = generator.generate_class([ type ], defn)
template = generator.generate_class([type], defn)
f = Tempfile.new(["profile-#{id}", '.rb'])
f.write("module FHIR\n")
f.write("module Profile\n")
f.write("module #{id}\n")
f.write(template.to_s)
3.times{f.write("\nend")}
3.times { f.write("\nend") }
f.close
begin
# load the profiled class
Expand All @@ -177,13 +176,13 @@ def self.load_expansions
# load the expansions
filename = File.join(@@defns, 'valuesets', 'expansions.json')
raw = File.open(filename, 'r:UTF-8', &:read)
@@expansions = JSON.parse(raw)['entry'].map{|e|e['resource']}
@@expansions = JSON.parse(raw)['entry'].map { |e| e['resource'] }
end
if @@valuesets.nil?
# load the valuesets
filename = File.join(@@defns, 'valuesets', 'valuesets.json')
raw = File.open(filename, 'r:UTF-8', &:read)
@@valuesets = JSON.parse(raw)['entry'].map{|e|e['resource']}
@@valuesets = JSON.parse(raw)['entry'].map { |e| e['resource'] }
end
end

Expand All @@ -192,20 +191,20 @@ def self.get_codes(uri)
return nil if uri.nil?
load_expansions
codes = nil
valueset = @@expansions.select{|x|x['url']==uri}.first
if !valueset.nil?
valueset = @@expansions.select { |x| x['url'] == uri }.first
unless valueset.nil?
codes = {}
if !valueset['expansion'].nil? && !valueset['expansion']['contains'].nil?
keys = valueset['expansion']['contains'].map{|x|x['system']}.uniq
keys.each{|x| codes[x]=[]}
valueset['expansion']['contains'].each{|x| codes[x['system']] << x['code']}
keys = valueset['expansion']['contains'].map { |x| x['system'] }.uniq
keys.each { |x| codes[x] = [] }
valueset['expansion']['contains'].each { |x| codes[x['system']] << x['code'] }
end
if !valueset['compose'].nil? && !valueset['compose']['include'].nil?
included_systems = valueset['compose']['include'].map{|x|x['system']}.uniq
included_systems.each{|x| codes[x]=[] if !codes.keys.include?(x) }
systems = @@valuesets.select{|x|x['resourceType']=='CodeSystem' && included_systems.include?(x['url'])}
included_systems = valueset['compose']['include'].map { |x| x['system'] }.uniq
included_systems.each { |x| codes[x] = [] unless codes.keys.include?(x) }
systems = @@valuesets.select { |x| x['resourceType'] == 'CodeSystem' && included_systems.include?(x['url']) }
systems.each do |x|
x['concept'].each{|y| codes[x['url']] << y['code']}
x['concept'].each { |y| codes[x['url']] << y['code'] }
end
end
end
Expand All @@ -221,17 +220,16 @@ def self.load_search_params
# load the search parameters
filename = File.join(@@defns, 'structures', 'search-parameters.json')
raw = File.open(filename, 'r:UTF-8', &:read)
@@search_params = JSON.parse(raw)['entry'].map{|e|e['resource']}
@@search_params = JSON.parse(raw)['entry'].map { |e| e['resource'] }
end
end

def self.get_search_parameters(type_name)
return nil if type_name.nil?
load_search_params
@@search_params.select{|p|p['base']==type_name && p['xpath'] && !p['xpath'].include?('extension')}.map{|p|p['code']}
@@search_params.select { |p| p['base'] == type_name && p['xpath'] && !p['xpath'].include?('extension') }.map { |p| p['code'] }
end

private_class_method :load_types, :load_extensions, :load_expansions, :load_profiles, :load_resources, :load_search_params

end
end
14 changes: 6 additions & 8 deletions lib/fhir_models/bootstrap/field.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
module FHIR
class Field

attr_accessor :name
attr_accessor :local_name
attr_accessor :path
Expand All @@ -13,21 +12,21 @@ class Field
attr_accessor :regex
attr_accessor :constraint

def initialize(name='')
def initialize(name = '')
@name = name
@local_name = fix_name(@name)
@type_profiles = []
@valid_codes = []
end

def serialize
hash = Hash.new
self.instance_variables.each do |v|
hash[v.to_s[1..-1]] = self.instance_variable_get(v)
hash = {}
instance_variables.each do |v|
hash[v.to_s[1..-1]] = instance_variable_get(v)
end
hash.delete('name')
hash.keep_if do |_key, value|
!value.nil? && ( (value.is_a?(Hash) && !value.empty?) ||
!value.nil? && ((value.is_a?(Hash) && !value.empty?) ||
(value.is_a?(Array) && !value.empty?) ||
(!value.is_a?(Hash) && !value.is_a?(Array))
)
Expand All @@ -37,9 +36,8 @@ def serialize

def fix_name(name)
fix = nil
fix = "local_#{name}" if ['class', 'method', 'resourceType'].include?(name)
fix = "local_#{name}" if %w(class method resourceType).include?(name)
fix
end

end
end
Loading

0 comments on commit cd9e907

Please sign in to comment.