```ruby
require_dependency "renalware/pathology"

module Renalware
  module Pathology
    class ViewHistoricalObservations
      def initialize(
            patient,
            descriptions: default_descriptions,
            observations: Observation.all,
            limit: 20
        )

        @patient = patient
        @descriptions = default_descriptions
        @observations = default_observations.merge(observations)
        @limit = limit
      end

      def call
        observations_for_descriptions = find_observations_for_descriptions
        results = build_results(observations_for_descriptions)
        present(results)
      end

      private

      def find_observations_for_descriptions
        ObservationsForDescriptionsQuery.new(
          relation: @observations,
          descriptions: @descriptions
        ).call
      end

      def build_results(observations)
        Results.new(observations, @descriptions)
      end

      def present(results_archive)
        HistoricalResultsPresenter.new(results_archive, @limit)
      end

      def default_descriptions
        RelevantObservationDescription.all
      end

      def default_observations
        @patient.observations.ordered
      end
    end
  end
end
```

Introduce date range as this is how we will paginate
user
```ruby
require_dependency "renalware/pathology"

module Renalware
  module Pathology
    class ViewHistoricalObservations
      def initialize(
            patient,
            descriptions: default_descriptions,
            observations: Observation.all,
            limit: 20
        )

        @patient = patient
        @descriptions = default_descriptions
        @observations = default_observations.merge(observations)
        @limit = limit
      end

      def call
        observations_for_descriptions = find_observations_for_descriptions
        date_range = determine_date_range_for_observations(observations_for_descriptions)
        observations = filter_observations_within_date_range(observations_for_descriptions, date_range)
        results = build_results(observations)
        present(results)
      end

      private

      def find_observations_for_descriptions
        ObservationsForDescriptionsQuery.new(
          relation: @observations,
          descriptions: @descriptions
        ).call
      end

      def determine_date_range_for_observations(observations)
        observations = DetermineDateRangeQuery.new(relation: observations, limit: @limit).call
        ObservationDateRange.new(relation: observations).call
      end

      def filter_observations_within_date_range(observations, date_range)
        ObservationsWithinDateRangeQuery.new(relation: observations, date_range: date_range).call
      end

      def build_results(observations)
        Results.new(observations, @descriptions)
      end

      def present(results_archive)
        HistoricalResultsPresenter.new(results_archive, @limit)
      end

      def default_descriptions
        RelevantObservationDescription.all
      end

      def default_observations
        @patient.observations.ordered
      end
    end
  end
end
```
assistant