Sha256: cfaadf8de313e45d322e7c91eeeb2cb397246eef4298f816e340c18f5a50483f

Contents?: true

Size: 1.48 KB

Versions: 3

Compression:

Stored size: 1.48 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
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
renalware-core-2.0.0.pre.rc8 app/models/renalware/pathology/current_observation_set.rb
renalware-core-2.0.0.pre.rc7 app/models/renalware/pathology/current_observation_set.rb
renalware-core-2.0.0.pre.rc6 app/models/renalware/pathology/current_observation_set.rb