Class: USCoreTestKit::Generator::VerifiesRequirements

Inherits:
Object
  • Object
show all
Defined in:
lib/us_core_test_kit/generator/verifies_requirements.rb

Constant Summary collapse

V610 =
'USCoreV610'
V700 =
'USCoreV700'
V800 =
'USCoreV800'
MIN_VERSION =
V610
MODULE_NAMESPACE_MAP =
{
  V610 => 'hl7.fhir.us.core_6.1.0',
  V700 => 'hl7.fhir.us.core_7.0.0',
  V800 => 'hl7.fhir.us.core_8.0.0'
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeVerifiesRequirements



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/us_core_test_kit/generator/verifies_requirements.rb', line 19

def initialize
  @requirement_lists = {
    V610 => {
      :base => [],
      :map => {},
      :remove => []
    },
    V700 => {
      :base => [],
      :map => {},
      :remove => []
    },
    V800 => {
      :base => [],
      :map => {},
      :remove => []
    }
  }
end

Instance Attribute Details

#requirement_listsObject

Returns the value of attribute requirement_lists.



5
6
7
# File 'lib/us_core_test_kit/generator/verifies_requirements.rb', line 5

def requirement_lists
  @requirement_lists
end

Instance Method Details

#create_verifies_requirements(module_name, class_name, indent_spaces = 6) ⇒ Object



67
68
69
70
71
72
73
74
# File 'lib/us_core_test_kit/generator/verifies_requirements.rb', line 67

def create_verifies_requirements(module_name, class_name, indent_spaces = 6)
  if module_name < MIN_VERSION
    return
  end

  ids = get_ids(module_name, class_name)
  create_verifies_requirements_from_ids(module_name, ids, indent_spaces) if ids.any?
end

#create_verifies_requirements_from_ids(module_name, ids, indent_spaces = 6) ⇒ Object



76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/us_core_test_kit/generator/verifies_requirements.rb', line 76

def create_verifies_requirements_from_ids(module_name, ids, indent_spaces = 6)
  if module_name < MIN_VERSION
    return
  end

  namespace = MODULE_NAMESPACE_MAP[module_name]
  verifies_requirements = ' ' * indent_spaces + "verifies_requirements "
  indent_spaces = verifies_requirements.length
  verifies_requirements += ids.map.with_index do |id, i|
    "'#{namespace}@#{id}'" + (i < ids.size - 1 ? ',' : '')
  end.join("\n" + ' ' * indent_spaces)

  verifies_requirements
end

#get_ids(module_name, class_name) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/us_core_test_kit/generator/verifies_requirements.rb', line 39

def get_ids(module_name, class_name)
  if module_name < MIN_VERSION
    return
  end

  all_ids = []

  if module_name >= V610
    all_ids += @requirement_lists[V610][:base]
    all_ids += @requirement_lists[V610][:map][class_name] if @requirement_lists[V610][:map][class_name]
    all_ids -= @requirement_lists[V610][:remove]
  end

  if module_name >= V700
    all_ids += @requirement_lists[V700][:base]
    all_ids += @requirement_lists[V700][:map][class_name] if @requirement_lists[V700][:map][class_name]
    all_ids -= @requirement_lists[V700][:remove]
  end

  if module_name >= V800
    all_ids += @requirement_lists[V800][:base]
    all_ids += @requirement_lists[V800][:map][class_name] if @requirement_lists[V800][:map][class_name]
    all_ids -= @requirement_lists[V800][:remove]
  end

  all_ids
end

#has_requirements?(module_name, class_name) ⇒ Boolean



91
92
93
94
95
96
# File 'lib/us_core_test_kit/generator/verifies_requirements.rb', line 91

def has_requirements?(module_name, class_name)
  return false if module_name < V610

  ids = get_ids(module_name, class_name)
  ids && ids.any?
end