class OpenEHR::Parser::ADLParser

Public Class Methods

new(filename) click to toggle source
Calls superclass method OpenEHR::Parser::Base::new
# File lib/openehr/parser/adl_parser.rb, line 12
def initialize(filename)
  super
end

Public Instance Methods

parse() click to toggle source
# File lib/openehr/parser/adl_parser.rb, line 16
def parse
  archetype
end

Private Instance Methods

adl_grammar_parser() click to toggle source
# File lib/openehr/parser/adl_parser.rb, line 22
def adl_grammar_parser
  @adl_grammar_parser ||= ADLGrammarParser.new
end
adl_version() click to toggle source
# File lib/openehr/parser/adl_parser.rb, line 58
def adl_version
  parsed_data.adl_version
end
archetype() click to toggle source
# File lib/openehr/parser/adl_parser.rb, line 82
def archetype
  OpenEHR::AM::Archetype::Archetype.new(:archetype_id => archetype_id,
                            :adl_version => adl_version,
                            :uid => uid,            
                            :concept => concept,
                            :original_language => original_language,
                            :translations => translations,
                            :description => description,
                            :definition => definition,
                            :ontology => ontology)
end
archetype_id() click to toggle source
# File lib/openehr/parser/adl_parser.rb, line 39
def archetype_id
  OpenEHR::RM::Support::Identification::ArchetypeID.new(:value => parsed_data.archetype_id)
end
concept() click to toggle source
# File lib/openehr/parser/adl_parser.rb, line 66
def concept
  parsed_data.concept
end
definition() click to toggle source
# File lib/openehr/parser/adl_parser.rb, line 78
def definition
  parsed_data.definition
end
description() click to toggle source
# File lib/openehr/parser/adl_parser.rb, line 70
def description
  parsed_data.description
end
ontology() click to toggle source
# File lib/openehr/parser/adl_parser.rb, line 43
def ontology
  parsed_data.ontology
end
original_language() click to toggle source
# File lib/openehr/parser/adl_parser.rb, line 47
def original_language
  original_language = nil
  if parsed_data.original_language
    original_language = parsed_data.original_language
  else
    terminology_id = OpenEHR::RM::Support::Identification::TerminologyID.new(:value => 'ISO639-1')
    original_language = OpenEHR::RM::DataTypes::Text::CodePhrase.new(:terminology_id => terminology_id, :code_string => ontology.primary_language)
  end
  original_language
end
parsed_data() click to toggle source
# File lib/openehr/parser/adl_parser.rb, line 26
def parsed_data
  filestream = File.open(@filename, 'rb:bom|utf-8')
  @parsed_data ||= adl_grammar_parser.parse(filestream.read.scrub)
  filestream.close
  unless @parsed_data
    puts adl_grammar_parser.failure_reason
    puts adl_grammar_parser.failure_line
    puts adl_grammar_parser.failure_column
    raise ParseError, 'Invalid ADL'
  end
  @parsed_data
end
translations() click to toggle source
# File lib/openehr/parser/adl_parser.rb, line 74
def translations
  parsed_data.translations
end
uid() click to toggle source
# File lib/openehr/parser/adl_parser.rb, line 62
def uid
  OpenEHR::RM::Support::Identification::HierObjectID.new(value: parsed_data.uid) if parsed_data.uid
end