Class: OpenehrRails::Fhir::Deserializer

Inherits:
Object
  • Object
show all
Defined in:
lib/openehr_rails/fhir/deserializer.rb

Overview

Converts an incoming HL7 FHIR R5 Observation into ActiveRecord attributes for a Storable model. Saving the record then persists the canonical openEHR RM composition (the FHIR-in / openEHR-stored path).

Defined Under Namespace

Classes: UnmappedResource

Instance Method Summary collapse

Constructor Details

#initialize(model, observation) ⇒ Deserializer

Returns a new instance of Deserializer.



11
12
13
14
# File 'lib/openehr_rails/fhir/deserializer.rb', line 11

def initialize(model, observation)
  @model = model
  @observation = observation.respond_to?(:deep_stringify_keys) ? observation.deep_stringify_keys : observation
end

Instance Method Details

#attributesObject



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/openehr_rails/fhir/deserializer.rb', line 16

def attributes
  entry = lookup_entry
  attrs = {}
  attrs[:ehr_id] = subject_reference if subject_reference

  if entry.fields.size == 1 && !@observation.key?('component')
    attrs.merge!(field_value(entry.fields.first, @observation))
  else
    merge_components(entry, attrs)
  end
  attrs
end