Sha256: e1da3c0f23a7834abde0da8e4ce7f64e2ca066325f3949e428698d1e30cc9613

Contents?: true

Size: 1.38 KB

Versions: 70

Compression:

Stored size: 1.38 KB

Contents

# frozen_string_literal: true

module Renalware
  module UKRDC
    # Assumes the thing being passed to the ctor is of type Pathology::ObservationPresenter hence
    # responds to #description_code
    class PathologyObservationPresenter < SimpleDelegator
      delegate :rr_type_interpretation?, to: :description

      INTERPRETATION_CODE_MAP = {
        "positive" => "POS",
        "negative" => "NEG"
      }.freeze
      DEFAULT_INTERPRETATION_CODE = "UNK"

      # The PrePost element in ResultItem
      # For HD patients, all bloods are PRE except the post dialysis urea,
      # For non-HD patients, all the tests are NA
      def pre_post(patient_is_on_hd:)
        if patient_is_on_hd
          description_code.casecmp("UREP").zero? ? "POST" : "PRE"
        else
          "NA"
        end
      end

      # Truncate long result text to satisfy XSD validation - it might be notes
      # like eg "No recent Urea result"
      def result
        (super || "")[0..19]
      end

      def coding_standard
        return if description_rr_coding_standard.blank?

        description_rr_coding_standard.to_s.upcase
      end

      def code
        description_loinc_code.presence || description_code
      end

      def interpretation_code
        sanitized_result = result&.downcase&.strip

        INTERPRETATION_CODE_MAP.fetch(sanitized_result, DEFAULT_INTERPRETATION_CODE)
      end
    end
  end
end

Version data entries

70 entries across 70 versions & 1 rubygems

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