Class: OpenehrRails::Aql::Executor

Inherits:
Object
  • Object
show all
Defined in:
lib/openehr_rails/aql/executor.rb

Overview

Public entry point: validate -> build the Dataset from the RM graph -> execute -> translate any engine error into OpenehrRails::Aql::Error.

Class Method Summary collapse

Class Method Details

.execute(aql_string, params: {}, ehr_scope: OpenehrRails::Rm::Ehr.all, composition_scope: OpenehrRails::Rm::Composition.latest) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/openehr_rails/aql/executor.rb', line 10

def self.execute(aql_string, params: {}, ehr_scope: OpenehrRails::Rm::Ehr.all,
                  composition_scope: OpenehrRails::Rm::Composition.latest)
  query = QueryValidator.validate!(aql_string)
  dataset = DatasetAdapter.build(ehr_scope: ehr_scope, composition_scope: composition_scope)

  begin
    query.execute(dataset, params: params)
  rescue OpenEHR::AQL::UnboundParameterError => e
    raise InvalidQuery, e.message
  rescue OpenEHR::AQL::DatasetError, OpenEHR::AQL::ExecutionError => e
    raise UnsupportedFeature, e.message
  end
end