Class: OpenehrRails::Rm::CompositionCommitter

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

Overview

Commits a canonical composition hash to the RM graph with immutable-append versioning: every commit snapshots a fresh graph and appends a Version; a prior head (found by uid) keeps its graph but loses latest_version. Shared by Storable's save hook (GraphPersister, owner: the scaffolded record) and the openEHR REST API's COMPOSITION endpoint (owner: nil, graph-only).

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(canonical_hash, uid:, ehr: nil, owner: nil, context_start_time: nil) ⇒ CompositionCommitter

Returns a new instance of CompositionCommitter.



16
17
18
19
20
21
22
# File 'lib/openehr_rails/rm/composition_committer.rb', line 16

def initialize(canonical_hash, uid:, ehr: nil, owner: nil, context_start_time: nil)
  @canonical_hash = canonical_hash
  @uid = uid
  @ehr = ehr
  @owner = owner
  @context_start_time = context_start_time
end

Class Method Details

.commit(canonical_hash, uid:, ehr: nil, owner: nil, context_start_time: nil) ⇒ Object



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

def self.commit(canonical_hash, uid:, ehr: nil, owner: nil, context_start_time: nil)
  new(canonical_hash, uid: uid, ehr: ehr, owner: owner, context_start_time: context_start_time).commit
end

Instance Method Details

#commitObject



24
25
26
27
28
29
30
31
# File 'lib/openehr_rails/rm/composition_committer.rb', line 24

def commit
  ActiveRecord::Base.transaction do
    previous = head_composition
    composition = create_composition
    record_version(composition, previous)
    composition
  end
end