Class: PacioInfernoCore::Generator::GroupMetadata
- Inherits:
-
Object
- Object
- PacioInfernoCore::Generator::GroupMetadata
- Defined in:
- lib/pacio_inferno_core/generator/group_metadata.rb
Constant Summary collapse
- ATTRIBUTES =
%i[ name class_name version reformatted_version resource profile_url profile_name profile_version title short_description is_delayed interactions operations searches search_definitions include_params revincludes required_concepts must_supports mandatory_elements bindings references tests granular_scope_tests id file_name delayed_references resource_conformance_expectation ].freeze
Instance Method Summary collapse
- #add_delayed_references(delayed_profiles, ig_resources) ⇒ Object
- #add_granular_scope_test(id:, file_name:) ⇒ Object
- #add_test(id:, file_name:) ⇒ Object
- #delayed? ⇒ Boolean
- #exclude_search_tests? ⇒ Boolean
-
#initialize(metadata) ⇒ GroupMetadata
constructor
A new instance of GroupMetadata.
- #no_patient_searches? ⇒ Boolean
- #optional_profile? ⇒ Boolean
- #searchable_delayed_resource? ⇒ Boolean
- #to_hash ⇒ Object
Constructor Details
#initialize(metadata) ⇒ GroupMetadata
Returns a new instance of GroupMetadata.
39 40 41 42 43 44 45 |
# File 'lib/pacio_inferno_core/generator/group_metadata.rb', line 39 def initialize() .each do |key, value| raise "Unknown attribute #{key}" unless ATTRIBUTES.include? key instance_variable_set(:"@#{key}", value) end end |
Instance Method Details
#add_delayed_references(delayed_profiles, ig_resources) ⇒ Object
99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/pacio_inferno_core/generator/group_metadata.rb', line 99 def add_delayed_references(delayed_profiles, ig_resources) self.delayed_references = references .select { |reference| (reference[:profiles] & delayed_profiles).present? } .map do |reference| profile_urls = (reference[:profiles] & delayed_profiles) delayed_resources = profile_urls.map { |url| ig_resources.resource_for_profile(url) } { path: reference[:path].gsub("#{resource}.", ''), resources: delayed_resources } end end |
#add_granular_scope_test(id:, file_name:) ⇒ Object
86 87 88 89 90 91 92 93 |
# File 'lib/pacio_inferno_core/generator/group_metadata.rb', line 86 def add_granular_scope_test(id:, file_name:) self.granular_scope_tests ||= [] self.granular_scope_tests << { id:, file_name: } end |
#add_test(id:, file_name:) ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/pacio_inferno_core/generator/group_metadata.rb', line 71 def add_test(id:, file_name:) self.tests ||= [] = { id: id, file_name: file_name } if delayed? && id.include?('read') self.tests.unshift() else self.tests << end end |
#delayed? ⇒ Boolean
47 48 49 50 51 52 53 |
# File 'lib/pacio_inferno_core/generator/group_metadata.rb', line 47 def delayed? @is_delayed ||= if resource == 'Patient' false else no_patient_searches? end end |
#exclude_search_tests? ⇒ Boolean
55 56 57 |
# File 'lib/pacio_inferno_core/generator/group_metadata.rb', line 55 def exclude_search_tests? delayed? && !searchable_delayed_resource? end |
#no_patient_searches? ⇒ Boolean
59 60 61 |
# File 'lib/pacio_inferno_core/generator/group_metadata.rb', line 59 def no_patient_searches? searches.none? { |search| search[:names].include?('patient') && search[:expectation] == 'SHALL' } end |
#optional_profile? ⇒ Boolean
63 64 65 |
# File 'lib/pacio_inferno_core/generator/group_metadata.rb', line 63 def optional_profile? SpecialCases::OPTIONAL_PROFILES.key?(profile_url) && SpecialCases::OPTIONAL_PROFILES[profile_url].include?(reformatted_version) end |
#searchable_delayed_resource? ⇒ Boolean
67 68 69 |
# File 'lib/pacio_inferno_core/generator/group_metadata.rb', line 67 def searchable_delayed_resource? SpecialCases::SEARCHABLE_DELAYED_RESOURCES.key?(resource) && SpecialCases::SEARCHABLE_DELAYED_RESOURCES[resource].include?(reformatted_version) end |
#to_hash ⇒ Object
95 96 97 |
# File 'lib/pacio_inferno_core/generator/group_metadata.rb', line 95 def to_hash ATTRIBUTES.each_with_object({}) { |key, hash| hash[key] = send(key) unless send(key).nil? } end |