class Infermedica::Diagnosis

Diagnosis

Interface to the /diagnosis, /triage, and /explain endpoints See examples/diagnosis.rb and examples/explain.rb for example use

Attributes

age[RW]
case[RW]
case_id[RW]
extras[RW]
extras_permanent[RW]
lab_tests[RW]
pursued[RW]
risk_factors[RW]
sex[RW]
symptoms[RW]
target[RW]

Public Class Methods

new(args) click to toggle source
# File lib/infermedica/diagnosis.rb, line 13
def initialize(args)
  raise ArgumentError, 'Patient sex is required' unless args.key?(:sex)
  raise ArgumentError, 'Patient age is required' unless args.key?(:age)

  args[:time] = Time.now unless args.key?(:time)
  args[:case_id] = nil unless args.key?(:case_id)

  args.each do |k, v|
    instance_variable_set(:"@#{k}", v)
  end

  %w[ symptoms lab_tests risk_factors pursued ].each do |k|
    args.key?(k) || instance_variable_set(:"@#{k}", Array.new)
  end
  
  @extras = {}
  @extras_permanent = {}
end

Public Instance Methods

add_pursued_conditions(args) click to toggle source

Add a pursued_conditions TODO: find out what these are and how they are used

# File lib/infermedica/diagnosis.rb, line 43
def add_pursued_conditions(args)
  @pursued.push(*args)
end
add_symptom(k, v) click to toggle source

Add a symptom to the list of symptom kept in this object k: symptom code (for example 's_10' v: symptom appropriate value (for example 'present')

# File lib/infermedica/diagnosis.rb, line 36
def add_symptom(k, v)
  @symptoms << { 'id': k, 'choice_id': v }
end
add_target(v) click to toggle source

Set a target condition that will be used by the /explain endpoint v: The target condition (for example 'c_371')

# File lib/infermedica/diagnosis.rb, line 50
def add_target(v)
  @target = v
end
to_json(*a) click to toggle source

Convert self to a json representation

# File lib/infermedica/diagnosis.rb, line 56
def to_json(*a)
  h = { 
    'sex': @sex,
    'age': @age,
    'evidence': @symptoms,
    'extras': @extras,
  }
  h['target'] = @target unless @target.nil?
  h['pursued'] = @pursued unless @pursued.empty?
  h['lab_tests'] = @lab_tests unless @lab_tests.empty?
  h['risk_factors'] = @risk_factors unless @risk_factors.empty?
  h['extras_permanent'] = @extras_permanent unless @extras_permanent.empty?
  h.to_json(*a)
end