Sha256: c27ac8474bc25269d9e82474ad82bde66d4b5d0381c16510354dfc4f961da7d9

Contents?: true

Size: 1.87 KB

Versions: 114

Compression:

Stored size: 1.87 KB

Contents

# frozen_string_literal: true

require_dependency "renalware/pathology"

module Renalware
  module Pathology
    module Requests
      class GlobalRuleSet < ApplicationRecord
        include FrequencyMethods

        has_many :rules, as: :rule_set, class_name: "GlobalRule"

        belongs_to :request_description
        belongs_to :clinic, class_name: "Clinics::Clinic"
        validates :request_description, presence: true
        validates :clinic, presence: true
        validate :constrain_request_description

        scope :for_clinic, ->(clinic) { where(clinic: clinic) }
        scope :ordered, lambda {
          includes(request_description: :lab)
            .order("pathology_labs.name ASC, pathology_request_descriptions.code ASC")
        }

        def observation_required_for_patient?(patient, date)
          PatientRuleSetDecision.new(patient, self, date).call
        end

        def to_s
          if rules.length >= 1
            rules_str = rules.map(&:to_s).join(" and ")
            "if #{rules_str} then #{frequency}"
          else
            frequency.to_s
          end
        end

        private

        def constrain_request_description
          return if request_description.blank?

          validate_presence_of_required_observation_description_for_request_description
          validate_presence_of_bottle_type_for_request_description
        end

        def validate_presence_of_required_observation_description_for_request_description
          return if request_description.required_observation_description.present?

          errors.add(:request_description, "required observation description can't be blank")
        end

        def validate_presence_of_bottle_type_for_request_description
          return if request_description.bottle_type.present?

          errors.add(:request_description, "bottle type can't be blank")
        end
      end
    end
  end
end

Version data entries

114 entries across 114 versions & 1 rubygems

Version Path
renalware-core-2.1.1 app/models/renalware/pathology/requests/global_rule_set.rb
renalware-core-2.1.0 app/models/renalware/pathology/requests/global_rule_set.rb
renalware-core-2.0.167 app/models/renalware/pathology/requests/global_rule_set.rb
renalware-core-2.0.166 app/models/renalware/pathology/requests/global_rule_set.rb
renalware-core-2.0.165 app/models/renalware/pathology/requests/global_rule_set.rb
renalware-core-2.0.164 app/models/renalware/pathology/requests/global_rule_set.rb
renalware-core-2.0.163 app/models/renalware/pathology/requests/global_rule_set.rb
renalware-core-2.0.162 app/models/renalware/pathology/requests/global_rule_set.rb
renalware-core-2.0.161 app/models/renalware/pathology/requests/global_rule_set.rb
renalware-core-2.0.160 app/models/renalware/pathology/requests/global_rule_set.rb
renalware-core-2.0.159 app/models/renalware/pathology/requests/global_rule_set.rb
renalware-core-2.0.158 app/models/renalware/pathology/requests/global_rule_set.rb
renalware-core-2.0.157 app/models/renalware/pathology/requests/global_rule_set.rb
renalware-core-2.0.156 app/models/renalware/pathology/requests/global_rule_set.rb
renalware-core-2.0.155 app/models/renalware/pathology/requests/global_rule_set.rb
renalware-core-2.0.153 app/models/renalware/pathology/requests/global_rule_set.rb
renalware-core-2.0.152 app/models/renalware/pathology/requests/global_rule_set.rb
renalware-core-2.0.151 app/models/renalware/pathology/requests/global_rule_set.rb
renalware-core-2.0.149 app/models/renalware/pathology/requests/global_rule_set.rb
renalware-core-2.0.148 app/models/renalware/pathology/requests/global_rule_set.rb