Class: USCoreTestKit::Generator::IGMetadataExtractor

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ig_resources) ⇒ IGMetadataExtractor



9
10
11
12
13
14
15
# File 'lib/us_core_test_kit/generator/ig_metadata_extractor.rb', line 9

def initialize(ig_resources)
  self.ig_resources = ig_resources
  add_missing_supported_profiles
  remove_version_from_supported_profiles
  remove_extra_supported_profiles
  self. = .new
end

Instance Attribute Details

#ig_resourcesObject

Returns the value of attribute ig_resources.



7
8
9
# File 'lib/us_core_test_kit/generator/ig_metadata_extractor.rb', line 7

def ig_resources
  @ig_resources
end

#metadataObject

Returns the value of attribute metadata.



7
8
9
# File 'lib/us_core_test_kit/generator/ig_metadata_extractor.rb', line 7

def 
  
end

Instance Method Details

#add_metadata_from_igObject



23
24
25
# File 'lib/us_core_test_kit/generator/ig_metadata_extractor.rb', line 23

def 
  .ig_version = "v#{ig_resources.ig.version}".delete('-ballot')
end

#add_metadata_from_resourcesObject



72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/us_core_test_kit/generator/ig_metadata_extractor.rb', line 72

def 
  .groups =
    resources_in_capability_statement.flat_map do |resource|
      resource.supportedProfile&.map do |supported_profile|
        # supported_profile = supported_profile.split('|').first
        next if supported_profile == 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire'

        GroupMetadataExtractor.new(resource, supported_profile, , ig_resources).
      end
    end.compact

  .postprocess_groups(ig_resources)
end

#add_missing_supported_profilesObject



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/us_core_test_kit/generator/ig_metadata_extractor.rb', line 31

def add_missing_supported_profiles
  case ig_resources.ig.version.delete('-ballot')
  when '3.1.1'
    # TODO: Remove these after v8.0.0 IG is fixed

    # The US Core v3.1.1 Server Capability Statement does not list support for the
    # required vital signs profiles, so they need to be added
    ig_resources.capability_statement.rest.first.resource
      .find { |resource| resource.type == 'Observation' }
      .supportedProfile.concat [
        'http://hl7.org/fhir/StructureDefinition/bodyheight',
        'http://hl7.org/fhir/StructureDefinition/bodytemp',
        'http://hl7.org/fhir/StructureDefinition/bp',
        'http://hl7.org/fhir/StructureDefinition/bodyweight',
        'http://hl7.org/fhir/StructureDefinition/heartrate',
        'http://hl7.org/fhir/StructureDefinition/resprate'
      ]
  when '5.0.1'
    # The US Core v5.0.1 Server Capability Statement does not have supported-profile for Encounter
    ig_resources.capability_statement.rest.first.resource
      .find { |resource| resource.type == 'Encounter' }
      .supportedProfile.concat [
        'http://hl7.org/fhir/us/core/StructureDefinition/us-core-encounter'
      ]
  end
end

#extractObject



17
18
19
20
21
# File 'lib/us_core_test_kit/generator/ig_metadata_extractor.rb', line 17

def extract
  
  
  
end

#remove_extra_supported_profilesObject



64
65
66
67
68
69
70
# File 'lib/us_core_test_kit/generator/ig_metadata_extractor.rb', line 64

def remove_extra_supported_profiles
  ig_resources.capability_statement.rest.first.resource
    .find { |resource| resource.type == 'Observation' }
    .supportedProfile.delete_if do |profile_url|
    SpecialCases::PROFILES_TO_EXCLUDE.include?(profile_url)
  end
end

#remove_version_from_supported_profilesObject



58
59
60
61
62
# File 'lib/us_core_test_kit/generator/ig_metadata_extractor.rb', line 58

def remove_version_from_supported_profiles
  resources_in_capability_statement.each do |resource|
    resource.supportedProfile.map! { |profile_url| profile_url.split('|').first }
  end
end

#resources_in_capability_statementObject



27
28
29
# File 'lib/us_core_test_kit/generator/ig_metadata_extractor.rb', line 27

def resources_in_capability_statement
  ig_resources.capability_statement.rest.first.resource
end