Sha256: aecbfe28f3f737c5b0c5998ebb1fd3cdde68bc19839f216ba407e7d50f23dcbe

Contents?: true

Size: 1.58 KB

Versions: 12

Compression:

Stored size: 1.58 KB

Contents

require_dependency "renalware/pathology"

module Renalware
  module Pathology
    # We maintain current observations for each patient in their #current_observation_set.
    # CurrentObservationSet#values is a hash (stored as jsonb) where the OBX code
    # is the key and the result value and observation date are themselves a hash.
    # So values looks like this
    # {
    #   "HGB": {
    #     "result": 123,
    #     observed_at: "2017-12-12 12:12:12"
    #   },
    #   "CRE": {
    #     ...
    #   }
    # }
    # and *always* contains the very latest pathology result for any code.
    # We store all incoming OBX codes, not just a restricted list.
    # Legacy data might only contain a subset of codes, so #values should not be relied on
    # to cover current observations for the patients entire history, just key ones.
    # When displaying or using a patient's current_observation_set the consuming code
    # must filter out the codes it wants.
    class CurrentObservationSet < ApplicationRecord
      belongs_to :patient,
                 class_name: "Renalware::Pathology::Patient",
                 inverse_of: :current_observation_set
      validates :patient, presence: true
      serialize :values, ObservationsJsonbSerializer

      def values_for_codes(codes)
        codes = Array(codes)
        values.select{ |code, _| codes.include?(code) }
      end

      def self.null_values_hash
        HashWithIndifferentAccess.new.extend(ObservationSetMethods)
      end
    end

    class NullObservationSet
      def values
        ObservationsJsonbSerializer.load({})
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
renalware-core-2.0.8 app/models/renalware/pathology/current_observation_set.rb
renalware-core-2.0.7 app/models/renalware/pathology/current_observation_set.rb
renalware-core-2.0.5 app/models/renalware/pathology/current_observation_set.rb
renalware-core-2.0.4 app/models/renalware/pathology/current_observation_set.rb
renalware-core-2.0.3 app/models/renalware/pathology/current_observation_set.rb
renalware-core-2.0.2 app/models/renalware/pathology/current_observation_set.rb
renalware-core-2.0.1 app/models/renalware/pathology/current_observation_set.rb
renalware-core-2.0.0 app/models/renalware/pathology/current_observation_set.rb
renalware-core-2.0.0.pre.rc13 app/models/renalware/pathology/current_observation_set.rb
renalware-core-2.0.0.pre.rc11 app/models/renalware/pathology/current_observation_set.rb
renalware-core-2.0.0.pre.rc10 app/models/renalware/pathology/current_observation_set.rb
renalware-core-2.0.0.pre.rc9 app/models/renalware/pathology/current_observation_set.rb