Module: Lab::ResultSerializer

Defined in:
app/serializers/lab/result_serializer.rb

Overview

Serialize a Lab order result

Class Method Summary collapse

Class Method Details

.read_value(measure) ⇒ Object



26
27
28
29
30
31
32
33
34
# File 'app/serializers/lab/result_serializer.rb', line 26

def self.read_value(measure)
  %w[value_numeric value_coded value_boolean value_text].each do |field|
    value = measure.send(field) if measure.respond_to?(field)

    return [value, field.split('_')[1]] if value
  end

  [nil, 'unknown']
end

.serialize(result) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'app/serializers/lab/result_serializer.rb', line 7

def self.serialize(result)
  result.children.map do |measure|
    value, value_type = read_value(measure)
    concept_name = ConceptName.find_by_concept_id(measure.concept_id)

    {
      id: measure.obs_id,
      indicator: {
        concept_id: concept_name&.concept_id,
        name: concept_name&.name
      },
      date: measure.obs_datetime,
      value: value,
      value_type: value_type,
      value_modifier: measure.value_modifier
    }
  end
end