Sha256: a77145270d1f6542066ceffdeec7484e15e7a86f42c374c11cf59a6b7ad923fc

Contents?: true

Size: 1.41 KB

Versions: 77

Compression:

Stored size: 1.41 KB

Contents

# frozen_string_literal: true

require "renalware/letters"
require "attr_extras"

module Renalware
  module Letters
    # Given a hash of letter part classes (i.e. the class names for each Part that should be
    # included in the letter, where each Part is responsible for rendering a part of the letter)
    # and other options, this class filters out certain parts based on conditions,
    # for example if a site does not want pathology, the recent_pathology_results key is
    # removed from the hash.
    class PartClassFilter
      pattr_initialize [:part_classes!, :include_pathology_in_letter_body!]

      def to_h
        filtered_part_classes
      end

      private

      def filtered_part_classes
        remove_recent_observations_part_if_no_pathology_required_in_body(part_classes)
      end

      # Some sites may not require pathology in letters. This is determined by the boolean
      # #include_pathology_in_letter_body flag on the letterhead, which is site-specific.
      # TODO: It might be better to link the letterhead to the Hospitals::Site and
      # put the site-specific configuration in say a jsonb field on the Site.
      def remove_recent_observations_part_if_no_pathology_required_in_body(part_klasses)
        unless include_pathology_in_letter_body
          part_klasses = part_klasses.reject { |key| key == :recent_pathology_results }
        end
        part_klasses
      end
    end
  end
end

Version data entries

77 entries across 77 versions & 1 rubygems

Version Path
renalware-core-2.0.159 app/presenters/renalware/letters/part_class_filter.rb
renalware-core-2.0.158 app/presenters/renalware/letters/part_class_filter.rb
renalware-core-2.0.157 app/presenters/renalware/letters/part_class_filter.rb
renalware-core-2.0.156 app/presenters/renalware/letters/part_class_filter.rb
renalware-core-2.0.155 app/presenters/renalware/letters/part_class_filter.rb
renalware-core-2.0.153 app/presenters/renalware/letters/part_class_filter.rb
renalware-core-2.0.152 app/presenters/renalware/letters/part_class_filter.rb
renalware-core-2.0.151 app/presenters/renalware/letters/part_class_filter.rb
renalware-core-2.0.149 app/presenters/renalware/letters/part_class_filter.rb
renalware-core-2.0.148 app/presenters/renalware/letters/part_class_filter.rb
renalware-core-2.0.147 app/presenters/renalware/letters/part_class_filter.rb
renalware-core-2.0.146 app/presenters/renalware/letters/part_class_filter.rb
renalware-core-2.0.145 app/presenters/renalware/letters/part_class_filter.rb
renalware-core-2.0.144 app/presenters/renalware/letters/part_class_filter.rb
renalware-core-2.0.143 app/presenters/renalware/letters/part_class_filter.rb
renalware-core-2.0.142 app/presenters/renalware/letters/part_class_filter.rb
renalware-core-2.0.141 app/presenters/renalware/letters/part_class_filter.rb
renalware-core-2.0.140 app/presenters/renalware/letters/part_class_filter.rb
renalware-core-2.0.139 app/presenters/renalware/letters/part_class_filter.rb
renalware-core-2.0.138 app/presenters/renalware/letters/part_class_filter.rb