Sha256: e955fc17cb167d7ef7fdad3c79ee6a458208ad9b0c361432b2c905e5d08eaaa6

Contents?: true

Size: 1.59 KB

Versions: 21

Compression:

Stored size: 1.59 KB

Contents

# frozen_string_literal: true

require_dependency "renalware/medications"

module Renalware
  module Medications
    module Delivery
      # Find current home delivery prescriptions with a next_delivery_date falling
      # within the specified range.
      class PrescriptionsDueForDeliveryQuery
        attr_reader :drug_type_code, :from, :to, :query, :modality_description_id

        def initialize(
          drug_type_code: nil,
          from: nil,
          to: nil,
          modality_description_id: nil,
          query: {}
        )
          @from = (from || 4.weeks.ago).beginning_of_day
          @to = (to || 2.weeks.since).end_of_day
          @drug_type_code = drug_type_code
          @query = query
          @modality_description_id = modality_description_id
        end

        def call
          query = search.result
            .current
            .includes(:patient)
            .eager_load(drug: [:classifications, :drug_types])
            .joins("inner join patient_current_modalities pcm on pcm.patient_id = patients.id")
            .where(provider: :home_delivery)
            .where(next_delivery_date: (from..to))
            .order(next_delivery_date: :asc)

          if drug_type_code.present?
            query = query.where("lower(drug_types.code) = ?", drug_type_code)
          end

          if modality_description_id.present?
            query = query.where("pcm.modality_description_id = ?", modality_description_id)
          end
          query
        end

        def search
          @search ||= Medications::Prescription.ransack(query)
        end
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

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