Class: OpenehrRails::Rm::CanonicalSerializer

Inherits:
Object
  • Object
show all
Defined in:
lib/openehr_rails/rm/canonical_serializer.rb

Overview

Serializes a stored composition graph back into the canonical composition hash. Contract: for a graph built by GraphBuilder from Storable#to_rm_composition output, the result is deep-equal to that input (the JSON cache can always be regenerated from the graph).

Constant Summary collapse

MULTIPLE_ATTRIBUTES =
OpenehrRails::Storable::MULTIPLE_ATTRIBUTES

Instance Method Summary collapse

Constructor Details

#initialize(composition) ⇒ CanonicalSerializer

Returns a new instance of CanonicalSerializer.



12
13
14
# File 'lib/openehr_rails/rm/canonical_serializer.rb', line 12

def initialize(composition)
  @composition = composition
end

Instance Method Details

#callObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/openehr_rails/rm/canonical_serializer.rb', line 16

def call
  hash = {
    '_type' => 'COMPOSITION',
    'archetype_node_id' => @composition.archetype_node_id,
    'archetype_details' => {
      '_type' => 'ARCHETYPED',
      'archetype_id' => { 'value' => @composition.archetype_node_id },
      'template_id' => { 'value' => @composition.template_id },
      'rm_version' => @composition.rm_version
    },
    'content' => @composition.content_nodes.map { |node| serialize_node(node) }
  }
  hash['name'] = { '_type' => 'DV_TEXT', 'value' => @composition.name_value } if @composition.name_value
  hash['uid'] = { '_type' => 'HIER_OBJECT_ID', 'value' => @composition.uid } if @composition.uid
  hash
end