Module: SMARTSchedulingLinks::ResourceChecker

Defined in:
lib/smart_scheduling_links_test_kit/resource_group.rb

Instance Method Summary collapse

Instance Method Details

#max_linesObject



3
4
5
6
# File 'lib/smart_scheduling_links_test_kit/resource_group.rb', line 3

def max_lines
  @max_lines ||=
      max_lines_per_file.to_i == 0 ? 100 : max_lines_per_file.to_i
end

#validate_response(url, profile_url) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/smart_scheduling_links_test_kit/resource_group.rb', line 8

def validate_response(url, profile_url)
  previous_chunk = String.new

  @valid_resource_count ||= 0

  line_count = 0

  process_body = lambda do |new_chunk, _|
    current_chunk = previous_chunk + new_chunk
    lines = current_chunk.lines
    previous_chunk = lines.pop || String.new

    lines.each do |line|
      break if (max_lines.present? && line_count >= max_lines) ||
               messages.any? { |message| message[:type] == 'error' }

      assert_valid_json(line)

      resource = FHIR.from_contents(line)
      @valid_resource_count += 1 if resource_is_valid?(resource:, profile_url:)

      line_count += 1
    end
  end

  stream(process_body, url, headers: { 'Accept' => 'application/fhir+ndjson' })
end