Index: /ruby/tags/0.0.2/README
===================================================================
--- /ruby/tags/0.0.2/README	(revision 39)
+++ /ruby/tags/0.0.2/README	(revision 39)
@@ -0,0 +1,57 @@
+= Synopsis
+
+Ruby openEHR implementation project
+
+= Version
+
+Release-0.0.1
+
+= Requirements
+
+* Ruby 1.8.6 or higher
+* Yaparc Library 0.2.0 or higer
+* Tested with Ruby 1.8.6 on Linux and FreeBSD.
+* If you use Ruby 1.6, you should prepare racc 
+  runtime environment and some adjustment
+* It should work on other platforms with Ruby
+  support as well.
+
+= Status
+
+This is the memorable first release of Ruby openEHR
+implementation project. This release is experimental
+preview of our work based on openEHR specification 
+release 1.0.1. We implemented ADL Parser and some 
+archetype models and reference models. This parser 
+successfully parses 27 ADLs and generates archetype 
+instances.  The work is still in progress. The 
+intention is to have complete implementation of openEHR
+Reference Model and Archetype Object Model, with 
+support for archetype based object creation and validation.
+
+= Authors
+Akimihci Tatsukawa, Shinji Kobayashi
+openEHR.jp, <http://openehr.jp>
+
+= Copyright
+The software, including all files in this directory 
+and subdirectories is copyrighted to the original 
+authors and contributors, 2008
+All Rights Reserved.
+
+= License
+
+This product is under openEHR Open Source Software License
+
+The openEHR Foundation uses the Mozilla Tri-license 1.1 on
+all software copyrighted to the Foundation. This licence
+essentially provides the user a choice of licence conditions
+under which to operate with any given piece of software,
+being: the Mozilla Public licence (MPL), and the Free
+Software Foundation GNU General Public Licence (GPL) and
+Lesser GNU General Public Licence (LGPL). See the Mozilla
+relicensing FAQ for details of this license. This in no way
+constrains the way in which software created by other
+organisations is licenced.
+
+
Index: /ruby/tags/0.0.2/adl_parser/COPYING
===================================================================
--- /ruby/tags/0.0.2/adl_parser/COPYING	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/COPYING	(revision 39)
@@ -0,0 +1,3 @@
+openEHR Open Source Software License
+
+The openEHR Foundation uses the Mozilla Tri-license 1.1 on all software copyrighted to the Foundation. This licence essentially provides the user a choice of licence conditions under which to operate with any given piece of software, being: the Mozilla Public licence (MPL), and the Free Software Foundation GNU General Public Licence (GPL) and Lesser GNU Public Licence (LGPL). See the Mozilla relicensing FAQ for details of this license. This in no way constrains the way in which software created by other organisations is licenced. 
Index: /ruby/tags/0.0.2/adl_parser/README
===================================================================
--- /ruby/tags/0.0.2/adl_parser/README	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/README	(revision 39)
@@ -0,0 +1,57 @@
+= Synopsis
+
+A ruby library for ADL parser which includes cADL and dADL parser.
+
+= Requirements
+
+* Ruby 1.8 or later.
+* Yaparc Library 0.2.0 or later.
+* Tested in Ruby 1.8.6.
+* if you use Ruby 1.6, you should prepare racc runtime environment and some adjustment.
+
+= Usage
+
+The script 'bin/adl_validator.rb' validates given ADL files.
+
+  Usage: bin/adl_validator.rb [file_name|http://location.to.adl]+ [options]
+      -v, --verbose                    display verbose message(Not Implemented Yet)
+      -h, --help                       display this help
+
+In order to validate an ADL file on your local machine, just give the file name as an argument as follows.
+
+ $ bin/adl_validator.rb tests/openEHR-EHR-CLUSTER.exam-chest.v1.adl
+ =>
+ Accepted 'tests/openEHR-EHR-CLUSTER.exam-chest.v1.adl'
+
+If you want to validate a remote ADL file on the web, specify its URL location.
+
+ $ bin/adl_validator.rb http://svn.openehr.org/knowledge/archetypes/dev/adl/openehr/ehr/cluster/openEHR-EHR-CLUSTER.auscultation-chest.v1.adl
+ =>
+ Accepted 'http://svn.openehr.org/knowledge/archetypes/dev/adl/openehr/ehr/cluster/openEHR-EHR-CLUSTER.auscultation-chest.v1.adl'
+
+In addition, you can try unit testing.
+
+ $ rake test
+
+= Files and Paths
+
+* Path
++ bin --+--- adl_validator.rb
++ lib --+--- parser.rb
+        +--- parser.y
+        +--- validator.rb
+        +--- shell.rb
+
+* bin/adl_validator.rb
+The command-line ADL validator.
+
+* lib/parser.rb
+This is the key library for ADL parsing. This parser algorithm is LALR implemented in racc library.
+This file contains one module and one class first generated by racc from grammertical definition of parser.y.
+Main class is ADLParser that scans ADL and parses both cADL and dADL.
+
+= License
+
+This product is under openEHR Open Source Software License
+
+The openEHR Foundation uses the Mozilla Tri-license 1.1 on all software copyrighted to the Foundation. This licence essentially provides the user a choice of licence conditions under which to operate with any given piece of software, being: the Mozilla Public licence (MPL), and the Free Software Foundation GNU General Public Licence (GPL) and Lesser GNU Public Licence (LGPL). See the Mozilla relicensing FAQ for details of this license. This in no way constrains the way in which software created by other organisations is licenced. 
Index: /ruby/tags/0.0.2/adl_parser/Rakefile
===================================================================
--- /ruby/tags/0.0.2/adl_parser/Rakefile	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/Rakefile	(revision 39)
@@ -0,0 +1,117 @@
+require 'rubygems'
+Gem::manage_gems
+require 'rake'
+require 'rake/testtask'
+require 'rake/rdoctask'
+require 'rake/clean'
+require 'rake/gempackagetask'
+require 'yaml'
+
+$DEBUG = false
+
+RACC_SRC = FileList["lib/*.y"]
+#RACC_PARSER = FileList['lib/parser.rb', 'lib/adl_parser.rb', 'lib/cparser.rb', 'lib/dparser.rb']
+RACC_PARSER = FileList['lib/parser.rb']
+
+task :default => [:racc]
+
+desc "Generate parser by racc."
+task :racc => RACC_PARSER
+rule '.rb' => '.y' do |target|
+  if $DEBUG == true
+    sh "racc -v -g #{target.source} -o #{target.name}"
+  else
+    sh "racc #{target.source} -o #{target.name}"
+  end
+end
+
+
+RB_SRC = FileList["lib/*.rb"]
+TAGS = FileList['TAGS']
+desc "Generate TAGS by rtags."
+task :tags => TAGS
+rule 'TAGS' => RB_SRC do |target|
+  sh "rtags #{target.prerequisites.join(' ')}"
+end
+
+
+desc "Whole Unit tests"
+task 'test' => ['test:shell', 'test:validator', 'test:parser', 'test:scanner']
+
+
+Rake::TestTask.new('test:shell') do |t|
+  t.libs = ["lib"]
+  t.pattern = ['tests/shell_test.rb']
+  t.warning = true
+  t.verbose = true
+end
+
+Rake::TestTask.new('test:validator') do |t|
+  t.libs = ["lib"]
+  t.pattern = ['tests/validator_test.rb']
+  t.warning = true
+  t.verbose = true
+end
+
+Rake::TestTask.new('test:parser') do |t|
+  t.libs = ["lib"]
+  t.pattern = ['tests/parser_test.rb']
+  t.warning = true
+  t.verbose = true
+end
+
+Rake::TestTask.new('test:scanner') do |t|
+  t.libs = ["lib"]
+  t.pattern = ['tests/scanner_test.rb']
+  t.warning = true
+  t.verbose = true
+end
+
+
+Rake::RDocTask.new('rdoc') do |t|
+  t.rdoc_dir = 'rdoc'
+  t.rdoc_files.include('README', 'lib/*.rb', 'bin/*.rb')
+  t.main = 'README'
+  t.title = "ADL parser API documentation"
+end
+
+gem_spec = Gem::Specification.new do |s|
+  s.name = 'adl_parser'
+  s.author = 'Akimichi Tatsukawa'
+  s.version = '0.0.2'
+  s.summary = 'ADL parser'
+  s.email = 'akimichi_tatsukawa@nifty.com'
+  s.test_files = FileList['tests/*_test.rb', '*.adl']
+  candidates = Dir.glob("{bin,docs,lib,tests,ext}/**/*")
+  s.files = candidates.delete_if do |item|
+    item.include?(".svn") || item.include?("rdoc")
+  end
+  s.files = FileList['README', 'COPYING', 'Rakefile']
+  s.require_path = "lib"
+  s.has_rdoc = true
+  s.extra_rdoc_files = ["README"]
+  s.add_dependency("yaparc", ">= 0.2.0")
+  s.add_dependency("openehr_models", ">= 0.0.1")
+end
+
+Rake::GemPackageTask.new(gem_spec) do |pkg|
+  pkg.need_zip = false
+  pkg.need_tar = false
+end
+
+
+CLOBBER.include('rdoc')
+CLEAN.include('lib/*.output', 'log/*.log')
+
+
+
+
+### Local Variables:
+### mode:ruby
+### mode:font-lock
+### comment-column:0
+### comment-start: "### "
+### comment-end:"" 
+### End:
+
+
Index: /ruby/tags/0.0.2/adl_parser/bin/adl_validator.rb
===================================================================
--- /ruby/tags/0.0.2/adl_parser/bin/adl_validator.rb	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/bin/adl_validator.rb	(revision 39)
@@ -0,0 +1,85 @@
+#!/usr/bin/env ruby
+#$:.unshift File.join(File.dirname(__FILE__))
+require "lib/shell.rb"
+require 'readline'
+require 'optparse'
+#require 'open-uri'
+require 'net/http'
+
+module OpenEHR
+  module CommandLine
+    class Arguments < Hash
+      def initialize(args)
+        super() # default values
+        opts = ::OptionParser.new do |opts|
+          opts.banner = "Usage: #$0 [file|http://location.to.adl]* [options]"
+          opts.on('-v', '--verbose', 'display verbose message(Not Implemented Yet)') do
+            self[:verbose] = true
+          end
+          opts.on_tail('-h', '--help', 'display this help') do
+            puts opts
+            exit
+          end
+        end
+        opts.parse!(args)
+      end
+    end
+
+    class ADLValidator
+      def initialize(arguments)
+        @debug = false
+        @adl_validator = ::OpenEHR::Application::ADLValidator.new(::OpenEHR::ADL::Validator.new(::OpenEHR::ADL::Parser.new))
+      end
+
+      def run
+        while argv = ARGV.shift
+          begin
+            input = nil
+            name = nil
+            case argv
+            when /\A(http:\/\/.*)/
+              name = $1
+              input = case response = Net::HTTP.get_response(URI.parse($1))
+                      when Net::HTTPSuccess   
+                        response.body
+                      when Net::HTTPRedirection
+                        name = response['location']
+                        fetch(response['location'], limit - 1)
+                      else
+                        response.error!
+                      end
+            when /\A("[^"]*)"/
+              name = argv
+              input = argv
+            else # assumes file name
+              name = argv
+              input = File.new(argv)
+            end
+            @adl_validator.run(input, name)
+          rescue SocketError => message
+            puts "SocketError: #{message}"
+          rescue Racc::ParseError => message
+            puts "ParseError: #{message}"
+          else
+            puts "Accepted '#{argv}'"
+          ensure
+#            input.close if input.kind_of? IO
+          end
+        end
+      end
+    end
+  end # of CommandLine
+end # of OpenEHR
+
+if __FILE__ == $0
+  begin
+    arguments = OpenEHR::CommandLine::Arguments.new(ARGV)
+    validator = OpenEHR::CommandLine::ADLValidator.new(arguments)
+    validator.run
+  end
+end
+
+
+
+
+
Index: /ruby/tags/0.0.2/adl_parser/docs/Common_RM.ntriple
===================================================================
--- /ruby/tags/0.0.2/adl_parser/docs/Common_RM.ntriple	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/docs/Common_RM.ntriple	(revision 39)
@@ -0,0 +1,254 @@
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#ISO_OID> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#UID> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#ISO_OID> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA15 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA15 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA15 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#domain_concept> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#participations> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#participations> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#ATTESTATION> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#participations> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#PARTICIPATION> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#links> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#links> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#LINK> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#links> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#value> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#OBJECT_ID> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#value> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#value> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#FunctionalProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#value> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#function> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#PARTICIPATION> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#function> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#FunctionalProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#function> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#function> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> .
+_:AX5fXX3aXX40XX5fXX3aXA24 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#proof> .
+_:AX5fXX3aXX40XX5fXX3aXA24 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA24 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#version_id> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#OBJECT_ID> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#version_id> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#version_id> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA4 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA4 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA4 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#name> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#status> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#ATTESTATION> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#status> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CODED_TEXT> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#status> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#FunctionalProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#status> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#specialisation> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#HIER_OBJECT_ID> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#specialisation> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#specialisation> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#FunctionalProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#specialisation> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#performer> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#PARTICIPATION> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#performer> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#PARTY_REF> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#performer> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#FunctionalProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#performer> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA16 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA16 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#qualified_rm_entity> .
+_:AX5fXX3aXX40XX5fXX3aXA16 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA25 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA25 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#status> .
+_:AX5fXX3aXX40XX5fXX3aXA25 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#OBJECT_ID> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#OBJECT_ID> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA19 .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#OBJECT_ID> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2002/07/owl#Thing> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#OBJECT_ID> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA18 .
+_:AX5fXX3aXX40XX5fXX3aXA5 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA5 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#id> .
+_:AX5fXX3aXX40XX5fXX3aXA5 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#name> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#FunctionalProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#name> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#name> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#name> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#ARCHETYPED> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA17 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA17 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#specialisation> .
+_:AX5fXX3aXX40XX5fXX3aXA17 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#rm_name> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#HIER_OBJECT_ID> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#rm_name> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#FunctionalProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#rm_name> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#rm_name> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#archetype_details> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#ARCHETYPED> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#archetype_details> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#archetype_details> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> .
+_:AX5fXX3aXX40XX5fXX3aXA26 <http://www.w3.org/2002/07/owl#minCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA26 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA26 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#participations> .
+_:AX5fXX3aXX40XX5fXX3aXA6 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#item> .
+_:AX5fXX3aXX40XX5fXX3aXA6 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA6 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_EHR_URI> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#relationship> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CODED_TEXT> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#relationship> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#FunctionalProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#relationship> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#relationship> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#RELATED_PARTY> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#SET_DV_EHR_URI> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#SET_DV_EHR_URI> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#SET_T> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#SET_DV_EHR_URI> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA6 .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#meaning> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#FunctionalProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#meaning> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#meaning> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#meaning> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#rm_entity> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#FunctionalProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#rm_entity> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#rm_entity> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#rm_entity> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#HIER_OBJECT_ID> .
+_:AX5fXX3aXX40XX5fXX3aXA18 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA18 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#version_id> .
+_:AX5fXX3aXX40XX5fXX3aXA18 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#mode> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CODED_TEXT> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#mode> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#PARTICIPATION> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#mode> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#FunctionalProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#mode> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#id> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#OBJECT_REF> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#id> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#FunctionalProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#id> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#id> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#OBJECT_ID> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#LINK> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#VERSION_AUDIT> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#VERSION_AUDIT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#AUDIT_DETAILS> .
+_:AX5fXX3aXX40XX5fXX3aXA27 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA28 .
+_:AX5fXX3aXX40XX5fXX3aXA27 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Ontology> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl> <http://www.w3.org/2002/07/owl#imports> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl> .
+_:AX5fXX3aXX40XX5fXX3aXA7 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA7 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA7 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#time> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#UUID> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#UUID> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#UID> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#ACCESS_GROUP_REF> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#ACCESS_GROUP_REF> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#OBJECT_REF> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#PARTY_REF> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#PARTY_REF> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#OBJECT_REF> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#ARCHETYPE_ID> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#ARCHETYPE_ID> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#OBJECT_ID> .
+_:AX5fXX3aXX40XX5fXX3aXA19 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA19 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#value> .
+_:AX5fXX3aXX40XX5fXX3aXA19 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#domain_concept> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#HIER_OBJECT_ID> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#domain_concept> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#FunctionalProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#domain_concept> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#domain_concept> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA28 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#ATTESTATION> .
+_:AX5fXX3aXX40XX5fXX3aXA28 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA29 .
+_:AX5fXX3aXX40XX5fXX3aXA8 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#mode> .
+_:AX5fXX3aXX40XX5fXX3aXA8 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA8 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#HIER_OBJECT_ID> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA17 .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#HIER_OBJECT_ID> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA16 .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#HIER_OBJECT_ID> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA15 .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#HIER_OBJECT_ID> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA14 .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#HIER_OBJECT_ID> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA13 .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#HIER_OBJECT_ID> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#OBJECT_ID> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#HIER_OBJECT_ID> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA12 .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#HIER_OBJECT_ID> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#qualified_rm_entity> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#FunctionalProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#qualified_rm_entity> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#qualified_rm_entity> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#qualified_rm_entity> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#HIER_OBJECT_ID> .
+_:AX5fXX3aXX40XX5fXX3aXA10 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA10 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA10 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#function> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#feeder_audit> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#feeder_audit> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#feeder_audit> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#FEEDER_AUDIT> .
+_:AX5fXX3aXX40XX5fXX3aXA29 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#PARTICIPATION> .
+_:AX5fXX3aXX40XX5fXX3aXA29 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA9 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_DV_DATE_TIME> .
+_:AX5fXX3aXX40XX5fXX3aXA9 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA9 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#time> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#items> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#SET_DV_EHR_URI> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#items> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#ATTESTATION> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#items> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#FunctionalProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#items> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#namespace> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#OBJECT_REF> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#namespace> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#namespace> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#FunctionalProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#namespace> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#uid> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#OBJECT_ID> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#uid> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#uid> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA11 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA11 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#performer> .
+_:AX5fXX3aXX40XX5fXX3aXA11 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#AUDIT_DETAILS> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#rm_originator> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#HIER_OBJECT_ID> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#rm_originator> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#FunctionalProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#rm_originator> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#rm_originator> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA20 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#relationship> .
+_:AX5fXX3aXX40XX5fXX3aXA20 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA20 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA0 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA0 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA0 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#feeder_audit> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#ATTESTATION> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#ATTESTATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA26 .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#ATTESTATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA25 .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#ATTESTATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA24 .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#ATTESTATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA23 .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#ATTESTATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA22 .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#ATTESTATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2002/07/owl#Thing> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#proof> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#ATTESTATION> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#proof> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#proof> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ENCAPSULATED> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#RELATED_PARTY> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#RELATED_PARTY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2002/07/owl#Thing> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#RELATED_PARTY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA21 .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#RELATED_PARTY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA20 .
+_:AX5fXX3aXX40XX5fXX3aXA12 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#rm_originator> .
+_:AX5fXX3aXX40XX5fXX3aXA12 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA12 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#time> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#FunctionalProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#time> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#time> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#time> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA27 .
+_:AX5fXX3aXX40XX5fXX3aXA21 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA21 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA21 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#party> .
+_:AX5fXX3aXX40XX5fXX3aXA1 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#meaning> .
+_:AX5fXX3aXX40XX5fXX3aXA1 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#PARTICIPATION> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#PARTICIPATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA11 .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#PARTICIPATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA10 .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#PARTICIPATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA9 .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#PARTICIPATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA8 .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#PARTICIPATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA7 .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#PARTICIPATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2002/07/owl#Thing> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#type> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#type> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#OBJECT_REF> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#InverseFunctionalProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#party> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#RELATED_PARTY> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#party> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#PARTY_REF> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#party> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA13 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA13 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA13 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#rm_name> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#CONTRIBUTION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#AUDIT_DETAILS> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#CONTRIBUTION> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA22 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA22 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA22 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#time> .
+_:AX5fXX3aXX40XX5fXX3aXA2 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#archetype_details> .
+_:AX5fXX3aXX40XX5fXX3aXA2 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#TERMINOLOGY_ID> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#TERMINOLOGY_ID> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#OBJECT_ID> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2002/07/owl#Thing> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA4 .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA3 .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2 .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1 .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA0 .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#FEEDER_AUDIT> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#OBJECT_REF> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA5 .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#OBJECT_REF> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2002/07/owl#Thing> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#OBJECT_REF> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA14 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#rm_entity> .
+_:AX5fXX3aXX40XX5fXX3aXA14 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA14 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#VERSION_REPOSITORY_T> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA23 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#items> .
+_:AX5fXX3aXX40XX5fXX3aXA23 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA23 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA3 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#uid> .
+_:AX5fXX3aXX40XX5fXX3aXA3 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#UID> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
Index: /ruby/tags/0.0.2/adl_parser/docs/Data_Structures_RM.ntriple
===================================================================
--- /ruby/tags/0.0.2/adl_parser/docs/Data_Structures_RM.ntriple	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/docs/Data_Structures_RM.ntriple	(revision 39)
@@ -0,0 +1,344 @@
+_:AX5fXX3aXX40XX5fXX3aXA649 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA649 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA649 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#item> .
+_:AX5fXX3aXX40XX5fXX3aXA613 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA613 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#origin> .
+_:AX5fXX3aXX40XX5fXX3aXA613 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA658 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#EVENT_SERIES_T> .
+_:AX5fXX3aXX40XX5fXX3aXA658 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA659 .
+_:AX5fXX3aXX40XX5fXX3aXA622 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#items> .
+_:AX5fXX3aXX40XX5fXX3aXA622 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA622 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#math_function> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CODED_TEXT> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#math_function> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#math_function> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_EVENT_T> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#duration> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#duration> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#duration> <http://www.w3.org/2000/01/rdf-schema#label> "duracion"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#duration> <http://www.w3.org/2000/01/rdf-schema#label> "duration"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#LIST_ITEM> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA612 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#LIST_ITEM> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#LIST_T> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#LIST_ITEM> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA631 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA631 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#representation> .
+_:AX5fXX3aXX40XX5fXX3aXA631 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#row_count> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_TABLE> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#row_count> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#row_count> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#integer> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA644 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "the abstract parent of COMPOUND and ELEMENT representation classes"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "n/a"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_HIERARCHICAL_ITEM"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM> <http://www.w3.org/2000/01/rdf-schema#label> "item"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM> <http://www.w3.org/2000/01/rdf-schema#label> "item"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM> <http://www.w3.org/2002/07/owl#equivalentClass> _:AX5fXX3aXX40XX5fXX3aXA645 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM> <http://protege.stanford.edu/plugins/owl/protege#abstract> "true"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> "Item"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#OMGHDTF> "COAS::Observation"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA640 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#period> .
+_:AX5fXX3aXX40XX5fXX3aXA640 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA640 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#CLUSTER> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA623 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#CLUSTER> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_HIERARCHICAL_GROUP"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#CLUSTER> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "ClusterOCC"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#CLUSTER> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "The grouping variant of ITEM, which may contain ffurther instances of ITEM, in an ordered list"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#CLUSTER> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> "Compound class"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#CLUSTER> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA622 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#CLUSTER> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#CLUSTER> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "Act_context"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#CLUSTER> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#OMGHDTF> "COAS::CompositeObservation"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#CLUSTER> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA614 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA615 .
+_:AX5fXX3aXX40XX5fXX3aXA614 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ELEMENT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_HIERARCHICAL_VALUE"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ELEMENT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA627 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ELEMENT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "DataItem"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ELEMENT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ELEMENT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA628 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ELEMENT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA629 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ELEMENT> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ELEMENT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> "Element"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ELEMENT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "The leaf variant of ITEM, to which a DATA_VALUE instance is attached."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ELEMENT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "Act"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ELEMENT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#OMGHDTF> "COAS::AtomicObservation"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA659 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_LIST> .
+_:AX5fXX3aXX40XX5fXX3aXA659 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA623 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA623 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#items> .
+_:AX5fXX3aXX40XX5fXX3aXA623 <http://www.w3.org/2002/07/owl#minCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#is_periodic> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#boolean> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#is_periodic> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#is_periodic> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#EVENT_SERIES_T> .
+_:AX5fXX3aXX40XX5fXX3aXA632 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM> .
+_:AX5fXX3aXX40XX5fXX3aXA632 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA632 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#representation> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_LIST> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#MisUse> "Not to be used for time-based lists, which should be represented with the proper termporal class"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_LIST> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA621 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_LIST> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA619 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_LIST> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Used to represent any data which is logically a list of values, \nsuch as blood presure, most protocols, many blood tests etc...\n"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_LIST> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA618 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_LIST> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA620 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_LIST> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#List> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_LIST> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Logical list data structure, where each item has a value and can be referred to by a name and a positional index in the list"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_LIST> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA617 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_LIST> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_LIST> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_LIST_PROPOSITION"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_LIST> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_STRUCTURE> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_LIST> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "CDA List Entry"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#column_count> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#integer> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#column_count> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#column_count> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_TABLE> .
+_:AX5fXX3aXX40XX5fXX3aXA641 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA641 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#EVENT_T> .
+_:AX5fXX3aXX40XX5fXX3aXA641 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#items> .
+_:AX5fXX3aXX40XX5fXX3aXA615 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#SINGLE_EVENT_T> .
+_:AX5fXX3aXX40XX5fXX3aXA615 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA616 .
+_:AX5fXX3aXX40XX5fXX3aXA650 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA650 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#representation> .
+_:AX5fXX3aXX40XX5fXX3aXA650 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ELEMENT> .
+_:AX5fXX3aXX40XX5fXX3aXA624 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#item> .
+_:AX5fXX3aXX40XX5fXX3aXA624 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_EVENT_T> .
+_:AX5fXX3aXX40XX5fXX3aXA624 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#DATA_STRUCTURE> <http://protege.stanford.edu/plugins/owl/protege#abstract> "true"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#DATA_STRUCTURE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Abstract parent class of all spatial data types"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#DATA_STRUCTURE> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#DATA_STRUCTURE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "CDA Structure"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#DATA_STRUCTURE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA631 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#DATA_STRUCTURE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#DATA_STRUCTURE> <http://www.w3.org/2000/01/rdf-schema#label> "structure"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#DATA_STRUCTURE> <http://www.w3.org/2000/01/rdf-schema#label> "estructura"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#DATA_STRUCTURE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA630 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#DATA_STRUCTURE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_HIERARCHICAL_PROPOSITION"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA633 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA633 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#math_function> .
+_:AX5fXX3aXX40XX5fXX3aXA633 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA642 <http://www.w3.org/2002/07/owl#minCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA642 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA642 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#items> .
+_:AX5fXX3aXX40XX5fXX3aXA616 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#EVENT_SERIES_T> .
+_:AX5fXX3aXX40XX5fXX3aXA616 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA651 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA651 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ELEMENT> .
+_:AX5fXX3aXX40XX5fXX3aXA651 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#item> .
+_:AX5fXX3aXX40XX5fXX3aXA625 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#duration> .
+_:AX5fXX3aXX40XX5fXX3aXA625 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA625 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#HISTORY_T_STRUCTURE> <http://protege.stanford.edu/plugins/owl/protege#abstract> "true"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#HISTORY_T_STRUCTURE> <http://www.w3.org/2000/01/rdf-schema#label> "estructura de historia"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#HISTORY_T_STRUCTURE> <http://www.w3.org/2002/07/owl#equivalentClass> _:AX5fXX3aXX40XX5fXX3aXA614 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#HISTORY_T_STRUCTURE> <http://www.w3.org/2000/01/rdf-schema#label> "history structure"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#HISTORY_T_STRUCTURE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA613 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#HISTORY_T_STRUCTURE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "The abstract parent class of various concrete historical structures,\ncurrently including discrete series and series of states, either\nof chich may be periodic."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#HISTORY_T_STRUCTURE> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#HISTORY_T_STRUCTURE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "Time was encoded as part of the G1_HIERARCHICAL_PROPOSITION structure"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#HISTORY_T_STRUCTURE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "The data type Histori HIST_T is equivalent in intention"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#HISTORY_T_STRUCTURE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#DATA_STRUCTURE> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#HISTORY_T_STRUCTURE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "Time was encoded as part of the Item structure"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA634 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#width> .
+_:AX5fXX3aXX40XX5fXX3aXA634 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA634 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#is_instantaneous> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#is_instantaneous> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_EVENT_T> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#is_instantaneous> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#boolean> .
+_:AX5fXX3aXX40XX5fXX3aXA643 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA643 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#is_periodic> .
+_:AX5fXX3aXX40XX5fXX3aXA643 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA617 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA617 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#names> .
+_:AX5fXX3aXX40XX5fXX3aXA617 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#displayed> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#displayed> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates whether this item should be displayed"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#displayed> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#BOOLEAN> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#displayed> <http://www.w3.org/2000/01/rdf-schema#label> "displayed"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#displayed> <http://www.w3.org/2000/01/rdf-schema#label> "mostrable"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#displayed> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA652 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA653 .
+_:AX5fXX3aXX40XX5fXX3aXA652 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA626 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#item> .
+_:AX5fXX3aXX40XX5fXX3aXA626 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA626 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA635 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA635 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA635 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#item> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#period> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#period> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#period> <http://www.w3.org/2000/01/rdf-schema#comment> "period between samples in this segment if periodic"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#period> <http://www.w3.org/2000/01/rdf-schema#label> "period"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#period> <http://www.w3.org/2000/01/rdf-schema#label> "periodo"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#representation> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#DATA_STRUCTURE> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#representation> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#representation> <http://www.w3.org/2000/01/rdf-schema#label> "representation"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#representation> <http://www.w3.org/2000/01/rdf-schema#label> "representacion"@es .
+_:AX5fXX3aXX40XX5fXX3aXA644 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#displayed> .
+_:AX5fXX3aXX40XX5fXX3aXA644 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA644 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#item> <http://www.w3.org/2000/01/rdf-schema#label> "item"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#item> <http://www.w3.org/2000/01/rdf-schema#label> "item"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#item> <http://www.w3.org/2000/01/rdf-schema#comment> "The data of this event"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#item> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#item> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA652 .
+_:AX5fXX3aXX40XX5fXX3aXA618 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA618 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#item_count> .
+_:AX5fXX3aXX40XX5fXX3aXA618 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA653 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA654 .
+_:AX5fXX3aXX40XX5fXX3aXA653 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#SINGLE_EVENT_T> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl> <http://www.w3.org/2002/07/owl#imports> <http://trajano.us.es/~isabel/EHR/Common_RM.owl> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl> <http://www.w3.org/2002/07/owl#imports> <http://protege.stanford.edu/plugins/owl/protege> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl> <http://www.w3.org/2000/01/rdf-schema#comment> "This ontology is based on the openEHR Data Structures Reference Model Revision: 1.4 written in owl by Isabel Roman in July 2004"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Ontology> .
+_:AX5fXX3aXX40XX5fXX3aXA627 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA627 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#null_flavor> .
+_:AX5fXX3aXX40XX5fXX3aXA627 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA636 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#representation> .
+_:AX5fXX3aXX40XX5fXX3aXA636 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#CLUSTER> .
+_:AX5fXX3aXX40XX5fXX3aXA636 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#null_flavor> <http://www.w3.org/2000/01/rdf-schema#label> "motivo de valor nulo"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#null_flavor> <http://www.w3.org/2000/01/rdf-schema#label> "null flavor"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#null_flavor> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CODED_TEXT> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#null_flavor> <http://www.w3.org/2000/01/rdf-schema#comment> "Flavour of null value, e.g. indeterminate, not asked etc"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#null_flavor> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ELEMENT> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#null_flavor> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#origin> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#HISTORY_T_STRUCTURE> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#origin> <http://www.w3.org/2000/01/rdf-schema#label> "origen"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#origin> <http://www.w3.org/2000/01/rdf-schema#label> "origin"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#origin> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#origin> <http://www.w3.org/2000/01/rdf-schema#comment> "Time origin of this event history. The first event is not necessarily at the origin point."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#origin> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA645 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA645 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA646 .
+_:AX5fXX3aXX40XX5fXX3aXA619 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA619 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#items> .
+_:AX5fXX3aXX40XX5fXX3aXA619 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ELEMENT> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#items> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#items> <http://www.w3.org/2000/01/rdf-schema#label> "items"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#items> <http://www.w3.org/2000/01/rdf-schema#label> "items"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#items> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA656 .
+_:AX5fXX3aXX40XX5fXX3aXA654 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA655 .
+_:AX5fXX3aXX40XX5fXX3aXA654 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_EVENT_T> .
+_:AX5fXX3aXX40XX5fXX3aXA628 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA628 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA628 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#value> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#item_count> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#item_count> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#integer> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#item_count> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_LIST> .
+_:AX5fXX3aXX40XX5fXX3aXA637 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA637 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA637 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#row_count> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_STRUCTURE> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_STRUCTURE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA632 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_STRUCTURE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#DATA_STRUCTURE> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_STRUCTURE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "CDA Structure"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_STRUCTURE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Abstract parent class of all spatial dta types\n"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_STRUCTURE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_HIERARCHICAL_PROPOSITION"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#names> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_LIST> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#names> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#LIST_EVENT_T> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#LIST_EVENT_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#LIST_T> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#LIST_EVENT_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA624 .
+_:AX5fXX3aXX40XX5fXX3aXA646 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ELEMENT> .
+_:AX5fXX3aXX40XX5fXX3aXA646 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA647 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#row_names> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#row_names> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_TABLE> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#row_names> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#is_null> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#is_null> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ELEMENT> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#is_null> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#boolean> .
+_:AX5fXX3aXX40XX5fXX3aXA655 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_SINGLE> .
+_:AX5fXX3aXX40XX5fXX3aXA655 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#offset> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#offset> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#offset> <http://www.w3.org/2000/01/rdf-schema#label> "offset"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#offset> <http://www.w3.org/2000/01/rdf-schema#label> "offset"@en .
+_:AX5fXX3aXX40XX5fXX3aXA629 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA629 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA629 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#is_null> .
+_:AX5fXX3aXX40XX5fXX3aXA638 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA638 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA638 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#column_count> .
+_:AX5fXX3aXX40XX5fXX3aXA647 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA647 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#CLUSTER> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#value> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ELEMENT> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#value> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DATA_VALUE> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#value> <http://www.w3.org/2000/01/rdf-schema#label> "valor"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#value> <http://www.w3.org/2000/01/rdf-schema#label> "value"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#value> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#value> <http://www.w3.org/2000/01/rdf-schema#comment> "Data value of this leaf"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA656 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA656 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA657 .
+_:AX5fXX3aXX40XX5fXX3aXA620 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#items> .
+_:AX5fXX3aXX40XX5fXX3aXA620 <http://www.w3.org/2002/07/owl#minCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA620 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#column_names> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_TABLE> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#column_names> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#column_names> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#EVENT_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA648 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#EVENT_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_EVENT_T> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#EVENT_T> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_SINGLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA651 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_SINGLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_STRUCTURE> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_SINGLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA650 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_SINGLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA649 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_SINGLE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Used to represent any data which is logically a single value, suc as a person\u00B4s height or weight"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_SINGLE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "CDA Item"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_SINGLE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Logical single value data structure"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_SINGLE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_SIMPLE_PROPOSITION"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_SINGLE> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA639 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#CLUSTER> .
+_:AX5fXX3aXX40XX5fXX3aXA639 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#representation> .
+_:AX5fXX3aXX40XX5fXX3aXA639 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_TREE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA636 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_TREE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_STRUCTURE> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_TREE> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_TREE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Logicla tree data structure"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_TREE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "List"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_TREE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_TREE_PROPOSITION"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_TREE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "cluster"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_TREE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Used to represent data which are logically a tree such as audiotology results, microbilogy results, biochemistry results..."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#EVENT_SERIES_T> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#EVENT_SERIES_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA643 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#EVENT_SERIES_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#HISTORY_T_STRUCTURE> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#EVENT_SERIES_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA642 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#EVENT_SERIES_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA641 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#EVENT_SERIES_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA640 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#EVENT_SERIES_T> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Defines the semantics of a time segment which consists of events\nwhich occur at known instants of time, and which may be\nperiodically spaced. This class is generic, allowing types to be\ngenerated which are locked to particular structure types, such as\nEVENT_SERIES_LIST_S"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA648 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#offset> .
+_:AX5fXX3aXX40XX5fXX3aXA648 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA648 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA612 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA612 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM> .
+_:AX5fXX3aXX40XX5fXX3aXA612 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#item> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_EVENT_T> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Defines the time point corrsponding to a single event in a series.\nThis class is generic, allowing types to be generated which are locked to\nparticular spatial types, such as EVENT_LIST_S. In cases where samples\nare missing, ther will corerespondingly be missing EVENT instances.\nEvery EVENT instance that is supplied must have an item."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_EVENT_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA635 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_EVENT_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA634 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_EVENT_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA633 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_EVENT_T> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_EVENT_T> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "The data type HistoryItem HXIT_T is close to EVENT_T"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA657 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA658 .
+_:AX5fXX3aXX40XX5fXX3aXA657 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#CLUSTER> .
+_:AX5fXX3aXX40XX5fXX3aXA621 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#CLUSTER> .
+_:AX5fXX3aXX40XX5fXX3aXA621 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#representation> .
+_:AX5fXX3aXX40XX5fXX3aXA621 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#width> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#width> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#width> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_EVENT_T> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#SINGLE_EVENT_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA626 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#SINGLE_EVENT_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_EVENT_T> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#SINGLE_EVENT_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA625 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#SINGLE_EVENT_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#HISTORY_T_STRUCTURE> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#SINGLE_EVENT_T> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#SINGLE_EVENT_T> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "a subtype of HISTORY_T catering for the very common case of single events. \nThe motivation for this class is to reduce the number of temporal\nobjects associtaed with a datum to one"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA630 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#representation> .
+_:AX5fXX3aXX40XX5fXX3aXA630 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA630 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_TABLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA639 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_TABLE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "RIM Table_structure, Table_cell, Table..."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_TABLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_STRUCTURE> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_TABLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA637 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_TABLE> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_TABLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA638 .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_TABLE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Used to representa nay data which is logically a table of values, such as blood pressure, most protocols, many blood tests etc."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_TABLE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#MisUse> "Not used for time-based data, which should be represented with te temporal class JISTORY"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_TABLE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_TABLE_PROPOSITON, G1_MATRIX_PROPOSITION"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#ITEM_TABLE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Logical table data structure, in which columns are named and ordered. Some columns may be designated 'key' columns, containing key data for each row, in the manner of relational tables. This allows row-naming, where each row represents a body site, ablood antige etc... all values in a column have the same data type"^^<http://www.w3.org/2001/XMLSchema#string> .
Index: /ruby/tags/0.0.2/adl_parser/docs/Data_Types_RM.ntriple
===================================================================
--- /ruby/tags/0.0.2/adl_parser/docs/Data_Types_RM.ntriple	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/docs/Data_Types_RM.ntriple	(revision 39)
@@ -0,0 +1,1664 @@
+_:AX5fXX3aXX40XX5fXX3aXA1514 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1515 .
+_:AX5fXX3aXX40XX5fXX3aXA1514 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "12"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1180 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1180 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_GENERAL_TIME_SPECIFICATION> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#value> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#value> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1486 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#value> <http://www.w3.org/2000/01/rdf-schema#label> "valor"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#value> <http://www.w3.org/2000/01/rdf-schema#label> "value"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#value> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#period> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#period> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#period> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PERIODIC_TIME_SPECIFICATION> .
+_:AX5fXX3aXX40XX5fXX3aXA1241 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1241 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#uri> .
+_:AX5fXX3aXX40XX5fXX3aXA1241 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1302 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1303 .
+_:AX5fXX3aXX40XX5fXX3aXA1302 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "17"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1199 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1199 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#magnitude> .
+_:AX5fXX3aXX40XX5fXX3aXA1199 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#event_alignment> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#event_alignment> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1412 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#event_alignment> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#target_is_section> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_EHR_URI> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#target_is_section> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#boolean> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#target_is_section> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA1296 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1297 .
+_:AX5fXX3aXX40XX5fXX3aXA1296 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "11"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1357 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "30"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1357 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1358 .
+_:AX5fXX3aXX40XX5fXX3aXA1418 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1418 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#CODE_PHRASE> .
+_:AX5fXX3aXX40XX5fXX3aXA1145 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1146 .
+_:AX5fXX3aXX40XX5fXX3aXA1145 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_WORLD_TIME> .
+_:AX5fXX3aXX40XX5fXX3aXA1393 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "5"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1393 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1394 .
+_:AX5fXX3aXX40XX5fXX3aXA1206 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#units> .
+_:AX5fXX3aXX40XX5fXX3aXA1206 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1206 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1454 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "32"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1454 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1455 .
+_:AX5fXX3aXX40XX5fXX3aXA1515 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1516 .
+_:AX5fXX3aXX40XX5fXX3aXA1515 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "13"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1242 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#media_type> .
+_:AX5fXX3aXX40XX5fXX3aXA1242 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1242 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1181 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1181 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#value> .
+_:AX5fXX3aXX40XX5fXX3aXA1181 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1490 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1491 .
+_:AX5fXX3aXX40XX5fXX3aXA1490 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_URI> .
+_:AX5fXX3aXX40XX5fXX3aXA1303 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1304 .
+_:AX5fXX3aXX40XX5fXX3aXA1303 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "18"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1400 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1400 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "12"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1297 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "12"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1297 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1298 .
+_:AX5fXX3aXX40XX5fXX3aXA1358 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1359 .
+_:AX5fXX3aXX40XX5fXX3aXA1358 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "31"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1419 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1420 .
+_:AX5fXX3aXX40XX5fXX3aXA1419 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PERIODIC_TIME_SPECIFICATION> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PERIODIC_TIME_SPECIFICATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Specifies periodic points in time, linked to the calendar (phase-linked), \nor a real world event, such as 'breakfast'. Based on the HL7v3 data types\nPIVL<T> and EIVL<T>"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PERIODIC_TIME_SPECIFICATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "PIVL<T>, EIVL<T>"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PERIODIC_TIME_SPECIFICATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME_SPECIFICATION> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PERIODIC_TIME_SPECIFICATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> "STR 3.9"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PERIODIC_TIME_SPECIFICATION> <http://www.w3.org/2000/01/rdf-schema#label> "ESPECIFICACION DE INSTANTES PERIODICOS"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PERIODIC_TIME_SPECIFICATION> <http://www.w3.org/2000/01/rdf-schema#label> "PERIODIC TIME SPECIFICATION"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PERIODIC_TIME_SPECIFICATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "The Duration data value class privdes for the specification of time \nintervals, and also for a simple string description of the periodicity"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PERIODIC_TIME_SPECIFICATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Used in therapeutic prescriptions, expressed as INSTRUCTIONS \nin the openEHR"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MEASURABLE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "QTY"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MEASURABLE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "unit"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MEASURABLE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Abcstract class defining the concept of true quantified values. \nValues which are not only ordered, but whose magnitude is \nmeaningful as well. Units were inspired by the Unified Code for \nUnits of Measure"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MEASURABLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1206 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MEASURABLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTIFIED> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MEASURABLE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> "Attributes in the Quantity class for unit and accuracy"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MEASURABLE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#OMGHDTF> "COAS::Measurements"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MEASURABLE> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1394 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "6"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1394 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1395 .
+_:AX5fXX3aXX40XX5fXX3aXA1146 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE> .
+_:AX5fXX3aXX40XX5fXX3aXA1146 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1147 .
+_:AX5fXX3aXX40XX5fXX3aXA1207 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1207 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#charset> .
+_:AX5fXX3aXX40XX5fXX3aXA1207 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1455 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1456 .
+_:AX5fXX3aXX40XX5fXX3aXA1455 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "33"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1516 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "14"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1516 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1517 .
+_:AX5fXX3aXX40XX5fXX3aXA1491 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1492 .
+_:AX5fXX3aXX40XX5fXX3aXA1491 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_STATE> .
+_:AX5fXX3aXX40XX5fXX3aXA1182 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1182 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#accuracy_is_percent> .
+_:AX5fXX3aXX40XX5fXX3aXA1182 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1243 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1243 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#minute> .
+_:AX5fXX3aXX40XX5fXX3aXA1243 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1304 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "19"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1304 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1305 .
+_:AX5fXX3aXX40XX5fXX3aXA1340 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1341 .
+_:AX5fXX3aXX40XX5fXX3aXA1340 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "13"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1401 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1401 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1402 .
+_:AX5fXX3aXX40XX5fXX3aXA1298 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "13"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1298 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1299 .
+_:AX5fXX3aXX40XX5fXX3aXA1359 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1360 .
+_:AX5fXX3aXX40XX5fXX3aXA1359 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "32"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#symbol> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDINAL> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#symbol> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#symbol> <http://www.w3.org/2000/01/rdf-schema#comment> "Coded textual representation of this value in the enumaration, which may be strings made from \"+\" symbols, or other enumerations of the terms such as \"mild\", \"moderate\", \"sever\", or even the same number series as the values"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#symbol> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CODED_TEXT> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "Roughly equivalent to CWE (coded with extensions)-e.e. tesxt value which may optionally be coded."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1154 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> "the Text data value class can contain either plain text or a term taken from a terminology system"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "A plain text item, which may contain any amount of legal characters arranged as e.g. words, sentences etc. Any DV_TEXT may be coded by adding mappings to it"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> <http://www.w3.org/2000/01/rdf-schema#label> "TEXT"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1156 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> "STR 2.6, 2.9"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1157 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1155 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1158 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DATA_VALUE> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1159 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Fragments of text, whether coded or not are used on their own as values, or to make up larger gtracts of text which may be marked up in some way, eventually going to make up paragraphs."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1152 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> <http://www.w3.org/2000/01/rdf-schema#label> "TEXTO"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1153 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARTIAL_TIME> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Represents a partially known time. All partial time have an unknown second, \nby definition, else they would be reprsented as normal times. The minute_known\nflag indictes whether the minute is also unknown."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARTIAL_TIME> <http://www.w3.org/2000/01/rdf-schema#label> "HORA PARCIAL"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARTIAL_TIME> <http://www.w3.org/2000/01/rdf-schema#label> "PARTIAL TIME"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARTIAL_TIME> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARTIAL_TIME> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1205 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARTIAL_TIME> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME> .
+_:AX5fXX3aXX40XX5fXX3aXA1208 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#size> .
+_:AX5fXX3aXX40XX5fXX3aXA1208 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1208 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#day> <http://www.w3.org/2000/01/rdf-schema#range> _:AX5fXX3aXX40XX5fXX3aXA1286 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#day> <http://www.w3.org/2000/01/rdf-schema#label> "day"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#day> <http://www.w3.org/2000/01/rdf-schema#label> "dia"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#day> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1317 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#day> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA1147 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1147 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> .
+_:AX5fXX3aXX40XX5fXX3aXA1395 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1396 .
+_:AX5fXX3aXX40XX5fXX3aXA1395 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "7"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1456 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "34"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1456 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1457 .
+_:AX5fXX3aXX40XX5fXX3aXA1517 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "15"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1517 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1518 .
+_:AX5fXX3aXX40XX5fXX3aXA1305 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1306 .
+_:AX5fXX3aXX40XX5fXX3aXA1305 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "20"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1183 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1183 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1183 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#accuracy> .
+_:AX5fXX3aXX40XX5fXX3aXA1244 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1244 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> .
+_:AX5fXX3aXX40XX5fXX3aXA1244 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#diff_type> .
+_:AX5fXX3aXX40XX5fXX3aXA1492 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1493 .
+_:AX5fXX3aXX40XX5fXX3aXA1492 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY> .
+_:AX5fXX3aXX40XX5fXX3aXA1280 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1280 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1281 .
+_:AX5fXX3aXX40XX5fXX3aXA1341 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "14"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1341 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1342 .
+_:AX5fXX3aXX40XX5fXX3aXA1402 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1403 .
+_:AX5fXX3aXX40XX5fXX3aXA1402 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> .
+_:AX5fXX3aXX40XX5fXX3aXA1299 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1300 .
+_:AX5fXX3aXX40XX5fXX3aXA1299 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "14"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1396 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "8"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1396 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1397 .
+_:AX5fXX3aXX40XX5fXX3aXA1209 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1209 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1209 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#language> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#reference_ranges> <http://www.w3.org/2000/01/rdf-schema#label> "reference ranges"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#reference_ranges> <http://www.w3.org/2000/01/rdf-schema#label> "rangos de referencia"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#reference_ranges> <http://www.w3.org/2000/01/rdf-schema#comment> "Optional tagged ranges for this value in its particular measurement context"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#reference_ranges> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#LIST_REFERENCE_RANGE> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#reference_ranges> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#reference_ranges> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDERED> .
+_:AX5fXX3aXX40XX5fXX3aXA1148 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1148 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1148 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#formalism> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ENCAPSULATED> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#OMGHDTF> "COAS::Multimedia"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ENCAPSULATED> <http://www.w3.org/2000/01/rdf-schema#label> "ENCAPSULATED"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ENCAPSULATED> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "TBD"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ENCAPSULATED> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1207 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ENCAPSULATED> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ENCAPSULATED> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DATA_VALUE> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ENCAPSULATED> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Abstract class defining the common meta-data of all types \nof encapsulated data"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ENCAPSULATED> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1208 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ENCAPSULATED> <http://protege.stanford.edu/plugins/owl/protege#abstract> "true"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ENCAPSULATED> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "Encapsulated_data (ED)"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ENCAPSULATED> <http://www.w3.org/2000/01/rdf-schema#label> "ENCAPSULADOS"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ENCAPSULATED> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> "STR 2.6"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ENCAPSULATED> <http://www.w3.org/2002/07/owl#equivalentClass> _:AX5fXX3aXX40XX5fXX3aXA1210 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ENCAPSULATED> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1209 .
+_:AX5fXX3aXX40XX5fXX3aXA1457 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "35"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1457 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1458 .
+_:AX5fXX3aXX40XX5fXX3aXA1518 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1519 .
+_:AX5fXX3aXX40XX5fXX3aXA1518 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "16"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1493 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDINAL> .
+_:AX5fXX3aXX40XX5fXX3aXA1493 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1494 .
+_:AX5fXX3aXX40XX5fXX3aXA1184 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTIFIED> .
+_:AX5fXX3aXX40XX5fXX3aXA1184 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1184 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#diff_type> .
+_:AX5fXX3aXX40XX5fXX3aXA1245 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#second> .
+_:AX5fXX3aXX40XX5fXX3aXA1245 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1245 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1306 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "21"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1306 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1307 .
+_:AX5fXX3aXX40XX5fXX3aXA1281 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#COORDINATED_TERM> .
+_:AX5fXX3aXX40XX5fXX3aXA1281 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1282 .
+_:AX5fXX3aXX40XX5fXX3aXA1342 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1343 .
+_:AX5fXX3aXX40XX5fXX3aXA1342 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "15"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1403 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1403 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#target_is_transaction> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#boolean> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#target_is_transaction> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA1130 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1130 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1130 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#value> .
+_:AX5fXX3aXX40XX5fXX3aXA1519 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "17"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1519 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1520 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "TOCD choice Quantifiable Observation Data ITem"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1223 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_WORLD_TIME> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_DATE_TIME"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> "DTValue attribute of DateTime"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1226 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#OMGHDTF> "COAS::DateTime"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> <http://www.w3.org/2000/01/rdf-schema#label> "FECHA Y HORA"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> "STR 3.7, 3.10"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1229 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Used for recording a precise point in real world time"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Represents an aboslute point in time, specified to the second. \nIn canonical form"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1231 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1225 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1228 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> <http://www.w3.org/2000/01/rdf-schema#label> "DATE TIME"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1230 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1224 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1227 .
+_:AX5fXX3aXX40XX5fXX3aXA1500 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1500 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1501 .
+_:AX5fXX3aXX40XX5fXX3aXA1149 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1149 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#value> .
+_:AX5fXX3aXX40XX5fXX3aXA1149 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1397 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1398 .
+_:AX5fXX3aXX40XX5fXX3aXA1397 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "9"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1458 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1459 .
+_:AX5fXX3aXX40XX5fXX3aXA1458 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "36"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#query> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#query> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_URI> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#query> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA1185 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1185 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1186 .
+_:AX5fXX3aXX40XX5fXX3aXA1494 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1494 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARSABLE> .
+_:AX5fXX3aXX40XX5fXX3aXA1246 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1246 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#fractional_second> .
+_:AX5fXX3aXX40XX5fXX3aXA1246 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1307 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "22"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1307 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1308 .
+_:AX5fXX3aXX40XX5fXX3aXA1282 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#CODE_PHRASE> .
+_:AX5fXX3aXX40XX5fXX3aXA1282 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1343 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1344 .
+_:AX5fXX3aXX40XX5fXX3aXA1343 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "16"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1404 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1405 .
+_:AX5fXX3aXX40XX5fXX3aXA1404 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1131 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CODED_TEXT> .
+_:AX5fXX3aXX40XX5fXX3aXA1131 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1131 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#value> .
+_:AX5fXX3aXX40XX5fXX3aXA1440 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "18"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1440 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1441 .
+_:AX5fXX3aXX40XX5fXX3aXA1501 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1501 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME_SPECIFICATION> .
+_:AX5fXX3aXX40XX5fXX3aXA1398 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1399 .
+_:AX5fXX3aXX40XX5fXX3aXA1398 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "10"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1459 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "37"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1459 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1460 .
+_:AX5fXX3aXX40XX5fXX3aXA1308 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1309 .
+_:AX5fXX3aXX40XX5fXX3aXA1308 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "23"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1186 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CUSTOMARY_QUANTITY> .
+_:AX5fXX3aXX40XX5fXX3aXA1186 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1187 .
+_:AX5fXX3aXX40XX5fXX3aXA1247 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#hour> .
+_:AX5fXX3aXX40XX5fXX3aXA1247 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1247 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1495 <http://www.w3.org/2002/07/owl#oneOf> _:AX5fXX3aXX40XX5fXX3aXA1496 .
+_:AX5fXX3aXX40XX5fXX3aXA1495 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DataRange> .
+_:AX5fXX3aXX40XX5fXX3aXA1283 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1284 .
+_:AX5fXX3aXX40XX5fXX3aXA1283 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1344 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1345 .
+_:AX5fXX3aXX40XX5fXX3aXA1344 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "17"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1405 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> .
+_:AX5fXX3aXX40XX5fXX3aXA1405 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1406 .
+_:AX5fXX3aXX40XX5fXX3aXA1132 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1132 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1132 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#denominator> .
+_:AX5fXX3aXX40XX5fXX3aXA1380 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "53"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1380 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1381 .
+_:AX5fXX3aXX40XX5fXX3aXA1441 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1442 .
+_:AX5fXX3aXX40XX5fXX3aXA1441 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "19"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1502 <http://www.w3.org/2002/07/owl#oneOf> _:AX5fXX3aXX40XX5fXX3aXA1503 .
+_:AX5fXX3aXX40XX5fXX3aXA1502 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DataRange> .
+_:AX5fXX3aXX40XX5fXX3aXA1399 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "11"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1399 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1400 .
+_:AX5fXX3aXX40XX5fXX3aXA1309 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "24"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1309 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1310 .
+_:AX5fXX3aXX40XX5fXX3aXA1187 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY> .
+_:AX5fXX3aXX40XX5fXX3aXA1187 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1248 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1248 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1249 .
+_:AX5fXX3aXX40XX5fXX3aXA1496 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> ">"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1496 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1497 .
+_:AX5fXX3aXX40XX5fXX3aXA1284 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1285 .
+_:AX5fXX3aXX40XX5fXX3aXA1284 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ENCAPSULATED> .
+_:AX5fXX3aXX40XX5fXX3aXA1345 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "18"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1345 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1346 .
+_:AX5fXX3aXX40XX5fXX3aXA1406 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1407 .
+_:AX5fXX3aXX40XX5fXX3aXA1406 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_WORLD_TIME> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_WORLD_TIME> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Used for recording dates and/or times in real world time"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_WORLD_TIME> <http://www.w3.org/2002/07/owl#equivalentClass> _:AX5fXX3aXX40XX5fXX3aXA1248 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_WORLD_TIME> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CUSTOMARY_QUANTITY> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_WORLD_TIME> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1251 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_WORLD_TIME> <http://www.w3.org/2000/01/rdf-schema#label> "WORLD TIME"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_WORLD_TIME> <http://www.w3.org/2000/01/rdf-schema#label> "HORA MUNDIAL"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_WORLD_TIME> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Abstract concept of time on the real world timeline. All dates assumed\nto be  in the Gregorian calendar"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_WORLD_TIME> <http://protege.stanford.edu/plugins/owl/protege#abstract> "true"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1133 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#numerator> .
+_:AX5fXX3aXX40XX5fXX3aXA1133 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1133 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1381 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1382 .
+_:AX5fXX3aXX40XX5fXX3aXA1381 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "54"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1442 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "20"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1442 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1443 .
+_:AX5fXX3aXX40XX5fXX3aXA1503 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1503 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1504 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#target> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#CODE_PHRASE> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#target> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#target> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1268 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#target> <http://www.w3.org/2000/01/rdf-schema#label> "target"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#target> <http://www.w3.org/2000/01/rdf-schema#label> "objetivo"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DATA_VALUE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Serves as a common ancestor of all data value types in openEHR models"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DATA_VALUE> <http://www.w3.org/2002/07/owl#equivalentClass> _:AX5fXX3aXX40XX5fXX3aXA1161 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DATA_VALUE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> "STR 3.1-3.13"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DATA_VALUE> <http://www.w3.org/2000/01/rdf-schema#label> "VALOR DE DATO"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DATA_VALUE> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DATA_VALUE> <http://protege.stanford.edu/plugins/owl/protege#abstract> "true"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DATA_VALUE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "The Data_Item class in CEN is a mixture of DATA_VALUE and ELEMENT in openEHR"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DATA_VALUE> <http://www.w3.org/2000/01/rdf-schema#label> "DATA_VALUE"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DATA_VALUE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#OMGHDTF> "COAS::ObservationValue"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DATA_VALUE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "DataValue"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1230 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#year> .
+_:AX5fXX3aXX40XX5fXX3aXA1230 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1230 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1188 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1188 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#target_is_entry> .
+_:AX5fXX3aXX40XX5fXX3aXA1188 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME_SPECIFICATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1181 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME_SPECIFICATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "An abstract class of which all timing specifications are\nspecialisations. Specifies points in time, possibly linked to the calendar,\nor a real world repeating event, suc as \"breakfast\""^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME_SPECIFICATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DATA_VALUE> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME_SPECIFICATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> "STR 3.9"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME_SPECIFICATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1177 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME_SPECIFICATION> <http://www.w3.org/2000/01/rdf-schema#label> "ESPECIFICACION DE HORA"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME_SPECIFICATION> <http://www.w3.org/2002/07/owl#equivalentClass> _:AX5fXX3aXX40XX5fXX3aXA1178 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME_SPECIFICATION> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME_SPECIFICATION> <http://protege.stanford.edu/plugins/owl/protege#abstract> "true"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME_SPECIFICATION> <http://www.w3.org/2000/01/rdf-schema#label> "TIME SPECIFICATION"@en .
+_:AX5fXX3aXX40XX5fXX3aXA1249 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1250 .
+_:AX5fXX3aXX40XX5fXX3aXA1249 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> .
+_:AX5fXX3aXX40XX5fXX3aXA1497 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "="^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1497 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1498 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#target_is_composition> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_EHR_URI> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#target_is_composition> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#target_is_composition> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#boolean> .
+_:AX5fXX3aXX40XX5fXX3aXA1285 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1285 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> .
+_:AX5fXX3aXX40XX5fXX3aXA1346 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1347 .
+_:AX5fXX3aXX40XX5fXX3aXA1346 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "19"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1407 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> .
+_:AX5fXX3aXX40XX5fXX3aXA1407 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#range> <http://www.w3.org/2000/01/rdf-schema#label> "rango"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#range> <http://www.w3.org/2000/01/rdf-schema#label> "range"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#range> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_T> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#range> <http://www.w3.org/2000/01/rdf-schema#comment> "The data range for this meaning"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#range> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#REFERENCE_RANGE_T> .
+_:AX5fXX3aXX40XX5fXX3aXA1134 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#magnitude> .
+_:AX5fXX3aXX40XX5fXX3aXA1134 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1134 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1382 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "55"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1382 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1383 .
+_:AX5fXX3aXX40XX5fXX3aXA1443 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "21"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1443 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1444 .
+_:AX5fXX3aXX40XX5fXX3aXA1504 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "2"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1504 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1505 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#month_known> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARTIAL_DATE> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#month_known> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#month_known> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#boolean> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#month_known> <http://www.w3.org/2000/01/rdf-schema#label> "month known"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#month_known> <http://www.w3.org/2000/01/rdf-schema#label> "mes conocido"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_EHR_URI> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1190 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_EHR_URI> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1188 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_EHR_URI> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1192 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_EHR_URI> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_URI> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_EHR_URI> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1193 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_EHR_URI> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1189 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_EHR_URI> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1194 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_EHR_URI> <http://www.w3.org/2000/01/rdf-schema#label> "EHR_URI"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_EHR_URI> <http://www.w3.org/2000/01/rdf-schema#label> "EHR_URI"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_EHR_URI> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_EHR_URI> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1195 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_EHR_URI> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1191 .
+_:AX5fXX3aXX40XX5fXX3aXA1170 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1171 .
+_:AX5fXX3aXX40XX5fXX3aXA1170 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_STATE> .
+_:AX5fXX3aXX40XX5fXX3aXA1231 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1231 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#month> .
+_:AX5fXX3aXX40XX5fXX3aXA1231 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1189 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1189 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1189 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#target_is_ehr> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#hyperlink> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_URI> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#hyperlink> <http://www.w3.org/2000/01/rdf-schema#comment> "Optional link sitting behind a section of plain text or coded term item"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#hyperlink> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#hyperlink> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#hyperlink> <http://www.w3.org/2000/01/rdf-schema#label> "hipervinculo"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#hyperlink> <http://www.w3.org/2000/01/rdf-schema#label> "hyperlink"@en .
+_:AX5fXX3aXX40XX5fXX3aXA1498 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1499 .
+_:AX5fXX3aXX40XX5fXX3aXA1498 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "<"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#accuracy> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#float> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#accuracy> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTIFIED> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#accuracy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA1286 <http://www.w3.org/2002/07/owl#oneOf> _:AX5fXX3aXX40XX5fXX3aXA1287 .
+_:AX5fXX3aXX40XX5fXX3aXA1286 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DataRange> .
+_:AX5fXX3aXX40XX5fXX3aXA1347 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1348 .
+_:AX5fXX3aXX40XX5fXX3aXA1347 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "20"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1408 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1409 .
+_:AX5fXX3aXX40XX5fXX3aXA1408 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#data> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#data> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA1135 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1135 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#sign> .
+_:AX5fXX3aXX40XX5fXX3aXA1135 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1505 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1506 .
+_:AX5fXX3aXX40XX5fXX3aXA1505 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "3"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1383 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "56"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1383 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1384 .
+_:AX5fXX3aXX40XX5fXX3aXA1444 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "22"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1444 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1445 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#formatting> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#formatting> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#formatting> <http://www.w3.org/2000/01/rdf-schema#label> "formatting"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#formatting> <http://www.w3.org/2000/01/rdf-schema#label> "cadena formateada"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#formatting> <http://www.w3.org/2000/01/rdf-schema#comment> "A format string of the form \"name:value; name:value...\"Values taken from W3C CSS2 properties lists"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#formatting> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> .
+_:AX5fXX3aXX40XX5fXX3aXA1171 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARAGRAPH> .
+_:AX5fXX3aXX40XX5fXX3aXA1171 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1172 .
+_:AX5fXX3aXX40XX5fXX3aXA1232 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1232 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://www.w3.org/2001/XMLSchema#boolean> .
+_:AX5fXX3aXX40XX5fXX3aXA1232 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#value> .
+_:AX5fXX3aXX40XX5fXX3aXA1480 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1481 .
+_:AX5fXX3aXX40XX5fXX3aXA1480 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "58"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1499 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1499 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "?"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1287 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1288 .
+_:AX5fXX3aXX40XX5fXX3aXA1287 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1348 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1349 .
+_:AX5fXX3aXX40XX5fXX3aXA1348 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "21"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1409 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_COUNT> .
+_:AX5fXX3aXX40XX5fXX3aXA1409 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1410 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#scheme> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#scheme> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#scheme> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_URI> .
+_:AX5fXX3aXX40XX5fXX3aXA1136 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1136 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1136 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#minutes> .
+_:AX5fXX3aXX40XX5fXX3aXA1384 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1385 .
+_:AX5fXX3aXX40XX5fXX3aXA1384 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "57"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1445 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "23"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1445 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1446 .
+_:AX5fXX3aXX40XX5fXX3aXA1506 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "4"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1506 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1507 .
+_:AX5fXX3aXX40XX5fXX3aXA1172 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY_RATIO> .
+_:AX5fXX3aXX40XX5fXX3aXA1172 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1233 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#value> .
+_:AX5fXX3aXX40XX5fXX3aXA1233 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1233 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1481 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1482 .
+_:AX5fXX3aXX40XX5fXX3aXA1481 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "59"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#thumbnail> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#thumbnail> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#thumbnail> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> .
+_:AX5fXX3aXX40XX5fXX3aXA1330 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1331 .
+_:AX5fXX3aXX40XX5fXX3aXA1330 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "3"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1288 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1289 .
+_:AX5fXX3aXX40XX5fXX3aXA1288 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "2"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1349 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "22"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1349 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1350 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARAGRAPH> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "is the standrad way for constructing longer text items in summaries, reports and so on"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARAGRAPH> <http://www.w3.org/2000/01/rdf-schema#label> "PARAGRAPH"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARAGRAPH> <http://www.w3.org/2000/01/rdf-schema#label> "PARRAFO"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARAGRAPH> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "A logical composite text value consisting of a series of DV_TEXTs, i.e. plain text potentially with simple formatting, to form a larger tract of prose, which may be interpreted for display purposes as a pargraph."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARAGRAPH> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> "STR 2.6"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARAGRAPH> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_PARAGRAPH"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARAGRAPH> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1143 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARAGRAPH> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DATA_VALUE> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARAGRAPH> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#fragment_id> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#fragment_id> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_URI> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#fragment_id> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#uri> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_URI> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#uri> <http://www.w3.org/2000/01/rdf-schema#label> "uri"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#uri> <http://www.w3.org/2000/01/rdf-schema#label> "uri"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#uri> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#uri> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA1137 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> .
+_:AX5fXX3aXX40XX5fXX3aXA1137 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#diff_type> .
+_:AX5fXX3aXX40XX5fXX3aXA1137 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1385 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "58"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1385 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1386 .
+_:AX5fXX3aXX40XX5fXX3aXA1446 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1447 .
+_:AX5fXX3aXX40XX5fXX3aXA1446 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "24"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1507 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1508 .
+_:AX5fXX3aXX40XX5fXX3aXA1507 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "5"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1173 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1173 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1173 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#code_string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CODED_TEXT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "A text item whose value must be a rubric drawn from a controlled terminology, the key of which is the definition attribute"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CODED_TEXT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#OMGHDTF> "COAS::CodedElement,, LooselyCodedElement"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CODED_TEXT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1160 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CODED_TEXT> <http://www.w3.org/2000/01/rdf-schema#label> "TEXTO CODIFICADO"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CODED_TEXT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "CD,CV,CS"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CODED_TEXT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> "STR 4.1,4.2,4.3"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CODED_TEXT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CODED_TEXT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_TERM_TEXT"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CODED_TEXT> <http://www.w3.org/2000/01/rdf-schema#label> "CODED TEXT"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CODED_TEXT> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CODED_TEXT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "Text"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CODED_TEXT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Can be used in place of DV_TEXT, effectively allowing the type DV_TEXT to mean a text item, which may optionally be coded."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CODED_TEXT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> "Text"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1234 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1234 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#compression_algorithm> .
+_:AX5fXX3aXX40XX5fXX3aXA1234 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1482 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1482 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "0"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#terminology_id> <http://www.w3.org/2000/01/rdf-schema#comment> "Identifier of the distinct terminology from which the code_string was extracted\nRange must be added in the common_RM because terminology_ID is defined there"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#terminology_id> <http://www.w3.org/2000/01/rdf-schema#label> "identificador de terminologia"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#terminology_id> <http://www.w3.org/2000/01/rdf-schema#label> "terminology id"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#terminology_id> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1280 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#terminology_id> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA1270 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_EHR_URI> .
+_:AX5fXX3aXX40XX5fXX3aXA1270 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_DV_DATE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1202 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_DV_DATE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_T> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_DV_DATE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1201 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_DV_DATE> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_DV_DATE> <http://www.w3.org/2000/01/rdf-schema#label> "INTERVALO DE FECHA"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_DV_DATE> <http://www.w3.org/2000/01/rdf-schema#label> "INTERVAL DATE"@en .
+_:AX5fXX3aXX40XX5fXX3aXA1331 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1332 .
+_:AX5fXX3aXX40XX5fXX3aXA1331 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "4"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#COORDINATED_TERM> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> "STR 4.2"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#COORDINATED_TERM> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#COORDINATED_TERM> <http://www.w3.org/2000/01/rdf-schema#label> "COORDINATED TERM"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#COORDINATED_TERM> <http://www.w3.org/2000/01/rdf-schema#label> "TERMINO COORDINADO"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#COORDINATED_TERM> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "A fully coordinated term from a terminology service"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#COORDINATED_TERM> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1174 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#COORDINATED_TERM> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1173 .
+_:AX5fXX3aXX40XX5fXX3aXA1289 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1290 .
+_:AX5fXX3aXX40XX5fXX3aXA1289 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "3"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#target_is_ehr> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#target_is_ehr> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#boolean> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#target_is_ehr> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_EHR_URI> .
+_:AX5fXX3aXX40XX5fXX3aXA1138 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1138 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1138 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#hours> .
+_:AX5fXX3aXX40XX5fXX3aXA1386 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1387 .
+_:AX5fXX3aXX40XX5fXX3aXA1386 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "59"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1447 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1448 .
+_:AX5fXX3aXX40XX5fXX3aXA1447 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "25"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1508 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1509 .
+_:AX5fXX3aXX40XX5fXX3aXA1508 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "6"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1174 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1174 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#terminology_id> .
+_:AX5fXX3aXX40XX5fXX3aXA1174 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#CODE_PHRASE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> "STR 4.2"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#CODE_PHRASE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1142 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#CODE_PHRASE> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#CODE_PHRASE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "A fully coordinated term from a terminology service"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1235 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1235 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1235 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#size> .
+_:AX5fXX3aXX40XX5fXX3aXA1483 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1484 .
+_:AX5fXX3aXX40XX5fXX3aXA1483 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1271 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1272 .
+_:AX5fXX3aXX40XX5fXX3aXA1271 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1332 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1333 .
+_:AX5fXX3aXX40XX5fXX3aXA1332 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "5"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1139 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1139 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#fractional_second> .
+_:AX5fXX3aXX40XX5fXX3aXA1139 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1387 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "0"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1387 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1448 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "26"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1448 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1449 .
+_:AX5fXX3aXX40XX5fXX3aXA1509 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1510 .
+_:AX5fXX3aXX40XX5fXX3aXA1509 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "7"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#section_id> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#section_id> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_EHR_URI> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#section_id> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA1175 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1175 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> .
+_:AX5fXX3aXX40XX5fXX3aXA1175 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#item> .
+_:AX5fXX3aXX40XX5fXX3aXA1236 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1236 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#integrity_check> .
+_:AX5fXX3aXX40XX5fXX3aXA1236 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1484 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> .
+_:AX5fXX3aXX40XX5fXX3aXA1484 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1485 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#items> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#LIST_DV_TEXT> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#items> <http://www.w3.org/2000/01/rdf-schema#comment> "Items making up the paragraph, each of which is a text item"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#items> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#items> <http://www.w3.org/2000/01/rdf-schema#label> "elementos"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#items> <http://www.w3.org/2000/01/rdf-schema#label> "items"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#items> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARAGRAPH> .
+_:AX5fXX3aXX40XX5fXX3aXA1272 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_WORLD_TIME> .
+_:AX5fXX3aXX40XX5fXX3aXA1272 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1333 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1334 .
+_:AX5fXX3aXX40XX5fXX3aXA1333 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "6"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARSABLE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Used ofr representing values which are formal textural representations (e.g. guidelines)"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARSABLE> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARSABLE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Encapsulated data expressed as a parsable STRING. The internal \nmodel of the data item is not described in the openEHR model in \ncommon with other encapsulated types, but in this case, the form \nof the data is assumed to be plaintext, rather than compressed or \nother types or large binary data"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARSABLE> <http://www.w3.org/2000/01/rdf-schema#label> "MANEJABLE"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARSABLE> <http://www.w3.org/2000/01/rdf-schema#label> "PARSABLE"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARSABLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1150 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARSABLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1149 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARSABLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1148 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARSABLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ENCAPSULATED> .
+_:AX5fXX3aXX40XX5fXX3aXA1430 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1431 .
+_:AX5fXX3aXX40XX5fXX3aXA1430 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "8"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1388 <http://www.w3.org/2002/07/owl#oneOf> _:AX5fXX3aXX40XX5fXX3aXA1389 .
+_:AX5fXX3aXX40XX5fXX3aXA1388 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DataRange> .
+_:AX5fXX3aXX40XX5fXX3aXA1449 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1450 .
+_:AX5fXX3aXX40XX5fXX3aXA1449 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "27"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1176 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#month_known> .
+_:AX5fXX3aXX40XX5fXX3aXA1176 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1176 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1237 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#thumbnail> .
+_:AX5fXX3aXX40XX5fXX3aXA1237 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1237 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1485 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE> .
+_:AX5fXX3aXX40XX5fXX3aXA1485 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#LIST_TERM_MAPPING> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#LIST_T> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#LIST_TERM_MAPPING> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1222 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#LIST_TERM_MAPPING> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1273 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1273 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1274 .
+_:AX5fXX3aXX40XX5fXX3aXA1334 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1335 .
+_:AX5fXX3aXX40XX5fXX3aXA1334 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "7"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#size> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ENCAPSULATED> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#size> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#integer> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#size> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#size> <http://www.w3.org/2000/01/rdf-schema#label> "tama\u00F1o"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#size> <http://www.w3.org/2000/01/rdf-schema#label> "size"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#path> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#path> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#path> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_URI> .
+_:AX5fXX3aXX40XX5fXX3aXA1370 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "43"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1370 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1371 .
+_:AX5fXX3aXX40XX5fXX3aXA1431 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1432 .
+_:AX5fXX3aXX40XX5fXX3aXA1431 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "9"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1389 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1389 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1390 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#purpose> <http://www.w3.org/2000/01/rdf-schema#label> "purpose"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#purpose> <http://www.w3.org/2000/01/rdf-schema#label> "proposito"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#purpose> <http://www.w3.org/2000/01/rdf-schema#comment> "Purpose of the mapping. e.g. automated data mining, billing, interoperability..."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#purpose> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CODED_TEXT> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#purpose> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#TERM_MAPPING> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#purpose> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA1177 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARSABLE> .
+_:AX5fXX3aXX40XX5fXX3aXA1177 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1177 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#value> .
+_:AX5fXX3aXX40XX5fXX3aXA1238 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#alternate_text> .
+_:AX5fXX3aXX40XX5fXX3aXA1238 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1238 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1486 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1486 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1487 .
+_:AX5fXX3aXX40XX5fXX3aXA1274 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1275 .
+_:AX5fXX3aXX40XX5fXX3aXA1274 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ENCAPSULATED> .
+_:AX5fXX3aXX40XX5fXX3aXA1335 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1336 .
+_:AX5fXX3aXX40XX5fXX3aXA1335 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "8"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1371 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1372 .
+_:AX5fXX3aXX40XX5fXX3aXA1371 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "44"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1432 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "10"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1432 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1433 .
+_:AX5fXX3aXX40XX5fXX3aXA1220 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1220 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_COUNT> .
+_:AX5fXX3aXX40XX5fXX3aXA1220 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#diff_type> .
+_:AX5fXX3aXX40XX5fXX3aXA1178 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1179 .
+_:AX5fXX3aXX40XX5fXX3aXA1178 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1239 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1239 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1239 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#integrity_check_algorithm> .
+_:AX5fXX3aXX40XX5fXX3aXA1487 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME_SPECIFICATION> .
+_:AX5fXX3aXX40XX5fXX3aXA1487 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1488 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#is_simple> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1320 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#is_simple> <http://www.w3.org/2000/01/rdf-schema#comment> "True if this quantity has no reference ranges, or accuracy"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#is_simple> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#boolean> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#is_simple> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA1275 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> .
+_:AX5fXX3aXX40XX5fXX3aXA1275 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1336 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1337 .
+_:AX5fXX3aXX40XX5fXX3aXA1336 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "9"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#month> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1401 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#month> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#month> <http://www.w3.org/2000/01/rdf-schema#range> _:AX5fXX3aXX40XX5fXX3aXA1388 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#month> <http://www.w3.org/2000/01/rdf-schema#label> "month"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#month> <http://www.w3.org/2000/01/rdf-schema#label> "mes"@es .
+_:AX5fXX3aXX40XX5fXX3aXA1372 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "45"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1372 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1373 .
+_:AX5fXX3aXX40XX5fXX3aXA1433 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1434 .
+_:AX5fXX3aXX40XX5fXX3aXA1433 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "11"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#year> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#year> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#integer> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#year> <http://www.w3.org/2000/01/rdf-schema#label> ""@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#year> <http://www.w3.org/2000/01/rdf-schema#label> "year"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#year> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1483 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#is_normal> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#is_normal> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#boolean> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#is_normal> <http://www.w3.org/2000/01/rdf-schema#comment> "Value is in the normal range if ther is one, otherwise True"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#is_normal> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1322 .
+_:AX5fXX3aXX40XX5fXX3aXA1221 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#item> .
+_:AX5fXX3aXX40XX5fXX3aXA1221 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> .
+_:AX5fXX3aXX40XX5fXX3aXA1221 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1160 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#defining_code> .
+_:AX5fXX3aXX40XX5fXX3aXA1160 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1160 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1179 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PERIODIC_TIME_SPECIFICATION> .
+_:AX5fXX3aXX40XX5fXX3aXA1179 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1180 .
+_:AX5fXX3aXX40XX5fXX3aXA1530 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1531 .
+_:AX5fXX3aXX40XX5fXX3aXA1530 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#seconds> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#seconds> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#seconds> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#seconds> <http://www.w3.org/2000/01/rdf-schema#label> "segundos"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#seconds> <http://www.w3.org/2000/01/rdf-schema#label> "seconds"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#institution_specified> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1500 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#institution_specified> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#institution_specified> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#boolean> .
+_:AX5fXX3aXX40XX5fXX3aXA1488 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1489 .
+_:AX5fXX3aXX40XX5fXX3aXA1488 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_BOOLEAN> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#code_string> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#code_string> <http://www.w3.org/2000/01/rdf-schema#label> "cadena codificada"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#code_string> <http://www.w3.org/2000/01/rdf-schema#label> "code string"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#code_string> <http://www.w3.org/2000/01/rdf-schema#comment> "The key used by the terminology service to identify a concept or coordination of concepts. Is most likely parsable inside the terminology service, but nothing can be assumed about its syntax outside that context."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#code_string> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1416 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#code_string> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA1276 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1277 .
+_:AX5fXX3aXX40XX5fXX3aXA1276 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1337 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1338 .
+_:AX5fXX3aXX40XX5fXX3aXA1337 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "10"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PHYSICAL_DATA> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PHYSICAL_DATA> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DATA_VALUE> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#SET_DV_TEXT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1175 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#SET_DV_TEXT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#SET_T> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#SET_DV_TEXT> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1373 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1374 .
+_:AX5fXX3aXX40XX5fXX3aXA1373 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "46"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1434 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "12"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1434 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1435 .
+_:AX5fXX3aXX40XX5fXX3aXA1161 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1161 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1162 .
+_:AX5fXX3aXX40XX5fXX3aXA1222 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#TERM_MAPPING> .
+_:AX5fXX3aXX40XX5fXX3aXA1222 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1222 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#item> .
+_:AX5fXX3aXX40XX5fXX3aXA1470 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1471 .
+_:AX5fXX3aXX40XX5fXX3aXA1470 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "48"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1531 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MEASURABLE> .
+_:AX5fXX3aXX40XX5fXX3aXA1531 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1532 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDERED> <http://protege.stanford.edu/plugins/owl/protege#abstract> "true"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDERED> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDERED> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Abstract class defining the concept of ordered values, which includes ordinals as well as true quantities. It defines the functions less_tan and is_strictly_comparable_to, the latter of which must evaluate to True for isntances being compared with the less_than function, or used as limits in the DV_INTERVAL_T"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDERED> <http://www.w3.org/2000/01/rdf-schema#label> "VALORES DE ORDEN"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDERED> <http://www.w3.org/2000/01/rdf-schema#label> "ORDERED"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDERED> <http://www.w3.org/2002/07/owl#equivalentClass> _:AX5fXX3aXX40XX5fXX3aXA1261 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDERED> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1260 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDERED> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DATA_VALUE> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDERED> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Data value types which are to be used as limits in the DV_INTERVAL_T\nclass must inherit from this class, and implement the function \nis_strictly_comparable_to to ensure that instances compare meaningfully."^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1489 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1490 .
+_:AX5fXX3aXX40XX5fXX3aXA1489 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1243 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME> <http://www.w3.org/2000/01/rdf-schema#label> "HORA"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1244 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Used ofr recording real world times, rather than scientically measured fine amounts of time"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "TS"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> "STR 3.7, 3.10"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_WORLD_TIME> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1245 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> "DTValue attribute of DateTime"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1246 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Represents an aboslute point in time from an origin usually interpreted\nas meaning the start of the cuyrrent day, specified to the second"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1247 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "TOCD choice Quantifiable Observation Data Item"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME> <http://www.w3.org/2000/01/rdf-schema#label> "TIME"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#defining_code> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#CODE_PHRASE> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#defining_code> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#defining_code> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CODED_TEXT> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#defining_code> <http://www.w3.org/2000/01/rdf-schema#comment> "The term which the value attribute is the textual rendition of"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#defining_code> <http://www.w3.org/2000/01/rdf-schema#label> "definicion"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#defining_code> <http://www.w3.org/2000/01/rdf-schema#label> "definition"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_BOOLEAN> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "For such data, it is important to devise the meanings (usually questions in subjective data) carefully, so that the only allowed results are in fact true or false"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_BOOLEAN> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "BL"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_BOOLEAN> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Items which are truly boolean data, such as true/false of yes/no answers"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_BOOLEAN> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> "A special use of the Numeric class is defined to represent the Boolean data type, limiting the permitted values to zero or one."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_BOOLEAN> <http://www.w3.org/2000/01/rdf-schema#label> "LOGICO"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_BOOLEAN> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1232 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_BOOLEAN> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1233 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_BOOLEAN> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "Not provided as a subtype of Data Item"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_BOOLEAN> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#MisUse> "Should not be used as a replacement for naively modelled enumerated types such as male/female etc... Such values whould be coded, and in any case the enumeration often has more than two values."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_BOOLEAN> <http://www.w3.org/2000/01/rdf-schema#label> "BOOLEAN"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_BOOLEAN> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DATA_VALUE> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_BOOLEAN> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1277 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1278 .
+_:AX5fXX3aXX40XX5fXX3aXA1277 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_COUNT> .
+_:AX5fXX3aXX40XX5fXX3aXA1338 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "11"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1338 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1339 .
+_:AX5fXX3aXX40XX5fXX3aXA1126 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1126 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1126 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#match> .
+_:AX5fXX3aXX40XX5fXX3aXA1374 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "47"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1374 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1375 .
+_:AX5fXX3aXX40XX5fXX3aXA1435 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "13"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1435 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1436 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#integrity_check> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#integrity_check> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#integrity_check> <http://www.w3.org/2000/01/rdf-schema#label> "chequeo de integridad"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#integrity_check> <http://www.w3.org/2000/01/rdf-schema#label> "integrity check"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#LIST_DV_TEXT> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#LIST_DV_TEXT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#LIST_T> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#LIST_DV_TEXT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1221 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#organiser_id> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#organiser_id> <http://www.w3.org/2000/01/rdf-schema#label> "organiser_id"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#organiser_id> <http://www.w3.org/2000/01/rdf-schema#label> "id de organizador"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#organiser_id> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA1162 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDERED> .
+_:AX5fXX3aXX40XX5fXX3aXA1162 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1163 .
+_:AX5fXX3aXX40XX5fXX3aXA1223 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1223 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1223 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#hour> .
+_:AX5fXX3aXX40XX5fXX3aXA1471 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "49"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1471 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1472 .
+_:AX5fXX3aXX40XX5fXX3aXA1532 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1532 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#LIST_REFERENCE_RANGE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#LIST_T> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#LIST_REFERENCE_RANGE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1151 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#LIST_REFERENCE_RANGE> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1320 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1321 .
+_:AX5fXX3aXX40XX5fXX3aXA1320 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1278 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY> .
+_:AX5fXX3aXX40XX5fXX3aXA1278 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1279 .
+_:AX5fXX3aXX40XX5fXX3aXA1339 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "12"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1339 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1340 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#accuracy_is_percent> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#accuracy_is_percent> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#boolean> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#accuracy_is_percent> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTIFIED> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CUSTOMARY_QUANTITY> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Abstract parent class of quantity types which are expressed in a form other than the estandrad scientific"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CUSTOMARY_QUANTITY> <http://www.w3.org/2000/01/rdf-schema#label> "CANTIDAD PERSONALIZADA"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CUSTOMARY_QUANTITY> <http://www.w3.org/2000/01/rdf-schema#label> "CUSTOMARY QUANTITY"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CUSTOMARY_QUANTITY> <http://www.w3.org/2002/07/owl#equivalentClass> _:AX5fXX3aXX40XX5fXX3aXA1144 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CUSTOMARY_QUANTITY> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CUSTOMARY_QUANTITY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MEASURABLE> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CUSTOMARY_QUANTITY> <http://protege.stanford.edu/plugins/owl/protege#abstract> "true"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1127 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#purpose> .
+_:AX5fXX3aXX40XX5fXX3aXA1127 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1127 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1375 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1376 .
+_:AX5fXX3aXX40XX5fXX3aXA1375 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "48"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1436 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "14"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1436 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1437 .
+_:AX5fXX3aXX40XX5fXX3aXA1163 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1164 .
+_:AX5fXX3aXX40XX5fXX3aXA1163 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_T> .
+_:AX5fXX3aXX40XX5fXX3aXA1224 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1224 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1224 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#day> .
+_:AX5fXX3aXX40XX5fXX3aXA1472 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1473 .
+_:AX5fXX3aXX40XX5fXX3aXA1472 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "50"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1260 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1260 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1260 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#reference_ranges> .
+_:AX5fXX3aXX40XX5fXX3aXA1321 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDERED> .
+_:AX5fXX3aXX40XX5fXX3aXA1321 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1279 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1279 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTIFIED> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARTIAL_DATE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1176 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARTIAL_DATE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARTIAL_DATE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Used for approximate birth dates, dates of death, etc..."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARTIAL_DATE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Represents a partially known date. All partial dates have an unknown day,\nby definition, else they would be represented as normal dates. The mont_known\nflag indicates whether the month is also unknown"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARTIAL_DATE> <http://www.w3.org/2000/01/rdf-schema#label> "PARTIAL DATE"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARTIAL_DATE> <http://www.w3.org/2000/01/rdf-schema#label> "FECHA PARCIAL"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARTIAL_DATE> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARTIAL_DATE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> "STR 3.8"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARTIAL_DATE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> "DateTime.FromDate"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1128 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1128 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#target> .
+_:AX5fXX3aXX40XX5fXX3aXA1128 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1376 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "49"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1376 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1377 .
+_:AX5fXX3aXX40XX5fXX3aXA1437 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1438 .
+_:AX5fXX3aXX40XX5fXX3aXA1437 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "15"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1164 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_BOOLEAN> .
+_:AX5fXX3aXX40XX5fXX3aXA1164 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1165 .
+_:AX5fXX3aXX40XX5fXX3aXA1225 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> .
+_:AX5fXX3aXX40XX5fXX3aXA1225 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1225 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#diff_type> .
+_:AX5fXX3aXX40XX5fXX3aXA1473 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "51"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1473 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1474 .
+_:AX5fXX3aXX40XX5fXX3aXA1261 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1261 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1262 .
+_:AX5fXX3aXX40XX5fXX3aXA1322 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1323 .
+_:AX5fXX3aXX40XX5fXX3aXA1322 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDINAL> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDERED> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDINAL> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1253 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDINAL> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "QTY"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDINAL> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> "STR 3.2"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDINAL> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1252 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDINAL> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "for recording any clinical datum which is customarily recorded using symbolic values. e.g. the results on a urinalysis strip ^neg, trace, +, ++,++++ are used for leucocytes, protein, nitrites etc..."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDINAL> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDINAL> <http://www.w3.org/2000/01/rdf-schema#label> "ORDINAL"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDINAL> <http://www.w3.org/2000/01/rdf-schema#label> "ORDINAL"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDINAL> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Models rankings and scores, e.g. pain, Apgar values, etc"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1129 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1129 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#is_terminal> .
+_:AX5fXX3aXX40XX5fXX3aXA1129 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1377 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1378 .
+_:AX5fXX3aXX40XX5fXX3aXA1377 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "50"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1438 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1439 .
+_:AX5fXX3aXX40XX5fXX3aXA1438 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "16"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#language> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#language> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1283 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#language> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#CODE_PHRASE> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#language> <http://www.w3.org/2000/01/rdf-schema#label> "idioma"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#language> <http://www.w3.org/2000/01/rdf-schema#label> "language"@en .
+_:AX5fXX3aXX40XX5fXX3aXA1165 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1166 .
+_:AX5fXX3aXX40XX5fXX3aXA1165 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ENCAPSULATED> .
+_:AX5fXX3aXX40XX5fXX3aXA1226 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1226 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#second> .
+_:AX5fXX3aXX40XX5fXX3aXA1226 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1474 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1475 .
+_:AX5fXX3aXX40XX5fXX3aXA1474 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "52"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_DV_DATE_TIME> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_DV_DATE_TIME> <http://www.w3.org/2000/01/rdf-schema#label> "INTERVAL DATE TIME"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_DV_DATE_TIME> <http://www.w3.org/2000/01/rdf-schema#label> "INTERVALO DE FECHA Y HORA"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_DV_DATE_TIME> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1204 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_DV_DATE_TIME> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_T> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_DV_DATE_TIME> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1203 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#days> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#days> <http://www.w3.org/2000/01/rdf-schema#label> ""@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#days> <http://www.w3.org/2000/01/rdf-schema#label> "days"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#days> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#days> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> .
+_:AX5fXX3aXX40XX5fXX3aXA1262 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTIFIED> .
+_:AX5fXX3aXX40XX5fXX3aXA1262 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1263 .
+_:AX5fXX3aXX40XX5fXX3aXA1323 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1323 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDERED> .
+_:AX5fXX3aXX40XX5fXX3aXA1420 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1421 .
+_:AX5fXX3aXX40XX5fXX3aXA1420 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> .
+_:AX5fXX3aXX40XX5fXX3aXA1439 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "17"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1439 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1440 .
+_:AX5fXX3aXX40XX5fXX3aXA1378 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1379 .
+_:AX5fXX3aXX40XX5fXX3aXA1378 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "51"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#match> <http://www.w3.org/2000/01/rdf-schema#comment> "The relative match of the target term with respect to the mapped text item. Result meanings\n+1: mapping is to a broader ter\n0: mapping is to a equivalent to the original item\n-1:the mapping is to a narrower term"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#match> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#match> <http://www.w3.org/2000/01/rdf-schema#range> _:AX5fXX3aXX40XX5fXX3aXA1495 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#match> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#TERM_MAPPING> .
+_:AX5fXX3aXX40XX5fXX3aXA1166 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> .
+_:AX5fXX3aXX40XX5fXX3aXA1166 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1167 .
+_:AX5fXX3aXX40XX5fXX3aXA1227 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#magnitude> .
+_:AX5fXX3aXX40XX5fXX3aXA1227 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1227 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1475 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1476 .
+_:AX5fXX3aXX40XX5fXX3aXA1475 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "53"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1263 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDINAL> .
+_:AX5fXX3aXX40XX5fXX3aXA1263 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1324 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1324 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1325 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#formalism> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARSABLE> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#formalism> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#formalism> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#formalism> <http://www.w3.org/2000/01/rdf-schema#label> "formato"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#formalism> <http://www.w3.org/2000/01/rdf-schema#label> "formalism"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_STATE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1131 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_STATE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "The component Annotation Life Cycle was intended to permit architectural components to include a reference to this aspect of state."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_STATE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DATA_VALUE> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_STATE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "For representing state values which obey a defined state machine, such as a variable representing the states of an instruction or care process"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_STATE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1129 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_STATE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1130 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_STATE> <http://www.w3.org/2000/01/rdf-schema#label> "STATE"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_STATE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> "The element class includes an attribute LifeCycle to indicate the lifecycle of an instruction or action, with permitted values taken from the ENV13606-2 Domain Termlist Component Annotation of the same name"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_STATE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Is expressed as a string but its values are driven by archetype-defined state machines. This provides a powerful way of capturing stateful complex processes in simple data"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_STATE> <http://www.w3.org/2000/01/rdf-schema#label> "ESTADO"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_STATE> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1360 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "33"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1360 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1361 .
+_:AX5fXX3aXX40XX5fXX3aXA1421 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME> .
+_:AX5fXX3aXX40XX5fXX3aXA1421 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1379 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "52"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1379 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1380 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1234 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_MULTIMEDIA_DATA"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> "STR 3.1"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "A specialisation of DV_ENCAPSULATED for audiviosual and biosignal \ntypes. Includes further metadata relating to multimedia types which are\nnot applicalbe ot other subtypes of DV_ENCAPSULATED"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1239 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1240 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1241 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> "The Bulky Data class provides for the representation and storage of all binary data classified by its MIME type"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1235 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1237 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1236 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> <http://www.w3.org/2000/01/rdf-schema#label> "MULTIMEDIA"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> <http://www.w3.org/2000/01/rdf-schema#label> "MULTIMEDIA"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1238 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1242 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "ED"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ENCAPSULATED> .
+_:AX5fXX3aXX40XX5fXX3aXA1167 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1168 .
+_:AX5fXX3aXX40XX5fXX3aXA1167 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_URI> .
+_:AX5fXX3aXX40XX5fXX3aXA1228 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1228 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1228 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#fractional_second> .
+_:AX5fXX3aXX40XX5fXX3aXA1476 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1477 .
+_:AX5fXX3aXX40XX5fXX3aXA1476 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "54"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#meaning> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#REFERENCE_RANGE_T> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#meaning> <http://www.w3.org/2000/01/rdf-schema#comment> "Term whose value indicates the meaning of this range (normal, critical, therapeutic...)"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#meaning> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#meaning> <http://www.w3.org/2000/01/rdf-schema#label> "significado"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#meaning> <http://www.w3.org/2000/01/rdf-schema#label> "meaning"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#meaning> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> .
+_:AX5fXX3aXX40XX5fXX3aXA1264 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1264 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#range> .
+_:AX5fXX3aXX40XX5fXX3aXA1264 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#denominator> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY_RATIO> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#denominator> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTIFIED> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#denominator> <http://www.w3.org/2000/01/rdf-schema#label> "denominador"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#denominator> <http://www.w3.org/2000/01/rdf-schema#label> "denominator"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#denominator> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA1325 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> .
+_:AX5fXX3aXX40XX5fXX3aXA1325 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1326 .
+_:AX5fXX3aXX40XX5fXX3aXA1361 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1362 .
+_:AX5fXX3aXX40XX5fXX3aXA1361 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "34"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1422 <http://www.w3.org/2002/07/owl#oneOf> _:AX5fXX3aXX40XX5fXX3aXA1423 .
+_:AX5fXX3aXX40XX5fXX3aXA1422 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DataRange> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#magnitude> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1408 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#magnitude> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#magnitude> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#double> .
+_:AX5fXX3aXX40XX5fXX3aXA1210 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1211 .
+_:AX5fXX3aXX40XX5fXX3aXA1210 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#hours> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#integer> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#hours> <http://www.w3.org/2000/01/rdf-schema#label> "horas"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#hours> <http://www.w3.org/2000/01/rdf-schema#label> "hours"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#hours> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#hours> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> .
+_:AX5fXX3aXX40XX5fXX3aXA1168 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME_SPECIFICATION> .
+_:AX5fXX3aXX40XX5fXX3aXA1168 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1169 .
+_:AX5fXX3aXX40XX5fXX3aXA1229 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1229 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1229 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#minute> .
+_:AX5fXX3aXX40XX5fXX3aXA1477 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "55"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1477 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1478 .
+_:AX5fXX3aXX40XX5fXX3aXA1265 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1265 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1265 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#meaning> .
+_:AX5fXX3aXX40XX5fXX3aXA1326 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME> .
+_:AX5fXX3aXX40XX5fXX3aXA1326 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1362 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "35"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1362 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1363 .
+_:AX5fXX3aXX40XX5fXX3aXA1423 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1423 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1424 .
+_:AX5fXX3aXX40XX5fXX3aXA1150 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1150 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#value> .
+_:AX5fXX3aXX40XX5fXX3aXA1150 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#STRING> .
+_:AX5fXX3aXX40XX5fXX3aXA1211 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1212 .
+_:AX5fXX3aXX40XX5fXX3aXA1211 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> .
+_:AX5fXX3aXX40XX5fXX3aXA1169 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1170 .
+_:AX5fXX3aXX40XX5fXX3aXA1169 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PHYSICAL_DATA> .
+_:AX5fXX3aXX40XX5fXX3aXA1520 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1521 .
+_:AX5fXX3aXX40XX5fXX3aXA1520 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "18"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1478 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1479 .
+_:AX5fXX3aXX40XX5fXX3aXA1478 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "56"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#composition_id> <http://www.w3.org/2000/01/rdf-schema#label> "id de transaccion"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#composition_id> <http://www.w3.org/2000/01/rdf-schema#label> "transaction id"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#composition_id> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_EHR_URI> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#composition_id> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#composition_id> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA1266 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#lower> .
+_:AX5fXX3aXX40XX5fXX3aXA1266 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1266 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDERED> .
+_:AX5fXX3aXX40XX5fXX3aXA1327 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DataRange> .
+_:AX5fXX3aXX40XX5fXX3aXA1327 <http://www.w3.org/2002/07/owl#oneOf> _:AX5fXX3aXX40XX5fXX3aXA1328 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#minute> <http://www.w3.org/2000/01/rdf-schema#range> _:AX5fXX3aXX40XX5fXX3aXA1422 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#minute> <http://www.w3.org/2000/01/rdf-schema#label> "minuto"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#minute> <http://www.w3.org/2000/01/rdf-schema#label> "minute"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#minute> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1419 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#minute> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA1363 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1364 .
+_:AX5fXX3aXX40XX5fXX3aXA1363 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "36"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1424 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1425 .
+_:AX5fXX3aXX40XX5fXX3aXA1424 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "2"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#target_is_entry> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#target_is_entry> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#boolean> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#target_is_entry> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_EHR_URI> .
+_:AX5fXX3aXX40XX5fXX3aXA1460 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1461 .
+_:AX5fXX3aXX40XX5fXX3aXA1460 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "38"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1151 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#REFERENCE_RANGE_T> .
+_:AX5fXX3aXX40XX5fXX3aXA1151 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#item> .
+_:AX5fXX3aXX40XX5fXX3aXA1151 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1212 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1212 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARSABLE> .
+_:AX5fXX3aXX40XX5fXX3aXA1521 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1522 .
+_:AX5fXX3aXX40XX5fXX3aXA1521 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "19"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#alternate_text> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#alternate_text> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#alternate_text> <http://www.w3.org/2000/01/rdf-schema#label> "texto alternativo"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#alternate_text> <http://www.w3.org/2000/01/rdf-schema#label> "alternate text"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#alternate_text> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#fractional_second> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1404 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#fractional_second> <http://www.w3.org/2000/01/rdf-schema#label> "fractional second"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#fractional_second> <http://www.w3.org/2000/01/rdf-schema#label> "fraccion de segundo"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#fractional_second> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#fractional_second> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#double> .
+_:AX5fXX3aXX40XX5fXX3aXA1479 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1480 .
+_:AX5fXX3aXX40XX5fXX3aXA1479 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "57"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1267 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#upper> .
+_:AX5fXX3aXX40XX5fXX3aXA1267 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1267 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDERED> .
+_:AX5fXX3aXX40XX5fXX3aXA1328 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "1"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1328 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1329 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#calendar_alignment> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#calendar_alignment> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1414 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#calendar_alignment> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA1364 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1365 .
+_:AX5fXX3aXX40XX5fXX3aXA1364 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "37"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1425 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1426 .
+_:AX5fXX3aXX40XX5fXX3aXA1425 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "3"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#mappings> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#mappings> <http://www.w3.org/2000/01/rdf-schema#label> "mappings"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#mappings> <http://www.w3.org/2000/01/rdf-schema#label> "mapeos"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#mappings> <http://www.w3.org/2000/01/rdf-schema#comment> "terms from other terminologis most closely matching this term, typically used where the originator of information uses a local terminology but also supplies one or more equivalents from well-know terminologies"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#mappings> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#LIST_TERM_MAPPING> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#mappings> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY_RATIO> <http://www.w3.org/2000/01/rdf-schema#label> "RAZON DE CANTIDADES"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY_RATIO> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Models a ratio of quantities"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY_RATIO> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Used for recording specified administration dosages (e.g. 5mg/100ml),\ndrug amounts based on body weight (e.g. 1 tabledt/10kg),\nand titers (e.g. 1:128)\nNote that the units representation in sigle QUANTITYs caters for any ratio\nin which the units are expressible in unitary form.\nSo a QUANTITY_RATIO of 2g/250ml could be expressed as a \nQUANTITY of 8g/l"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY_RATIO> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#OMGHDTF> "COAS::Ratio"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY_RATIO> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1132 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY_RATIO> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY_RATIO> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1133 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY_RATIO> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#MisUse> "Should not be used to represent thigs like blood pressure\nwhich are often written using a '/' character, giving the misleading\nimpression that the item is a ratio, when in fact it is a structured value."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY_RATIO> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_QUANTITY_RATIO"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY_RATIO> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "Ratio (RTO)"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY_RATIO> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DATA_VALUE> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY_RATIO> <http://www.w3.org/2000/01/rdf-schema#label> "QUANTITY RATIO"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY_RATIO> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> "STR 3.6"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY_RATIO> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> "Numeric"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1152 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#language> .
+_:AX5fXX3aXX40XX5fXX3aXA1152 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1152 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#CODE_PHRASE> .
+_:AX5fXX3aXX40XX5fXX3aXA1213 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#value> .
+_:AX5fXX3aXX40XX5fXX3aXA1213 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1213 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#STRING> .
+_:AX5fXX3aXX40XX5fXX3aXA1461 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "39"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1461 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1462 .
+_:AX5fXX3aXX40XX5fXX3aXA1522 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1523 .
+_:AX5fXX3aXX40XX5fXX3aXA1522 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "20"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1310 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "25"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1310 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1311 .
+_:AX5fXX3aXX40XX5fXX3aXA1268 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1268 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1269 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#REFERENCE_RANGE_T> <http://www.w3.org/2000/01/rdf-schema#label> "RANGO DE REFERENCIA"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#REFERENCE_RANGE_T> <http://www.w3.org/2000/01/rdf-schema#label> "REFERENCE RANGE"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#REFERENCE_RANGE_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1265 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#REFERENCE_RANGE_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1264 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#REFERENCE_RANGE_T> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Defines a named range to be associate with any ORDERED datum Each such range is particular to the patient and context, and any other factor which affects ranges "^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#REFERENCE_RANGE_T> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "May be used to represent normal, therapeutic, dangerous, critical etc ranges"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#REFERENCE_RANGE_T> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> "STR 3.13"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#REFERENCE_RANGE_T> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1329 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1330 .
+_:AX5fXX3aXX40XX5fXX3aXA1329 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "2"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1365 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "38"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1365 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1366 .
+_:AX5fXX3aXX40XX5fXX3aXA1426 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "4"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1426 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1427 .
+_:AX5fXX3aXX40XX5fXX3aXA1153 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#hyperlink> .
+_:AX5fXX3aXX40XX5fXX3aXA1153 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1153 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1523 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "21"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1523 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1524 .
+_:AX5fXX3aXX40XX5fXX3aXA1214 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1214 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1214 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#value> .
+_:AX5fXX3aXX40XX5fXX3aXA1462 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1463 .
+_:AX5fXX3aXX40XX5fXX3aXA1462 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "40"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#charset> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#charset> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#CODE_PHRASE> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#charset> <http://www.w3.org/2000/01/rdf-schema#label> "charset"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#charset> <http://www.w3.org/2000/01/rdf-schema#label> ""@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#charset> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1273 .
+_:AX5fXX3aXX40XX5fXX3aXA1250 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME> .
+_:AX5fXX3aXX40XX5fXX3aXA1250 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1311 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1312 .
+_:AX5fXX3aXX40XX5fXX3aXA1311 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "26"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1269 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#TERM_MAPPING> .
+_:AX5fXX3aXX40XX5fXX3aXA1269 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1270 .
+_:AX5fXX3aXX40XX5fXX3aXA1366 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1367 .
+_:AX5fXX3aXX40XX5fXX3aXA1366 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "39"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1427 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1428 .
+_:AX5fXX3aXX40XX5fXX3aXA1427 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "5"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1154 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1154 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1154 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#language> .
+_:AX5fXX3aXX40XX5fXX3aXA1215 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1215 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#scheme> .
+_:AX5fXX3aXX40XX5fXX3aXA1215 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1463 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "41"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1463 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1464 .
+_:AX5fXX3aXX40XX5fXX3aXA1524 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "22"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1524 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1525 .
+_:AX5fXX3aXX40XX5fXX3aXA1190 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1190 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#target_is_composition> .
+_:AX5fXX3aXX40XX5fXX3aXA1190 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1251 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1251 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#timezone> .
+_:AX5fXX3aXX40XX5fXX3aXA1251 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1312 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1313 .
+_:AX5fXX3aXX40XX5fXX3aXA1312 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "27"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_COUNT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1220 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_COUNT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1219 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_COUNT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTIFIED> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_COUNT> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_COUNT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "INT"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_COUNT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> "STR 3.2-3.4"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_COUNT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#MisUse> "Not used for amounts of physical entities (which all have units)"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_COUNT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Countable quantities"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_COUNT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Used for countable types such as pregnancies and steps (taken by a physiotherapy patient), number of cigarettes smoded in a day"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1367 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1368 .
+_:AX5fXX3aXX40XX5fXX3aXA1367 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "40"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1428 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "6"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1428 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1429 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DATA_VALUE> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_T> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_T> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> "STR 3.13"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_T> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_QUANTITY_RANGE"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_T> <http://www.w3.org/2000/01/rdf-schema#label> "INTERVALO DE T"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1266 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_T> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Generic class defining an interval of a comparable type.\nan interval is a contiguous subrange of a comparable base type"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1267 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTERVAL_T> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_T> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> "QuantityRange+ability to specify if the range is incusive or exclusive separately of the maximun and minimum values"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_T> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "IVL<T:QTY>"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_T> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "Time Interval"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_T> <http://www.w3.org/2000/01/rdf-schema#label> "INTERVAL T"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_T> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Used to define intervals"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1155 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#value> .
+_:AX5fXX3aXX40XX5fXX3aXA1155 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1155 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1216 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#query> .
+_:AX5fXX3aXX40XX5fXX3aXA1216 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1216 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1464 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1465 .
+_:AX5fXX3aXX40XX5fXX3aXA1464 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "42"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1525 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1526 .
+_:AX5fXX3aXX40XX5fXX3aXA1525 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "23"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#media_type> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#media_type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#media_type> <http://www.w3.org/2000/01/rdf-schema#label> "media type"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#media_type> <http://www.w3.org/2000/01/rdf-schema#label> "tipo de medio"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#media_type> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#CODE_PHRASE> .
+_:AX5fXX3aXX40XX5fXX3aXA1313 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "28"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1313 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1314 .
+_:AX5fXX3aXX40XX5fXX3aXA1191 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1191 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1191 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#entry_id> .
+_:AX5fXX3aXX40XX5fXX3aXA1252 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#value> .
+_:AX5fXX3aXX40XX5fXX3aXA1252 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1252 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl> <http://www.w3.org/2002/07/owl#imports> <http://protege.stanford.edu/plugins/owl/protege> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl> <http://www.w3.org/2002/07/owl#imports> <http://trajano.us.es/~isabel/EHR/Support_RM.owl> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl> <http://www.w3.org/2000/01/rdf-schema#comment> "The openEHR Data Types Reference Model\nBased on the Revision 1.7.3\nWritten in OWL by Isabel Rom\u00E1n\nNovember 2003"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Ontology> .
+_:AX5fXX3aXX40XX5fXX3aXA1410 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1411 .
+_:AX5fXX3aXX40XX5fXX3aXA1410 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY> .
+_:AX5fXX3aXX40XX5fXX3aXA1368 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "41"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1368 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1369 .
+_:AX5fXX3aXX40XX5fXX3aXA1429 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "7"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1429 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1430 .
+_:AX5fXX3aXX40XX5fXX3aXA1156 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1156 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#mappings> .
+_:AX5fXX3aXX40XX5fXX3aXA1156 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1217 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#fragment_id> .
+_:AX5fXX3aXX40XX5fXX3aXA1217 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1217 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1465 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "43"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1465 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1466 .
+_:AX5fXX3aXX40XX5fXX3aXA1526 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1526 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "24"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1192 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1192 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#composition_id> .
+_:AX5fXX3aXX40XX5fXX3aXA1192 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1253 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#value> .
+_:AX5fXX3aXX40XX5fXX3aXA1253 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1253 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1314 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "29"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1314 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1315 .
+_:AX5fXX3aXX40XX5fXX3aXA1350 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1351 .
+_:AX5fXX3aXX40XX5fXX3aXA1350 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "23"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1411 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1411 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTIFIED> .
+_:AX5fXX3aXX40XX5fXX3aXA1369 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "42"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1369 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1370 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#numerator> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTIFIED> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#numerator> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY_RATIO> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#numerator> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#numerator> <http://www.w3.org/2000/01/rdf-schema#label> "numerator"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#numerator> <http://www.w3.org/2000/01/rdf-schema#label> "numerador"@es .
+_:AX5fXX3aXX40XX5fXX3aXA1157 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#formatting> .
+_:AX5fXX3aXX40XX5fXX3aXA1157 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1157 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1218 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1218 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1218 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#path> .
+_:AX5fXX3aXX40XX5fXX3aXA1466 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1467 .
+_:AX5fXX3aXX40XX5fXX3aXA1466 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "44"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1527 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1527 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1528 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#sign> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#sign> <http://www.w3.org/2000/01/rdf-schema#comment> "direction of duration with respect to a notional reference point"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#sign> <http://www.w3.org/2000/01/rdf-schema#label> "sentido"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#sign> <http://www.w3.org/2000/01/rdf-schema#label> "sign"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#sign> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#integer> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#sign> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> .
+_:AX5fXX3aXX40XX5fXX3aXA1193 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1193 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#target_is_transaction> .
+_:AX5fXX3aXX40XX5fXX3aXA1193 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1254 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1254 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1254 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#magnitude> .
+_:AX5fXX3aXX40XX5fXX3aXA1315 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1316 .
+_:AX5fXX3aXX40XX5fXX3aXA1315 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "30"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1290 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1291 .
+_:AX5fXX3aXX40XX5fXX3aXA1290 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "4"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1351 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "24"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1351 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1352 .
+_:AX5fXX3aXX40XX5fXX3aXA1412 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1413 .
+_:AX5fXX3aXX40XX5fXX3aXA1412 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#units> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#units> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#units> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1530 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#units> <http://www.w3.org/2000/01/rdf-schema#comment> "stringified units, expressed in UCUM unit syntax, e.g. dg/m2, km/h..."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#units> <http://www.w3.org/2000/01/rdf-schema#label> "unidades"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#units> <http://www.w3.org/2000/01/rdf-schema#label> "units"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#timezone> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#timezone> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1271 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#timezone> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#timezone> <http://www.w3.org/2000/01/rdf-schema#comment> "offset from Universal Coordinated Time, in the range -1200 +1200"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1200 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1200 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#day> .
+_:AX5fXX3aXX40XX5fXX3aXA1200 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1158 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#charset> .
+_:AX5fXX3aXX40XX5fXX3aXA1158 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1158 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1219 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1219 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#magnitude> .
+_:AX5fXX3aXX40XX5fXX3aXA1219 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1467 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "45"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1467 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1468 .
+_:AX5fXX3aXX40XX5fXX3aXA1528 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1529 .
+_:AX5fXX3aXX40XX5fXX3aXA1528 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> .
+_:AX5fXX3aXX40XX5fXX3aXA1194 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1194 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1194 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#ehr_id> .
+_:AX5fXX3aXX40XX5fXX3aXA1255 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1255 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1255 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#precision> .
+_:AX5fXX3aXX40XX5fXX3aXA1316 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1316 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "31"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTIFIED> <http://protege.stanford.edu/plugins/owl/protege#abstract> "true"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTIFIED> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1183 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTIFIED> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Abstract class defining the concept  of true quantified\nvalues, e.e. values which are not only ordered, but whose \nmagnitude is meaningful as well. The defining characteristic of the\ntype is the attribute property - what is being quantified, and that the \ndifference operation is defined."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTIFIED> <http://www.w3.org/2000/01/rdf-schema#label> "QUANTIFIED"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTIFIED> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1184 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTIFIED> <http://www.w3.org/2002/07/owl#equivalentClass> _:AX5fXX3aXX40XX5fXX3aXA1185 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTIFIED> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTIFIED> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1182 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTIFIED> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDERED> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTIFIED> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> "Attributes in the Quantity class for unit and accuracy"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTIFIED> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#OMGHDTF> "COAS::Measurement"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTIFIED> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "QTY"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTIFIED> <http://www.w3.org/2000/01/rdf-schema#label> "CUANTIFICADO"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTIFIED> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "unit exists as ann attribute of the measurement data value class, but there is no representation of accuracy"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1291 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "5"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1291 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1292 .
+_:AX5fXX3aXX40XX5fXX3aXA1352 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1353 .
+_:AX5fXX3aXX40XX5fXX3aXA1352 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "25"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1413 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME_SPECIFICATION> .
+_:AX5fXX3aXX40XX5fXX3aXA1413 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1510 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1511 .
+_:AX5fXX3aXX40XX5fXX3aXA1510 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "8"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1140 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#days> .
+_:AX5fXX3aXX40XX5fXX3aXA1140 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1140 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#minute_known> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#boolean> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#minute_known> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_PARTIAL_TIME> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#minute_known> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#minute_known> <http://www.w3.org/2000/01/rdf-schema#label> "minute known"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#minute_known> <http://www.w3.org/2000/01/rdf-schema#label> "minuto conocido"@es .
+_:AX5fXX3aXX40XX5fXX3aXA1201 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#upper> .
+_:AX5fXX3aXX40XX5fXX3aXA1201 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE> .
+_:AX5fXX3aXX40XX5fXX3aXA1201 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1159 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#value> .
+_:AX5fXX3aXX40XX5fXX3aXA1159 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1159 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "PhysicalQuantity (PQ)"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY> <http://www.w3.org/2000/01/rdf-schema#label> "QUANTITY"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> "STR 3.2-3.4"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1259 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Can be used for time durations, where it is more convenient to treat these\nas simply a number of seconds rather than days, months, years."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> "Quantity"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_QUANTITY"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY> <http://www.w3.org/2000/01/rdf-schema#label> "CANTIDAD"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#OMGHDTF> "COAS::Numeric"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MEASURABLE> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1254 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1258 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Concrete type representing scientific quantities, i.e. quentities expressed\nas a single value and a single, optional units."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "Quantifiable Data Item; Measurement data value class"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1256 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1257 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1255 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#integrity_check_algorithm> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#integrity_check_algorithm> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#CODE_PHRASE> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#integrity_check_algorithm> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#integrity_check_algorithm> <http://www.w3.org/2000/01/rdf-schema#label> "integrity check algorithm"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#integrity_check_algorithm> <http://www.w3.org/2000/01/rdf-schema#label> "chequeo de comprobacion de integridad"@es .
+_:AX5fXX3aXX40XX5fXX3aXA1468 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1469 .
+_:AX5fXX3aXX40XX5fXX3aXA1468 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "46"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1529 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1529 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME> .
+_:AX5fXX3aXX40XX5fXX3aXA1317 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1317 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1318 .
+_:AX5fXX3aXX40XX5fXX3aXA1195 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1195 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1195 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#organiser_id> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#is_terminal> <http://www.w3.org/2000/01/rdf-schema#label> "es terminal"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#is_terminal> <http://www.w3.org/2000/01/rdf-schema#label> "is terminal"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#is_terminal> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#is_terminal> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_STATE> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#is_terminal> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#boolean> .
+_:AX5fXX3aXX40XX5fXX3aXA1256 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1256 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1256 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#units> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#TERM_MAPPING> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#TERM_MAPPING> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1128 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#TERM_MAPPING> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1127 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#TERM_MAPPING> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1126 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#TERM_MAPPING> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> "STR 4.5"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#TERM_MAPPING> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Used for adding classification terms, or mapping into equivalents in other terminologies"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#TERM_MAPPING> <http://www.w3.org/2000/01/rdf-schema#label> "TERM MAPPING"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#TERM_MAPPING> <http://www.w3.org/2000/01/rdf-schema#label> "TERMINO MAPEADO"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#TERM_MAPPING> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Represents a coded term mapped to a DV_TEXT. and the relative match of the target term with respect to the maped item."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#entry_id> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#entry_id> <http://www.w3.org/2000/01/rdf-schema#label> "entry id"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#entry_id> <http://www.w3.org/2000/01/rdf-schema#label> "id de entrada"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#entry_id> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#entry_id> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_EHR_URI> .
+_:AX5fXX3aXX40XX5fXX3aXA1292 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1293 .
+_:AX5fXX3aXX40XX5fXX3aXA1292 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "6"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1353 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1354 .
+_:AX5fXX3aXX40XX5fXX3aXA1353 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "26"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_GENERAL_TIME_SPECIFICATION> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_GENERAL_TIME_SPECIFICATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME_SPECIFICATION> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_GENERAL_TIME_SPECIFICATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "The Duration data value class provides for the specification of time intervals, and also for a simple string description of the priodicity"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_GENERAL_TIME_SPECIFICATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> "STR 3.9"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_GENERAL_TIME_SPECIFICATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "GTS"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_GENERAL_TIME_SPECIFICATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Specifies points in time in a general syntax. Based on the HL7v3 \nGTS data type"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_GENERAL_TIME_SPECIFICATION> <http://www.w3.org/2000/01/rdf-schema#label> "GENERAL TIME SPECIFICATION"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_GENERAL_TIME_SPECIFICATION> <http://www.w3.org/2000/01/rdf-schema#label> "ESPECIFICACION GENERAL DE TIEMPO"@es .
+_:AX5fXX3aXX40XX5fXX3aXA1414 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1415 .
+_:AX5fXX3aXX40XX5fXX3aXA1414 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1141 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#seconds> .
+_:AX5fXX3aXX40XX5fXX3aXA1141 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1141 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1202 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE> .
+_:AX5fXX3aXX40XX5fXX3aXA1202 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#lower> .
+_:AX5fXX3aXX40XX5fXX3aXA1202 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1450 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1451 .
+_:AX5fXX3aXX40XX5fXX3aXA1450 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "28"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1511 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "9"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1511 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1512 .
+_:AX5fXX3aXX40XX5fXX3aXA1469 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "47"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1469 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1470 .
+_:AX5fXX3aXX40XX5fXX3aXA1196 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1196 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1196 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#year> .
+_:AX5fXX3aXX40XX5fXX3aXA1257 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#NUMERIC> .
+_:AX5fXX3aXX40XX5fXX3aXA1257 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1257 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#value> .
+_:AX5fXX3aXX40XX5fXX3aXA1318 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1319 .
+_:AX5fXX3aXX40XX5fXX3aXA1318 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#hour> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#hour> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1527 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#hour> <http://www.w3.org/2000/01/rdf-schema#label> "hora"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#hour> <http://www.w3.org/2000/01/rdf-schema#label> "hour"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#hour> <http://www.w3.org/2000/01/rdf-schema#range> _:AX5fXX3aXX40XX5fXX3aXA1502 .
+_:AX5fXX3aXX40XX5fXX3aXA1293 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "7"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1293 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1294 .
+_:AX5fXX3aXX40XX5fXX3aXA1354 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "27"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1354 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1355 .
+_:AX5fXX3aXX40XX5fXX3aXA1415 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1415 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TIME_SPECIFICATION> .
+_:AX5fXX3aXX40XX5fXX3aXA1390 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1391 .
+_:AX5fXX3aXX40XX5fXX3aXA1390 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "2"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1137 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CUSTOMARY_QUANTITY> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1134 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> <http://www.w3.org/2000/01/rdf-schema#label> "DURATION"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1140 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1135 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1138 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "IVL<TS>"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> "STR 3.10"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_DATE_TIME_DURATION"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1139 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Represents a period of time with respect to a notional point in time, \nwhich is not specified. A sign my be used to indicate the duration is\n'backwards' in time rather than forwards"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1141 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1136 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#MisUse> "Durations cannot be used to represent points in time, or intervals of time"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "Time Interval or Date Range or text description"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> <http://www.w3.org/2000/01/rdf-schema#label> "DURACION"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Used ofr recording the duration of something in the real world, particularly\nwhen there is a need:\nto represent the duration in customary format (days, hours, minutes...)\nif it will be used in computational operations with date/time quantities"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#compression_algorithm> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#CODE_PHRASE> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#compression_algorithm> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_MULTIMEDIA> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#compression_algorithm> <http://www.w3.org/2000/01/rdf-schema#label> "algoritmo de compresion"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#compression_algorithm> <http://www.w3.org/2000/01/rdf-schema#label> "compression algorithm"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#compression_algorithm> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA1142 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1142 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#terminology_id> .
+_:AX5fXX3aXX40XX5fXX3aXA1142 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1203 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> .
+_:AX5fXX3aXX40XX5fXX3aXA1203 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#lower> .
+_:AX5fXX3aXX40XX5fXX3aXA1203 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1451 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "29"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1451 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1452 .
+_:AX5fXX3aXX40XX5fXX3aXA1512 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1513 .
+_:AX5fXX3aXX40XX5fXX3aXA1512 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "10"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_CUSTOMARY_QUANTITY> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1197 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE> <http://www.w3.org/2000/01/rdf-schema#label> "FECHA"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE> <http://www.w3.org/2000/01/rdf-schema#label> "DATE"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1196 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_DATE"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1200 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Represents an absolute point in time, as measured on the Gregorian\ncalendar, and specified only to the day"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> "STR 3.7"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> "DTValue attribute of DateTime class"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1199 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Used ofr recording dates in real world time"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1198 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "TS"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "TOCD choice Quantifiable Observation Data Item"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1300 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1301 .
+_:AX5fXX3aXX40XX5fXX3aXA1300 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "15"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1197 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1197 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#diff_type> .
+_:AX5fXX3aXX40XX5fXX3aXA1197 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> .
+_:AX5fXX3aXX40XX5fXX3aXA1258 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1258 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1258 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#value> .
+_:AX5fXX3aXX40XX5fXX3aXA1319 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE> .
+_:AX5fXX3aXX40XX5fXX3aXA1319 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#diff_type> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1276 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#diff_type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA1294 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1295 .
+_:AX5fXX3aXX40XX5fXX3aXA1294 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "8"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#minutes> <http://www.w3.org/2000/01/rdf-schema#label> "minutos"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#minutes> <http://www.w3.org/2000/01/rdf-schema#label> "minutes"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#minutes> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#integer> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#minutes> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#minutes> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DURATION> .
+_:AX5fXX3aXX40XX5fXX3aXA1355 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "28"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1355 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1356 .
+_:AX5fXX3aXX40XX5fXX3aXA1416 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1417 .
+_:AX5fXX3aXX40XX5fXX3aXA1416 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1391 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1392 .
+_:AX5fXX3aXX40XX5fXX3aXA1391 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "3"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1143 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1143 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#items> .
+_:AX5fXX3aXX40XX5fXX3aXA1143 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#precision> <http://www.w3.org/2000/01/rdf-schema#comment> "precision to which the value of the quantity is expressed, in terms of number of significant figures. 0 implies no precision"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#precision> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#precision> <http://www.w3.org/2000/01/rdf-schema#label> "precision"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#precision> <http://www.w3.org/2000/01/rdf-schema#label> "precision"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#precision> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#precision> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#integer> .
+_:AX5fXX3aXX40XX5fXX3aXA1204 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> .
+_:AX5fXX3aXX40XX5fXX3aXA1204 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1204 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#upper> .
+_:AX5fXX3aXX40XX5fXX3aXA1452 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1453 .
+_:AX5fXX3aXX40XX5fXX3aXA1452 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "30"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1513 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "11"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1513 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1514 .
+_:AX5fXX3aXX40XX5fXX3aXA1240 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#data> .
+_:AX5fXX3aXX40XX5fXX3aXA1240 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1240 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1301 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1302 .
+_:AX5fXX3aXX40XX5fXX3aXA1301 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "16"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1198 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1198 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1198 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#month> .
+_:AX5fXX3aXX40XX5fXX3aXA1259 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1259 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#diff_type> .
+_:AX5fXX3aXX40XX5fXX3aXA1259 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_QUANTITY> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#second> <http://www.w3.org/2000/01/rdf-schema#range> _:AX5fXX3aXX40XX5fXX3aXA1327 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#second> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1324 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#second> <http://www.w3.org/2000/01/rdf-schema#label> "second"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#second> <http://www.w3.org/2000/01/rdf-schema#label> "segundo"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#second> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA1295 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "10"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1295 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1296 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#ehr_id> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_EHR_URI> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#ehr_id> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#ehr_id> <http://www.w3.org/2000/01/rdf-schema#label> "ehr_id"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#ehr_id> <http://www.w3.org/2000/01/rdf-schema#label> "id de ehr"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#ehr_id> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA1356 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1357 .
+_:AX5fXX3aXX40XX5fXX3aXA1356 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "29"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1417 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1418 .
+_:AX5fXX3aXX40XX5fXX3aXA1417 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#COORDINATED_TERM> .
+_:AX5fXX3aXX40XX5fXX3aXA1453 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1454 .
+_:AX5fXX3aXX40XX5fXX3aXA1453 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "31"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1144 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1145 .
+_:AX5fXX3aXX40XX5fXX3aXA1144 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1392 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1393 .
+_:AX5fXX3aXX40XX5fXX3aXA1392 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> "4"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1205 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1205 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#minute_known> .
+_:AX5fXX3aXX40XX5fXX3aXA1205 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_URI> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1216 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_URI> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1217 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_URI> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_URI> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1215 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_URI> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#OMGHDTF> "COAS::TechnologyInstanceLocator"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_URI> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DATA_VALUE> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_URI> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1214 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_URI> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "A reference to an object which conforms to the Universal Resource\nIdentifier (URI) standarad, as defined by W3C RFC 2936"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_URI> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "TBD"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_URI> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1218 .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_URI> <http://www.w3.org/2000/01/rdf-schema#label> "URI"@es .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_URI> <http://www.w3.org/2000/01/rdf-schema#label> "URI"@en .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_URI> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Enables external resources to be referenced from within the \ncontent of the EHR. A number of functions return the logical\nsubparts of the URI string"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_URI> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1213 .
Index: /ruby/tags/0.0.2/adl_parser/docs/Demographic_RM.ntriple
===================================================================
--- /ruby/tags/0.0.2/adl_parser/docs/Demographic_RM.ntriple	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/docs/Demographic_RM.ntriple	(revision 39)
@@ -0,0 +1,343 @@
+_:AX5fXX3aXX40XX5fXX3aXA1595 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1595 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1596 .
+_:AX5fXX3aXX40XX5fXX3aXA1569 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1569 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#target> .
+_:AX5fXX3aXX40XX5fXX3aXA1569 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#reverse_relationships> <http://www.w3.org/2002/07/owl#inverseOf> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#target> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#reverse_relationships> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#reverse_relationships> <http://www.w3.org/2000/01/rdf-schema#comment> "Relationships in which this role takes part as target"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#reverse_relationships> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_RELATIONSHIP> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#reverse_relationships> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#reverse_relationships> <http://www.w3.org/2000/01/rdf-schema#label> "target relationship"@en .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#reverse_relationships> <http://www.w3.org/2000/01/rdf-schema#label> "relacion como destino"@es .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ADDRESS> <http://www.w3.org/2000/01/rdf-schema#label> "DIRECCION"@es .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ADDRESS> <http://www.w3.org/2000/01/rdf-schema#label> "ADDRESS"@en .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ADDRESS> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ADDRESS> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "Address (AD) (data type)"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ADDRESS> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Address of contact, which may be electronic or geographic"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ADDRESS> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ADDRESS> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1562 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ADDRESS> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "Address (data type)"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1578 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#AGENT> .
+_:AX5fXX3aXX40XX5fXX3aXA1578 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1579 .
+_:AX5fXX3aXX40XX5fXX3aXA1607 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1608 .
+_:AX5fXX3aXX40XX5fXX3aXA1607 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_RELATIONSHIP> .
+_:AX5fXX3aXX40XX5fXX3aXA1587 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#addresses> .
+_:AX5fXX3aXX40XX5fXX3aXA1587 <http://www.w3.org/2002/07/owl#minCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1587 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#SET_PARTY_IDENTITY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1589 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#SET_PARTY_IDENTITY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#SET_T> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#SET_PARTY_IDENTITY> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ROLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1583 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ROLE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Generic description of  a role performed by an actor. The role \ncorresponds to a competency of the party. Roles are used to define \nthe responsibalities undertaken by a party for a purpose. \nRoles should have credential qualifying the performer to perform \nthe role."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ROLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1584 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ROLE> <http://www.w3.org/2000/01/rdf-schema#label> "ROL"@es .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ROLE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "Healthcare agent in context"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ROLE> <http://www.w3.org/2000/01/rdf-schema#label> "ROLE"@en .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ROLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ROLE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Roles correspond to concepts like \"general parctitioner\", \"nurse\" and so on"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ROLE> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ROLE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "ROLE"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1596 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1597 .
+_:AX5fXX3aXX40XX5fXX3aXA1596 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY> <http://protege.stanford.edu/plugins/owl/protege#abstract> "true"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1567 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY> <http://www.w3.org/2000/01/rdf-schema#label> "ENTIDAD"@es .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "healthcare agent"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1568 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY> <http://www.w3.org/2002/07/owl#equivalentClass> _:AX5fXX3aXX40XX5fXX3aXA1564 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "Entity"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY> <http://www.w3.org/2000/01/rdf-schema#label> "PARTY"@en .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Ancestor of all party types, including real world entities and their roles.\nA party is any entity which can participate in an activity. The meaning \nattribute inherited from LOCATABLE is used to indicate the actual type \nof party"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#roles> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ROLE> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#roles> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#roles> <http://www.w3.org/2000/01/rdf-schema#label> "roles"@en .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#roles> <http://www.w3.org/2000/01/rdf-schema#label> "roles"@es .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#roles> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ACTOR> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#roles> <http://www.w3.org/2000/01/rdf-schema#comment> "roles played by this party"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#AGENT> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#AGENT> <http://www.w3.org/2000/01/rdf-schema#label> "AGENTE"@es .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#AGENT> <http://www.w3.org/2000/01/rdf-schema#label> "AGENT"@en .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#AGENT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ACTOR> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#AGENT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "Healthcare software, healthcare device"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#AGENT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "DEVICE"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#AGENT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Generic concepto of any kind of agent including devices, software \nsystems, but not humas or organisations."^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1579 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ORGANISATION> .
+_:AX5fXX3aXX40XX5fXX3aXA1579 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1580 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#SET_PARTY_RELATIONSHIP> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1588 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#SET_PARTY_RELATIONSHIP> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#SET_T> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#SET_PARTY_RELATIONSHIP> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1588 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1588 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#item> .
+_:AX5fXX3aXX40XX5fXX3aXA1588 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_RELATIONSHIP> .
+_:AX5fXX3aXX40XX5fXX3aXA1608 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ROLE> .
+_:AX5fXX3aXX40XX5fXX3aXA1608 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1609 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#capabilities> <http://www.w3.org/2000/01/rdf-schema#label> "capabilities"@en .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#capabilities> <http://www.w3.org/2000/01/rdf-schema#label> "capacidades"@es .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#capabilities> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#capabilities> <http://www.w3.org/2000/01/rdf-schema#comment> "The capabilities of this role"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#capabilities> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#CAPABILITY> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#capabilities> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ROLE> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#addresses> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#addresses> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ADDRESS> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#addresses> <http://www.w3.org/2000/01/rdf-schema#comment> "A set of address alternatives for this purpose and time validity"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#addresses> <http://www.w3.org/2000/01/rdf-schema#label> "addresses"@en .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#addresses> <http://www.w3.org/2000/01/rdf-schema#label> "direcciones"@es .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#addresses> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#CONTACT> .
+_:AX5fXX3aXX40XX5fXX3aXA1597 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_RELATIONSHIP> .
+_:AX5fXX3aXX40XX5fXX3aXA1597 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1570 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#type> .
+_:AX5fXX3aXX40XX5fXX3aXA1570 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1570 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#relationships> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#relationships> <http://www.w3.org/2002/07/owl#inverseOf> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#source> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#relationships> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#relationships> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_RELATIONSHIP> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#relationships> <http://www.w3.org/2000/01/rdf-schema#label> "relacion como origen"@es .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#relationships> <http://www.w3.org/2000/01/rdf-schema#label> "source relationship"@en .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#relationships> <http://www.w3.org/2000/01/rdf-schema#comment> "Relationships in hich this role takes part as source"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1609 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#CAPABILITY> .
+_:AX5fXX3aXX40XX5fXX3aXA1609 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1610 .
+_:AX5fXX3aXX40XX5fXX3aXA1589 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#item> .
+_:AX5fXX3aXX40XX5fXX3aXA1589 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_IDENTITY> .
+_:AX5fXX3aXX40XX5fXX3aXA1589 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#languages> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#languages> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ACTOR> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#languages> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#languages> <http://www.w3.org/2000/01/rdf-schema#comment> "Languages which can be used to communicate with this actor"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#source> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#source> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#source> <http://www.w3.org/2002/07/owl#inverseOf> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#relationships> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#source> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_RELATIONSHIP> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#source> <http://www.w3.org/2000/01/rdf-schema#comment> "Source of relationship"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#source> <http://www.w3.org/2000/01/rdf-schema#label> "origen"@es .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#source> <http://www.w3.org/2000/01/rdf-schema#label> "source"@en .
+_:AX5fXX3aXX40XX5fXX3aXA1598 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1599 .
+_:AX5fXX3aXX40XX5fXX3aXA1598 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1562 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#details> .
+_:AX5fXX3aXX40XX5fXX3aXA1562 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1562 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1571 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#details> .
+_:AX5fXX3aXX40XX5fXX3aXA1571 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1571 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#credentials> <http://www.w3.org/2000/01/rdf-schema#label> "credentials"@en .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#credentials> <http://www.w3.org/2000/01/rdf-schema#label> "credenciales"@es .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#credentials> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#credentials> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#CAPABILITY> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#credentials> <http://www.w3.org/2000/01/rdf-schema#comment> "the qualifications of the performer of the role for this capability. This might include professional qualifications and official identifications such as provider numbers etc..."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#credentials> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#DATA_STRUCTURE> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_RELATIONSHIP> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_RELATIONSHIP> <http://www.w3.org/2000/01/rdf-schema#label> "RELACION ENTRE ENTIDADES"@es .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_RELATIONSHIP> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1569 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_RELATIONSHIP> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1570 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_RELATIONSHIP> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1572 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_RELATIONSHIP> <http://www.w3.org/2000/01/rdf-schema#label> "PARTY RELATIONSHIP"@en .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_RELATIONSHIP> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1571 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_RELATIONSHIP> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "RELATIONSHIP_LINK"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_RELATIONSHIP> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_RELATIONSHIP> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "generic description of a relationship between parties"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1600 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_IDENTITY> .
+_:AX5fXX3aXX40XX5fXX3aXA1600 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1601 .
+_:AX5fXX3aXX40XX5fXX3aXA1580 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1580 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#GROUP> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#identities> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_IDENTITY> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#identities> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#identities> <http://www.w3.org/2000/01/rdf-schema#label> "identities"@en .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#identities> <http://www.w3.org/2000/01/rdf-schema#label> "identidades"@es .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#identities> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#identities> <http://www.w3.org/2000/01/rdf-schema#comment> "Identities used by the party to identify itself, such as legal name, stage names, aliases, nicknames and so on"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1599 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY> .
+_:AX5fXX3aXX40XX5fXX3aXA1599 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1600 .
+_:AX5fXX3aXX40XX5fXX3aXA1563 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#item> .
+_:AX5fXX3aXX40XX5fXX3aXA1563 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY> .
+_:AX5fXX3aXX40XX5fXX3aXA1563 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1572 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#time_validity> .
+_:AX5fXX3aXX40XX5fXX3aXA1572 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1572 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1601 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_RELATIONSHIP> .
+_:AX5fXX3aXX40XX5fXX3aXA1601 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1602 .
+_:AX5fXX3aXX40XX5fXX3aXA1581 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#credentials> .
+_:AX5fXX3aXX40XX5fXX3aXA1581 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1581 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1590 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ADDRESS> .
+_:AX5fXX3aXX40XX5fXX3aXA1590 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1590 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#item> .
+_:AX5fXX3aXX40XX5fXX3aXA1610 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#CONTACT> .
+_:AX5fXX3aXX40XX5fXX3aXA1610 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#CAPABILITY> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#CAPABILITY> <http://www.w3.org/2000/01/rdf-schema#label> "CAPACIDADES"@es .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#CAPABILITY> <http://www.w3.org/2000/01/rdf-schema#label> "CAPABILITY"@en .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#CAPABILITY> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Capability of a role, such as \"ehr modifier\", \"health care provider\". \nCapability should be backed up by credentials."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#CAPABILITY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1582 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#CAPABILITY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#CAPABILITY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1581 .
+_:AX5fXX3aXX40XX5fXX3aXA1564 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1564 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1565 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#time_validity> <http://www.w3.org/2000/01/rdf-schema#label> "time validity"@en .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#time_validity> <http://www.w3.org/2000/01/rdf-schema#label> "intervalo de validez"@es .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#time_validity> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_DV_DATE> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#time_validity> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#time_validity> <http://www.w3.org/2000/01/rdf-schema#comment> "Valid time interval fot this relationship"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#time_validity> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1606 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#LIST_CAPABILITY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1573 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#LIST_CAPABILITY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#LIST_T> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#LIST_CAPABILITY> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1573 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1573 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#item> .
+_:AX5fXX3aXX40XX5fXX3aXA1573 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#CAPABILITY> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#SET_PARTY> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#SET_PARTY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1563 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#SET_PARTY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#SET_T> .
+_:AX5fXX3aXX40XX5fXX3aXA1602 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1602 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ADDRESS> .
+_:AX5fXX3aXX40XX5fXX3aXA1582 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1582 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1582 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#time_validity> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#SET_ROLE> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#SET_ROLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#SET_T> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#SET_ROLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1574 .
+_:AX5fXX3aXX40XX5fXX3aXA1591 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1591 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#as_string> .
+_:AX5fXX3aXX40XX5fXX3aXA1591 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1565 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ACTOR> .
+_:AX5fXX3aXX40XX5fXX3aXA1565 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1566 .
+_:AX5fXX3aXX40XX5fXX3aXA1574 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#item> .
+_:AX5fXX3aXX40XX5fXX3aXA1574 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1574 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ROLE> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#perfomer> <http://www.w3.org/2000/01/rdf-schema#comment> "Actor playing the role"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#perfomer> <http://www.w3.org/2000/01/rdf-schema#label> "interprete"@es .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#perfomer> <http://www.w3.org/2000/01/rdf-schema#label> "performer"@en .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#perfomer> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ACTOR> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#perfomer> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ROLE> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#perfomer> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl> <http://www.w3.org/2000/01/rdf-schema#comment> "Ontology based in the openEHR Demographic Reference Model\nRevision:1.4.1\nWritten in owl by Isabel Rom\u00E1n"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl> <http://www.w3.org/2002/07/owl#imports> <http://protege.stanford.edu/plugins/owl/protege> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl> <http://www.w3.org/2002/07/owl#imports> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Ontology> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#purpose> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#purpose> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1603 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#purpose> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#purpose> <http://www.w3.org/2000/01/rdf-schema#comment> "Purpose of identity, e.g. \"legal\", \"stagename\", \"nickname\", \"tibal name\"... taken from value of inherited name attribute."^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1603 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1603 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1604 .
+_:AX5fXX3aXX40XX5fXX3aXA1583 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1583 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#perfomer> .
+_:AX5fXX3aXX40XX5fXX3aXA1583 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#SET_CONTACT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1594 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#SET_CONTACT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#SET_T> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#SET_CONTACT> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#details> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1598 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#details> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#details> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#DATA_STRUCTURE> .
+_:AX5fXX3aXX40XX5fXX3aXA1592 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#details> .
+_:AX5fXX3aXX40XX5fXX3aXA1592 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1592 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1566 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1566 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ROLE> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#GROUP> <http://www.w3.org/2000/01/rdf-schema#label> "GROUP"@en .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#GROUP> <http://www.w3.org/2000/01/rdf-schema#label> "GRUPO"@es .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#GROUP> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ACTOR> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#GROUP> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "A group is a real world group of parties which is created by another \nparty, usually an organisation, for some specific purpose. A typical \nclinical example is that of the specialist care tea, e.g. \"cardilogy team\". \nThe members of the group usually work together."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#GROUP> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1575 <http://www.w3.org/2002/07/owl#minCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1575 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1575 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#languages> .
+_:AX5fXX3aXX40XX5fXX3aXA1604 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1605 .
+_:AX5fXX3aXX40XX5fXX3aXA1604 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#CONTACT> .
+_:AX5fXX3aXX40XX5fXX3aXA1584 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#time_validity> .
+_:AX5fXX3aXX40XX5fXX3aXA1584 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA1584 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ACTOR> <http://www.w3.org/2000/01/rdf-schema#label> "ACTOR"@es .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ACTOR> <http://www.w3.org/2000/01/rdf-schema#label> "ACTOR"@en .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ACTOR> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "Entity"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ACTOR> <http://www.w3.org/2002/07/owl#equivalentClass> _:AX5fXX3aXX40XX5fXX3aXA1576 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ACTOR> <http://protege.stanford.edu/plugins/owl/protege#abstract> "true"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ACTOR> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Ancestor of all real-world types, including people and organisations. \nAn actor is any real-world entity capable of taking on a role"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ACTOR> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "Healthcare party"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ACTOR> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ACTOR> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ACTOR> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1575 .
+_:AX5fXX3aXX40XX5fXX3aXA1593 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#as_string> .
+_:AX5fXX3aXX40XX5fXX3aXA1593 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#STRING> .
+_:AX5fXX3aXX40XX5fXX3aXA1593 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PERSON> <http://www.w3.org/2000/01/rdf-schema#label> "PERSON"@en .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PERSON> <http://www.w3.org/2000/01/rdf-schema#label> "PERSONA"@es .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PERSON> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_PERSON"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PERSON> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "healthcare person"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PERSON> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PERSON> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Generic description of persons. Provides a dedicated type to which\nPerson archetypes can be targeted"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PERSON> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "Person"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PERSON> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ACTOR> .
+_:AX5fXX3aXX40XX5fXX3aXA1567 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1567 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#details> .
+_:AX5fXX3aXX40XX5fXX3aXA1567 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#LIST_ADDRESS> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#LIST_ADDRESS> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1590 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#LIST_ADDRESS> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#LIST_T> .
+_:AX5fXX3aXX40XX5fXX3aXA1576 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1577 .
+_:AX5fXX3aXX40XX5fXX3aXA1576 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#target> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_RELATIONSHIP> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#target> <http://www.w3.org/2000/01/rdf-schema#comment> "Target of relationship"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#target> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#target> <http://www.w3.org/2000/01/rdf-schema#label> "destino"@es .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#target> <http://www.w3.org/2000/01/rdf-schema#label> "target"@en .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#target> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#target> <http://www.w3.org/2002/07/owl#inverseOf> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#reverse_relationships> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#type> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA1595 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#type> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> .
+_:AX5fXX3aXX40XX5fXX3aXA1605 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_IDENTITY> .
+_:AX5fXX3aXX40XX5fXX3aXA1605 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA1585 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1585 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#purpose> .
+_:AX5fXX3aXX40XX5fXX3aXA1585 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#as_string> <http://www.w3.org/2000/01/rdf-schema#comment> "Identity in the form of a single string"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#as_string> <http://www.w3.org/2000/01/rdf-schema#label> "como cadena"@es .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#as_string> <http://www.w3.org/2000/01/rdf-schema#label> "as string"@en .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#as_string> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#as_string> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_IDENTITY> .
+_:AX5fXX3aXX40XX5fXX3aXA1594 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#item> .
+_:AX5fXX3aXX40XX5fXX3aXA1594 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#CONTACT> .
+_:AX5fXX3aXX40XX5fXX3aXA1594 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#CONTACT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Description of a means of contact of a party. \nActual structure is archetyped."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#CONTACT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1587 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#CONTACT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1586 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#CONTACT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1585 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#CONTACT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#CONTACT> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1568 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1568 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#identities> .
+_:AX5fXX3aXX40XX5fXX3aXA1568 <http://www.w3.org/2002/07/owl#minCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#contacts> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#contacts> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#CONTACT> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#contacts> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#contacts> <http://www.w3.org/2000/01/rdf-schema#label> "contacts"@en .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#contacts> <http://www.w3.org/2000/01/rdf-schema#label> "contactos"@es .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#contacts> <http://www.w3.org/2000/01/rdf-schema#comment> "Contacts for this party"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA1577 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA1578 .
+_:AX5fXX3aXX40XX5fXX3aXA1577 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PERSON> .
+_:AX5fXX3aXX40XX5fXX3aXA1606 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA1607 .
+_:AX5fXX3aXX40XX5fXX3aXA1606 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA1586 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#time_validity> .
+_:AX5fXX3aXX40XX5fXX3aXA1586 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA1586 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_IDENTITY> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "Person Name (PN) (data type)"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_IDENTITY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1593 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_IDENTITY> <http://www.w3.org/2000/01/rdf-schema#label> "IDENTIDAD DE LA ENTIDAD"@es .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_IDENTITY> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_IDENTITY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1592 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_IDENTITY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_IDENTITY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA1591 .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_IDENTITY> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "An identity \"owned\" by a PARTY, such as a person name or company \nname, and which is used by the party to identify itself. Actual structure \nis archetyped."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_IDENTITY> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "Person Name (data type)"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#PARTY_IDENTITY> <http://www.w3.org/2000/01/rdf-schema#label> "PARTY IDENTITY"@en .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ORGANISATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "ORGANIZATION"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ORGANISATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_HCF"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ORGANISATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "healthcare organisation"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ORGANISATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Generic description of organisations. \nAn organisation is a legally constituted body whose existence \n(in general) outlives the existence of parties considered to be part of it."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ORGANISATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ACTOR> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ORGANISATION> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ORGANISATION> <http://www.w3.org/2000/01/rdf-schema#label> "ORGANISATION"@en .
+<http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#ORGANISATION> <http://www.w3.org/2000/01/rdf-schema#label> "ORGANISMO"@es .
Index: /ruby/tags/0.0.2/adl_parser/docs/EHR_EXTRACT_RM.ntriple
===================================================================
--- /ruby/tags/0.0.2/adl_parser/docs/EHR_EXTRACT_RM.ntriple	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/docs/EHR_EXTRACT_RM.ntriple	(revision 39)
@@ -0,0 +1,329 @@
+_:AX5fXX3aXX40XX5fXX3aXA2141 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2141 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#receiver> .
+_:AX5fXX3aXX40XX5fXX3aXA2141 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE_CONTENT> <http://www.w3.org/2000/01/rdf-schema#label> "MESSAGE_CONTENT"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE_CONTENT> <http://www.w3.org/2000/01/rdf-schema#label> "CONTENIDO DEL MENSAJE"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE_CONTENT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE_CONTENT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> ""^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE_CONTENT> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA2150 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2150 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#is_primary> .
+_:AX5fXX3aXX40XX5fXX3aXA2150 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl> <http://www.w3.org/2002/07/owl#imports> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl> <http://www.w3.org/2002/07/owl#imports> <http://protege.stanford.edu/plugins/owl/protege> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Ontology> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl> <http://www.w3.org/2000/01/rdf-schema#comment> "Ontology based in the openEHR EHR_EXTRACT Reference model\nRevision: 1.3.2\nWritten in owl by Isabel Roman"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA2133 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2133 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#details> .
+_:AX5fXX3aXX40XX5fXX3aXA2133 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#sender_node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#sender_node> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#sender_node> <http://www.w3.org/2000/01/rdf-schema#label> ""@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#sender_node> <http://www.w3.org/2000/01/rdf-schema#label> "sender node"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#sender_node> <http://www.w3.org/2000/01/rdf-schema#comment> "EHR node from which the message is sent"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#sender_node> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#PARTY_REF> .
+_:AX5fXX3aXX40XX5fXX3aXA2142 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2142 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2142 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#parties> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#follow_links> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#follow_links> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#follow_links> <http://www.w3.org/2000/01/rdf-schema#label> "follow links"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#follow_links> <http://www.w3.org/2000/01/rdf-schema#label> "siguientes enlaces"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#follow_links> <http://www.w3.org/2000/01/rdf-schema#comment> "Degree of link following DV_LINKS emanating from Transactions originally determined to be required for the extract . All transactions at the target end of followed links are also included in the extract.\n0 don\u00B4t follow\n1 follow first degree links\n2 follow second degree links...\nnfollow nth degree links"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#follow_links> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTEGER> .
+_:AX5fXX3aXX40XX5fXX3aXA2151 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2151 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2151 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#original_path> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#terminology> <http://www.w3.org/2000/01/rdf-schema#comment> "List of full terminology identification details for all terms used in transactions appearing in this extract"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#terminology> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#terminology> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_TERMINOLOGY> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#terminology> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> .
+_:AX5fXX3aXX40XX5fXX3aXA2125 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#item> .
+_:AX5fXX3aXX40XX5fXX3aXA2125 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_TRANSACTION> .
+_:AX5fXX3aXX40XX5fXX3aXA2125 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#subject_of_care> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#subject_of_care> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#PARTY_REF> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#subject_of_care> <http://www.w3.org/2000/01/rdf-schema#comment> "Id of the subject of care to whom the extract relates."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#subject_of_care> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#subject_of_care> <http://www.w3.org/2000/01/rdf-schema#label> "sujeto de cuidados"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#subject_of_care> <http://www.w3.org/2000/01/rdf-schema#label> "subject of care"@en .
+_:AX5fXX3aXX40XX5fXX3aXA2134 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#details> .
+_:AX5fXX3aXX40XX5fXX3aXA2134 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2134 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_FOLDER> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_FOLDER> <http://www.w3.org/2000/01/rdf-schema#label> "X FOLDER"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_FOLDER> <http://www.w3.org/2000/01/rdf-schema#label> "X CARPETA"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_FOLDER> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_FOLDER> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2136 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_FOLDER> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2135 .
+_:AX5fXX3aXX40XX5fXX3aXA2143 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#senders_reference> .
+_:AX5fXX3aXX40XX5fXX3aXA2143 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2143 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#time_sent> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#time_sent> <http://www.w3.org/2000/01/rdf-schema#label> "time sent"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#time_sent> <http://www.w3.org/2000/01/rdf-schema#label> "instante del envio"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#time_sent> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#time_sent> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#time_sent> <http://www.w3.org/2000/01/rdf-schema#comment> "Date/time the message was sent"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA2152 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_FOLDER> .
+_:AX5fXX3aXX40XX5fXX3aXA2152 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#item> .
+_:AX5fXX3aXX40XX5fXX3aXA2152 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2126 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2126 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#ehr_id> .
+_:AX5fXX3aXX40XX5fXX3aXA2126 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2135 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2135 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#folders> .
+_:AX5fXX3aXX40XX5fXX3aXA2135 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_DEMOGRAPHICS> <http://www.w3.org/2000/01/rdf-schema#label> "X DEMOGRAPHICS"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_DEMOGRAPHICS> <http://www.w3.org/2000/01/rdf-schema#label> "X DATOS DEMOGRAFICOS"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_DEMOGRAPHICS> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Container class for all demographic data required in an EHR Extract. \nThe list of Parties must be supplied except in the case when an EHR \nextract is sent within the one environment, and the receiver system has\naccess to the same demographic server as the sender."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_DEMOGRAPHICS> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2134 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_DEMOGRAPHICS> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "The message envelope for an extract, indicating the sender and the\nreceiver details, time and any other details required."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2140 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2146 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "Various messages classes"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2143 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2137 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2147 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2144 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2141 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2145 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> <http://www.w3.org/2000/01/rdf-schema#label> "MENSAJE"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2148 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2142 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2138 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "MESSAGE"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2139 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> <http://www.w3.org/2000/01/rdf-schema#label> "MESSAGE"@en .
+_:AX5fXX3aXX40XX5fXX3aXA2144 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2144 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#receiver_node> .
+_:AX5fXX3aXX40XX5fXX3aXA2144 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2153 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA2154 .
+_:AX5fXX3aXX40XX5fXX3aXA2153 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#receiver_node> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#receiver_node> <http://www.w3.org/2000/01/rdf-schema#comment> "EHR node receiving the message"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#receiver_node> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#receiver_node> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#PARTY_REF> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#receiver_node> <http://www.w3.org/2000/01/rdf-schema#label> "nodo receptor"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#receiver_node> <http://www.w3.org/2000/01/rdf-schema#label> "receiver node"@en .
+_:AX5fXX3aXX40XX5fXX3aXA2127 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#subject_of_care> .
+_:AX5fXX3aXX40XX5fXX3aXA2127 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2127 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#other_participations> <http://www.w3.org/2000/01/rdf-schema#label> "otros participantes"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#other_participations> <http://www.w3.org/2000/01/rdf-schema#label> "other participations"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#other_participations> <http://www.w3.org/2000/01/rdf-schema#comment> "Any other participations in the extract creation process"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#other_participations> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#other_participations> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#groups> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_ACCESS_CONTROL> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#groups> <http://www.w3.org/2000/01/rdf-schema#label> "grupos"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#groups> <http://www.w3.org/2000/01/rdf-schema#label> "groups"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#groups> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#groups> <http://www.w3.org/2000/01/rdf-schema#comment> "Access groups referred to in this extract"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA2136 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2136 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2136 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#transactions> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_ACCESS_CONTROL> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_ACCESS_CONTROL> <http://www.w3.org/2000/01/rdf-schema#label> "X CONTROL DE ACCESO"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_ACCESS_CONTROL> <http://www.w3.org/2000/01/rdf-schema#label> "X ACCESS CONTROL"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_ACCESS_CONTROL> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "continer class for all access control data required in an EHR Extract. \nThe list of access groups must be supplied except in the case when \nan EHR extract is sent within the one environment, and the receiver \nsystem has access to the same acces control server as the sender."^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA2145 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#signature> .
+_:AX5fXX3aXX40XX5fXX3aXA2145 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2145 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#urgency> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#urgency> <http://www.w3.org/2000/01/rdf-schema#comment> "Urgency with which receiver should deal with message"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#urgency> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_ORDINAL> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#urgency> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#urgency> <http://www.w3.org/2000/01/rdf-schema#label> "urgencia"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#urgency> <http://www.w3.org/2000/01/rdf-schema#label> "urgency"@en .
+_:AX5fXX3aXX40XX5fXX3aXA2154 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_ACCESS_CONTROL> .
+_:AX5fXX3aXX40XX5fXX3aXA2154 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA2155 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#include_multimedia> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#BOOLEAN> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#include_multimedia> <http://www.w3.org/2000/01/rdf-schema#label> "include multimedia"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#include_multimedia> <http://www.w3.org/2000/01/rdf-schema#label> "incluye multimedia"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#include_multimedia> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates hether multimedia content referred to by instances of DV_MULTIMEDIA is included or not"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#include_multimedia> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#include_multimedia> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_TRANSACTION> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_TRANSACTION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2151 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_TRANSACTION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2150 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_TRANSACTION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2149 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_TRANSACTION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Container for Transaction in extract. Indicates whether it was part of the \nprimary set and what it\u00B4s original path was"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#originator> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#PARTY_REF> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#originator> <http://www.w3.org/2000/01/rdf-schema#comment> "Health care agent authorising the extract to be created and sent"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#originator> <http://www.w3.org/2000/01/rdf-schema#label> "autorizador"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#originator> <http://www.w3.org/2000/01/rdf-schema#label> "originator"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#originator> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#originator> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#is_primary> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_TRANSACTION> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#is_primary> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#is_primary> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#BOOLEAN> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#is_primary> <http://www.w3.org/2000/01/rdf-schema#comment> "True if the transaction in this conatiner was part of the primary set for the extract, i.e. not added due to link-following"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#is_primary> <http://www.w3.org/2000/01/rdf-schema#label> "is primary"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#is_primary> <http://www.w3.org/2000/01/rdf-schema#label> ""@es .
+_:AX5fXX3aXX40XX5fXX3aXA2128 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2128 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#time_created> .
+_:AX5fXX3aXX40XX5fXX3aXA2128 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#initiator> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#initiator> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#initiator> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates which party- sender or receiver\ncaused the message to be created\nand sent. If the receiver (initiator =\"R\"), htere was an EHR_REQUEST. If the sender (niiator=\"S\"), there is no request, and the extract is being sent unsolicited."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#initiator> <http://www.w3.org/2000/01/rdf-schema#label> "initiator"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#initiator> <http://www.w3.org/2000/01/rdf-schema#label> "iniciador"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#initiator> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#STRING> .
+_:AX5fXX3aXX40XX5fXX3aXA2137 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#initiator> .
+_:AX5fXX3aXX40XX5fXX3aXA2137 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2137 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#demographis> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#demographis> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_DEMOGRAPHICS> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#demographis> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#demographis> <http://www.w3.org/2000/01/rdf-schema#comment> "List of snapshots of all demographic entities reference from the transactions in this extract."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#signature> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#signature> <http://www.w3.org/2000/01/rdf-schema#label> "signature"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#signature> <http://www.w3.org/2000/01/rdf-schema#label> "firma"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#signature> <http://www.w3.org/2000/01/rdf-schema#comment> "Signature of message content"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#signature> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#ATTESTATION> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#signature> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA2146 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2146 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2146 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#sender_node> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#content> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE_CONTENT> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#content> <http://www.w3.org/2000/01/rdf-schema#label> "contenido"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#content> <http://www.w3.org/2000/01/rdf-schema#label> "content"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#content> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#content> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#content> <http://www.w3.org/2000/01/rdf-schema#comment> "The content of the message"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA2155 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_DEMOGRAPHICS> .
+_:AX5fXX3aXX40XX5fXX3aXA2155 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA2156 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#sender> <http://www.w3.org/2000/01/rdf-schema#label> "emisor"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#sender> <http://www.w3.org/2000/01/rdf-schema#label> "sender"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#sender> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#PARTY_REF> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#sender> <http://www.w3.org/2000/01/rdf-schema#comment> "Party sending the extract"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#sender> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#sender> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> .
+_:AX5fXX3aXX40XX5fXX3aXA2129 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2129 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#originator> .
+_:AX5fXX3aXX40XX5fXX3aXA2129 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#parties> <http://www.w3.org/2000/01/rdf-schema#label> "partes"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#parties> <http://www.w3.org/2000/01/rdf-schema#label> "parties"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#parties> <http://www.w3.org/2000/01/rdf-schema#comment> "Parties referred to by all PARTY_REF and ATTESTATION instances in this message instance"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#parties> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA2157 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#parties> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#senders_reference> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#senders_reference> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#senders_reference> <http://www.w3.org/2000/01/rdf-schema#label> "referencia en el emisor"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#senders_reference> <http://www.w3.org/2000/01/rdf-schema#label> "senders reference"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#senders_reference> <http://www.w3.org/2000/01/rdf-schema#comment> "Identification of message at sender\u00B4s end"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#senders_reference> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#STRING> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#transaction> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_TRANSACTION> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#transaction> <http://www.w3.org/2000/01/rdf-schema#comment> "The transaction content"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#transaction> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#transaction> <http://www.w3.org/2000/01/rdf-schema#label> "transaccion"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#transaction> <http://www.w3.org/2000/01/rdf-schema#label> "transaction"@en .
+_:AX5fXX3aXX40XX5fXX3aXA2138 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#urgency> .
+_:AX5fXX3aXX40XX5fXX3aXA2138 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2138 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#details> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA2153 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#details> <http://www.w3.org/2000/01/rdf-schema#label> "detalles"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#details> <http://www.w3.org/2000/01/rdf-schema#label> "details"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#details> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#details> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#DATA_STRUCTURE> .
+_:AX5fXX3aXX40XX5fXX3aXA2147 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#time_sent> .
+_:AX5fXX3aXX40XX5fXX3aXA2147 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2147 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2156 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_TERMINOLOGY> .
+_:AX5fXX3aXX40XX5fXX3aXA2156 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA2139 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2139 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#parties> .
+_:AX5fXX3aXX40XX5fXX3aXA2139 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl#SET_PARTY> .
+_:AX5fXX3aXX40XX5fXX3aXA2148 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2148 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#content> .
+_:AX5fXX3aXX40XX5fXX3aXA2148 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#LIST_X_FOLDER> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#LIST_X_FOLDER> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#LIST_T> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#LIST_X_FOLDER> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2152 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#transactions> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#transactions> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_FOLDER> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#transactions> <http://www.w3.org/2000/01/rdf-schema#label> "transacciones"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#transactions> <http://www.w3.org/2000/01/rdf-schema#label> "transactions"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#transactions> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#LIST_X_TRANSACTION> .
+_:AX5fXX3aXX40XX5fXX3aXA2157 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA2158 .
+_:AX5fXX3aXX40XX5fXX3aXA2157 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_TERMINOLOGY> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> ""^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_TERMINOLOGY> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_TERMINOLOGY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2133 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#access_control> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#access_control> <http://www.w3.org/2000/01/rdf-schema#comment> "List of all access_control settings relevant to the Transactions in this extract"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#access_control> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#access_control> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_ACCESS_CONTROL> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> <http://www.w3.org/2000/01/rdf-schema#label> "EXTRACTO DE HISTORIA CLINICA"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2130 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_EHR_EXTRACT"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2127 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE_CONTENT> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "The outer package for information extracted from an EHR by another \nEHR system"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2126 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2132 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2129 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "EHCR_EXTRACT"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2131 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2128 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> "TBD"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> <http://www.w3.org/2000/01/rdf-schema#label> "EHR EXTRACT"@en .
+_:AX5fXX3aXX40XX5fXX3aXA2130 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2130 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#follow_links> .
+_:AX5fXX3aXX40XX5fXX3aXA2130 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2149 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#transaction> .
+_:AX5fXX3aXX40XX5fXX3aXA2149 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#VERSION_TRANSACTION> .
+_:AX5fXX3aXX40XX5fXX3aXA2149 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#receiver> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#receiver> <http://www.w3.org/2000/01/rdf-schema#label> "receiver"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#receiver> <http://www.w3.org/2000/01/rdf-schema#label> ""@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#receiver> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#receiver> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#PARTY_REF> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#receiver> <http://www.w3.org/2000/01/rdf-schema#comment> "Party the extract is sent to"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA2158 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_DEMOGRAPHICS> .
+_:AX5fXX3aXX40XX5fXX3aXA2158 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA2159 .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#folders> <http://www.w3.org/2000/01/rdf-schema#comment> "sub-folders of this folder, including distinct folder trees, which may be separately archetyped"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#folders> <http://www.w3.org/2000/01/rdf-schema#label> "carpetas"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#folders> <http://www.w3.org/2000/01/rdf-schema#label> "folders"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#folders> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#folders> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#LIST_X_FOLDER> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#folders> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_FOLDER> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#original_path> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_EHR_URI> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#original_path> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_TRANSACTION> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#original_path> <http://www.w3.org/2000/01/rdf-schema#label> "camino origen"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#original_path> <http://www.w3.org/2000/01/rdf-schema#label> "original path"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#original_path> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#original_path> <http://www.w3.org/2000/01/rdf-schema#comment> "The original path of the transaction in the cource EHR, used for matching transactions in the receiver\u00B4s EHR"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#time_created> <http://www.w3.org/2000/01/rdf-schema#label> "instante de creacion"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#time_created> <http://www.w3.org/2000/01/rdf-schema#label> "time created"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#time_created> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#time_created> <http://www.w3.org/2000/01/rdf-schema#comment> "Date/time the extract was created"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#time_created> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#time_created> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA2131 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2131 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2131 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#other_participations> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#ehr_id> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#ehr_id> <http://www.w3.org/2000/01/rdf-schema#comment> "Id of the EHR from which the extract was created"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#ehr_id> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#STRING> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#ehr_id> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#ehr_id> <http://www.w3.org/2000/01/rdf-schema#label> ""@es .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#ehr_id> <http://www.w3.org/2000/01/rdf-schema#label> "ehr id"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#LIST_X_TRANSACTION> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#LIST_X_TRANSACTION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#LIST_T> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#LIST_X_TRANSACTION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2125 .
+_:AX5fXX3aXX40XX5fXX3aXA2140 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#sender> .
+_:AX5fXX3aXX40XX5fXX3aXA2140 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2140 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2159 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#MESSAGE> .
+_:AX5fXX3aXX40XX5fXX3aXA2159 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#directory> <http://www.w3.org/2000/01/rdf-schema#comment> "Directory structure of this extract, in shich transactions are contained"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#directory> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#directory> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#EHR_EXTRACT> .
+<http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#directory> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#X_FOLDER> .
+_:AX5fXX3aXX40XX5fXX3aXA2132 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_EXTRACT_RM.owl#include_multimedia> .
+_:AX5fXX3aXX40XX5fXX3aXA2132 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2132 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
Index: /ruby/tags/0.0.2/adl_parser/docs/EHR_RM.ntriple
===================================================================
--- /ruby/tags/0.0.2/adl_parser/docs/EHR_RM.ntriple	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/docs/EHR_RM.ntriple	(revision 39)
@@ -0,0 +1,452 @@
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#LIST_CONTENT_ITEM> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#LIST_T> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#LIST_CONTENT_ITEM> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2814 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#LIST_CONTENT_ITEM> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA2821 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> .
+_:AX5fXX3aXX40XX5fXX3aXA2821 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#VERSION_REPOSITORY_TRANSACTION> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#VERSION_REPOSITORY_TRANSACTION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#VERSION_REPOSITORY_T> .
+_:AX5fXX3aXX40XX5fXX3aXA2804 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA2804 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#OBSERVATION> .
+_:AX5fXX3aXX40XX5fXX3aXA2784 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#context> .
+_:AX5fXX3aXX40XX5fXX3aXA2784 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2784 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2813 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#data> .
+_:AX5fXX3aXX40XX5fXX3aXA2813 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2813 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#DATA_STRUCTURE> .
+_:AX5fXX3aXX40XX5fXX3aXA2793 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2793 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#HISTORY_T_STRUCTURE> .
+_:AX5fXX3aXX40XX5fXX3aXA2793 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#data> .
+_:AX5fXX3aXX40XX5fXX3aXA2822 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA2822 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA2823 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#HISTORY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#HISTORY> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA2776 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#action> .
+_:AX5fXX3aXX40XX5fXX3aXA2776 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2776 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#time_created> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_DATE_TIME> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#time_created> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EHR> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#time_created> <http://www.w3.org/2000/01/rdf-schema#label> "time created"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#time_created> <http://www.w3.org/2000/01/rdf-schema#label> "instante de creacion"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#time_created> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#time_created> <http://www.w3.org/2000/01/rdf-schema#comment> "time of creation of the repository"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#CONTENT_ITEM> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#CONTENT_ITEM> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> .
+_:AX5fXX3aXX40XX5fXX3aXA2785 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2785 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2785 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#is_persistent> .
+_:AX5fXX3aXX40XX5fXX3aXA2805 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2805 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2805 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#time> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#participations> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#participations> <http://www.w3.org/2000/01/rdf-schema#comment> "Parties involved in the clinical session. These would normally include the physician and often the patient (but not the latter if the clincal session is a pathology test for example)"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#participations> <http://www.w3.org/2000/01/rdf-schema#label> "participations"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#participations> <http://www.w3.org/2000/01/rdf-schema#label> "participantes"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#participations> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#LIST_PARTICIPATION> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#participations> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#CLINICAL_CONTEXT> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#TRANSACTION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2784 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#TRANSACTION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> "Composition class"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#TRANSACTION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "One version in a VERSIONED_TRANSACTION. A transaction is \nconsidered the unit of modification of the record, the unit of \ntransmission in record extracts, and the unit of attestation by \nauthorising clinicians. In this latter sense, it may be considered \nequivalent to a signed document."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#TRANSACTION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2783 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#TRANSACTION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#TRANSACTION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "Composition"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#TRANSACTION> <http://www.w3.org/2000/01/rdf-schema#label> "TRANSACCION"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#TRANSACTION> <http://www.w3.org/2000/01/rdf-schema#label> "TRANSACTION"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#TRANSACTION> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#TRANSACTION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "CDA DOCUMENT"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#TRANSACTION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2782 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#TRANSACTION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_TRANSACTION_VERSION"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#TRANSACTION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2785 .
+_:AX5fXX3aXX40XX5fXX3aXA2814 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#item> .
+_:AX5fXX3aXX40XX5fXX3aXA2814 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#CONTENT_ITEM> .
+_:AX5fXX3aXX40XX5fXX3aXA2814 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2794 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2794 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#CONTRIBUTION> .
+_:AX5fXX3aXX40XX5fXX3aXA2794 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#item> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#VERSIONED_TRANSACTION> <http://www.w3.org/2000/01/rdf-schema#label> "TRANSACCION VERSIONADA"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#VERSIONED_TRANSACTION> <http://www.w3.org/2000/01/rdf-schema#label> "VERSIONED TRANSACTION"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#VERSIONED_TRANSACTION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_VERSIONED_TRANSACTION"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#VERSIONED_TRANSACTION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2811 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#VERSIONED_TRANSACTION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#VERSION_REPOSITORY_TRANSACTION> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#VERSIONED_TRANSACTION> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#VERSIONED_TRANSACTION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Version-controlled transaction abstraction, defined\nby inheriting VERSION_REPOSITORY_TRANSACTION"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EVALUATION> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EVALUATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "Cluster"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EVALUATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#MisUse> "Should not be used for actionable statements such as medication \norders these are represented with the INSTRUCTION type"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EVALUATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "Observation"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EVALUATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_SUBJECTIVE_CONTENT"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EVALUATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Used for all kinds of statements which evaluate other information, \nsuch as interpretations of observations, diagnoses, differential \ndiagnoses, hypotheses, problem assessments and plans"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EVALUATION> <http://www.w3.org/2000/01/rdf-schema#label> "EVALUATION"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EVALUATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2813 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EVALUATION> <http://www.w3.org/2000/01/rdf-schema#label> "EVALUACION"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EVALUATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2812 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EVALUATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EVALUATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Entry type for evaluation statements"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#CLINICAL_CONTEXT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2808 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#CLINICAL_CONTEXT> <http://www.w3.org/2000/01/rdf-schema#label> "CLINICAL CONTEXT"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#CLINICAL_CONTEXT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Documents the clinical context of the clinical session (or encounter).\nThe context information recorded here are independent of the \nattributes recorded in the version audit, which document the \n\"system interaction\" context, i.e. the context of a user interacting with \nthe health record system. Clinical sessions include patient contacts, \nand any other business activity, such aas pathology investigations \nwhich take place on behalf of the patient"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#CLINICAL_CONTEXT> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#CLINICAL_CONTEXT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2809 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#CLINICAL_CONTEXT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2810 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#CLINICAL_CONTEXT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> "Composition"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#CLINICAL_CONTEXT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2805 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#CLINICAL_CONTEXT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2807 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#CLINICAL_CONTEXT> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2806 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#CLINICAL_CONTEXT> <http://www.w3.org/2000/01/rdf-schema#label> "CONTEXTO CLINICO"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#CLINICAL_CONTEXT> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "TBD"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA2823 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA2824 .
+_:AX5fXX3aXX40XX5fXX3aXA2823 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#TRANSACTION> .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#LIST_PARTICIPATION> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#context> <http://www.w3.org/2000/01/rdf-schema#comment> "The clinical session context of this\ntransaction, i.e. the contextual attributes \nof the clinical session"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#context> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#TRANSACTION> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#context> <http://www.w3.org/2000/01/rdf-schema#label> "context"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#context> <http://www.w3.org/2000/01/rdf-schema#label> "contexto"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#context> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#CLINICAL_CONTEXT> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#context> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#folders> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#folders> <http://www.w3.org/2000/01/rdf-schema#comment> "Sub-folders of this FOLDER"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#folders> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#FOLDER> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#folders> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#LIST_FOLDER> .
+_:AX5fXX3aXX40XX5fXX3aXA2777 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2777 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2777 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#profile> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#FOLDER> <http://www.w3.org/2000/01/rdf-schema#label> "FOLDER"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#FOLDER> <http://www.w3.org/2000/01/rdf-schema#label> "CARPETA"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#FOLDER> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> "RecordFolder"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#FOLDER> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#FOLDER> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#FOLDER> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2816 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#FOLDER> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2815 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#FOLDER> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "FOLDER"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#FOLDER> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "The concept of a named folder"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#other_participations> <http://www.w3.org/2000/01/rdf-schema#comment> "Other participations at ENTRY level-archetypable"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#other_participations> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#other_participations> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#other_participations> <http://www.w3.org/2000/01/rdf-schema#label> "other participations"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#other_participations> <http://www.w3.org/2000/01/rdf-schema#label> "otras participaciones"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#other_participations> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#LIST_PARTICIPATION> .
+_:AX5fXX3aXX40XX5fXX3aXA2806 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2806 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#other_context> .
+_:AX5fXX3aXX40XX5fXX3aXA2806 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2786 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2786 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2786 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#contributions> .
+_:AX5fXX3aXX40XX5fXX3aXA2815 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2815 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2815 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#transactions> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#act_id> <http://www.w3.org/2000/01/rdf-schema#comment> "Optional act identifier used by e.g. a\nworkflow system for an act to\nwhich this ENTRY correspondes in\nsome way. This identifier might\nhave internal syntax and meaning to an external\nprocessor."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#act_id> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#act_id> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#act_id> <http://www.w3.org/2000/01/rdf-schema#label> "act id"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#act_id> <http://www.w3.org/2000/01/rdf-schema#label> "id del acto"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#act_id> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#STRING> .
+_:AX5fXX3aXX40XX5fXX3aXA2795 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2795 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#provider> .
+_:AX5fXX3aXX40XX5fXX3aXA2795 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#protocol> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#protocol> <http://www.w3.org/2000/01/rdf-schema#comment> "Description of how and/or why th\ninformation in this entry was arrived\nat. For OBSERVATIONS, this is a description\nof the method or instrument used.\nFor EVALUATIONS, how the evaluation\nwas arrived at. For INSTRUCTIONS, how\nto execute the instruction. This may\ntake the form of references to guidelines,\nincluding manually folowed and executable;\nknoledge references such as paper in Medline;\nclinical reasons within a largercare process"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#protocol> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#protocol> <http://www.w3.org/2000/01/rdf-schema#label> "protocol"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#protocol> <http://www.w3.org/2000/01/rdf-schema#label> "protocolo"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#protocol> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#DATA_STRUCTURE> .
+_:AX5fXX3aXX40XX5fXX3aXA2824 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#VERSIONED_TRANSACTION> .
+_:AX5fXX3aXX40XX5fXX3aXA2824 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA2778 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2778 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2778 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#state> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#subject> <http://www.w3.org/2000/01/rdf-schema#label> "sujeto"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#subject> <http://www.w3.org/2000/01/rdf-schema#label> "subject"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#subject> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA2819 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#subject> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#feeder_audit> <http://www.w3.org/2000/01/rdf-schema#comment> "Audit trail from non-openEHR system of\noriginal commit of information ofrming the\ncontent of the current item."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#feeder_audit> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#TRANSACTION> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#feeder_audit> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#feeder_audit> <http://www.w3.org/2000/01/rdf-schema#label> "auditor origen"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#feeder_audit> <http://www.w3.org/2000/01/rdf-schema#label> "feeder audit"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#feeder_audit> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#VERSION_AUDIT> .
+_:AX5fXX3aXX40XX5fXX3aXA2807 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2807 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#participations> .
+_:AX5fXX3aXX40XX5fXX3aXA2807 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2787 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2787 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2787 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#subject> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#VERSION_REPOSITORY_FOLDER> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#VERSION_REPOSITORY_T> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#VERSION_REPOSITORY_FOLDER> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA2816 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2816 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2816 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#folders> .
+_:AX5fXX3aXX40XX5fXX3aXA2796 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2796 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2796 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#protocol> .
+_:AX5fXX3aXX40XX5fXX3aXA2825 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA2826 .
+_:AX5fXX3aXX40XX5fXX3aXA2825 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA2779 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#DATA_STRUCTURE> .
+_:AX5fXX3aXX40XX5fXX3aXA2779 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#data> .
+_:AX5fXX3aXX40XX5fXX3aXA2779 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2808 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2808 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2808 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#practice_setting> .
+_:AX5fXX3aXX40XX5fXX3aXA2788 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#PARTY_REF> .
+_:AX5fXX3aXX40XX5fXX3aXA2788 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#subject> .
+_:AX5fXX3aXX40XX5fXX3aXA2788 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#LIST_FOLDER> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#LIST_FOLDER> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2817 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#LIST_FOLDER> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#LIST_T> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#action> <http://www.w3.org/2000/01/rdf-schema#comment> "description of the action to be executed"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#action> <http://www.w3.org/2000/01/rdf-schema#label> "action"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#action> <http://www.w3.org/2000/01/rdf-schema#label> "accion"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#action> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#INSTRUCTION> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#action> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#action> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#DATA_STRUCTURE> .
+_:AX5fXX3aXX40XX5fXX3aXA2817 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#FOLDER> .
+_:AX5fXX3aXX40XX5fXX3aXA2817 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2817 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#item> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#contributions> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#contributions> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#LIST_CONTRIBUTION> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#contributions> <http://www.w3.org/2000/01/rdf-schema#label> "contribuciones"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#contributions> <http://www.w3.org/2000/01/rdf-schema#label> "contributions"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#contributions> <http://www.w3.org/2000/01/rdf-schema#comment> "List of contributions causing changes to this EHR.\nEach contribution contains a list of versions, which may\ninclude paths pointing\nto any number of VERSIONABLE items\nitems of type TRANSACTION and FOLDER_TREE"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#contributions> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EHR> .
+_:AX5fXX3aXX40XX5fXX3aXA2797 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#RELATED_PARTY> .
+_:AX5fXX3aXX40XX5fXX3aXA2797 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2797 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#subject> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#LIST_CONTRIBUTION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2794 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#LIST_CONTRIBUTION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#LIST_T> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#LIST_CONTRIBUTION> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#health_care_facility> <http://www.w3.org/2000/01/rdf-schema#label> "health care facility"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#health_care_facility> <http://www.w3.org/2000/01/rdf-schema#label> "servicio del sistema sanitario"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#health_care_facility> <http://www.w3.org/2000/01/rdf-schema#comment> "The HCF in the health system which took\npart in the encounter; usually, this\nis where the encounter physically took place, but\nnot in the case of patinet home visits, internet\ncontacts or emergency care."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#health_care_facility> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#PARTY_REF> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#health_care_facility> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#CLINICAL_CONTEXT> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#health_care_facility> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ORGANISER> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#OMGHDTF> "COAS::CompositeObservation"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ORGANISER> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "Headed_section"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ORGANISER> <http://www.w3.org/2000/01/rdf-schema#label> "ORGANISER"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ORGANISER> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Created according to archetyped structures for typical headings \nsuch as SOAP, physical examination, but also pathology result heading \nstructures"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ORGANISER> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ORGANISER> <http://www.w3.org/2000/01/rdf-schema#label> "ORGANIZADOR"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ORGANISER> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#MisUse> "Should not be used instead of ENTRY hierarchical structures."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ORGANISER> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Represents a heading in a heading structure, or \"organiser tree\""^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ORGANISER> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#CONTENT_ITEM> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ORGANISER> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2818 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#provider> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#PARTICIPATION> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#provider> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#provider> <http://www.w3.org/2000/01/rdf-schema#comment> "Id of provider of statement in this ENTRY,\nwhich might be:\nthe patient\na patient agent (parent, guardian...)\nthe clinician\na device or software"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#provider> <http://www.w3.org/2000/01/rdf-schema#label> "proveedor"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#provider> <http://www.w3.org/2000/01/rdf-schema#label> "provider"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#provider> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA2826 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#INSTRUCTION> .
+_:AX5fXX3aXX40XX5fXX3aXA2826 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA2827 .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#OMGDTF> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
+_:AX5fXX3aXX40XX5fXX3aXA2789 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#directory> .
+_:AX5fXX3aXX40XX5fXX3aXA2789 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2789 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2809 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2809 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2809 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#location> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#profile> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#profile> <http://www.w3.org/2000/01/rdf-schema#comment> "configuration data mappings from archetyped model of action"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#profile> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#INSTRUCTION> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#profile> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#DATA_STRUCTURE> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#profile> <http://www.w3.org/2000/01/rdf-schema#label> "perfil"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#profile> <http://www.w3.org/2000/01/rdf-schema#label> "profile"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#VERSION_TRANSACTION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#VERSION_T> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#VERSION_TRANSACTION> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA2818 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2818 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#items> .
+_:AX5fXX3aXX40XX5fXX3aXA2818 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2798 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2798 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#act_id> .
+_:AX5fXX3aXX40XX5fXX3aXA2798 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> "The Item class is the clossest match for Entry as described here"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2797 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> <http://protege.stanford.edu/plugins/owl/protege#abstract> "true"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> <http://www.w3.org/2000/01/rdf-schema#label> "ENTRADA"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#OMGHDTF> "COAS::HealthRecordEntry and COAS::ObservationQualifier, a generic\nclass which is used to represent context attributes which are \nconcretely modelled here\n"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> <http://www.w3.org/2002/07/owl#equivalentClass> _:AX5fXX3aXX40XX5fXX3aXA2801 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> <http://www.w3.org/2000/01/rdf-schema#label> "ENTRY"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2800 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#OMGDTF> "COAS::HealthRecordEntry and COAS::ObservationQualifier"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#CONTENT_ITEM> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "*_CONTENT"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2795 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2798 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "Act"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2799 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "The abstract parent of all ENTRY subtypes. An ENTRY is the root of a \nlogical item of \"hard\" clinical information created in the \"clinical \nstatement\" context. It is also the minimal unit of information any query \nshould return."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2796 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "ClusterOCC"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#data> <http://www.w3.org/2000/01/rdf-schema#label> "datos"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#data> <http://www.w3.org/2000/01/rdf-schema#label> "data"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#data> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA2825 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#data> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#guideline_id> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#OBJECT_REF> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#guideline_id> <http://www.w3.org/2000/01/rdf-schema#comment> "Identifier guideline creating this action if relevant"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#guideline_id> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#guideline_id> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#INSTRUCTION> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#guideline_id> <http://www.w3.org/2000/01/rdf-schema#label> "guideline id"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#guideline_id> <http://www.w3.org/2000/01/rdf-schema#label> "identificador de la guia (protocolo)"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#practice_setting> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#practice_setting> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_TEXT> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#practice_setting> <http://www.w3.org/2000/01/rdf-schema#comment> "The practice setting, e.g. \"outpatient facility\", \"hospital unit\", \"general practice\" etc, which may be optionally coded. HL7 PracticeSetting domain may be useful for this."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#practice_setting> <http://www.w3.org/2000/01/rdf-schema#label> "catacteristicas practicas"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#practice_setting> <http://www.w3.org/2000/01/rdf-schema#label> "practice setting"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#practice_setting> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#CLINICAL_CONTEXT> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#INSTRUCTION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2779 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#INSTRUCTION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_INSTRUCTION"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#INSTRUCTION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2781 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#INSTRUCTION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "Used for any actionable statement such as medication and therapeutic \norders, monitoring, recall and review. Enoug details must be provided \nfor the specification to be excuted by an actor."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#INSTRUCTION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2778 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#INSTRUCTION> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#INSTRUCTION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2780 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#INSTRUCTION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2777 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#INSTRUCTION> <http://www.w3.org/2000/01/rdf-schema#label> "INSTRUCTION"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#INSTRUCTION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2776 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#INSTRUCTION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "n/a"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#INSTRUCTION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "Act subtype Substance_adminsitration, any Act type which is really an \naction specification (cf and Act in the past)"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#INSTRUCTION> <http://www.w3.org/2000/01/rdf-schema#label> "INSTRUCCION"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#INSTRUCTION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#INSTRUCTION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "The root of an action specification"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#INSTRUCTION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#MisUse> "Not to be used for plan items which are only specified in general terms, \ne.g. \"comence bronchodilator\""^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA2827 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA2828 .
+_:AX5fXX3aXX40XX5fXX3aXA2827 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EVALUATION> .
+_:AX5fXX3aXX40XX5fXX3aXA2800 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2800 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2800 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#other_participations> .
+_:AX5fXX3aXX40XX5fXX3aXA2780 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#data> .
+_:AX5fXX3aXX40XX5fXX3aXA2780 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2780 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2819 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA2819 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA2820 .
+_:AX5fXX3aXX40XX5fXX3aXA2799 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2799 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#subject> .
+_:AX5fXX3aXX40XX5fXX3aXA2799 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2828 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#OBSERVATION> .
+_:AX5fXX3aXX40XX5fXX3aXA2828 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#items> <http://www.w3.org/2000/01/rdf-schema#comment> "Ordered list of content items under this organiser, which may include:\nmore ORGANISERs\nENTRYs"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#items> <http://www.w3.org/2000/01/rdf-schema#label> "content items"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#items> <http://www.w3.org/2000/01/rdf-schema#label> "elementos contenidos"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#items> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#items> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ORGANISER> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#items> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#LIST_CONTENT_ITEM> .
+_:AX5fXX3aXX40XX5fXX3aXA2801 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA2801 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA2802 .
+_:AX5fXX3aXX40XX5fXX3aXA2781 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2781 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#guideline_id> .
+_:AX5fXX3aXX40XX5fXX3aXA2781 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EHR> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2788 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EHR> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EHR> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "The EHR class is the centre node of the EHR \"repository\" \nfor a subject of care"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EHR> <http://www.w3.org/2000/01/rdf-schema#label> "ehr"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EHR> <http://www.w3.org/2000/01/rdf-schema#label> "ehr"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EHR> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2789 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EHR> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> "RecordFolder class"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EHR> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "EHCR"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EHR> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2790 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EHR> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_EHR"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EHR> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2786 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EHR> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2787 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EHR> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2791 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EHR> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Common_RM.owl#LOCATABLE> .
+_:AX5fXX3aXX40XX5fXX3aXA2810 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2810 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2810 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#health_care_facility> .
+_:AX5fXX3aXX40XX5fXX3aXA2790 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2790 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#all_transactions> .
+_:AX5fXX3aXX40XX5fXX3aXA2790 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#time> <http://www.w3.org/2000/01/rdf-schema#label> "intervalo de la sesion"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#time> <http://www.w3.org/2000/01/rdf-schema#label> "session time"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#time> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#CLINICAL_CONTEXT> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#time> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_INTERVAL_DV_DATE_TIME> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#time> <http://www.w3.org/2000/01/rdf-schema#comment> "Start and endd times of the clinical sesion"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#time> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#OBSERVATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2793 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#OBSERVATION> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#OBSERVATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> "G1_OBSERVATION_CONTENT, G1_SUBJECTIVE_CONTENT"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#OBSERVATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> "Entry subtype for all clinical data in the past or present, i.e. which\n(by the time it is recorded) has already ocurred. OBSERVATION data\nis expressed using the class HISTORY_T, which guarantees that\nit is situated in time."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#OBSERVATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> "Cluster"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#OBSERVATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ENTRY> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#OBSERVATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> "OBSERVATION is used for all notional objective (i.e. measured in some\nway) observations of phenomenena as well as all statements or\nopinios (i.e. subjective data) about things in the past.\n"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#OBSERVATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#MisUse> "not used for future statements of any kind, including instructions, \nintentions, plans etc..."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#OBSERVATION> <http://www.w3.org/2000/01/rdf-schema#label> "OBSERVACION"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#OBSERVATION> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> "Observation"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#OBSERVATION> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA2792 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#OBSERVATION> <http://www.w3.org/2000/01/rdf-schema#label> "OBSERVATION"@en .
+<http://trajano.us.es/~isabel/EHR/Common_RM.owl#VERSION_T> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Ontology> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl> <http://www.w3.org/2002/07/owl#imports> <http://protege.stanford.edu/plugins/owl/protege> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl> <http://www.w3.org/2002/07/owl#imports> <http://trajano.us.es/~isabel/EHR/Demographic_RM.owl> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl> <http://www.w3.org/2000/01/rdf-schema#comment> "Ontology based on the openEHR EHR Reference Model\nRevision: 4.3.2\nWritten in owl by Isabel Roman"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#location> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#location> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#STRING> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#location> <http://www.w3.org/2000/01/rdf-schema#label> "location"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#location> <http://www.w3.org/2000/01/rdf-schema#label> "localizacion"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#location> <http://www.w3.org/2000/01/rdf-schema#comment> "The actual location where the session occurred, e.g. \"microbiol lab 2\", \"home\", \"ward A3\" and so on"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#location> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#CLINICAL_CONTEXT> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#other_context> <http://www.w3.org/2000/01/rdf-schema#label> "other context"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#other_context> <http://www.w3.org/2000/01/rdf-schema#label> "otros contextos"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#other_context> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Structures_RM.owl#DATA_STRUCTURE> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#other_context> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#CLINICAL_CONTEXT> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#other_context> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#other_context> <http://www.w3.org/2000/01/rdf-schema#comment> "Other optional context which will be archetyped."^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA2802 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#INSTRUCTION> .
+_:AX5fXX3aXX40XX5fXX3aXA2802 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA2803 .
+_:AX5fXX3aXX40XX5fXX3aXA2782 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#content> .
+_:AX5fXX3aXX40XX5fXX3aXA2782 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2782 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2811 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#is_persistent> .
+_:AX5fXX3aXX40XX5fXX3aXA2811 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2811 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2791 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2791 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#time_created> .
+_:AX5fXX3aXX40XX5fXX3aXA2791 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#is_persistent> <http://www.w3.org/2000/01/rdf-schema#label> "is persistent"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#is_persistent> <http://www.w3.org/2000/01/rdf-schema#label> "es persistente"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#is_persistent> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#is_persistent> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#BOOLEAN> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#is_persistent> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA2822 .
+_:AX5fXX3aXX40XX5fXX3aXA2820 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EHR> .
+_:AX5fXX3aXX40XX5fXX3aXA2820 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA2821 .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#content> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#content> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#TRANSACTION> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#content> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#ORGANISER> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#content> <http://www.w3.org/2000/01/rdf-schema#label> "content"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#content> <http://www.w3.org/2000/01/rdf-schema#label> "contenido"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#content> <http://www.w3.org/2000/01/rdf-schema#comment> "The clinical session content\nof this transaction, i.e. the\ninformation generated in the clinical session"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#LIST_OBJECT_ID> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA2803 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA2804 .
+_:AX5fXX3aXX40XX5fXX3aXA2803 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EVALUATION> .
+_:AX5fXX3aXX40XX5fXX3aXA2783 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2783 <http://www.w3.org/2002/07/owl#maxCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2783 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#feeder_audit> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#all_transactions> <http://www.w3.org/2000/01/rdf-schema#label> "all transactions"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#all_transactions> <http://www.w3.org/2000/01/rdf-schema#label> "todas las transacciones"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#all_transactions> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#LIST_OBJECT_ID> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#all_transactions> <http://www.w3.org/2000/01/rdf-schema#comment> "Master list of all transaction references in this EHR"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#all_transactions> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EHR> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#all_transactions> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#directory> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#EHR> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#directory> <http://www.w3.org/2000/01/rdf-schema#comment> "Optional directory structure for this EHR"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#directory> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#directory> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#VERSION_REPOSITORY_FOLDER> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#directory> <http://www.w3.org/2000/01/rdf-schema#label> "directory"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#directory> <http://www.w3.org/2000/01/rdf-schema#label> "directorio"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#transactions> <http://www.w3.org/2000/01/rdf-schema#label> "transacciones"@es .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#transactions> <http://www.w3.org/2000/01/rdf-schema#label> "transactions"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#transactions> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#FOLDER> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#transactions> <http://www.w3.org/2000/01/rdf-schema#comment> "The list of references to versioned\ntransactions in this folder. Since more\nthan one folder can\ninclude the same transaction, this\nrelationship is an association."^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#transactions> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#transactions> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#LIST_OBJECT_ID> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#state> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#state> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Data_Types_RM.owl#DV_STATE> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#state> <http://www.w3.org/2000/01/rdf-schema#comment> "current state of the action in a state machine description"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#state> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#INSTRUCTION> .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#state> <http://www.w3.org/2000/01/rdf-schema#label> "state"@en .
+<http://trajano.us.es/~isabel/EHR/EHR_RM.owl#state> <http://www.w3.org/2000/01/rdf-schema#label> "estado"@es .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#OBJECT_REF> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA2812 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2812 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#data> .
+_:AX5fXX3aXX40XX5fXX3aXA2812 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA2792 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/EHR_RM.owl#data> .
+_:AX5fXX3aXX40XX5fXX3aXA2792 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA2792 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
Index: /ruby/tags/0.0.2/adl_parser/docs/Support_RM.ntriple
===================================================================
--- /ruby/tags/0.0.2/adl_parser/docs/Support_RM.ntriple	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/docs/Support_RM.ntriple	(revision 39)
@@ -0,0 +1,226 @@
+_:AX5fXX3aXX40XX5fXX3aXA3403 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#upper_unbounded> .
+_:AX5fXX3aXX40XX5fXX3aXA3403 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA3403 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#SET_T> <http://www.w3.org/2000/01/rdf-schema#comment> "Asumed types"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#SET_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CONTAINER_T> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#SET_T> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#OMGHDTF> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#AnnotationProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#OMGHDTF> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#OMGHDTF> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTEGER.value> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTEGER.value> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTEGER_64> <http://www.w3.org/2000/01/rdf-schema#comment> "Asumed types"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTEGER_64> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTEGER_64> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA3413 .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTEGER_64> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#NUMERIC> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTEGER_64> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA3412 .
+_:AX5fXX3aXX40XX5fXX3aXA3412 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA3412 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA3412 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#value> .
+_:AX5fXX3aXX40XX5fXX3aXA3392 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://www.w3.org/2001/XMLSchema#float> .
+_:AX5fXX3aXX40XX5fXX3aXA3392 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA3392 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#value> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#local_id> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#local_id> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#STRING> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#CHARACTER> <http://www.w3.org/2000/01/rdf-schema#comment> "Asumed types"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#CHARACTER> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#CHARACTER> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Any> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#BAG_T> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#BAG_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CONTAINER_T> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#COMPARABLE> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#COMPARABLE> <http://www.w3.org/2000/01/rdf-schema#comment> "abstract notional parent class of comparable types, which are types which have the '<' defined"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#COMPARABLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Any> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#CODE_SET_INTERFACE> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#CODE_SET_INTERFACE> <http://www.w3.org/2000/01/rdf-schema#comment> "Defines an object provindg proxy access to a code_set"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#rm_originator> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#rm_originator> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#STRING> .
+_:AX5fXX3aXX40XX5fXX3aXA3404 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA3404 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#lower_unbounded> .
+_:AX5fXX3aXX40XX5fXX3aXA3404 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA3393 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#value> .
+_:AX5fXX3aXX40XX5fXX3aXA3393 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA3393 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA3413 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#value> .
+_:AX5fXX3aXX40XX5fXX3aXA3413 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA3413 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#AnnotationProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#HL7> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#namespace> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#namespace> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#STRING> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#TERMINOLOGY_INTERFACE> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#TERMINOLOGY_INTERFACE> <http://www.w3.org/2000/01/rdf-schema#comment> "Defines an object providing proxy access to a terminology"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA3405 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA3405 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA3405 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#value> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#KB_051479_Slot_2> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#NUMERIC> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Any> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#NUMERIC> <http://www.w3.org/2000/01/rdf-schema#comment> "Asumed types"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#NUMERIC> <http://protege.stanford.edu/plugins/owl/protege#abstract> "true"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#NUMERIC> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#NUMERIC> <http://www.w3.org/2002/07/owl#equivalentClass> _:AX5fXX3aXX40XX5fXX3aXA3394 .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#DOUBLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA3400 .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#DOUBLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA3399 .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#DOUBLE> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#NUMERIC> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#DOUBLE> <http://www.w3.org/2000/01/rdf-schema#comment> "Asumed types"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#DOUBLE> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA3414 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA3414 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA3415 .
+_:AX5fXX3aXX40XX5fXX3aXA3394 <http://www.w3.org/2002/07/owl#unionOf> _:AX5fXX3aXX40XX5fXX3aXA3395 .
+_:AX5fXX3aXX40XX5fXX3aXA3394 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#id> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTERVAL_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA3404 .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTERVAL_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Any> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTERVAL_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA3403 .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTERVAL_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA3402 .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTERVAL_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA3401 .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTERVAL_T> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA3406 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA3406 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA3406 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#value> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#rm_concept> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#rm_concept> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#STRING> .
+_:AX5fXX3aXX40XX5fXX3aXA3415 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CHARACTER> .
+_:AX5fXX3aXX40XX5fXX3aXA3415 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA3416 .
+_:AX5fXX3aXX40XX5fXX3aXA3395 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTEGER> .
+_:AX5fXX3aXX40XX5fXX3aXA3395 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA3396 .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#AnnotationProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#CEN> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#AnnotationProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#Use> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#specialisation> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#STRING> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#specialisation> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#ARRAY_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CONTAINER_T> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#ARRAY_T> <http://www.w3.org/2000/01/rdf-schema#comment> "Asumed types"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#ARRAY_T> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#AnnotationProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#Synapses> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#item> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#item> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CONTAINER_T> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#upper_unbounded> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#upper_unbounded> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTERVAL_T> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#upper_unbounded> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#BOOLEAN> .
+_:AX5fXX3aXX40XX5fXX3aXA3407 <http://www.w3.org/2002/07/owl#oneOf> _:AX5fXX3aXX40XX5fXX3aXA3408 .
+_:AX5fXX3aXX40XX5fXX3aXA3407 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#lower> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#lower> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTERVAL_T> .
+_:AX5fXX3aXX40XX5fXX3aXA3416 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#BOOLEAN> .
+_:AX5fXX3aXX40XX5fXX3aXA3416 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA3417 .
+_:AX5fXX3aXX40XX5fXX3aXA3396 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA3396 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#REAL> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#upper> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#upper> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTERVAL_T> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#value> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#value> <http://www.w3.org/2000/01/rdf-schema#domain> _:AX5fXX3aXX40XX5fXX3aXA3414 .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#FALSE> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#BOOLEAN> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#FALSE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#value> "false"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Ontology> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl> <http://www.w3.org/2002/07/owl#imports> <http://protege.stanford.edu/plugins/owl/protege> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl> <http://www.w3.org/2000/01/rdf-schema#comment> "Based on Revision 1.1. 11 Mar 2004\nChanges made on Jul 14 2004\nPacket e"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#TRUE> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#BOOLEAN> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#TRUE> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#value> "true"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTEGER> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#NUMERIC> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTEGER> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA3406 .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTEGER> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA3405 .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTEGER> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTEGER> <http://www.w3.org/2000/01/rdf-schema#comment> "Asumed types"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA3408 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#FALSE> .
+_:AX5fXX3aXX40XX5fXX3aXA3408 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA3409 .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#MisUse> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#MisUse> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#AnnotationProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#MisUse> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#type> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#STRING> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#concept> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#STRING> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#concept> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA3417 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTEGER> .
+_:AX5fXX3aXX40XX5fXX3aXA3417 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA3418 .
+_:AX5fXX3aXX40XX5fXX3aXA3397 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA3397 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#value> .
+_:AX5fXX3aXX40XX5fXX3aXA3397 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#rm_id> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#STRING> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#rm_id> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#AnnotationProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#Purpose> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA3409 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
+_:AX5fXX3aXX40XX5fXX3aXA3409 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#TRUE> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#AnnotationProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#ISO18308> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#CONTAINER_T> <http://www.w3.org/2000/01/rdf-schema#comment> "Asumed types"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#CONTAINER_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA3398 .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#CONTAINER_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Any> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#CONTAINER_T> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#LIST_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#CONTAINER_T> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#LIST_T> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#List> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#LIST_T> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#LIST_T> <http://www.w3.org/2000/01/rdf-schema#comment> "Asumed types"^^<http://www.w3.org/2001/XMLSchema#string> .
+_:AX5fXX3aXX40XX5fXX3aXA3418 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#DOUBLE> .
+_:AX5fXX3aXX40XX5fXX3aXA3418 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA3419 .
+_:AX5fXX3aXX40XX5fXX3aXA3398 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA3398 <http://www.w3.org/2002/07/owl#minCardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA3398 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#item> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#REAL> <http://www.w3.org/2000/01/rdf-schema#comment> "Asumed types"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#REAL> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#REAL> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#NUMERIC> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#REAL> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA3393 .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#REAL> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA3392 .
+_:AX5fXX3aXX40XX5fXX3aXA3400 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA3400 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#value> .
+_:AX5fXX3aXX40XX5fXX3aXA3400 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://www.w3.org/2001/XMLSchema#float> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#STRING> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#STRING> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA3397 .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#STRING> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Any> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#STRING> <http://www.w3.org/2000/01/rdf-schema#comment> "Asumed types"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#REAL.value> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#REAL.value> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#float> .
+_:AX5fXX3aXX40XX5fXX3aXA3419 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTEGER_64> .
+_:AX5fXX3aXX40XX5fXX3aXA3419 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> _:AX5fXX3aXX40XX5fXX3aXA3420 .
+_:AX5fXX3aXX40XX5fXX3aXA3399 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA3399 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA3399 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#value> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#Boolean.value> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#boolean> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#Boolean.value> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#MEASUREMENT_SERVICE_ACCESS> <http://www.w3.org/2000/01/rdf-schema#comment> "Defines an object providing proxy access to a measurment information service"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#MEASUREMENT_SERVICE_ACCESS> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA3401 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#lower> .
+_:AX5fXX3aXX40XX5fXX3aXA3401 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA3401 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#lower_unbounded> <http://www.w3.org/2000/01/rdf-schema#domain> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#INTERVAL_T> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#lower_unbounded> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#BOOLEAN> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#lower_unbounded> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#TERMINOLOGY_SERVICE_ACCESS> <http://www.w3.org/2000/01/rdf-schema#comment> "Defines an object providing proxy access to a terminology service"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#TERMINOLOGY_SERVICE_ACCESS> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA3410 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA3410 <http://www.w3.org/2002/07/owl#allValuesFrom> <http://www.w3.org/2001/XMLSchema#boolean> .
+_:AX5fXX3aXX40XX5fXX3aXA3410 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#value> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#AnnotationProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#GEHR> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#String.value> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#String.value> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#version_id> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#version_id> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#STRING> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#context_id> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+_:AX5fXX3aXX40XX5fXX3aXA3402 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#upper> .
+_:AX5fXX3aXX40XX5fXX3aXA3402 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA3402 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA3411 <http://www.w3.org/2002/07/owl#cardinality> "1"^^<http://www.w3.org/2001/XMLSchema#int> .
+_:AX5fXX3aXX40XX5fXX3aXA3411 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Restriction> .
+_:AX5fXX3aXX40XX5fXX3aXA3411 <http://www.w3.org/2002/07/owl#onProperty> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#value> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#BOOLEAN> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA3411 .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#BOOLEAN> <http://www.w3.org/2000/01/rdf-schema#subClassOf> _:AX5fXX3aXX40XX5fXX3aXA3410 .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#BOOLEAN> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#Any> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#BOOLEAN> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#BOOLEAN> <http://www.w3.org/2002/07/owl#equivalentClass> _:AX5fXX3aXX40XX5fXX3aXA3407 .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#BOOLEAN> <http://www.w3.org/2000/01/rdf-schema#comment> "Asumed types"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#name> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#name> <http://www.w3.org/2000/01/rdf-schema#range> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#STRING> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#Any> <http://www.w3.org/2000/01/rdf-schema#comment> "All types"^^<http://www.w3.org/2001/XMLSchema#string> .
+<http://trajano.us.es/~isabel/EHR/Support_RM.owl#Any> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class> .
+_:AX5fXX3aXX40XX5fXX3aXA3420 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <http://trajano.us.es/~isabel/EHR/Support_RM.owl#STRING> .
+_:AX5fXX3aXX40XX5fXX3aXA3420 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .
Index: /ruby/tags/0.0.2/adl_parser/docs/adl.bnf
===================================================================
--- /ruby/tags/0.0.2/adl_parser/docs/adl.bnf	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/docs/adl.bnf	(revision 39)
@@ -0,0 +1,65 @@
+%token <STRING> V_IDENTIFIER
+%token <STRING> V_ARCHETYPE_ID
+%token <STRING> V_LOCAL_TERM_CODE_REF
+%token <STRING> V_DADL_TEXT V_CADL_TEXT V_ASSERTION_TEXT
+%token <STRING> V_VERSION_STRING
+
+%token SYM_ARCHETYPE SYM_CONCEPT SYM_SPECIALIZE
+%token SYM_DEFINITION SYM_LANGUAGE
+%token SYM_DESCRIPTION SYM_ONTOLOGY SYM_INVARIANT
+%token SYM_ADL_VERSION SYM_IS_CONTROLLED
+
+%%
+
+input: archetype	
+	| error
+
+archetype: arch_identification 
+	   	arch_specialisation 
+		arch_concept 
+		arch_language 
+		arch_description 
+		arch_definition 
+		arch_invariant
+		arch_ontology
+
+
+arch_identification: arch_head V_ARCHETYPE_ID 
+	| SYM_ARCHETYPE error
+
+arch_head: SYM_ARCHETYPE 
+	| SYM_ARCHETYPE arch_meta_data
+
+arch_meta_data: '(' arch_meta_data_items ')'
+
+arch_meta_data_items: arch_meta_data_item
+	| arch_meta_data_items ';' arch_meta_data_item
+
+arch_meta_data_item: SYM_ADL_VERSION '=' V_VERSION_STRING
+	| SYM_IS_CONTROLLED
+
+arch_specialisation: -- empty is ok
+	| SYM_SPECIALIZE V_ARCHETYPE_ID 
+	| SYM_SPECIALIZE error
+
+arch_concept: SYM_CONCEPT V_LOCAL_TERM_CODE_REF 
+	| SYM_CONCEPT error
+
+arch_language: -- empty is ok for ADL 1.4 tools
+	| SYM_LANGUAGE V_DADL_TEXT
+	| SYM_LANGUAGE error
+
+arch_description: -- no meta-data ok
+	| SYM_DESCRIPTION V_DADL_TEXT 
+	| SYM_DESCRIPTION error
+
+arch_definition:	SYM_DEFINITION V_CADL_TEXT	
+	| SYM_DEFINITION error
+
+arch_invariant: -- no invariant ok
+	| SYM_INVARIANT V_ASSERTION_TEXT
+	| SYM_INVARIANT error
+
+arch_ontology: SYM_ONTOLOGY V_DADL_TEXT
+	| SYM_ONTOLOGY error
+
Index: /ruby/tags/0.0.2/adl_parser/docs/dadl.bnf
===================================================================
--- /ruby/tags/0.0.2/adl_parser/docs/dadl.bnf	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/docs/dadl.bnf	(revision 39)
@@ -0,0 +1,240 @@
+
+input: attr_vals	-- anonymous object
+	| complex_object_block
+	| error
+
+---------------------- body ---------------------
+
+attr_vals: attr_val
+	| attr_vals attr_val
+	| attr_vals ';' attr_val
+
+
+attr_val: attr_id SYM_EQ object_block -- could be a single or multiple attr
+
+attr_id: V_ATTRIBUTE_IDENTIFIER
+	| V_ATTRIBUTE_IDENTIFIER error
+
+--
+-- An object_block is any block enclosed in <> with optional leading type name
+--
+object_block: complex_object_block
+	| primitive_object_block
+
+complex_object_block: single_attr_object_block
+	| multiple_attr_object_block
+
+--
+-- --------------------------- multiple attr objects -------------------------------
+--
+multiple_attr_object_block: untyped_multiple_attr_object_block 
+	| type_identifier untyped_multiple_attr_object_block
+
+untyped_multiple_attr_object_block: multiple_attr_object_block_head keyed_objects SYM_END_DBLOCK
+
+multiple_attr_object_block_head: SYM_START_DBLOCK
+
+keyed_objects: keyed_object
+	| keyed_objects keyed_object
+
+keyed_object: object_key SYM_EQ object_block
+
+object_key: '[' simple_value ']'
+
+--
+-- --------------------------- single attr objects -------------------------------
+--
+
+single_attr_object_block: untyped_single_attr_object_block
+	| type_identifier untyped_single_attr_object_block
+
+--
+-- An untyped_single_attr_object_block is any block of the form:
+--	<
+--		attr1 = <...>
+--		attr2 = <...>
+--		attrN = <...>
+--	>
+--
+untyped_single_attr_object_block: single_attr_object_complex_head SYM_END_DBLOCK
+	| single_attr_object_complex_head attr_vals SYM_END_DBLOCK
+	;
+
+single_attr_object_complex_head: SYM_START_DBLOCK
+
+
+--
+-- ------------------------- primitive objects ---------------------
+--
+primitive_object_block: untyped_primitive_object_block
+	| type_identifier untyped_primitive_object_block
+
+untyped_primitive_object_block: SYM_START_DBLOCK primitive_object_value SYM_END_DBLOCK
+
+primitive_object_value: simple_value
+	| simple_list_value
+	| simple_interval_value
+	| term_code
+	| term_code_list_value
+
+simple_value: string_value
+	| integer_value
+	| real_value
+	| boolean_value
+	| character_value
+	| date_value
+	| time_value
+	| date_time_value
+	| duration_value
+	| uri_value
+
+simple_list_value: string_list_value
+	| integer_list_value
+	| real_list_value
+	| boolean_list_value
+	| character_list_value
+	| date_list_value
+	| time_list_value
+	| date_time_list_value
+	| duration_list_value
+
+simple_interval_value: integer_interval_value
+	| real_interval_value
+	| date_interval_value
+	| time_interval_value
+	| date_time_interval_value
+	| duration_interval_value
+
+---------------------- BASIC DATA VALUES -----------------------
+
+type_identifier: V_TYPE_IDENTIFIER
+	| V_GENERIC_TYPE_IDENTIFIER
+
+string_value: V_STRING
+
+string_list_value: V_STRING ',' V_STRING
+	| string_list_value ',' V_STRING
+	| V_STRING ',' SYM_LIST_CONTINUE
+
+integer_value: V_INTEGER {
+	| '+' V_INTEGER {
+	| '-' V_INTEGER {
+
+integer_list_value: integer_value ',' integer_value
+	| integer_list_value ',' integer_value
+	| integer_value ',' SYM_LIST_CONTINUE
+
+integer_interval_value: SYM_INTERVAL_DELIM integer_value SYM_ELLIPSIS integer_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_GT integer_value SYM_ELLIPSIS integer_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM integer_value SYM_ELLIPSIS SYM_LT integer_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_GT integer_value SYM_ELLIPSIS SYM_LT integer_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_LT integer_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_LE integer_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_GT integer_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_GE integer_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM integer_value SYM_INTERVAL_DELIM
+
+real_value: V_REAL 
+	| '+' V_REAL 
+	| '-' V_REAL 
+
+real_list_value: real_value ',' real_value
+	| real_list_value ',' real_value
+	| real_value ',' SYM_LIST_CONTINUE
+
+real_interval_value: SYM_INTERVAL_DELIM real_value SYM_ELLIPSIS real_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_GT real_value SYM_ELLIPSIS real_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM real_value SYM_ELLIPSIS SYM_LT real_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_GT real_value SYM_ELLIPSIS SYM_LT real_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_LT real_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_LE real_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_GT real_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_GE real_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM real_value SYM_INTERVAL_DELIM
+
+boolean_value: SYM_TRUE
+	| SYM_FALSE
+
+boolean_list_value: boolean_value ',' boolean_value
+	| boolean_list_value ',' boolean_value
+	| boolean_value ',' SYM_LIST_CONTINUE
+
+character_value: V_CHARACTER
+
+character_list_value: character_value ',' character_value
+	| character_list_value ',' character_value
+	| character_value ',' SYM_LIST_CONTINUE
+
+date_value: V_ISO8601_EXTENDED_DATE -- in ISO8601 form yyyy-MM-dd
+
+date_list_value: date_value ',' date_value
+	| date_list_value ',' date_value
+	| date_value ',' SYM_LIST_CONTINUE
+
+date_interval_value: SYM_INTERVAL_DELIM date_value SYM_ELLIPSIS date_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_GT date_value SYM_ELLIPSIS date_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM date_value SYM_ELLIPSIS SYM_LT date_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_GT date_value SYM_ELLIPSIS SYM_LT date_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_LT date_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_LE date_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_GT date_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_GE date_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM date_value SYM_INTERVAL_DELIM
+
+time_value: V_ISO8601_EXTENDED_TIME
+
+time_list_value: time_value ',' time_value
+	| time_list_value ',' time_value
+	| time_value ',' SYM_LIST_CONTINUE
+
+time_interval_value: SYM_INTERVAL_DELIM time_value SYM_ELLIPSIS time_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_GT time_value SYM_ELLIPSIS time_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM time_value SYM_ELLIPSIS SYM_LT time_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_GT time_value SYM_ELLIPSIS SYM_LT time_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_LT time_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_LE time_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_GT time_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_GE time_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM time_value SYM_INTERVAL_DELIM
+
+date_time_value: V_ISO8601_EXTENDED_DATE_TIME
+
+date_time_list_value: date_time_value ',' date_time_value
+	| date_time_list_value ',' date_time_value
+	| date_time_value ',' SYM_LIST_CONTINUE
+
+date_time_interval_value: SYM_INTERVAL_DELIM date_time_value SYM_ELLIPSIS date_time_value  SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_GT date_time_value SYM_ELLIPSIS date_time_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM date_time_value SYM_ELLIPSIS SYM_LT date_time_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_GT date_time_value SYM_ELLIPSIS SYM_LT date_time_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_LT date_time_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_LE date_time_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_GT date_time_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_GE date_time_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM date_time_value SYM_INTERVAL_DELIM
+
+duration_value: V_ISO8601_DURATION
+
+duration_list_value: duration_value ',' duration_value
+	| duration_list_value ',' duration_value
+	| duration_value ',' SYM_LIST_CONTINUE
+
+duration_interval_value: SYM_INTERVAL_DELIM duration_value SYM_ELLIPSIS duration_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_GT duration_value SYM_ELLIPSIS duration_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM duration_value SYM_ELLIPSIS SYM_LT duration_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_GT duration_value SYM_ELLIPSIS SYM_LT duration_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_LT duration_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_LE duration_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_GT duration_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM SYM_GE duration_value SYM_INTERVAL_DELIM
+	| SYM_INTERVAL_DELIM duration_value SYM_INTERVAL_DELIM
+
+term_code: V_QUALIFIED_TERM_CODE_REF
+	| ERR_V_QUALIFIED_TERM_CODE_REF
+
+term_code_list_value: term_code ',' term_code
+	| term_code_list_value ',' term_code
+	| term_code ',' SYM_LIST_CONTINUE
+
+uri_value: V_URI
+
Index: /ruby/tags/0.0.2/adl_parser/lib/adl_parser.y.bak
===================================================================
--- /ruby/tags/0.0.2/adl_parser/lib/adl_parser.y.bak	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/lib/adl_parser.y.bak	(revision 39)
@@ -0,0 +1,301 @@
+
+
+class OpenEHR::ADLParser
+
+#options omit_action_call
+
+prechigh
+
+  nonassoc UMINUS UPLUS
+  left '*' '/'
+  left '+' '-'
+
+#  left DOUBLE_BAR
+
+  nonassoc SYM_EQ
+  nonassoc SYM_NE
+  nonassoc SYM_LT
+  nonassoc SYM_START_DBLOCK
+  nonassoc SYM_GT
+  nonassoc SYM_END_DBLOCK
+  nonassoc SYM_LE
+  nonassoc SYM_GE
+
+preclow
+
+
+rule
+### http://svn.openehr.org/ref_impl_eiffel/TRUNK/components/adl_parser/src/syntax/adl/parser/adl_validator.y
+
+input: archetype
+#  | error
+
+archetype: arch_identification
+  arch_specialisation
+  arch_concept
+  arch_language
+  arch_description
+  arch_definition
+  arch_invariant
+  arch_ontology
+
+
+arch_identification: arch_head V_ARCHETYPE_ID
+#  | SYM_ARCHETYPE error
+
+arch_head: SYM_ARCHETYPE
+  | SYM_ARCHETYPE arch_meta_data
+
+arch_meta_data: Left_parenthesis_code arch_meta_data_items Right_parenthesis_code
+
+arch_meta_data_items: arch_meta_data_item
+  | arch_meta_data_items ';' arch_meta_data_item
+
+arch_meta_data_item: SYM_ADL_VERSION SYM_EQ V_VERSION_STRING
+  | SYM_IS_CONTROLLED
+
+# Define specialization in which its constraints are narrower than those of the parent.
+# Any data created via the use of the specialized archetype shall be conformant both to it and its parent.
+arch_specialisation: #-- empty is ok
+  | SYM_SPECIALIZE V_ARCHETYPE_ID
+#  | SYM_SPECIALIZE error
+
+arch_concept: SYM_CONCEPT V_LOCAL_TERM_CODE_REF
+#  | SYM_CONCEPT error
+
+arch_language: #-- empty is ok for ADL 1.4 tools
+    | SYM_LANGUAGE V_DADL_TEXT
+#  | SYM_LANGUAGE error
+
+arch_description: #-- no meta-data ok
+    | SYM_DESCRIPTION V_DADL_TEXT
+#  | SYM_DESCRIPTION error
+
+arch_definition: SYM_DEFINITION V_CADL_TEXT
+#  | SYM_DEFINITION error
+
+arch_invariant: #-- no invariant ok
+    | SYM_INVARIANT V_ASSERTION_TEXT
+#  | SYM_INVARIANT error
+
+# define all linguistic entries in this part as dADL.
+arch_ontology: SYM_ONTOLOGY V_DADL_TEXT
+#  | SYM_ONTOLOGY error
+
+
+---- header
+
+$:.unshift File.join(File.dirname(__FILE__))
+$DEBUG = false
+
+
+---- inner
+###----------/* keywords */ --------------------------------------------- 
+@@reserved = {
+    'archetype' => :SYM_ARCHETYPE,
+    'adl_version' => :SYM_ADL_VERSION,
+    'controlled' => :SYM_IS_CONTROLLED,
+    'specialize' => :SYM_SPECIALIZE,
+    'concept' => :SYM_CONCEPT,
+    'language' => :SYM_LANGUAGE,
+    'description' => :SYM_DESCRIPTION,
+    'definition' => :SYM_DEFINITION,
+    'invariant' => :SYM_INVARIANT,
+    'ontology' => :SYM_ONTOLOGY,
+    'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE 
+    'false' => :SYM_FALSE, # [Ff][Aa][Ll][Ss][Ee] -- -> SYM_FALSE 
+    'infinity' => :SYM_INFINITY # [Ii][Nn][Ff][Ii][Nn][Ii][Tt][Yy] -- -> SYM_INFINITY 
+}
+
+###----------/* Scanner */ ----------------------------------------------- 
+
+def scan
+  until @data.nil?  do
+    case @data
+    when /\A\n/ # carriage return
+      @lineno += 1
+      ;
+    when /\A[ \t\r\f]+/ #just drop it
+      ;
+    when /\A--.*\n/ # single line comment
+      @lineno += 1
+      ;
+    ###----------/* symbols */ ------------------------------------------------- 
+    when /\A[a-zA-Z][a-zA-Z0-9_-]+\.[a-zA-Z][a-zA-Z0-9_-]+\.[a-zA-Z0-9]+/   #V_ARCHETYPE_ID
+      yield :V_ARCHETYPE_ID, $&
+    when /\A[a-z][a-zA-Z0-9_]*/
+      word = $&.downcase
+      if @@reserved[word]
+        yield @@reserved[word], @@reserved[word]
+      end
+    when /\A\=/   # =
+      yield :SYM_EQ, :SYM_EQ
+    when /\A\>=/   # >=
+      yield :SYM_GE, :SYM_GE
+    when /\A\<=/   # <=
+      yield :SYM_LE, :SYM_LE
+    when /\A\</   # <
+      if @in_interval
+        @start_block_received = false
+        yield :SYM_LT, :SYM_LT
+      else
+        @start_block_received = true
+        yield :SYM_START_DBLOCK, :SYM_START_DBLOCK
+      end
+    when /\A\>/   # >
+      if @in_interval
+        yield :SYM_GT, :SYM_GT
+      else
+        yield :SYM_END_DBLOCK, :SYM_END_DBLOCK
+      end
+    when /\A\-/   # -
+      yield :Minus_code, :Minus_code
+    when /\A\+/   # +
+      yield :Plus_code, :Plus_code
+    when /\A\*/   # *
+      yield :Star_code, :Star_code
+    when /\A\//   # /
+      yield :Slash_code, :Slash_code
+    when /\A\^/   # ^
+      yield :Caret_code, :Caret_code
+    when /\A\=/   # =
+      yield :Equal_code, :Equal_code
+    when /\A\./   # .
+      yield :Dot_code, :Dot_code
+    when /\A\;/   # ;
+      yield :Semicolon_code, :Semicolon_code
+    when /\A\,/   # ,
+      yield :Comma_code, :Comma_code
+    when /\A\:/   # :
+      yield :Colon_code, :Colon_code
+    when /\A\!/   # !
+      yield :Exclamation_code, :Exclamation_code
+    when /\A\(/   # (
+      yield :Left_parenthesis_code, :Left_parenthesis_code
+    when /\A\)/   # )
+      yield :Right_parenthesis_code, :Right_parenthesis_code
+    when /\A\$/   # $
+      yield :Dollar_code, :Dollar_code
+    when /\A\?\?/   # ??
+      yield :SYM_DT_UNKNOWN, :SYM_DT_UNKNOWN
+    when /\A\?/   # ?
+      yield :Question_mark_code, :Question_mark_code
+    when /\A[0-9]+\.[0-9]+(\.[0-9]+)*/   # ?
+      yield :V_VERSION_STRING, :V_VERSION_STRING
+    when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
+      yield :V_LOCAL_TERM_CODE_REF, $&
+    when /\A[a-zA-Z][a-zA-Z0-9_]*/
+      yield :V_IDENTIFIER, $&
+    when /\A\|/   # |
+      if @in_interval
+        @in_interval = false
+      elsif @start_block_received
+        @in_interval = true
+        @start_block_received = false
+      end
+      yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
+    when /\A\[/   # [
+      yield :Left_bracket_code, :Left_bracket_code
+    when /\A\]/   # ]
+      yield :Right_bracket_code, :Right_bracket_code
+    when /\A\../   # ..
+      yield :SYM_ELLIPSIS, :SYM_ELLIPSIS
+    when /\A\.../   # ...
+      yield :SYM_LIST_CONTINUE, :SYM_LIST_CONTINUE
+
+    when /\A\[[a-zA-Z0-9._\-]+::[a-zA-Z0-9._\-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
+      yield :V_QUALIFIED_TERM_CODE_REF, $&
+    when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
+      yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
+    when /\Aa[ct][0-9.]+/   #V_LOCAL_CODE
+      yield :V_LOCAL_CODE, $&
+    when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9](Z|[+-][0-9]{4})?/   #V_ISO8601_EXTENDED_DATE_TIME YYYY-MM-DDThh:mm:ss[,sss][Z|+/- -n-n-n-n-]-
+      yield :V_ISO8601_EXTENDED_DATE_TIME, $&
+    when /\A[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})? /   #V_ISO8601_EXTENDED_TIME hh:mm:ss[,sss][Z|+/-nnnn]
+      yield :V_ISO8601_EXTENDED_TIME, $&
+    when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]|[0-9]{4}-[0-1][0-9]/   #V_ISO8601_EXTENDED_DATE YYYY-MM-DD
+      yield :V_ISO8601_EXTENDED_DATE, $&
+    when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
+      yield :V_ISO8601_DURATION, $&
+    when /\A[A-Z][a-zA-Z0-9_]*/   #V_TYPE_IDENTIFIER
+      yield :V_ISO8601_DURATION, $&
+    when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
+      yield :V_GENERIC_TYPE_IDENTIFIER, $&
+    when /\A[0-9]+|[0-9]+[eE][+-]?[0-9]+/   #V_INTEGER
+      yield :V_INTEGER, $&
+    when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
+      yield :V_REAL, $&
+#    when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
+    when /\A"([^"]*)"/m #V_STRING
+      yield :V_STRING, $1
+# \"[^\\\n"]*\" 
+# \"[^\\\n"]*{ -- beginning of a multi-line string 
+# <IN_STR> { 
+# \\\\ -- match escaped backslash, i.e. \\ -> \ 
+# \\\" -- match escaped double quote, i.e. \” -> “ 
+# {UTF8CHAR}+ -- match UTF8 chars 
+# [^\\\n"]+ -- match any other characters 
+# \\\n[ \t\r]* -- match LF in line 
+# [^\\\n"]*\" -- match final end of string 
+# .|\n | 
+# <<EOF>> -- unclosed String -> ERR_STRING 
+# }
+# ###----------/* V_CHARACTER */ -------------------------------------------- 
+# \'[^\\\n']\' -- normal character in 0-127 
+# \'\\n\ -- \n 
+# \'\\r\ -- \r 
+# \'\\t\ -- \t 
+# \'\\'\ -- \’ 
+# \'\\\\ -- \\ 
+# \'{UTF8CHAR}\' -- UTF8 char 
+# \'.{1,2} | 
+# \'\\[0-9]+(\/)? -- invalid character -> ERR_CHARACTER 
+    when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
+      yield :V_URI, $&
+    when /\A\S/ #UTF8CHAR
+      yield :UTF8CHAR, $&
+    end
+    @data = $' # variable $' receives the string after the match
+  end
+  yield :EOF, nil
+  yield false, '$'
+end # of scan
+
+
+def parse(data, filename, lineno = 1, debug = false)
+  @yydebug = true
+  @parsestring = data
+  @data = data
+  @lineno = lineno
+  @filename = filename
+  @in_interval = false
+  @start_block_received = false
+  @start_block_received = false
+  yyparse self, :scan
+end
+
+def on_error( t, v, values)
+  raise Racc::ParseError, "#{@filename}:#{@lineno}: Inline syntax error on #{v.inspect}"
+end
+
+# ###----------/* CADL Blocks */ -------------------------------------------
+# \{[^{}]* -- beginning of CADL block 
+# <IN_CADL_BLOCK>\{[^{}]* -- got an open brace 
+# <IN_CADL_BLOCK>[^{}]*\} -- got a close brace 
+
+
+
+
+
+
+### Local Variables:
+### mode:ruby
+### mode:font-lock
+### comment-column:0
+### comment-start: "### "
+### comment-end:"" 
+### End:
+
+
+
+
Index: /ruby/tags/0.0.2/adl_parser/lib/cparser.y.bak
===================================================================
--- /ruby/tags/0.0.2/adl_parser/lib/cparser.y.bak	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/lib/cparser.y.bak	(revision 39)
@@ -0,0 +1,643 @@
+
+
+class OpenEHR::CADLParser
+
+#options omit_action_call
+
+prechigh
+
+  nonassoc UMINUS UPLUS
+#  left '*' '/'
+  left Star_code Slash_code
+  left '+' '-'
+
+  nonassoc SYM_EQ
+  nonassoc SYM_NE
+  nonassoc SYM_LT
+  nonassoc SYM_START_DBLOCK
+  nonassoc SYM_GT
+  nonassoc SYM_END_DBLOCK
+  nonassoc SYM_LE
+  nonassoc SYM_GE
+
+preclow
+
+
+rule
+  ### http://svn.openehr.org/ref_impl_eiffel/TRUNK/components/adl_parser/src/syntax/cadl/parser/cadl_validator.y
+
+cadl: input EOF
+input: c_complex_object
+  | assertions
+#  | error
+
+c_complex_object: c_complex_object_head SYM_MATCHES SYM_START_CBLOCK c_complex_object_body SYM_END_CBLOCK
+
+c_complex_object_head: c_complex_object_id c_occurrences
+
+c_complex_object_id: type_identifier
+  | type_identifier V_LOCAL_TERM_CODE_REF
+
+c_complex_object_body: c_any #-- used to indicate that any value of a type is ok
+  | c_attributes
+
+
+#------------------------- node types -----------------------
+
+c_object: c_complex_object
+  | archetype_internal_ref
+  | archetype_slot
+  | constraint_ref
+  | c_code_phrase
+  | c_ordinal
+  | c_primitive_object
+  | v_c_domain_type
+#  | V_C_DOMAIN_TYPE
+  | ERR_C_DOMAIN_TYPE
+  | error
+
+
+# 'archetype_internal_ref' is a node that refers to a previously defined object node in the same archetype.
+archetype_internal_ref: SYM_USE_NODE type_identifier c_occurrences absolute_path
+  | SYM_USE_NODE type_identifier error
+
+# 'archetype_slot' is a node whose statements define a constraint that determines which other archetypes may appear at that point in the current archetype.
+archetype_slot: c_archetype_slot_head SYM_MATCHES SYM_START_CBLOCK c_includes c_excludes SYM_END_CBLOCK
+
+c_archetype_slot_head: c_archetype_slot_id c_occurrences
+
+c_archetype_slot_id: SYM_ALLOW_ARCHETYPE type_identifier
+  | SYM_ALLOW_ARCHETYPE type_identifier V_LOCAL_TERM_CODE_REF
+  | SYM_ALLOW_ARCHETYPE error
+
+# 'c_primitive_object' is an node representing a constraint on a primitive object type.
+c_primitive_object: c_primitive
+
+c_primitive: c_integer
+  | c_real
+  | c_date
+  | c_time
+  | c_date_time
+  | c_duration
+  | c_string
+  | c_boolean
+
+c_any: Star_code
+#c_any: '*'
+
+#---------------- BODY - relationships ----------------
+
+c_attributes: c_attribute
+  | c_attributes c_attribute
+
+# 'c_attribute' is a node representing a constraint on an attribute in an object model.
+c_attribute: c_attr_head SYM_MATCHES SYM_START_CBLOCK c_attr_values SYM_END_CBLOCK
+  | c_attr_head SYM_MATCHES SYM_START_CBLOCK error SYM_END_CBLOCK
+
+
+c_attr_head: V_ATTRIBUTE_IDENTIFIER c_existence
+  | V_ATTRIBUTE_IDENTIFIER c_existence c_cardinality
+
+c_attr_values: c_object
+  | c_attr_values c_object
+  | c_any #	-- to allow a property to have any value
+
+c_includes: #-- Empty
+    | SYM_INCLUDE assertions
+
+c_excludes: #-- Empty
+    | SYM_EXCLUDE assertions
+
+
+#---------------------- ASSERTIONS ------------------------
+
+assertions: assertion
+  | assertions assertion
+
+assertion: any_identifier ':' boolean_expression
+  | boolean_expression
+#  | any_identifier ':' error
+
+#---------------------- expressions ---------------------
+
+boolean_expression: boolean_leaf
+  | boolean_node
+
+boolean_node: SYM_EXISTS absolute_path
+#  | SYM_EXISTS error
+  | relative_path SYM_MATCHES SYM_START_CBLOCK c_primitive SYM_END_CBLOCK
+  | SYM_NOT boolean_leaf
+  | arithmetic_expression '=' arithmetic_expression
+  | arithmetic_expression SYM_NE arithmetic_expression
+  | arithmetic_expression SYM_LT arithmetic_expression
+  | arithmetic_expression SYM_GT arithmetic_expression
+  | arithmetic_expression SYM_LE arithmetic_expression
+  | arithmetic_expression SYM_GE arithmetic_expression
+  | boolean_expression SYM_AND boolean_expression
+  | boolean_expression SYM_OR boolean_expression
+  | boolean_expression SYM_XOR boolean_expression
+  | boolean_expression SYM_IMPLIES boolean_expression
+
+boolean_leaf: Left_parenthesis_code boolean_expression Right_parenthesis_code
+  | SYM_TRUE
+  | SYM_FALSE
+
+arithmetic_expression: arithmetic_leaf
+  | arithmetic_node
+
+arithmetic_node: arithmetic_expression '+' arithmetic_leaf
+  | arithmetic_expression '-' arithmetic_leaf
+  | arithmetic_expression Star_code arithmetic_leaf
+  | arithmetic_expression Slash_code arithmetic_leaf
+  | arithmetic_expression '^' arithmetic_leaf
+
+arithmetic_leaf:  Left_parenthesis_code arithmetic_expression Right_parenthesis_code
+  | integer_value
+  | real_value
+  | absolute_path
+
+
+#--------------- THE FOLLOWING SOURCE TAKEN FROM OG_PATH_VALIDATOR.Y - DO NOT MODIFY  -------------
+#--------------- except to remove movable_path ----------------------------------------------------
+
+absolute_path: Slash_code
+  | Slash_code relative_path
+  | absolute_path Slash_code relative_path
+
+relative_path: path_segment
+  | relative_path Slash_code path_segment
+
+path_segment: V_ATTRIBUTE_IDENTIFIER V_LOCAL_TERM_CODE_REF
+  | V_ATTRIBUTE_IDENTIFIER
+
+
+#-------------------------------- END SOURCE TAKEN FROM OG_PATH_VALIDATOR.Y ----------------------
+
+
+#---------------- existence, occurrences, cardinality ----------------
+
+c_existence: #-- default to 1..1
+    | SYM_EXISTENCE SYM_MATCHES SYM_START_CBLOCK existence_spec SYM_END_CBLOCK
+
+existence_spec:  V_INTEGER #-- can only be 0 or 1
+  | V_INTEGER SYM_ELLIPSIS V_INTEGER #-- can only be 0..0, 0..1, 1..1
+
+c_cardinality: SYM_CARDINALITY SYM_MATCHES SYM_START_CBLOCK cardinality_spec SYM_END_CBLOCK
+
+cardinality_spec: occurrence_spec
+  | occurrence_spec Semicolon_code SYM_ORDERED
+  | occurrence_spec Semicolon_code SYM_UNORDERED
+  | occurrence_spec Semicolon_code SYM_UNIQUE
+  | occurrence_spec Semicolon_code SYM_ORDERED Semicolon_code SYM_UNIQUE
+  | occurrence_spec Semicolon_code SYM_UNORDERED Semicolon_code SYM_UNIQUE
+  | occurrence_spec Semicolon_code SYM_UNIQUE Semicolon_code SYM_ORDERED
+  | occurrence_spec Semicolon_code SYM_UNIQUE Semicolon_code SYM_UNORDERED
+
+cardinality_limit_value: integer_value
+  | Star_code
+#  | '*'
+
+c_occurrences:  #-- default to 1..1
+  | SYM_OCCURRENCES SYM_MATCHES SYM_START_CBLOCK occurrence_spec SYM_END_CBLOCK
+#  | SYM_OCCURRENCES error
+
+occurrence_spec: cardinality_limit_value #-- single integer or '*'
+  | V_INTEGER SYM_ELLIPSIS cardinality_limit_value
+
+#---------------------- leaf constraint types -----------------------
+
+c_integer_spec: integer_value
+  | integer_list_value
+  | integer_interval_value
+
+c_integer: c_integer_spec
+  | c_integer_spec Semicolon_code integer_value
+  | c_integer_spec Semicolon_code error
+
+c_real_spec: real_value
+  | real_list_value
+  | real_interval_value
+
+c_real: c_real_spec
+  | c_real_spec Semicolon_code real_value
+  | c_real_spec Semicolon_code error
+
+c_date_constraint: V_ISO8601_DATE_CONSTRAINT_PATTERN
+  | date_value
+  | date_interval_value
+
+c_date: c_date_constraint
+  | c_date_constraint Semicolon_code date_value
+  | c_date_constraint Semicolon_code error
+
+c_time_constraint: V_ISO8601_TIME_CONSTRAINT_PATTERN
+  | time_value
+  | time_interval_value
+
+c_time: c_time_constraint
+  | c_time_constraint Semicolon_code time_value
+  | c_time_constraint Semicolon_code error
+
+c_date_time_constraint: V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN
+  | date_time_value
+  | date_time_interval_value
+
+c_date_time: c_date_time_constraint
+  | c_date_time_constraint Semicolon_code date_time_value
+  | c_date_time_constraint Semicolon_code error
+
+c_duration_constraint: duration_pattern
+  | duration_pattern Slash_code duration_interval_value
+  | duration_value
+  | duration_interval_value
+
+c_duration: c_duration_constraint
+  | c_duration_constraint Semicolon_code duration_value
+  | c_duration_constraint Semicolon_code error
+
+c_string_spec:  V_STRING #-- single value, generates closed list
+  | string_list_value #-- closed list
+  | string_list_value ',' SYM_LIST_CONTINUE #-- open list
+  | V_REGEXP #-- regular expression with "//" or "^^" delimiters
+
+c_string: c_string_spec
+  | c_string_spec Semicolon_code string_value
+#  | c_string_spec Semicolon_code error
+
+c_boolean_spec: SYM_TRUE
+  | SYM_FALSE
+  | SYM_TRUE ',' SYM_FALSE
+  | SYM_FALSE ',' SYM_TRUE
+
+c_boolean: c_boolean_spec
+  | c_boolean_spec Semicolon_code boolean_value
+#  | c_boolean_spec ';' error
+
+c_ordinal: c_ordinal_spec
+  | c_ordinal_spec Semicolon_code integer_value
+#  | c_ordinal_spec ';' error
+
+c_ordinal_spec: ordinal
+  | c_ordinal_spec ',' ordinal
+
+ordinal: integer_value SYM_INTERVAL_DELIM V_QUALIFIED_TERM_CODE_REF
+
+c_code_phrase: V_TERM_CODE_CONSTRAINT #-- e.g. "[local::at0040, at0041; at0040]"
+  | V_QUALIFIED_TERM_CODE_REF
+
+# A Constraint_Ref is a proxy for a set of constraints on an object.
+constraint_ref: V_LOCAL_TERM_CODE_REF #-- e.g. "ac0003"
+
+any_identifier: type_identifier
+  | V_ATTRIBUTE_IDENTIFIER
+
+
+#----------------- TAKEN FROM DADL_VALIDATOR.Y -------------------
+#-----------------        DO NOT MODIFY        -------------------
+#---------------------- BASIC DATA VALUES -----------------------
+
+type_identifier: V_TYPE_IDENTIFIER
+  | V_GENERIC_TYPE_IDENTIFIER
+
+string_value: V_STRING
+
+string_list_value: V_STRING ',' V_STRING
+  | string_list_value ',' V_STRING
+  | V_STRING ',' SYM_LIST_CONTINUE
+
+integer_value: V_INTEGER
+  | '+' V_INTEGER
+  | '-' V_INTEGER
+
+integer_list_value: integer_value ',' integer_value
+  | integer_list_value ',' integer_value
+  | integer_value ',' SYM_LIST_CONTINUE
+
+integer_interval_value: SYM_INTERVAL_DELIM integer_value SYM_ELLIPSIS integer_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT integer_value SYM_ELLIPSIS integer_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM integer_value SYM_ELLIPSIS SYM_LT integer_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT integer_value SYM_ELLIPSIS SYM_LT integer_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LT integer_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LE integer_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT integer_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GE integer_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM integer_value SYM_INTERVAL_DELIM
+
+real_value: V_REAL
+  | '+' V_REAL
+  | '-' V_REAL
+
+real_list_value: real_value ',' real_value
+  | real_list_value ',' real_value
+  | real_value ',' SYM_LIST_CONTINUE
+
+real_interval_value: SYM_INTERVAL_DELIM real_value SYM_ELLIPSIS real_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT real_value SYM_ELLIPSIS real_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM real_value SYM_ELLIPSIS SYM_LT real_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT real_value SYM_ELLIPSIS SYM_LT real_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LT real_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LE real_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT real_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GE real_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM real_value SYM_INTERVAL_DELIM
+
+boolean_value: SYM_TRUE
+  | SYM_FALSE
+
+boolean_list_value: boolean_value ',' boolean_value
+  | boolean_list_value ',' boolean_value
+  | boolean_value ',' SYM_LIST_CONTINUE
+
+character_value: V_CHARACTER
+
+character_list_value: character_value ',' character_value
+  | character_list_value ',' character_value
+  | character_value ',' SYM_LIST_CONTINUE
+
+date_value: V_ISO8601_EXTENDED_DATE #-- in ISO8601 form yyyy-MM-dd
+
+date_list_value: date_value ',' date_value
+  | date_list_value ',' date_value
+  | date_value ',' SYM_LIST_CONTINUE
+
+date_interval_value: SYM_INTERVAL_DELIM date_value SYM_ELLIPSIS date_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT date_value SYM_ELLIPSIS date_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM date_value SYM_ELLIPSIS SYM_LT date_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT date_value SYM_ELLIPSIS SYM_LT date_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LT date_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LE date_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT date_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GE date_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM date_value SYM_INTERVAL_DELIM
+
+time_value: V_ISO8601_EXTENDED_TIME
+
+time_list_value: time_value ',' time_value
+  | time_list_value ',' time_value
+  | time_value ',' SYM_LIST_CONTINUE
+
+time_interval_value: SYM_INTERVAL_DELIM time_value SYM_ELLIPSIS time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT time_value SYM_ELLIPSIS time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM time_value SYM_ELLIPSIS SYM_LT time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT time_value SYM_ELLIPSIS SYM_LT time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LT time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LE time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GE time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM time_value SYM_INTERVAL_DELIM
+
+date_time_value: V_ISO8601_EXTENDED_DATE_TIME
+
+date_time_list_value: date_time_value ',' date_time_value
+  | date_time_list_value ',' date_time_value
+  | date_time_value ',' SYM_LIST_CONTINUE
+
+date_time_interval_value: SYM_INTERVAL_DELIM date_time_value SYM_ELLIPSIS date_time_value  SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT date_time_value SYM_ELLIPSIS date_time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM date_time_value SYM_ELLIPSIS SYM_LT date_time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT date_time_value SYM_ELLIPSIS SYM_LT date_time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LT date_time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LE date_time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT date_time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GE date_time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM date_time_value SYM_INTERVAL_DELIM
+
+duration_pattern: V_ISO8601_DURATION_CONSTRAINT_PATTERN
+
+duration_value: V_ISO8601_DURATION
+
+duration_list_value: duration_value ',' duration_value
+  | duration_list_value ',' duration_value
+  | duration_value ',' SYM_LIST_CONTINUE
+
+duration_interval_value: SYM_INTERVAL_DELIM duration_value SYM_ELLIPSIS duration_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT duration_value SYM_ELLIPSIS duration_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM duration_value SYM_ELLIPSIS SYM_LT duration_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT duration_value SYM_ELLIPSIS SYM_LT duration_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LT duration_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LE duration_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT duration_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GE duration_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM duration_value SYM_INTERVAL_DELIM
+
+term_code: V_QUALIFIED_TERM_CODE_REF
+  | ERR_V_QUALIFIED_TERM_CODE_REF
+
+term_code_list_value: term_code ',' term_code
+  | term_code_list_value ',' term_code
+  | term_code ',' SYM_LIST_CONTINUE
+
+uri_value: V_URI
+
+
+---- header
+
+$:.unshift File.join(File.dirname(__FILE__))
+$DEBUG = false
+
+
+---- inner
+###----------/* keywords */ --------------------------------------------- 
+@@reserved = {
+  'then' => :SYM_THEN,
+  'else' => :SYM_ELSE,
+  'and' => :SYM_AND,
+  'or' => :SYM_OR,
+  'xor' => :SYM_XOR,
+  'not' => :SYM_NOT,
+  'implies' => :SYM_IMPLIES,
+  'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE 
+  'false' => :SYM_FALSE, # [Ff][Aa][Ll][Ss][Ee] -- -> SYM_FALSE 
+  'forall' => :SYM_FORALL,
+  'exists' => :SYM_EXISTS,
+  'existence' => :SYM_EXISTENCE,
+  'occurrences' => :SYM_OCCURRENCES,
+  'cardinality' => :SYM_CARDINALITY,
+  'ordered' => :SYM_ORDERED,
+  'unordered' => :SYM_UNORDERED,
+  'unique' => :SYM_UNIQUE,
+  'matches' => :SYM_MATCHES,
+  'is_in' => :SYM_MATCHES,
+  'invariant' => :SYM_INVARIANT,
+  'infinity' => :SYM_INFINITY, # [Ii][Nn][Ff][Ii][Nn][Ii][Tt][Yy] -- -> SYM_INFINITY 
+  'use_archetype' => :SYM_ALLOW_ARCHETYPE,
+  'allow_archetype' => :SYM_ALLOW_ARCHETYPE,
+  'include' => :SYM_INCLUDE,
+  'exclude' => :SYM_EXCLUDE
+}
+
+###----------/* Scanner */ ----------------------------------------------- 
+
+def scan
+  until @data.nil?  do
+    case @data
+    when /\A\n/ # carriage return
+      @lineno += 1
+      ;
+    when /\A[ \t\r\f]+/ #just drop it
+      ;
+    when /\A--.*\n/ # single line comment
+      @lineno += 1
+      ;
+    ###----------/* symbols */ ------------------------------------------------- 
+    when /\A\=/   # =
+      yield :SYM_EQ, :SYM_EQ
+    when /\A\>=/   # >=
+      yield :SYM_GE, :SYM_GE
+    when /\A\<=/   # <=
+      yield :SYM_LE, :SYM_LE
+    when /\A\</   # <
+      yield :SYM_LT, :SYM_LT
+    when /\A\>/   # >
+      yield :SYM_GT, :SYM_GT
+    when /\A\-/   # -
+      yield :Minus_code, :Minus_code
+    when /\A\+/   # +
+      yield :Plus_code, :Plus_code
+    when /\A\*/   # *
+      yield :Star_code, :Star_code
+    when /\A\//   # /
+      yield :Slash_code, :Slash_code
+    when /\A\^/   # ^
+      yield :Caret_code, :Caret_code
+    when /\A\.\./   # ..
+      yield :SYM_ELLIPSIS, :SYM_ELLIPSIS
+    when /\A\./   # .
+      yield :Dot_code, :Dot_code
+    when /\A\;/   # ;
+      yield :Semicolon_code, :Semicolon_code
+    when /\A\,/   # ,
+      yield :Comma_code, :Comma_code
+    when /\A\:/   # :
+      yield :Colon_code, :Colon_code
+    when /\A\!/   # !
+      yield :Exclamation_code, :Exclamation_code
+    when /\A\(/   # (
+      yield :Left_parenthesis_code, :Left_parenthesis_code
+    when /\A\)/   # )
+      yield :Right_parenthesis_code, :Right_parenthesis_code
+    when /\A\{/   # {
+      yield :SYM_START_CBLOCK, :SYM_START_CBLOCK
+    when /\A\}/   # {
+      yield :SYM_END_CBLOCK, :SYM_END_CBLOCK
+    when /\A\$/   # $
+      yield :Dollar_code, :Dollar_code
+    when /\A\?\?/   # ??
+      yield :SYM_DT_UNKNOWN, :SYM_DT_UNKNOWN
+    when /\A\?/   # ?
+      yield :Question_mark_code, :Question_mark_code
+    when /\A\|/   # |
+      if @in_interval
+        @in_interval = false
+      elsif @start_block_received
+        @in_interval = true
+        @start_block_received = false
+      end
+      yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
+    when /\A\[[a-zA-Z0-9._\-]+::[a-zA-Z0-9._\-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
+      yield :V_QUALIFIED_TERM_CODE_REF, $&
+    when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
+      yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
+    when /\A\[([a-zA-Z0-9()._\-]+::[a-zA-Z0-9._\_-]+)\]/
+      yield :V_TERM_CODE_CONSTRAINT, :V_TERM_CODE_CONSTRAINT
+    when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
+      yield :V_LOCAL_TERM_CODE_REF, $&
+    when /\A\[/   # [
+      yield :Left_bracket_code, :Left_bracket_code
+    when /\A\]/   # ]
+      yield :Right_bracket_code, :Right_bracket_code
+    when /\A\.../   # ...
+      yield :SYM_LIST_CONTINUE, :SYM_LIST_CONTINUE
+    when /\A[a-z][a-zA-Z0-9_]*/
+      word = $&.downcase
+      if @@reserved[word]
+        yield @@reserved[word], @@reserved[word]
+      else #V_ATTRIBUTE_IDENTIFIER /\A[a-z][a-zA-Z0-9_]*/ 
+        yield :V_ATTRIBUTE_IDENTIFIER, $&
+      end
+    when /\Aa[ct][0-9.]+/   #V_LOCAL_CODE
+      yield :V_LOCAL_CODE, $&
+    when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9](Z|[+-][0-9]{4})?/   #V_ISO8601_EXTENDED_DATE_TIME YYYY-MM-DDThh:mm:ss[,sss][Z|+/- -n-n-n-n-]-
+      yield :V_ISO8601_EXTENDED_DATE_TIME, $&
+    when /\A[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})? /   #V_ISO8601_EXTENDED_TIME hh:mm:ss[,sss][Z|+/-nnnn]
+      yield :V_ISO8601_EXTENDED_TIME, $&
+    when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]|[0-9]{4}-[0-1][0-9]/   #V_ISO8601_EXTENDED_DATE YYYY-MM-DD
+      yield :V_ISO8601_EXTENDED_DATE, $&
+    when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
+      yield :V_ISO8601_DURATION, $&
+    when /\A[yY][yY][yY][yY]-[mM?X][mM?X]-[dD?X][dD?X]/
+      yield :V_ISO8601_DATE_CONSTRAINT_PATTERN, $&
+    when /\A[hH][hH]:[mM?X][mM?X]:[sS?X][sS?X]/
+      yield :V_ISO8601_TIME_CONSTRAINT_PATTERN, $&
+    when /\A[yY][yY][yY][yY]-[mM?X][mM?X]-[dD?X][dD?X][\t][hH?X][hH?X]:[mM?X][mM?X]:[sS?X][sS?X]/
+      yield :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN, $&
+    when /\A[A-Z][a-zA-Z0-9_]*/
+      yield :V_TYPE_IDENTIFIER, $&
+    when /\A[a-z][a-zA-Z0-9_]*/
+      yield :V_ATTRIBUTE_IDENTIFIER, $&
+    when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
+      yield :V_GENERIC_TYPE_IDENTIFIER, $&
+    when /\A[0-9]+|[0-9]+[eE][+-]?[0-9]+/   #V_INTEGER
+      yield :V_INTEGER, $&
+    when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
+      yield :V_REAL, $&
+#    when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
+    when /\A"([^"]*)"/m #V_STRING
+      yield :V_STRING, $1
+###     when /\A{\// #V_REGEXP
+###       if @in_regexp
+###         @in_regexp = false
+###       elsif @start_block_received
+###         @in_interval = true
+###         @start_block_received = false
+###       end
+###       yield :V_REGEXP, :V_REGEXP
+    when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
+      yield :V_URI, $&
+    when /\A\S/ #UTF8CHAR
+      yield :UTF8CHAR, $&
+    end
+    @data = $' # variable $' receives the string after the match
+  end
+  yield :EOF, nil
+  yield false, '$'
+end # of scan
+
+
+def parse(data, filename, lineno = 1, debug = false)
+  @yydebug = true
+  @parsestring = data
+  @data = data
+  @lineno = lineno
+  @filename = filename
+  @in_interval = false
+  @start_block_received = false
+  @start_block_received = false
+  yyparse self, :scan
+end
+
+def on_error( t, v, values)
+  raise Racc::ParseError, "#{@filename}:#{@lineno}: Inline syntax error on #{v.inspect}"
+end
+
+# ###----------/* CADL Blocks */ -------------------------------------------
+# \{[^{}]* -- beginning of CADL block 
+# <IN_CADL_BLOCK>\{[^{}]* -- got an open brace 
+# <IN_CADL_BLOCK>[^{}]*\} -- got a close brace 
+
+
+
+
+
+
+### Local Variables:
+### mode:ruby
+### mode:font-lock
+### comment-column:0
+### comment-start: "### "
+### comment-end:"" 
+### End:
+
+
+
+
Index: /ruby/tags/0.0.2/adl_parser/lib/dparser.y.bak
===================================================================
--- /ruby/tags/0.0.2/adl_parser/lib/dparser.y.bak	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/lib/dparser.y.bak	(revision 39)
@@ -0,0 +1,413 @@
+
+
+class OpenEHR::DADLParser
+
+#options omit_action_call
+
+prechigh
+
+  nonassoc UMINUS UPLUS
+  left '*' '/'
+  left '+' '-'
+
+#  left DOUBLE_BAR
+
+  nonassoc SYM_EQ
+  nonassoc SYM_NE
+  nonassoc SYM_LT
+  nonassoc SYM_START_DBLOCK
+  nonassoc SYM_GT
+  nonassoc SYM_END_DBLOCK
+  nonassoc SYM_LE
+  nonassoc SYM_GE
+
+preclow
+
+
+rule
+### http://svn.openehr.org/ref_impl_eiffel/TRUNK/libraries/common_libs/src/structures/syntax/dadl/parser/dadl2_validator.html
+
+dadl: input EOF
+input: attr_vals
+  | complex_object_block
+#  | error
+attr_vals: attr_val
+  | attr_vals attr_val
+  | attr_vals ';' attr_val
+attr_val: attr_id SYM_EQ object_block
+attr_id: V_ATTRIBUTE_IDENTIFIER
+#  | V_ATTRIBUTE_IDENTIFIER error
+object_block: complex_object_block
+  | primitive_object_block
+complex_object_block: single_attr_object_block
+  | multiple_attr_object_block
+multiple_attr_object_block: untyped_multiple_attr_object_block
+  | type_identifier untyped_multiple_attr_object_block
+untyped_multiple_attr_object_block: multiple_attr_object_block_head keyed_objects SYM_END_DBLOCK
+multiple_attr_object_block_head: SYM_START_DBLOCK
+keyed_objects: keyed_object
+  | keyed_objects keyed_object
+keyed_object: object_key SYM_EQ object_block
+object_key: Left_bracket_code simple_value Right_bracket_code
+
+single_attr_object_block: untyped_single_attr_object_block
+  | type_identifier untyped_single_attr_object_block
+untyped_single_attr_object_block: single_attr_object_complex_head SYM_END_DBLOCK
+  | single_attr_object_complex_head attr_vals SYM_END_DBLOCK
+single_attr_object_complex_head: SYM_START_DBLOCK
+primitive_object_block: untyped_primitive_object_block
+  | type_identifier untyped_primitive_object_block
+untyped_primitive_object_block: SYM_START_DBLOCK primitive_object_value SYM_END_DBLOCK
+primitive_object_value: simple_value
+  | simple_list_value
+  | simple_interval_value
+  | term_code
+  | term_code_list_value
+simple_value: string_value
+  | integer_value
+  | real_value
+  | boolean_value
+  | character_value
+  | date_value
+  | time_value
+  | date_time_value
+  | duration_value
+  | uri_value
+simple_list_value: string_list_value
+  | integer_list_value
+  | real_list_value
+  | boolean_list_value
+  | character_list_value
+  | date_list_value
+  | time_list_value
+  | date_time_list_value
+  | duration_list_value
+
+simple_interval_value: integer_interval_value
+  | real_interval_value
+  | date_interval_value
+  | time_interval_value
+  | date_time_interval_value
+  | duration_interval_value
+
+type_identifier: V_TYPE_IDENTIFIER
+  | V_GENERIC_TYPE_IDENTIFIER
+
+string_value: V_STRING
+
+string_list_value: V_STRING Comma_code V_STRING
+  | string_list_value Comma_code V_STRING
+  | V_STRING Comma_code SYM_LIST_CONTINUE
+integer_value: V_INTEGER
+  | '+' V_INTEGER
+  | '-' V_INTEGER 
+integer_list_value: integer_value Comma_code integer_value
+  | integer_list_value Comma_code integer_value
+  | integer_value Comma_code SYM_LIST_CONTINUE
+
+integer_interval_value: SYM_INTERVAL_DELIM integer_value SYM_ELLIPSIS integer_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT integer_value SYM_ELLIPSIS integer_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM integer_value SYM_ELLIPSIS SYM_LT integer_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT integer_value SYM_ELLIPSIS SYM_LT integer_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LT integer_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LE integer_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT integer_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GE integer_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM integer_value SYM_INTERVAL_DELIM
+
+real_value: V_REAL
+  | '+' V_REAL
+  | '-' V_REAL
+
+real_list_value: real_value Comma_code real_value
+  | real_list_value Comma_code real_value
+  | real_value Comma_code SYM_LIST_CONTINUE
+
+real_interval_value: SYM_INTERVAL_DELIM real_value SYM_ELLIPSIS real_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT real_value SYM_ELLIPSIS real_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM real_value SYM_ELLIPSIS SYM_LT real_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT real_value SYM_ELLIPSIS SYM_LT real_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LT real_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LE real_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT real_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GE real_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM real_value SYM_INTERVAL_DELIM
+
+
+boolean_value: SYM_TRUE
+  | SYM_FALSE
+
+boolean_list_value: boolean_value Comma_code boolean_value
+  | boolean_list_value Comma_code boolean_value
+  | boolean_value Comma_code SYM_LIST_CONTINUE
+
+character_value: V_CHARACTER
+
+character_list_value: character_value Comma_code character_value
+  | character_list_value Comma_code character_value
+  | character_value Comma_code SYM_LIST_CONTINUE
+
+date_value: V_ISO8601_EXTENDED_DATE
+
+date_list_value: date_value Comma_code date_value
+  | date_list_value Comma_code date_value
+  | date_value Comma_code SYM_LIST_CONTINUE
+
+date_interval_value: SYM_INTERVAL_DELIM date_value SYM_ELLIPSIS date_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT date_value SYM_ELLIPSIS date_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM date_value SYM_ELLIPSIS SYM_LT date_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT date_value SYM_ELLIPSIS SYM_LT date_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LT date_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LE date_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT date_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GE date_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM date_value SYM_INTERVAL_DELIM
+
+time_value: V_ISO8601_EXTENDED_TIME
+time_list_value: time_value Comma_code time_value
+  | time_list_value Comma_code time_value
+  | time_value Comma_code SYM_LIST_CONTINUE
+
+time_interval_value: SYM_INTERVAL_DELIM time_value SYM_ELLIPSIS time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT time_value SYM_ELLIPSIS time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM time_value SYM_ELLIPSIS SYM_LT time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT time_value SYM_ELLIPSIS SYM_LT time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LT time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LE time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GE time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM time_value SYM_INTERVAL_DELIM
+
+date_time_value: V_ISO8601_EXTENDED_DATE_TIME
+
+date_time_list_value: date_time_value Comma_code date_time_value
+  | date_time_list_value Comma_code date_time_value
+  | date_time_value Comma_code SYM_LIST_CONTINUE
+
+date_time_interval_value: SYM_INTERVAL_DELIM date_time_value SYM_ELLIPSIS date_time_value  SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT date_time_value SYM_ELLIPSIS date_time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM date_time_value SYM_ELLIPSIS SYM_LT date_time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT date_time_value SYM_ELLIPSIS SYM_LT date_time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LT date_time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LE date_time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT date_time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GE date_time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM date_time_value SYM_INTERVAL_DELIM
+
+duration_value: V_ISO8601_DURATION
+
+duration_list_value: duration_value Comma_code duration_value
+  | duration_list_value Comma_code duration_value
+  | duration_value Comma_code SYM_LIST_CONTINUE
+
+duration_interval_value: SYM_INTERVAL_DELIM duration_value SYM_ELLIPSIS duration_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT duration_value SYM_ELLIPSIS duration_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM duration_value SYM_ELLIPSIS SYM_LT duration_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT duration_value SYM_ELLIPSIS SYM_LT duration_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LT duration_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LE duration_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT duration_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GE duration_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM duration_value SYM_INTERVAL_DELIM
+
+term_code: V_QUALIFIED_TERM_CODE_REF
+
+term_code_list_value: term_code Comma_code term_code
+  | term_code_list_value Comma_code term_code
+  | term_code Comma_code SYM_LIST_CONTINUE
+
+uri_value: V_URI
+
+---- header
+
+$:.unshift File.join(File.dirname(__FILE__))
+$DEBUG = false
+
+
+---- inner
+###----------/* keywords */ --------------------------------------------- 
+@@reserved = {
+  'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE 
+  'false' => :SYM_FALSE, # [Ff][Aa][Ll][Ss][Ee] -- -> SYM_FALSE 
+  'infinity' => :SYM_INFINITY # [Ii][Nn][Ff][Ii][Nn][Ii][Tt][Yy] -- -> SYM_INFINITY 
+}
+
+###----------/* Scanner */ ----------------------------------------------- 
+
+def scan
+  until @data.nil?  do
+    case @data
+    when /\A\n/ # carriage return
+      @lineno += 1
+      ;
+    when /\A[ \t\r\f]+/ #just drop it
+      ;
+    when /\A--.*\n/ # single line comment
+      @lineno += 1
+      ;
+    ###----------/* symbols */ ------------------------------------------------- 
+    when /\A\=/   # =
+      yield :SYM_EQ, :SYM_EQ
+    when /\A\>\=/   # >=
+      yield :SYM_GE, :SYM_GE
+    when /\A\<\=/   # <=
+      yield :SYM_LE, :SYM_LE
+    when /\A\</   # <
+      if @in_interval
+        @start_block_received = false
+        yield :SYM_LT, :SYM_LT
+      else
+        @start_block_received = true
+        yield :SYM_START_DBLOCK, :SYM_START_DBLOCK
+      end
+    when /\A\>/   # >
+      if @in_interval
+        yield :SYM_GT, :SYM_GT
+      else
+        yield :SYM_END_DBLOCK, :SYM_END_DBLOCK
+      end
+    when /\A\-/   # -
+      yield :Minus_code, :Minus_code
+    when /\A\+/   # +
+      yield :Plus_code, :Plus_code
+    when /\A\*/   # *
+      yield :Star_code, :Star_code
+    when /\A\//   # /
+      yield :Slash_code, :Slash_code
+    when /\A\^/   # ^
+      yield :Caret_code, :Caret_code
+    when /\A\./   # .
+      yield :Dot_code, :Dot_code
+    when /\A\;/   # ;
+      yield :Semicolon_code, :Semicolon_code
+    when /\A\,/   # ,
+      yield :Comma_code, :Comma_code
+    when /\A\:/   # :
+      yield :Colon_code, :Colon_code
+    when /\A\!/   # !
+      yield :Exclamation_code, :Exclamation_code
+    when /\A\(/   # (
+      yield :Left_parenthesis_code, :Left_parenthesis_code
+    when /\A\)/   # )
+      yield :Right_parenthesis_code, :Right_parenthesis_code
+    when /\A\$/   # $
+      yield :Dollar_code, :Dollar_code
+    when /\A\?\?/   # ??
+      yield :SYM_DT_UNKNOWN, :SYM_DT_UNKNOWN
+    when /\A\?/   # ?
+      yield :Question_mark_code, :Question_mark_code
+    when /\A\|/   # |
+      if @in_interval
+        @in_interval = false
+      elsif @start_block_received
+        @in_interval = true
+        @start_block_received = false
+      end
+      yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
+    when /\A\[/   # [
+      yield :Left_bracket_code, :Left_bracket_code
+    when /\A\]/   # ]
+      yield :Right_bracket_code, :Right_bracket_code
+    when /\A\../   # ..
+      yield :SYM_ELLIPSIS, :SYM_ELLIPSIS
+    when /\A\.../   # ...
+      yield :SYM_LIST_CONTINUE, :SYM_LIST_CONTINUE
+    when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
+      yield :V_GENERIC_TYPE_IDENTIFIER, $&
+    when /\A[a-z][a-zA-Z0-9_]*/
+      word = $&.downcase
+      if @@reserved[word]
+        yield @@reserved[word], @@reserved[word]
+      else
+        yield :V_ATTRIBUTE_IDENTIFIER, $&
+      end
+    when /\A\[[a-zA-Z0-9._\-]+::[a-zA-Z0-9._\-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
+      yield :V_QUALIFIED_TERM_CODE_REF, $&
+    when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
+      yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
+    when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
+      yield :V_LOCAL_TERM_CODE_REF, $&
+    when /\Aa[ct][0-9.]+/   #V_LOCAL_CODE
+      yield :V_LOCAL_CODE, $&
+    when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9](Z|[+-][0-9]{4})?/   #V_ISO8601_EXTENDED_DATE_TIME YYYY-MM-DDThh:mm:ss[,sss][Z|+/- -n-n-n-n-]-
+      yield :V_ISO8601_EXTENDED_DATE_TIME, $&
+    when /\A[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})? /   #V_ISO8601_EXTENDED_TIME hh:mm:ss[,sss][Z|+/-nnnn]
+      yield :V_ISO8601_EXTENDED_TIME, $&
+    when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]|[0-9]{4}-[0-1][0-9]/   #V_ISO8601_EXTENDED_DATE YYYY-MM-DD
+      yield :V_ISO8601_EXTENDED_DATE, $&
+    when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
+      yield :V_ISO8601_DURATION, $&
+    when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
+      yield :V_GENERIC_TYPE_IDENTIFIER, $&
+    when /\A[0-9]+|[0-9]+[eE][+-]?[0-9]+/   #V_INTEGER
+      yield :V_INTEGER, $&
+    when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
+      yield :V_REAL, $&
+#    when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
+    when /\A"([^"]*)"/m #V_STRING
+      yield :V_STRING, $1
+# \"[^\\\n"]*\" 
+# \"[^\\\n"]*{ -- beginning of a multi-line string 
+# <IN_STR> { 
+# \\\\ -- match escaped backslash, i.e. \\ -> \ 
+# \\\" -- match escaped double quote, i.e. \” -> “ 
+# {UTF8CHAR}+ -- match UTF8 chars 
+# [^\\\n"]+ -- match any other characters 
+# \\\n[ \t\r]* -- match LF in line 
+# [^\\\n"]*\" -- match final end of string 
+# .|\n | 
+# <<EOF>> -- unclosed String -> ERR_STRING 
+# }
+# ###----------/* V_CHARACTER */ -------------------------------------------- 
+# \'{UTF8CHAR}\' -- UTF8 char 
+# \'.{1,2} | 
+# \'\\[0-9]+(\/)? -- invalid character -> ERR_CHARACTER 
+    when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
+      yield :V_URI, $&
+    when /\A\S/ #UTF8CHAR
+      yield :UTF8CHAR, $&
+    end
+    @data = $' # variable $' receives the string after the match
+  end
+  yield :EOF, nil
+  yield false, '$'
+end # of scan
+
+
+def parse(data, filename, lineno = 1, debug = false)
+  @yydebug = true
+  @parsestring = data
+  @data = data
+  @lineno = lineno
+  @filename = filename
+  @in_interval = false
+  @start_block_received = false
+  @start_block_received = false
+  yyparse self, :scan
+end
+
+def on_error( t, v, values)
+  raise Racc::ParseError, "#{@filename}:#{@lineno}: Inline syntax error on #{v.inspect}"
+end
+
+# ###----------/* CADL Blocks */ -------------------------------------------
+# \{[^{}]* -- beginning of CADL block 
+# <IN_CADL_BLOCK>\{[^{}]* -- got an open brace 
+# <IN_CADL_BLOCK>[^{}]*\} -- got a close brace 
+
+
+
+
+
+
+### Local Variables:
+### mode:ruby
+### mode:font-lock
+### comment-column:0
+### comment-start: "### "
+### comment-end:"" 
+### End:
+
+
+
+
Index: /ruby/tags/0.0.2/adl_parser/lib/model.rb
===================================================================
--- /ruby/tags/0.0.2/adl_parser/lib/model.rb	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/lib/model.rb	(revision 39)
@@ -0,0 +1,102 @@
+require 'logger'
+
+
+module OpenEHR
+  module ADL
+    module Model
+      module Archetype
+        class ARCHETYPE
+          attr_accessor :adl_version, :archetype_id, :uid, :concept, :parent_archetype_id, :definition, :ontology, :invariants
+
+          def version
+          end
+          
+          def previous_version
+          end
+
+          def short_concept_name
+          end
+
+          def concept_name
+          end
+          
+          def physical_path
+          end
+
+          def logiacl_path
+          end
+
+          def is_specialized
+          end
+
+          def specilisation_depth
+          end
+
+          def node_ids_valid
+          end
+
+          def internal_references_valid
+          end
+
+          def constraint_references_valid
+          end
+
+          def is_valid
+          end
+        end
+
+        
+        class ConstraintModel
+
+          class ArchetypeConstraint
+            def is_valid
+            end
+
+            def has_path
+            end
+
+            def path
+            end
+
+            def is_subset_of
+            end
+          end
+
+          class CObject
+          end
+
+          class CAttribute
+          end
+
+          class CSingleAttribute < CAttribute
+          end
+
+          class CMultipleAttribute < CAttribute
+          end
+
+          class CDefinedObject
+          end
+
+          class CComplexObject < CDefinedObject
+          end
+
+
+          class CPrimitiveObject < CDefinedObject
+          end
+
+          class CDomainType < CDefinedObject
+          end
+
+          class CReferenceObject < CObject
+          end
+        end
+
+        class Assertion
+        end
+
+        class Ontology
+        end
+      end
+    end
+  end
+end
Index: /ruby/tags/0.0.2/adl_parser/lib/parser.rb
===================================================================
--- /ruby/tags/0.0.2/adl_parser/lib/parser.rb	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/lib/parser.rb	(revision 39)
@@ -0,0 +1,3522 @@
+#
+# DO NOT MODIFY!!!!
+# This file is automatically generated by racc 1.4.5
+# from racc grammer file "lib/parser.y".
+#
+
+require 'racc/parser'
+
+
+
+$:.unshift File.join(File.dirname(__FILE__))
+require 'logger'
+require 'lib/util.rb'
+require 'lib/scanner.rb'
+require 'rubygems'
+require '../models/am.rb'
+$DEBUG = true
+
+
+
+
+module OpenEHR
+
+  module ADL
+
+    class Parser < Racc::Parser
+
+module_eval <<'..end lib/parser.y modeval..id3b9eed63e6', 'lib/parser.y', 1127
+
+def assert_at(file,line, message = "")
+  unless yield
+    raise "Assertion failed !: #{file}, #{line}: #{message}"
+  end
+end
+
+@@log = Logger.new('log/parser.log','daily')
+@@dadl_scanner = OpenEHR::ADL::Scanner::DADL::RootScanner.new
+@@cadl_scanner = OpenEHR::ADL::Scanner::CADL::RootScanner.new
+
+###----------/* keywords */ --------------------------------------------- 
+@@adl_reserved = {
+    'archetype' => :SYM_ARCHETYPE,
+    'adl_version' => :SYM_ADL_VERSION,
+    'controlled' => :SYM_IS_CONTROLLED,
+    'specialize' => :SYM_SPECIALIZE,
+    'concept' => :SYM_CONCEPT,
+    'language' => :SYM_LANGUAGE,
+    'description' => :SYM_DESCRIPTION,
+    'definition' => :SYM_DEFINITION,
+    'invariant' => :SYM_INVARIANT,
+    'ontology' => :SYM_ONTOLOGY,
+    'matches' => :SYM_MATCHES,
+    'is_in' => :SYM_MATCHES,
+    'occurrences' => :SYM_OCCURRENCES,
+    'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE 
+    'false' => :SYM_FALSE, # [Ff][Aa][Ll][Ss][Ee] -- -> SYM_FALSE 
+    'infinity' => :SYM_INFINITY # [Ii][Nn][Ff][Ii][Nn][Ii][Tt][Yy] -- -> SYM_INFINITY 
+}
+
+@@dadl_reserved = {
+  'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE 
+  'false' => :SYM_FALSE, # [Ff][Aa][Ll][Ss][Ee] -- -> SYM_FALSE 
+  'infinity' => :SYM_INFINITY # [Ii][Nn][Ff][Ii][Nn][Ii][Tt][Yy] -- -> SYM_INFINITY 
+}
+
+@@cadl_reserved = {
+  'then' => :SYM_THEN, # [Tt][Hh][Ee][Nn]
+  'else' => :SYM_ELSE, # [Ee][Ll][Ss][Ee]
+  'and' => :SYM_AND, # [Aa][Nn][Dd]
+  'or' => :SYM_OR, # [Oo][Rr]
+  'xor' => :SYM_XOR, # [Xx][Oo][Rr]
+  'not' => :SYM_NOT, # [Nn][Oo][Tt]
+  'implies' => :SYM_IMPLIES, # [Ii][Mm][Pp][Ll][Ii][Ee][Ss]
+  'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE 
+  'false' => :SYM_FALSE, # [Ff][Aa][Ll][Ss][Ee] -- -> SYM_FALSE 
+  'forall' => :SYM_FORALL, # [Ff][Oo][Rr][_][Aa][Ll][Ll]
+  'exists' => :SYM_EXISTS, # [Ee][Xx][Ii][Ss][Tt][Ss]
+  'existence' => :SYM_EXISTENCE, # [Ee][Xx][Iu][Ss][Tt][Ee][Nn][Cc][Ee]
+  'occurrences' => :SYM_OCCURRENCES, # [Oo][Cc][Cc][Uu][Rr][Rr][Ee][Nn][Cc][Ee][Ss]
+  'cardinality' => :SYM_CARDINALITY, # [Cc][Aa][Rr][Dd][Ii][Nn][Aa][Ll][Ii][Tt][Yy]
+  'ordered' => :SYM_ORDERED, # [Oo][Rr][Dd][Ee][Rr][Ee][Dd]
+  'unordered' => :SYM_UNORDERED, # [Uu][Nn][Oo][Rr][Dd][Ee][Rr][Ee][Dd]
+  'unique' => :SYM_UNIQUE, # [Uu][Nn][Ii][Qq][Uu][Ee]
+  'matches' => :SYM_MATCHES, # [Mm][Aa][Tt][Cc][Hh][Ee][Ss]
+  'is_in' => :SYM_MATCHES, # [Ii][Ss][_][Ii][Nn]
+  'invariant' => :SYM_INVARIANT, # [Ii][Nn][Vv][Aa][Rr][Ii][Aa][Nn][Tt]
+  'infinity' => :SYM_INFINITY, # [Ii][Nn][Ff][Ii][Nn][Ii][Tt][Yy] -- -> SYM_INFINITY 
+  'use_node' => :SYM_USE_NODE, # [Uu][Ss][Ee][_][Nn][Oo][Dd][Ee]
+  'use_archetype' => :SYM_ALLOW_ARCHETYPE, # [Uu][Ss][Ee][_][Aa][Rr][Cc][Hh][Ee][Tt][Yy][Pp][Ee]
+  'allow_archetype' => :SYM_ALLOW_ARCHETYPE, # [Aa][Ll][Ll][Oo][Ww][_][Aa][Rr][Cc][Hh][Ee][Tt][Yy][Pp][Ee]
+  'include' => :SYM_INCLUDE, # [Ii][Nn][Cc][Ll][Uu][Dd][Ee]
+  'exclude' => :SYM_EXCLUDE # [Ee][Xx][Cc][Ll][Uu][Dd][Ee]
+}
+
+
+###----------/* Scanner */ ----------------------------------------------- 
+
+def scan
+  until @data.nil?  do
+    case @adl_type.last
+    when :adl
+      @data = scan_adl(@data) do |sym, val|
+        yield sym, val
+      end
+    when :dadl
+      @data = scan_dadl(@data) do |sym, val|
+        yield sym, val
+      end
+    when :cadl
+      @data = scan_cadl(@data) do |sym, val|
+        yield sym, val
+      end
+    when :regexp
+      @data = scan_regexp(@data) do |sym, val|
+        yield sym, val
+      end
+    else
+      raise
+    end
+    @data = $' # variable $' receives the string after the match
+  end
+  yield :EOF, nil
+  yield false, '$'
+end # of scan
+
+def scan_adl(data)
+  until data.nil?  do
+    case @adl_type.last
+    when :adl
+#      puts "Entering scan_adl"
+      case data
+      when /\A\n/ # carriage return
+        @lineno += 1
+        ;
+      when /\A[ \t\r\f]+/ #just drop it
+        ;
+      when /\A--.*\n/ # single line comment
+        @lineno += 1
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_adl: COMMENT = #{$&} at #{@filename}:#{@lineno}")
+        ;
+      when /\Adescription/   # description
+        yield :SYM_DESCRIPTION, :SYM_DESCRIPTION
+      when /\Adefinition/   # definition
+        yield :SYM_DEFINITION, :SYM_DEFINITION
+#        @adl_type.push(:cadl)
+        ###----------/* symbols */ ------------------------------------------------- 
+      when /\A[A-Z][a-zA-Z0-9_]*/
+        yield :V_TYPE_IDENTIFIER, $&
+      when /\A[a-zA-Z][a-zA-Z0-9_-]+\.[a-zA-Z][a-zA-Z0-9_-]+\.[a-zA-Z0-9]+/   #V_ARCHETYPE_ID
+        yield :V_ARCHETYPE_ID, $&
+      when /\A[a-z][a-zA-Z0-9_]*/
+#        word = $&.downcase
+        word = $&
+        if @@adl_reserved[word]
+          @@log.info("#{__FILE__}:#{__LINE__}: scan_adl: @@adl_reserved = #{@@adl_reserved[word]} at #{@filename}:#{@lineno}")
+          yield @@adl_reserved[word], @@adl_reserved[word]
+        elsif #/\A[A-Z][a-zA-Z0-9_]*/
+          @@log.info("#{__FILE__}:#{__LINE__}: scan_adl: V_ATTRIBUTE_IDENTIFIER = #{$&} at #{@filename}:#{@lineno}")
+          yield :V_ATTRIBUTE_IDENTIFIER, $&
+        end
+      when /\A\=/   # =
+        yield :SYM_EQ, :SYM_EQ
+      when /\A\>=/   # >=
+        yield :SYM_GE, :SYM_GE
+      when /\A\<=/   # <=
+        yield :SYM_LE, :SYM_LE
+      when /\A\</   # <
+        if @in_interval
+#          @start_block_received = false
+          yield :SYM_LT, :SYM_LT
+        else
+#          @start_block_received = true
+          @adl_type.push(:dadl)
+          yield :SYM_START_DBLOCK,  $&
+        end
+      when /\A\>/   # >
+        if @in_interval
+          yield :SYM_GT, :SYM_GT
+        else
+          adl_type = @adl_type.pop
+#          puts "Escaping #{adl_type}"
+          assert_at(__FILE__,__LINE__){adl_type == :dadl}
+          yield :SYM_END_DBLOCK, :SYM_END_DBLOCK
+        end
+      when /\A\{/   # {
+        @adl_type.push(:cadl)
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: entering cADL at #{@filename}:#{@lineno}")
+        yield :SYM_START_CBLOCK, :SYM_START_CBLOCK
+      when /\A\}/   # }
+        adl_type = @adl_type.pop
+#        puts "Escaping #{adl_type}"
+        assert_at(__FILE__,__LINE__){adl_type == :cadl}
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: exiting cADL at #{@filename}:#{@lineno}")
+        yield :SYM_END_CBLOCK, $&
+      when /\A\-/   # -
+        yield :Minus_code, :Minus_code
+      when /\A\+/   # +
+        yield :Plus_code, :Plus_code
+      when /\A\*/   # *
+        yield :Star_code, :Star_code
+      when /\A\//   # /
+        yield :Slash_code, :Slash_code
+      when /\A\^/   # ^
+        yield :Caret_code, :Caret_code
+      when /\A\=/   # =
+        yield :Equal_code, :Equal_code
+      when /\A\.\.\./   # ...
+        yield :SYM_LIST_CONTINUE, :SYM_LIST_CONTINUE
+      when /\A\.\./   # ..
+        yield :SYM_ELLIPSIS, :SYM_ELLIPSIS
+      when /\A\./   # .
+        yield :Dot_code, :Dot_code
+      when /\A\;/   # ;
+        yield :Semicolon_code, :Semicolon_code
+      when /\A\,/   # ,
+        yield :Comma_code, :Comma_code
+      when /\A\:/   # :
+        yield :Colon_code, :Colon_code
+      when /\A\!/   # !
+        yield :Exclamation_code, :Exclamation_code
+      when /\A\(/   # (
+        yield :Left_parenthesis_code, :Left_parenthesis_code
+      when /\A\)/   # )
+        yield :Right_parenthesis_code, :Right_parenthesis_code
+      when /\A\$/   # $
+        yield :Dollar_code, :Dollar_code
+      when /\A\?\?/   # ??
+        yield :SYM_DT_UNKNOWN, :SYM_DT_UNKNOWN
+      when /\A\?/   # ?
+        yield :Question_mark_code, :Question_mark_code
+      when /\A[0-9]+\.[0-9]+(\.[0-9]+)*/   # ?
+        yield :V_VERSION_STRING, :V_VERSION_STRING
+      when /\A\|/   # |
+        if @in_interval
+          @in_interval = false
+        else
+          @in_interval = true
+        end
+        yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
+      when /\A\[[a-zA-Z0-9()\._-]+::[a-zA-Z0-9\._-]+\]/
+#      when /\A\[[a-zA-Z0-9()\._-]+\:\:[a-zA-Z0-9\._-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
+        yield :V_QUALIFIED_TERM_CODE_REF, $&
+      when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
+        yield :V_LOCAL_TERM_CODE_REF, $&
+      when /\A\[/   # [
+        yield :Left_bracket_code, :Left_bracket_code
+      when /\A\]/   # ]
+        yield :Right_bracket_code, :Right_bracket_code
+
+      when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
+        yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
+      when /\Aa[ct][0-9.]+/   #V_LOCAL_CODE
+        yield :V_LOCAL_CODE, $&
+      when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9](Z|[+-][0-9]{4})?/   #V_ISO8601_EXTENDED_DATE_TIME YYYY-MM-DDThh:mm:ss[,sss][Z|+/- -n-n-n-n-]-
+        yield :V_ISO8601_EXTENDED_DATE_TIME, $&
+      when /\A[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})? /   #V_ISO8601_EXTENDED_TIME hh:mm:ss[,sss][Z|+/-nnnn]
+        yield :V_ISO8601_EXTENDED_TIME, $&
+      when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]|[0-9]{4}-[0-1][0-9]/   #V_ISO8601_EXTENDED_DATE YYYY-MM-DD
+        yield :V_ISO8601_EXTENDED_DATE, $&
+      when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
+        yield :V_GENERIC_TYPE_IDENTIFIER, $&
+      when /\A[0-9]+|[0-9]+[eE][+-]?[0-9]+/   #V_INTEGER
+        yield :V_INTEGER, $&
+      when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
+        yield :V_REAL, $&
+        #    when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
+      when /\A"([^"]*)"/m #V_STRING
+        yield :V_STRING, $1
+      when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
+        yield :V_URI, $&
+      when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
+        yield :V_ISO8601_DURATION, $&
+      when /\A\S/ #UTF8CHAR
+        yield :UTF8CHAR, $&
+      end
+      data = $' # variable $' receives the string after the match
+    when :dadl
+#      puts "Entering scan_dadl"
+      data = scan_dadl(data) do |sym, val|
+        yield sym, val
+      end
+    when :cadl
+#      puts "Entering scan_cadl"
+      data = scan_cadl(data) do |sym, val|
+        yield sym, val
+      end
+    when :regexp
+#      puts "Entering scan_regexp"
+      data = scan_regexp(data) do |sym, val|
+        yield sym, val
+      end
+    when :term_constraint
+#      puts "Entering scan_term_constraint"
+      data = scan_term_constraint(data) do |sym, val|
+        yield sym, val
+      end
+    else
+      raise
+    end
+  end
+end # scan_adl
+
+
+def scan_cadl(data)
+  until data.nil?  do
+    case @adl_type.last
+    when :cadl
+#      puts "Entering scan_cadl"
+      case scanned = @@cadl_scanner.parse(data)
+      when Yaparc::Result::OK
+        if scanned.value[0] == :START_V_C_DOMAIN_TYPE_BLOCK
+          @in_c_domain_type = true
+          @adl_type.push(:dadl)
+          yield scanned.value
+        else
+          yield scanned.value
+        end
+        data = scanned.input
+      end
+
+      case data
+      when /\A\n/ # carriage return
+        @lineno += 1
+        ;
+      when /\A[ \t\r\f]+/ #just drop it
+        ;
+      when /\A--.*\n/ # single line comment
+        @lineno += 1
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: COMMENT = #{$&} at #{@filename}:#{@lineno}")
+        ;
+        ###----------/* symbols */ ------------------------------------------------- 
+      when /\A\=/   # =
+        yield :SYM_EQ, :SYM_EQ
+      when /\A\>=/   # >=
+        yield :SYM_GE, :SYM_GE
+      when /\A\<=/   # <=
+        yield :SYM_LE, :SYM_LE
+###       when /\A[A-Z][a-zA-Z0-9_]*[ \n]*\</   # V_C_DOMAIN_TYPE
+###         @in_c_domain_type = true
+###         @adl_type.push(:dadl)
+###         yield :START_V_C_DOMAIN_TYPE_BLOCK, $&
+      when /\A\</   # <
+        if @in_interval
+          yield :SYM_LT, :SYM_LT
+        else
+          @adl_type.push(:dadl)
+          yield :SYM_START_DBLOCK,  $&
+        end
+      when /\A\>/   # >
+        if @in_interval
+          yield :SYM_GT, :SYM_GT
+        else
+          adl_type = @adl_type.pop
+#          puts "Escaping #{adl_type}"
+          assert_at(__FILE__,__LINE__){adl_type == :dadl}
+          yield :SYM_END_DBLOCK, :SYM_END_DBLOCK
+        end
+      when /\A\-/   # -
+        yield :Minus_code, :Minus_code
+      when /\A\+/   # +
+        yield :Plus_code, :Plus_code
+      when /\A\*/   # *
+        yield :Star_code, :Star_code
+      when /\A\//   # /
+        yield :Slash_code, :Slash_code
+      when /\A\^/   # ^
+        yield :Caret_code, :Caret_code
+      when /\A\.\.\./   # ...
+        yield :SYM_LIST_CONTINUE, :SYM_LIST_CONTINUE
+      when /\A\.\./   # ..
+        yield :SYM_ELLIPSIS, :SYM_ELLIPSIS
+      when /\A\./   # .
+        yield :Dot_code, :Dot_code
+      when /\A\;/   # ;
+        yield :Semicolon_code, :Semicolon_code
+      when /\A\,/   # ,
+        yield :Comma_code, :Comma_code
+      when /\A\:/   # :
+        yield :Colon_code, :Colon_code
+      when /\A\!/   # !
+        yield :Exclamation_code, :Exclamation_code
+      when /\A\(/   # (
+        yield :Left_parenthesis_code, :Left_parenthesis_code
+      when /\A\)/   # )
+        yield :Right_parenthesis_code, :Right_parenthesis_code
+      when /\A\{\// #V_REGEXP
+        if @adl_type.last != :regexp
+          @in_regexp = true
+          @adl_type.push(:regexp)
+          yield :START_REGEXP_BLOCK, :START_REGEXP_BLOCK
+        else
+          raise
+        end
+#        yield :V_REGEXP, :V_REGEXP
+      when /\A\{/   # {
+        @adl_type.push(:cadl)
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: entering cADL at #{@filename}:#{@lineno}")
+        yield :SYM_START_CBLOCK, :SYM_START_CBLOCK
+      when /\A\}/   # }
+        adl_type = @adl_type.pop
+#        puts "Escaping #{adl_type}"
+        assert_at(__FILE__,__LINE__){adl_type == :cadl}
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: exiting cADL at #{@filename}:#{@lineno}")
+        yield :SYM_END_CBLOCK, :SYM_END_CBLOCK
+      when /\A\$/   # $
+        yield :Dollar_code, :Dollar_code
+      when /\A\?\?/   # ??
+        yield :SYM_DT_UNKNOWN, :SYM_DT_UNKNOWN
+      when /\A\?/   # ?
+        yield :Question_mark_code, :Question_mark_code
+      when /\A\|/   # |
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: @in_interval = #{@in_interval} at #{@filename}:#{@lineno}")
+        if @in_interval
+          @in_interval = false
+        else
+#          @in_interval = false
+          @in_interval = true
+        end
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: SYM_INTERVAL_DELIM at #{@filename}:#{@lineno}")
+        yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
+
+      when /\A\[[a-zA-Z0-9._\-]+::[a-zA-Z0-9._\-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
+        yield :V_QUALIFIED_TERM_CODE_REF, $&
+      when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
+        yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
+      when /\A\[([a-zA-Z0-9()._\-]+::[a-zA-Z0-9._\_-]+)\]/
+        yield :V_TERM_CODE_CONSTRAINT, :V_TERM_CODE_CONSTRAINT
+      when /\A\[[a-zA-Z0-9\(\)\._\-]+::[ \t\n]*/
+        @adl_type.push(:term_constraint)
+        yield :START_TERM_CODE_CONSTRAINT, $&
+      when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
+        yield :V_LOCAL_TERM_CODE_REF, $&
+      when /\A\[/   # [
+        yield :Left_bracket_code, :Left_bracket_code
+      when /\A\]/   # ]
+        yield :Right_bracket_code, :Right_bracket_code
+      when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
+        yield :V_GENERIC_TYPE_IDENTIFIER, $&
+      when /\A[yY][yY][yY][yY]-[mM?X][mM?X]-[dD?X][dD?X][T\t][hH?X][hH?X]:[mM?X][mM?X]:[sS?X][sS?X]/
+        yield :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN, $&
+      when /\A[yY][yY][yY][yY]-[mM?X][mM?X]-[dD?X][dD?X]/
+        yield :V_ISO8601_DATE_CONSTRAINT_PATTERN, $&
+      when /\A[hH][hH]:[mM?X][mM?X]:[sS?X][sS?X]/
+        yield :V_ISO8601_TIME_CONSTRAINT_PATTERN, $&
+      when /\A[a-z][a-zA-Z0-9_]*/
+        word = $&.dup
+        if @@cadl_reserved[word.downcase]
+          yield @@cadl_reserved[word.downcase], @@cadl_reserved[word.downcase]
+        else
+          @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}:#{@lineno}")
+          yield :V_ATTRIBUTE_IDENTIFIER, word #V_ATTRIBUTE_IDENTIFIER /\A[a-z][a-zA-Z0-9_]*/
+        end
+      when /\A[A-Z][a-zA-Z0-9_]*/
+        word = $&.dup
+        if @@cadl_reserved[word.downcase]
+          yield @@cadl_reserved[word.downcase], @@cadl_reserved[word.downcase]
+        else
+          yield :V_TYPE_IDENTIFIER, $&
+        end
+      when /\Aa[ct][0-9.]+/   #V_LOCAL_CODE
+        yield :V_LOCAL_CODE, $&
+      when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9](Z|[+-][0-9]{4})?/   #V_ISO8601_EXTENDED_DATE_TIME YYYY-MM-DDThh:mm:ss[,sss][Z|+/- -n-n-n-n-]-
+        yield :V_ISO8601_EXTENDED_DATE_TIME, $&
+      when /\A[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})? /   #V_ISO8601_EXTENDED_TIME hh:mm:ss[,sss][Z|+/-nnnn]
+        yield :V_ISO8601_EXTENDED_TIME, $&
+      when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]|[0-9]{4}-[0-1][0-9]/   #V_ISO8601_EXTENDED_DATE YYYY-MM-DD
+        yield :V_ISO8601_EXTENDED_DATE, $&
+      when /\A[0-9]+|[0-9]+[eE][+-]?[0-9]+/   #V_INTEGER
+        yield :V_INTEGER, $&
+      when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
+        yield :V_REAL, $&
+           when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
+      when /\A"([^"]*)"/m #V_STRING
+        yield :V_STRING, $1
+      when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
+        yield :V_URI, $&
+###       when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
+###         yield :V_ISO8601_DURATION, $&
+      when /\A\S/ #UTF8CHAR
+        yield :UTF8CHAR, $&
+      else
+        raise
+      end
+      data = $' # variable $' receives the string after the match
+    when :adl
+#      puts "Entering scan_adl"
+      data = scan_adl(data) do |sym, val|
+        yield sym, val
+      end
+    when :dadl
+#      puts "Entering scan_dadl"
+      data = scan_dadl(data) do |sym, val|
+        yield sym, val
+      end
+    when :regexp
+#      puts "Entering scan_regexp"
+      data = scan_regexp(data) do |sym, val|
+        yield sym, val
+      end
+    when :term_constraint
+#      puts "Entering scan_term_constraint"
+      data = scan_term_constraint(data) do |sym, val|
+        yield sym, val
+      end
+    else
+      raise
+    end
+  end # of until
+end # of scan_cadl
+
+def scan_dadl(data)
+  until data.nil?  do
+    case @adl_type.last
+    when :dadl
+#      puts "Entering scan_dadl"
+      case scanned = @@dadl_scanner.parse(data)
+      when Yaparc::Result::OK
+        yield scanned.value
+        data = scanned.input
+      else
+      end
+
+      case data
+      when /\A\n/ # carriage return
+        @lineno += 1
+        ;
+      when /\A[ \t\r\f]+/ #just drop it
+        ;
+      when /\A--.*\n/ # single line comment
+        @lineno += 1
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_dadl: COMMENT = #{$&} at #{@filename}:#{@lineno}")
+        ;
+        ###----------/* symbols */ ------------------------------------------------- 
+      when /\A\=/   # =
+        yield :SYM_EQ, :SYM_EQ
+      when /\A\>\=/   # >=
+        yield :SYM_GE, :SYM_GE
+      when /\A\<\=/   # <=
+        yield :SYM_LE, :SYM_LE
+      when /\A\</   # <
+        if @in_interval
+          yield :SYM_LT, :SYM_LT
+        else
+          @adl_type.push(:dadl)
+          yield :SYM_START_DBLOCK, :SYM_START_DBLOCK
+        end
+      when /\A\>/   # >
+        if @in_interval
+#          @in_interval = false
+          yield :SYM_GT, :SYM_GT
+        elsif @in_c_domain_type == true
+          assert_at(__FILE__,__LINE__){@adl_type.last == :dadl}
+          adl_type = @adl_type.pop
+          if @adl_type.last == :cadl
+            @in_c_domain_type = false
+            yield :END_V_C_DOMAIN_TYPE_BLOCK, $&
+          else
+            yield :SYM_END_DBLOCK, $&
+          end
+        elsif @in_c_domain_type == false
+          adl_type = @adl_type.pop
+#          puts "Escaping #{adl_type}"
+          assert_at(__FILE__,__LINE__){adl_type == :dadl}
+          yield :SYM_END_DBLOCK, $&
+        else
+          raise
+        end
+      when /\A\-/   # -
+        yield :Minus_code, :Minus_code
+      when /\A\+/   # +
+        yield :Plus_code, :Plus_code
+      when /\A\*/   # *
+        yield :Star_code, :Star_code
+      when /\A\//   # /
+        yield :Slash_code, :Slash_code
+      when /\A\^/   # ^
+        yield :Caret_code, :Caret_code
+      when /\A\.\.\./   # ...
+        yield :SYM_LIST_CONTINUE, :SYM_LIST_CONTINUE
+      when /\A\.\./   # ..
+        yield :SYM_ELLIPSIS, :SYM_ELLIPSIS
+      when /\A\./   # .
+        yield :Dot_code, :Dot_code
+      when /\A\;/   # ;
+        yield :Semicolon_code, :Semicolon_code
+      when /\A\,/   # ,
+        yield :Comma_code, :Comma_code
+      when /\A\:/   # :
+        yield :Colon_code, :Colon_code
+      when /\A\!/   # !
+        yield :Exclamation_code, :Exclamation_code
+      when /\A\(/   # (
+        yield :Left_parenthesis_code, :Left_parenthesis_code
+      when /\A\)/   # )
+        yield :Right_parenthesis_code, :Right_parenthesis_code
+      when /\A\$/   # $
+        yield :Dollar_code, :Dollar_code
+      when /\A\?\?/   # ??
+        yield :SYM_DT_UNKNOWN, :SYM_DT_UNKNOWN
+      when /\A\?/   # ?
+        yield :Question_mark_code, :Question_mark_code
+      when /\A\|/   # |
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_dadl: @in_interval = #{@in_interval} at #{@filename}:#{@lineno}")
+        if @in_interval
+          @in_interval = false
+        else
+#          @in_interval = false
+          @in_interval = true
+        end
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_dadl: SYM_INTERVAL_DELIM at #{@filename}:#{@lineno}")
+        yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
+###       when /\A\[[a-zA-Z0-9()\._-]+::[a-zA-Z0-9\._-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
+###         yield :V_QUALIFIED_TERM_CODE_REF, $&
+###       when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
+###         yield :V_LOCAL_TERM_CODE_REF, $&
+###       when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
+###         yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
+      when /\A\[/   # [
+        yield :Left_bracket_code, :Left_bracket_code
+      when /\A\]/   # ]
+        yield :Right_bracket_code, :Right_bracket_code
+###       when /\A[A-Z][a-zA-Z0-9_-]*/
+###         yield :V_TYPE_IDENTIFIER, $&
+###       when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
+###         yield :V_GENERIC_TYPE_IDENTIFIER, $&
+###       when /\A[a-z][a-zA-Z0-9_]*/
+###         word = $&.downcase
+###         if @@dadl_reserved[word]
+###           yield @@dadl_reserved[word], @@dadl_reserved[word]
+###         else
+###           yield :V_ATTRIBUTE_IDENTIFIER, $&
+###         end
+###       when /\Aa[ct][0-9.]+/   #V_LOCAL_CODE
+###         yield :V_LOCAL_CODE, $&
+      when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9](Z|[+-][0-9]{4})?/   #V_ISO8601_EXTENDED_DATE_TIME YYYY-MM-DDThh:mm:ss[,sss][Z|+/- -n-n-n-n-]-
+        yield :V_ISO8601_EXTENDED_DATE_TIME, $&
+      when /\A[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})? /   #V_ISO8601_EXTENDED_TIME hh:mm:ss[,sss][Z|+/-nnnn]
+        yield :V_ISO8601_EXTENDED_TIME, $&
+      when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]|[0-9]{4}-[0-1][0-9]/   #V_ISO8601_EXTENDED_DATE YYYY-MM-DD
+        yield :V_ISO8601_EXTENDED_DATE, $&
+      when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
+        yield :V_GENERIC_TYPE_IDENTIFIER, $&
+      when /\A[0-9]+|[0-9]+[eE][+-]?[0-9]+/   #V_INTEGER
+        yield :V_INTEGER, $&
+###       when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
+###         yield :V_REAL, $&
+        #    when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
+###       when /\A"([^"]*)"/m #V_STRING
+###         yield :V_STRING, $1
+      when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
+        yield :V_URI, $&
+###       when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
+###         yield :V_ISO8601_DURATION, $&
+      when /\A\S/ #UTF8CHAR
+        yield :UTF8CHAR, $&
+      end
+      data = $' # variable $' receives the string after the match
+    when :adl
+#      puts "Entering scan_adl"
+      data = scan_adl(data) do |sym, val|
+        yield sym, val
+      end
+    when :cadl
+#      puts "Entering scan_cadl"
+      data = scan_cadl(data) do |sym, val|
+        yield sym, val
+      end
+    when :regexp
+#      puts "Entering scan_regexp"
+      data = scan_regexp(data) do |sym, val|
+        yield sym, val
+      end
+    when :term_constraint
+#      puts "Entering scan_term_constraint"
+      data = scan_term_constraint(data) do |sym, val|
+        yield sym, val
+      end
+    else
+      raise
+    end
+  end
+end # of scan_dadl
+
+def scan_regexp(data)
+  until data.nil?  do
+    case @adl_type.last
+    when :regexp
+#      puts "Entering scan_regexp"
+      case data
+      when /\A\/\}/ #V_REGEXP
+        if @adl_type.last == :regexp
+          @in_regexp = false
+          @adl_type.pop
+          yield :END_REGEXP_BLOCK, :END_REGEXP_BLOCK
+        else
+          raise
+        end
+      when /\A(.*)(\/\})/ #V_REGEXP
+        yield :REGEXP_BODY, $1
+        if @adl_type.last == :regexp
+          @in_regexp = false
+          @adl_type.pop
+          yield :END_REGEXP_BLOCK, :END_REGEXP_BLOCK
+        else
+          raise
+        end
+      else
+        raise data
+      end
+      data = $' # variable $' receives the string after the match
+    when :adl
+#      puts "Entering scan_adl"
+      data = scan_adl(data) do |sym, val|
+        yield sym, val
+      end
+    when :dadl
+#      puts "Entering scan_dadl"
+      data = scan_dadl(data) do |sym, val|
+        yield sym, val
+      end
+    when :cadl
+#      puts "Entering scan_cadl"
+      data = scan_cadl(data) do |sym, val|
+        yield sym, val
+      end
+    when :term_constraint
+#      puts "Entering scan_term_constraint"
+      data = scan_term_constraint(data) do |sym, val|
+        yield sym, val
+      end
+    else
+      raise
+    end
+  end
+end # of scan_regexp
+
+def scan_term_constraint(data)
+  until data.nil?  do
+    case @adl_type.last
+    when :term_constraint
+#      puts "Entering scan_term_constraint"
+      case data
+      when /\A\n/ # carriage return
+        @lineno += 1
+        ;
+      when /\A[ \t\r\f]+/ #just drop it
+        ;
+      when /\A--.*$/ # single line comment
+        @lineno += 1
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_term_constraint: COMMENT = #{$&} at #{@filename}:#{@lineno}")
+        ;
+      when /\A[a-zA-Z0-9\._\-]+[ \t]*,/ # match any line, with ',' termination
+        yield :TERM_CODE, $&
+      when /\A[a-zA-Z0-9\._\-]+[ \t]*;/ #match second last line with ';' termination (assumed value)
+        yield :TERM_CODE, $&
+#      when /\A[a-zA-Z0-9\._\-]+[ \t]*\]/ # match final line, terminating in ']'
+      when /\A[a-zA-Z0-9\._\-]*[ \t]*\]/ # match final line, terminating in ']'
+        adl_type = @adl_type.pop
+        assert_at(__FILE__,__LINE__){adl_type == :term_constraint}
+        yield :END_TERM_CODE_CONSTRAINT, $&
+      else
+        raise "data = #{data}"
+      end
+      data = $' # variable $' receives the string after the match
+    when :adl
+#      puts "Entering scan_adl"
+      data = scan_adl(data) do |sym, val|
+        yield sym, val
+      end
+    when :dadl
+#      puts "Entering scan_dadl"
+      data = scan_dadl(data) do |sym, val|
+        yield sym, val
+      end
+    when :cadl
+#      puts "Entering scan_cadl"
+      data = scan_cadl(data) do |sym, val|
+        yield sym, val
+      end
+    else
+      raise
+    end
+  end
+end # of scan_term_constraint
+
+
+def parse(data, filename, lineno = 1, debug = false)
+  @yydebug = true
+  @parsestring = data
+  @data = data
+  @lineno = lineno
+  @filename = filename
+  @adl_type = [:adl] # {:adl, :cadl, :dadl}
+  @in_regexp = false
+  @in_interval = false
+  @in_c_domain_type = false
+  yyparse self, :scan
+end
+
+def on_error( t, v, values)
+  raise Racc::ParseError, "#{@filename}:#{@lineno}: Inline syntax error on #{v.inspect}"
+end
+
+
+
+
+
+
+
+### Local Variables:
+### mode:ruby
+### mode:font-lock
+### comment-column:0
+### comment-start: "### "
+### comment-end:"" 
+### End:
+
+
+
+
+..end lib/parser.y modeval..id3b9eed63e6
+
+##### racc 1.4.5 generates ###
+
+racc_reduce_table = [
+ 0, 0, :racc_error,
+ 2, 95, :_reduce_1,
+ 1, 95, :_reduce_none,
+ 8, 96, :_reduce_3,
+ 2, 97, :_reduce_4,
+ 2, 97, :_reduce_5,
+ 1, 105, :_reduce_6,
+ 2, 105, :_reduce_7,
+ 3, 106, :_reduce_8,
+ 1, 107, :_reduce_9,
+ 3, 107, :_reduce_10,
+ 3, 108, :_reduce_11,
+ 1, 108, :_reduce_12,
+ 0, 98, :_reduce_none,
+ 2, 98, :_reduce_none,
+ 2, 98, :_reduce_none,
+ 2, 99, :_reduce_16,
+ 2, 99, :_reduce_none,
+ 0, 100, :_reduce_18,
+ 2, 100, :_reduce_19,
+ 2, 100, :_reduce_none,
+ 0, 101, :_reduce_none,
+ 2, 101, :_reduce_22,
+ 2, 101, :_reduce_none,
+ 2, 102, :_reduce_24,
+ 2, 102, :_reduce_none,
+ 1, 110, :_reduce_26,
+ 1, 110, :_reduce_27,
+ 5, 111, :_reduce_28,
+ 5, 111, :_reduce_29,
+ 2, 113, :_reduce_30,
+ 1, 115, :_reduce_31,
+ 2, 115, :_reduce_32,
+ 1, 114, :_reduce_none,
+ 1, 114, :_reduce_34,
+ 1, 120, :_reduce_35,
+ 1, 120, :_reduce_36,
+ 1, 120, :_reduce_37,
+ 1, 120, :_reduce_38,
+ 1, 120, :_reduce_39,
+ 1, 120, :_reduce_40,
+ 1, 120, :_reduce_41,
+ 1, 120, :_reduce_42,
+ 1, 120, :_reduce_none,
+ 1, 120, :_reduce_none,
+ 3, 121, :_reduce_45,
+ 4, 122, :_reduce_none,
+ 3, 122, :_reduce_none,
+ 6, 123, :_reduce_none,
+ 2, 129, :_reduce_none,
+ 2, 132, :_reduce_none,
+ 3, 132, :_reduce_none,
+ 2, 132, :_reduce_none,
+ 1, 127, :_reduce_53,
+ 1, 133, :_reduce_54,
+ 1, 133, :_reduce_55,
+ 1, 133, :_reduce_56,
+ 1, 133, :_reduce_57,
+ 1, 133, :_reduce_58,
+ 1, 133, :_reduce_59,
+ 1, 133, :_reduce_60,
+ 1, 133, :_reduce_61,
+ 1, 118, :_reduce_none,
+ 1, 119, :_reduce_63,
+ 2, 119, :_reduce_64,
+ 5, 142, :_reduce_65,
+ 5, 142, :_reduce_66,
+ 5, 142, :_reduce_67,
+ 2, 143, :_reduce_68,
+ 3, 143, :_reduce_69,
+ 1, 144, :_reduce_70,
+ 2, 144, :_reduce_71,
+ 1, 144, :_reduce_72,
+ 0, 130, :_reduce_none,
+ 2, 130, :_reduce_none,
+ 0, 131, :_reduce_none,
+ 2, 131, :_reduce_none,
+ 1, 147, :_reduce_none,
+ 2, 147, :_reduce_none,
+ 3, 148, :_reduce_none,
+ 1, 148, :_reduce_none,
+ 3, 148, :_reduce_none,
+ 0, 103, :_reduce_none,
+ 2, 103, :_reduce_none,
+ 2, 103, :_reduce_none,
+ 2, 104, :_reduce_85,
+ 2, 104, :_reduce_none,
+ 1, 109, :_reduce_none,
+ 1, 151, :_reduce_none,
+ 1, 151, :_reduce_none,
+ 1, 152, :_reduce_90,
+ 2, 152, :_reduce_91,
+ 3, 152, :_reduce_92,
+ 3, 154, :_reduce_93,
+ 1, 155, :_reduce_94,
+ 2, 155, :_reduce_none,
+ 1, 156, :_reduce_96,
+ 1, 156, :_reduce_97,
+ 1, 153, :_reduce_98,
+ 1, 153, :_reduce_99,
+ 1, 159, :_reduce_100,
+ 2, 159, :_reduce_101,
+ 3, 160, :_reduce_102,
+ 1, 161, :_reduce_103,
+ 1, 162, :_reduce_104,
+ 2, 162, :_reduce_105,
+ 3, 163, :_reduce_106,
+ 3, 164, :_reduce_107,
+ 1, 158, :_reduce_108,
+ 2, 158, :_reduce_109,
+ 2, 166, :_reduce_110,
+ 3, 166, :_reduce_111,
+ 1, 167, :_reduce_none,
+ 1, 157, :_reduce_113,
+ 2, 157, :_reduce_114,
+ 3, 168, :_reduce_115,
+ 1, 169, :_reduce_116,
+ 1, 169, :_reduce_117,
+ 1, 169, :_reduce_118,
+ 1, 169, :_reduce_119,
+ 1, 169, :_reduce_120,
+ 1, 165, :_reduce_121,
+ 1, 165, :_reduce_122,
+ 1, 165, :_reduce_123,
+ 1, 165, :_reduce_124,
+ 1, 165, :_reduce_125,
+ 1, 165, :_reduce_126,
+ 1, 165, :_reduce_127,
+ 1, 165, :_reduce_128,
+ 1, 165, :_reduce_129,
+ 1, 165, :_reduce_130,
+ 1, 170, :_reduce_none,
+ 1, 170, :_reduce_none,
+ 1, 170, :_reduce_none,
+ 1, 170, :_reduce_none,
+ 1, 170, :_reduce_none,
+ 1, 170, :_reduce_none,
+ 1, 170, :_reduce_none,
+ 1, 170, :_reduce_none,
+ 1, 170, :_reduce_none,
+ 1, 171, :_reduce_none,
+ 1, 171, :_reduce_none,
+ 1, 171, :_reduce_none,
+ 1, 171, :_reduce_none,
+ 1, 171, :_reduce_none,
+ 1, 171, :_reduce_none,
+ 1, 117, :_reduce_146,
+ 1, 117, :_reduce_147,
+ 1, 174, :_reduce_148,
+ 3, 184, :_reduce_none,
+ 3, 184, :_reduce_none,
+ 3, 184, :_reduce_none,
+ 1, 175, :_reduce_152,
+ 2, 175, :_reduce_153,
+ 2, 175, :_reduce_154,
+ 3, 185, :_reduce_none,
+ 3, 185, :_reduce_none,
+ 3, 185, :_reduce_none,
+ 5, 193, :_reduce_none,
+ 6, 193, :_reduce_none,
+ 6, 193, :_reduce_none,
+ 7, 193, :_reduce_none,
+ 4, 193, :_reduce_none,
+ 4, 193, :_reduce_none,
+ 4, 193, :_reduce_none,
+ 4, 193, :_reduce_none,
+ 3, 193, :_reduce_none,
+ 1, 176, :_reduce_167,
+ 2, 176, :_reduce_168,
+ 2, 176, :_reduce_169,
+ 3, 186, :_reduce_none,
+ 3, 186, :_reduce_none,
+ 3, 186, :_reduce_none,
+ 5, 194, :_reduce_none,
+ 6, 194, :_reduce_none,
+ 6, 194, :_reduce_none,
+ 7, 194, :_reduce_none,
+ 4, 194, :_reduce_none,
+ 4, 194, :_reduce_none,
+ 4, 194, :_reduce_none,
+ 4, 194, :_reduce_none,
+ 3, 194, :_reduce_none,
+ 1, 177, :_reduce_182,
+ 1, 177, :_reduce_183,
+ 3, 187, :_reduce_none,
+ 3, 187, :_reduce_none,
+ 3, 187, :_reduce_none,
+ 1, 178, :_reduce_none,
+ 3, 188, :_reduce_none,
+ 3, 188, :_reduce_none,
+ 3, 188, :_reduce_none,
+ 1, 179, :_reduce_none,
+ 3, 189, :_reduce_none,
+ 3, 189, :_reduce_none,
+ 3, 189, :_reduce_none,
+ 5, 195, :_reduce_none,
+ 6, 195, :_reduce_none,
+ 6, 195, :_reduce_none,
+ 7, 195, :_reduce_none,
+ 4, 195, :_reduce_none,
+ 4, 195, :_reduce_none,
+ 4, 195, :_reduce_none,
+ 4, 195, :_reduce_none,
+ 3, 195, :_reduce_none,
+ 1, 180, :_reduce_none,
+ 3, 190, :_reduce_none,
+ 3, 190, :_reduce_none,
+ 3, 190, :_reduce_none,
+ 5, 196, :_reduce_none,
+ 6, 196, :_reduce_none,
+ 6, 196, :_reduce_none,
+ 7, 196, :_reduce_none,
+ 4, 196, :_reduce_none,
+ 4, 196, :_reduce_none,
+ 4, 196, :_reduce_none,
+ 4, 196, :_reduce_none,
+ 3, 196, :_reduce_none,
+ 1, 181, :_reduce_none,
+ 3, 191, :_reduce_none,
+ 3, 191, :_reduce_none,
+ 3, 191, :_reduce_none,
+ 5, 197, :_reduce_none,
+ 6, 197, :_reduce_none,
+ 6, 197, :_reduce_none,
+ 7, 197, :_reduce_none,
+ 4, 197, :_reduce_none,
+ 4, 197, :_reduce_none,
+ 4, 197, :_reduce_none,
+ 4, 197, :_reduce_none,
+ 3, 197, :_reduce_none,
+ 1, 182, :_reduce_230,
+ 3, 192, :_reduce_none,
+ 3, 192, :_reduce_none,
+ 3, 192, :_reduce_none,
+ 5, 198, :_reduce_none,
+ 6, 198, :_reduce_none,
+ 6, 198, :_reduce_none,
+ 7, 198, :_reduce_none,
+ 4, 198, :_reduce_none,
+ 4, 198, :_reduce_none,
+ 4, 198, :_reduce_none,
+ 4, 198, :_reduce_none,
+ 3, 198, :_reduce_none,
+ 1, 172, :_reduce_243,
+ 3, 173, :_reduce_none,
+ 3, 173, :_reduce_none,
+ 3, 173, :_reduce_none,
+ 1, 183, :_reduce_247,
+ 1, 112, :_reduce_none,
+ 2, 112, :_reduce_none,
+ 3, 199, :_reduce_none,
+ 1, 199, :_reduce_none,
+ 3, 199, :_reduce_none,
+ 1, 150, :_reduce_none,
+ 1, 150, :_reduce_none,
+ 2, 201, :_reduce_none,
+ 2, 201, :_reduce_none,
+ 5, 201, :_reduce_none,
+ 5, 201, :_reduce_none,
+ 2, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 201, :_reduce_none,
+ 3, 200, :_reduce_none,
+ 1, 200, :_reduce_none,
+ 1, 200, :_reduce_none,
+ 1, 203, :_reduce_none,
+ 1, 203, :_reduce_none,
+ 3, 205, :_reduce_none,
+ 3, 205, :_reduce_none,
+ 3, 205, :_reduce_none,
+ 3, 205, :_reduce_none,
+ 3, 205, :_reduce_none,
+ 3, 204, :_reduce_none,
+ 1, 204, :_reduce_none,
+ 1, 204, :_reduce_none,
+ 1, 204, :_reduce_none,
+ 1, 128, :_reduce_none,
+ 2, 128, :_reduce_none,
+ 1, 202, :_reduce_none,
+ 3, 202, :_reduce_none,
+ 2, 206, :_reduce_288,
+ 1, 206, :_reduce_289,
+ 0, 145, :_reduce_290,
+ 5, 145, :_reduce_291,
+ 1, 207, :_reduce_292,
+ 3, 207, :_reduce_293,
+ 5, 146, :_reduce_294,
+ 1, 208, :_reduce_none,
+ 3, 208, :_reduce_none,
+ 3, 208, :_reduce_none,
+ 3, 208, :_reduce_none,
+ 5, 208, :_reduce_none,
+ 5, 208, :_reduce_none,
+ 5, 208, :_reduce_none,
+ 5, 208, :_reduce_none,
+ 1, 210, :_reduce_none,
+ 1, 210, :_reduce_none,
+ 0, 116, :_reduce_none,
+ 5, 116, :_reduce_306,
+ 2, 116, :_reduce_none,
+ 1, 209, :_reduce_none,
+ 3, 209, :_reduce_none,
+ 1, 211, :_reduce_none,
+ 1, 211, :_reduce_none,
+ 1, 211, :_reduce_none,
+ 1, 134, :_reduce_none,
+ 3, 134, :_reduce_none,
+ 3, 134, :_reduce_none,
+ 1, 212, :_reduce_none,
+ 1, 212, :_reduce_none,
+ 1, 212, :_reduce_none,
+ 1, 135, :_reduce_none,
+ 3, 135, :_reduce_none,
+ 3, 135, :_reduce_none,
+ 1, 213, :_reduce_none,
+ 1, 213, :_reduce_none,
+ 1, 213, :_reduce_none,
+ 1, 136, :_reduce_none,
+ 3, 136, :_reduce_none,
+ 3, 136, :_reduce_none,
+ 1, 214, :_reduce_none,
+ 1, 214, :_reduce_none,
+ 1, 214, :_reduce_none,
+ 1, 137, :_reduce_none,
+ 3, 137, :_reduce_none,
+ 3, 137, :_reduce_none,
+ 1, 215, :_reduce_none,
+ 1, 215, :_reduce_none,
+ 1, 215, :_reduce_none,
+ 1, 138, :_reduce_none,
+ 3, 138, :_reduce_none,
+ 3, 138, :_reduce_none,
+ 1, 216, :_reduce_none,
+ 3, 216, :_reduce_none,
+ 1, 216, :_reduce_none,
+ 1, 216, :_reduce_none,
+ 1, 139, :_reduce_none,
+ 3, 139, :_reduce_none,
+ 3, 139, :_reduce_none,
+ 1, 218, :_reduce_none,
+ 1, 218, :_reduce_none,
+ 3, 218, :_reduce_none,
+ 1, 140, :_reduce_none,
+ 3, 140, :_reduce_none,
+ 3, 140, :_reduce_none,
+ 1, 219, :_reduce_353,
+ 1, 219, :_reduce_354,
+ 3, 219, :_reduce_355,
+ 3, 219, :_reduce_356,
+ 1, 141, :_reduce_357,
+ 3, 141, :_reduce_358,
+ 3, 141, :_reduce_359,
+ 1, 126, :_reduce_none,
+ 3, 126, :_reduce_none,
+ 3, 126, :_reduce_none,
+ 1, 220, :_reduce_none,
+ 3, 220, :_reduce_none,
+ 3, 221, :_reduce_365,
+ 1, 125, :_reduce_none,
+ 1, 125, :_reduce_none,
+ 3, 222, :_reduce_none,
+ 0, 223, :_reduce_none,
+ 1, 223, :_reduce_none,
+ 2, 223, :_reduce_none,
+ 1, 124, :_reduce_none,
+ 1, 149, :_reduce_none,
+ 1, 149, :_reduce_374,
+ 1, 217, :_reduce_375 ]
+
+racc_reduce_n = 376
+
+racc_shift_n = 631
+
+racc_action_table = [
+   571,   442,   161,   472,   144,   588,   470,   466,   468,   129,
+   214,   570,   165,   573,   229,    10,   542,   170,   376,   539,
+    29,    58,   540,   541,   171,   458,   496,   386,   522,   385,
+    24,   116,   213,   494,  -373,    12,   535,   510,   434,   513,
+   514,  -374,   512,   569,    60,   492,   228,   457,    30,    50,
+   145,    46,    48,   317,    97,    98,    78,    81,    84,   188,
+   116,    94,   302,   307,    75,   109,   112,   114,   116,   529,
+   522,   116,   109,   114,   112,   116,   152,   154,   535,   510,
+    76,   513,   514,   272,   101,   116,   314,   279,   281,   532,
+   160,   114,   291,    46,    48,   317,   114,   625,    78,    81,
+    84,   188,   112,    94,   302,   307,    99,   109,   112,   114,
+   116,   529,   156,   432,     1,    46,    48,   101,   347,   348,
+    78,    81,    84,   230,   479,    94,    97,    98,   314,   279,
+   281,   532,   490,     5,   291,    88,    92,   152,   154,   138,
+   152,   154,    76,   101,   260,   374,   152,   154,   430,   148,
+   150,   133,   259,    78,    81,    84,   236,   114,    94,    97,
+    98,   152,   154,    67,   481,   138,   152,   154,    88,    92,
+   112,   152,   154,   156,   462,    76,   156,   127,   329,    78,
+    81,    84,   156,    50,    94,    97,    98,   126,   109,   152,
+   154,   465,   157,   158,    88,    92,   149,   156,   134,   151,
+   153,    76,   156,   594,   109,   152,   154,   156,   157,   158,
+   148,   150,   149,   148,   150,   151,   153,   566,   332,   148,
+   150,   236,   337,   338,   378,   156,   123,   124,   109,   101,
+    78,   382,   383,    55,   148,   150,   211,    20,   184,   148,
+   150,   156,   497,    35,   148,   150,   209,   257,   323,   324,
+   250,   138,    94,   254,   256,    21,    35,   155,   212,    78,
+   382,   383,   148,   150,   390,    78,    81,    84,    46,    48,
+    94,    97,    98,   155,   217,    50,   391,   455,   148,   150,
+    88,    92,   217,   274,    46,    48,   394,    76,    50,    78,
+   382,   383,   101,   237,    78,    81,    84,    46,    48,    94,
+   102,   395,   335,   109,   112,   114,   116,   272,   274,   108,
+    78,    81,    84,   112,   138,    94,   101,    67,    78,    81,
+    84,   396,   141,    94,    78,   382,   383,   142,    78,    81,
+    84,   268,    76,    94,    97,    98,   568,    50,   138,   101,
+    76,    46,    48,    88,    92,   239,   168,   169,   166,   167,
+    76,   101,    78,    81,    84,   146,   397,    94,    97,    98,
+   147,   138,   398,   217,   326,   345,   346,    88,    92,   217,
+   102,   123,   124,   138,    76,    78,    81,    84,   217,   399,
+    94,    97,    98,   168,   169,   166,   167,    78,    81,    84,
+    88,    92,    94,    97,    98,   400,   217,    76,   401,    78,
+    81,    84,    88,    92,    94,    78,    81,    84,   101,    76,
+    94,    46,    48,   402,    78,    81,    84,   403,    16,    94,
+    17,    76,   322,   404,   323,   324,   101,    76,    94,   405,
+    99,   488,    78,    81,    84,   217,    76,    94,   406,    46,
+    48,    78,   382,   383,    78,    81,    84,   407,    99,    94,
+    97,    98,   416,   217,    76,    46,    48,    46,    48,    88,
+    92,   217,    78,    81,    84,   408,    76,    94,    97,    98,
+   265,    78,    81,    84,   349,   350,    94,    88,    92,   323,
+   324,    25,    26,    94,    76,   101,   357,   358,    35,    78,
+    81,    84,   409,    76,    94,   596,   597,    78,    81,    84,
+   323,   324,    94,   217,    94,   267,   380,    99,   477,   217,
+   268,    76,   615,   616,   617,   217,    46,    48,   266,    76,
+    50,    78,    81,    84,   427,   428,    94,    97,    98,    46,
+    48,   323,   324,   101,   248,    94,    88,    92,   247,    78,
+    81,    84,   142,    76,    94,    78,    81,    84,   371,   372,
+    94,    78,    81,    84,   147,    99,    94,   101,   246,   323,
+   324,    76,    39,    94,    46,    48,   413,    76,   380,    78,
+    81,    84,    35,    76,    94,    97,    98,   425,   426,    99,
+   101,    78,   382,   383,    88,    92,   423,   424,    46,    48,
+   413,    76,   261,    78,    81,    84,   421,   422,    94,    97,
+    98,    16,   138,    17,    50,   412,   382,   383,    88,    92,
+   413,   419,   420,    46,    48,    76,    78,    81,    84,   417,
+   418,    94,    97,    98,   262,   412,   382,   383,   263,   323,
+   324,    88,    92,    94,   629,   630,   317,   116,    76,    78,
+    81,    84,   188,   264,    94,   302,   307,   245,   109,   112,
+   114,   116,    78,    81,    84,   123,   124,    94,    78,   382,
+   383,   109,   112,   114,   116,   168,   169,   166,   167,   314,
+   279,   281,  -103,   244,   243,   291,   202,   435,   436,    78,
+    81,    84,   188,   437,    94,   123,   124,   126,   109,   112,
+   114,   116,   184,   119,   127,   438,   439,    78,    81,    84,
+   440,   242,    94,   123,   124,   126,   109,   112,   114,   116,
+   443,   119,    78,    81,    84,   444,   445,    94,    78,   382,
+   383,   109,   112,   114,   116,    78,    81,    84,   446,   447,
+    94,    78,   382,   383,   109,   112,   114,   116,    78,    81,
+    84,   448,   449,    94,   450,   451,   452,   109,   112,   114,
+   116,   168,   169,   166,   167,   388,    78,   382,   383,   168,
+   169,   166,   167,   168,   169,   166,   167,   168,   169,   166,
+   167,   168,   169,   166,   167,   168,   169,   166,   167,   453,
+   454,   241,   141,   146,   240,   460,   461,   239,   238,   138,
+   171,   145,   207,   474,   476,   265,   478,   102,   163,   483,
+   484,   485,   160,   143,   138,   135,    50,   131,    69,   499,
+   109,   501,   112,   503,   114,   505,   116,   266,   508,   509,
+    68,   537,   538,    35,    60,   544,   545,    57,   547,   109,
+   549,   112,   551,   114,   553,   116,   267,   556,   557,   558,
+   559,   560,   561,   562,  -103,   564,   268,    54,   170,    34,
+   114,    31,   575,   576,   160,   578,   579,   116,   116,   116,
+    28,   581,   582,   583,   584,   585,   586,   587,   112,   590,
+   591,   276,   184,   109,   598,    23,   601,   602,    76,   568,
+   604,   606,   607,   608,   277,   613,   126,    15,   619,    13,
+     9,   621,   622,   623,   624,     8,     7,   627,   628,   319,
+   116 ]
+
+racc_action_check = [
+   526,   358,    88,   403,    83,   565,   402,   400,   401,    61,
+   144,   524,    92,   526,   160,     5,   476,    95,   261,   476,
+    23,    40,   476,   476,    99,   390,   426,   266,   526,   266,
+    16,   261,   144,   424,    95,     5,   526,   526,   350,   526,
+   526,    99,   458,   524,    61,   422,   160,   390,    23,    40,
+    83,   526,   526,   526,    92,    92,   526,   526,   526,   526,
+   358,   526,   526,   526,    54,   526,   526,   526,   526,   526,
+   458,   403,   400,   402,   401,   476,   226,   226,   458,   458,
+    88,   458,   458,   458,    54,   426,   526,   526,   526,   526,
+   565,   424,   526,   458,   458,   458,   350,   619,   458,   458,
+   458,   458,   422,   458,   458,   458,    54,   458,   458,   458,
+   458,   458,   226,   348,     0,    54,    54,   619,   252,   252,
+    54,    54,    54,   163,   408,    54,    54,    54,   458,   458,
+   458,   458,   420,     0,   458,    54,    54,   224,   224,   619,
+   318,   318,    54,   163,   190,   260,   227,   227,   346,   226,
+   226,    69,   189,   619,   619,   619,   318,   260,   619,   619,
+   619,   220,   220,    49,   409,   163,   218,   218,   619,   619,
+   348,   222,   222,   224,   398,   619,   318,   408,   243,   163,
+   163,   163,   227,    49,   163,   163,   163,   243,   420,    85,
+    85,   399,    85,    85,   163,   163,    85,   220,    69,    85,
+    85,   163,   218,   570,   346,   172,   172,   222,   172,   172,
+   224,   224,   172,   318,   318,   172,   172,   514,   245,   227,
+   227,   172,   249,   249,   262,    85,   409,   409,   245,   168,
+   398,   398,   398,    34,   220,   220,   143,    13,   262,   218,
+   218,   172,   428,    34,   222,   222,   135,   188,   399,   399,
+   188,   168,   399,   188,   188,    13,   135,    85,   143,   570,
+   570,   570,    85,    85,   269,   168,   168,   168,   514,   514,
+   168,   168,   168,   172,   151,    34,   270,   372,   172,   172,
+   168,   168,   217,   273,    34,    34,   274,   168,   135,   428,
+   428,   428,   167,   173,   188,   188,   188,   135,   135,   188,
+   131,   276,   247,   188,   188,   188,   188,   211,   211,    59,
+   151,   151,   151,   247,   167,   151,   166,    59,   217,   217,
+   217,   277,    81,   217,   372,   372,   372,    81,   167,   167,
+   167,   516,   151,   167,   167,   167,   516,    59,   166,   169,
+   217,   131,   131,   167,   167,   280,   173,   173,   173,   173,
+   167,   165,   166,   166,   166,    84,   282,   166,   166,   166,
+    84,   169,   283,   152,   241,   251,   251,   166,   166,   150,
+    57,   241,   241,   165,   166,   169,   169,   169,   149,   286,
+   169,   169,   169,   235,   235,   235,   235,   165,   165,   165,
+   169,   169,   165,   165,   165,   289,   148,   169,   293,   152,
+   152,   152,   165,   165,   152,   150,   150,   150,    79,   165,
+   150,    57,    57,   296,   149,   149,   149,   299,    12,   149,
+    12,   152,   239,   302,   239,   239,   620,   150,   239,   303,
+    79,   418,   148,   148,   148,   153,   149,   148,   305,    79,
+    79,   265,   265,   265,    79,    79,    79,   307,   620,    79,
+    79,    79,   338,   158,   148,   513,   513,   620,   620,    79,
+    79,   154,   620,   620,   620,   308,    79,   620,   620,   620,
+   310,   153,   153,   153,   253,   253,   153,   620,   620,   418,
+   418,    18,    18,   418,   620,   613,   255,   255,   510,   158,
+   158,   158,   312,   153,   158,   574,   574,   154,   154,   154,
+   338,   338,   154,   155,   338,   315,   406,   613,   406,   156,
+   316,   158,   606,   606,   606,   157,   613,   613,   317,   154,
+   510,   613,   613,   613,   344,   344,   613,   613,   613,   510,
+   510,   267,   267,   609,   187,   267,   613,   613,   186,   155,
+   155,   155,   323,   613,   155,   156,   156,   156,   258,   258,
+   156,   157,   157,   157,   324,   609,   157,   604,   185,   488,
+   488,   155,    28,   488,   609,   609,   484,   156,   263,   609,
+   609,   609,    28,   157,   609,   609,   609,   343,   343,   604,
+   101,   484,   484,   484,   609,   609,   342,   342,   604,   604,
+   578,   609,   193,   604,   604,   604,   341,   341,   604,   604,
+   604,    26,   101,    26,    28,   578,   578,   578,   604,   604,
+   319,   340,   340,    28,    28,   604,   101,   101,   101,   339,
+   339,   101,   101,   101,   196,   319,   319,   319,   198,   416,
+   416,   101,   101,   416,   624,   624,   214,   259,   101,   214,
+   214,   214,   214,   199,   214,   214,   214,   183,   214,   214,
+   214,   214,   254,   254,   254,   238,   238,   254,   569,   569,
+   569,   254,   254,   254,   254,    93,    93,    93,    93,   214,
+   214,   214,   102,   182,   181,   214,   102,   351,   352,   102,
+   102,   102,   102,   353,   102,   102,   102,   102,   102,   102,
+   102,   102,   102,   102,    60,   354,   355,    60,    60,    60,
+   356,   180,    60,    60,    60,    60,    60,    60,    60,    60,
+   359,    60,   250,   250,   250,   360,   361,   250,   455,   455,
+   455,   250,   250,   250,   250,   257,   257,   257,   362,   363,
+   257,   497,   497,   497,   257,   257,   257,   257,   256,   256,
+   256,   364,   365,   256,   366,   367,   368,   256,   256,   256,
+   256,   612,   612,   612,   612,   268,   268,   268,   268,   231,
+   231,   231,   231,   232,   232,   232,   232,   233,   233,   233,
+   233,   234,   234,   234,   234,   626,   626,   626,   626,   369,
+   370,   179,   382,   383,   178,   393,   394,   176,   175,   145,
+   138,   137,   111,   404,   405,   201,   407,   106,    89,   410,
+   412,   415,    86,    82,    76,    70,    67,    63,    53,   429,
+   430,   431,   432,   433,   434,   441,   442,   202,   456,   457,
+    50,   460,   461,    45,    44,   486,   487,    38,   489,   490,
+   491,   492,   493,   494,   495,   496,   204,   498,   500,   502,
+   504,   506,   507,   509,    35,   512,   205,    33,   515,    27,
+   246,    24,   532,   533,   536,   537,   538,   539,   540,   541,
+    22,   546,   548,   550,   552,   554,   555,   563,   244,   567,
+   568,   212,   264,   242,   576,    14,   579,   580,   589,   593,
+   598,   599,   600,   601,   213,   605,   240,     8,   611,     6,
+     4,   614,   615,   616,   617,     3,     2,   622,   623,   228,
+   542 ]
+
+racc_action_pointer = [
+   113,   nil,   877,   895,   872,    14,   862,   nil,   887,   nil,
+   nil,   nil,   394,   236,   847,   nil,    22,   nil,   459,   nil,
+   nil,   nil,   830,    19,   826,   nil,   577,   818,   561,   nil,
+   nil,   nil,   nil,   815,   232,   794,   nil,   nil,   819,   nil,
+     6,   nil,   nil,   nil,   774,   812,   nil,   nil,   nil,   140,
+   819,   nil,   nil,   761,    63,   nil,   nil,   359,   nil,   294,
+   640,    -6,   nil,   799,   nil,   nil,   nil,   763,   nil,   150,
+   756,   nil,   nil,   nil,   nil,   nil,   761,   nil,   nil,   387,
+   nil,   265,   770,   -29,   298,   183,   716,   nil,     1,   752,
+   nil,   nil,    -9,   590,   nil,   -12,   nil,   nil,   nil,    -5,
+   nil,   559,   622,   nil,   nil,   nil,   786,   nil,   nil,   nil,
+   nil,   741,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   289,   nil,   nil,   nil,   245,   nil,   712,   761,   nil,
+   nil,   nil,   nil,   224,    -2,   746,   nil,   nil,   375,   357,
+   348,   253,   342,   414,   440,   482,   488,   494,   432,   nil,
+    13,   nil,   nil,   122,   nil,   330,   295,   271,   208,   318,
+   nil,   nil,   199,   271,   nil,   733,   732,   nil,   729,   726,
+   646,   619,   618,   592,   nil,   503,   483,   519,   237,    97,
+    89,   nil,   nil,   537,   nil,   nil,   569,   nil,   573,   588,
+   nil,   740,   762,   nil,   781,   791,   nil,   nil,   nil,   nil,
+   nil,   265,   836,   849,   582,   nil,   nil,   261,   160,   nil,
+   155,   nil,   165,   nil,   131,   nil,    70,   140,   887,   nil,
+   nil,   684,   688,   692,   696,   308,   nil,   nil,   592,   366,
+   821,   308,   807,   122,   801,   162,   782,   246,   nil,   162,
+   655,   305,    58,   414,   595,   426,   681,   668,   488,   568,
+    89,   -38,   168,   514,   802,   384,   -27,   473,   699,   231,
+   262,   nil,   nil,   240,   205,   nil,   265,   285,   nil,   nil,
+   290,   nil,   342,   339,   nil,   nil,   356,   nil,   nil,   372,
+   nil,   nil,   nil,   375,   nil,   nil,   390,   nil,   nil,   394,
+   nil,   nil,   368,   350,   nil,   383,   nil,   392,   442,   nil,
+   415,   nil,   469,   nil,   nil,   450,   455,   463,   134,   568,
+   nil,   nil,   nil,   480,   492,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   442,   559,
+   551,   536,   526,   517,   464,   nil,   138,   nil,   103,   nil,
+    28,   617,   618,   623,   635,   636,   640,   nil,    -9,   650,
+   655,   656,   668,   669,   681,   682,   684,   685,   686,   719,
+   720,   nil,   267,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   725,   726,   nil,   nil,   nil,   nil,   nil,   nil,
+    13,   nil,   nil,   703,   753,   nil,   nil,   nil,   173,   190,
+     6,     7,     5,     2,   729,   734,   452,   733,   123,   163,
+   785,   nil,   739,   nil,   nil,   741,   571,   nil,   421,   nil,
+   122,   nil,    35,   nil,    23,   nil,    16,   nil,   232,   749,
+   744,   751,   745,   753,   746,   nil,   nil,   nil,   nil,   nil,
+   nil,   755,   747,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   661,   758,   784,    41,   nil,
+   788,   810,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,     6,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   524,   nil,   765,   766,   501,   768,
+   763,   770,   764,   772,   765,   774,   766,   674,   777,   nil,
+   778,   nil,   779,   nil,   780,   nil,   781,   782,   nil,   807,
+   477,   nil,   831,   403,   216,   819,   276,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   -12,   nil,    -1,   nil,   nil,   nil,
+   nil,   nil,   760,   820,   nil,   nil,   768,   843,   799,   788,
+   789,   790,   831,   nil,   nil,   nil,   801,   nil,   802,   nil,
+   803,   nil,   804,   nil,   805,   806,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   828,   nil,     4,   nil,   840,   800,   601,
+   202,   nil,   nil,   nil,   404,   nil,   862,   nil,   548,   815,
+   863,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   799,
+   nil,   nil,   nil,   819,   nil,   nil,   nil,   nil,   836,   858,
+   868,   826,   nil,   nil,   536,   840,   429,   nil,   nil,   512,
+   nil,   842,   676,   464,   877,   869,   870,   871,   nil,    96,
+   405,   nil,   812,   813,   551,   nil,   700,   nil,   nil,   nil,
+   nil ]
+
+racc_action_default = [
+  -376,    -2,  -376,  -376,  -376,    -6,   -13,    -4,  -376,    -1,
+    -5,    -7,  -376,  -376,  -376,   631,  -376,   -12,  -376,    -9,
+   -15,   -14,   -18,  -376,  -376,    -8,  -376,   -21,  -376,   -17,
+   -16,   -11,   -10,  -376,  -376,  -112,   -90,  -108,  -376,   -20,
+  -376,   -98,   -99,  -100,  -376,  -376,  -146,   -87,  -147,   -88,
+   -94,   -89,   -19,   -82,  -376,   -23,   -22,  -376,  -110,  -376,
+  -376,  -376,  -104,  -376,  -109,  -101,   -91,  -376,   -95,  -376,
+  -376,  -282,   -24,  -248,   -26,   -25,  -284,  -253,  -152,   -27,
+  -254,  -376,  -376,  -376,  -376,  -376,  -305,  -273,  -376,  -376,
+  -283,  -274,  -376,  -251,  -167,   -31,  -286,  -271,  -272,  -289,
+  -281,  -376,  -112,   -93,  -113,   -97,  -376,   -96,  -111,  -191,
+  -123,  -376,  -204,  -124,  -217,  -125,  -230,  -126,  -127,  -247,
+  -128,  -129,  -130,  -182,  -183,  -121,  -187,  -148,  -122,  -102,
+  -105,  -376,   -92,   -84,   -83,  -376,    -3,  -285,  -289,  -249,
+  -373,  -153,  -168,  -376,  -376,  -376,  -154,  -169,  -376,  -376,
+  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,   -30,
+  -376,  -256,  -255,  -376,  -259,  -376,  -376,  -376,  -376,  -376,
+   -32,  -288,  -376,  -376,  -145,  -134,  -123,  -116,  -135,  -124,
+  -136,  -125,  -137,  -126,  -243,  -138,  -127,  -376,  -376,  -139,
+  -128,  -117,  -140,  -129,  -118,  -141,  -119,  -142,  -131,  -120,
+  -143,  -132,  -148,  -144,  -133,  -122,  -114,  -107,  -106,   -86,
+   -85,  -376,  -376,  -376,  -376,  -287,  -278,  -376,  -263,  -279,
+  -264,  -275,  -265,  -276,  -260,  -277,  -261,  -262,  -376,  -307,
+  -252,  -250,  -268,  -269,  -266,  -267,  -280,  -270,  -376,  -376,
+  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -115,  -376,
+  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
+  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
+  -376,   -33,   -62,   -34,  -290,   -63,  -376,  -376,  -343,  -328,
+  -316,  -334,  -376,  -313,   -54,  -323,  -319,   -55,  -329,  -325,
+   -56,  -375,  -335,  -331,   -57,  -342,  -337,  -312,   -58,  -344,
+  -318,   -59,  -353,  -340,  -324,  -348,   -60,  -354,  -350,  -330,
+  -311,   -61,  -357,  -336,  -322,  -317,  -310,  -347,  -376,  -376,
+  -185,  -170,  -172,  -376,  -376,  -189,  -186,  -184,  -193,  -190,
+  -188,  -206,  -194,  -192,  -219,  -207,  -205,  -181,  -376,  -376,
+  -376,  -376,  -376,  -376,  -376,  -203,  -376,  -216,  -376,  -229,
+  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -242,  -376,  -376,
+  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
+  -376,  -166,  -376,  -232,  -220,  -218,  -233,  -231,  -246,  -244,
+  -150,  -245,  -376,  -376,  -156,  -151,  -149,  -171,  -157,  -155,
+  -376,   -29,   -64,   -68,  -376,   -28,  -258,  -257,  -376,  -376,
+  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,
+  -376,  -308,  -152,  -304,  -303,  -376,  -376,  -179,  -376,  -201,
+  -376,  -214,  -376,  -227,  -376,  -240,  -376,  -164,  -376,  -376,
+  -376,  -376,  -376,  -376,  -376,  -178,  -200,  -213,  -226,  -239,
+  -163,  -376,  -376,  -180,  -202,  -215,  -228,  -241,  -165,  -177,
+  -199,  -212,  -225,  -238,  -162,  -376,  -376,  -376,  -376,   -69,
+  -376,  -376,  -315,  -314,  -320,  -321,  -327,  -326,  -333,  -332,
+  -339,  -338,  -346,  -345,  -355,  -341,  -376,  -349,  -356,  -352,
+  -351,  -359,  -358,  -306,  -376,  -173,  -376,  -376,  -376,  -376,
+  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -376,  -195,
+  -376,  -208,  -376,  -221,  -376,  -234,  -376,  -376,  -158,  -376,
+  -376,   -53,   -44,  -376,  -376,   -31,  -310,   -72,   -70,   -35,
+   -37,   -38,  -372,   -39,  -360,   -40,  -376,  -363,   -41,  -367,
+  -366,   -42,  -369,  -376,   -36,   -43,  -305,  -376,  -376,  -376,
+  -376,  -376,  -376,  -309,  -175,  -174,  -376,  -196,  -376,  -209,
+  -376,  -222,  -376,  -235,  -376,  -376,  -159,  -197,  -210,  -223,
+  -236,  -160,   -66,  -376,   -67,  -305,   -52,   -50,  -376,  -376,
+  -376,   -44,   -71,   -65,  -376,  -370,  -376,   -49,  -376,  -292,
+  -376,  -176,  -198,  -211,  -224,  -237,  -161,   -45,   -47,  -376,
+   -51,  -365,  -364,  -376,  -362,  -361,  -368,  -371,   -73,  -295,
+  -376,  -376,  -291,   -46,  -376,   -75,  -376,  -294,  -293,   -74,
+   -77,  -376,   -80,  -376,  -376,  -296,  -297,  -298,   -78,  -376,
+   -76,   -48,  -376,  -376,  -376,   -81,   -79,  -299,  -300,  -301,
+  -302 ]
+
+racc_goto_table = [
+    93,   128,   162,    45,   174,   159,   113,   410,   271,    45,
+    52,   196,   107,   115,   172,   103,    56,   518,   121,   275,
+    89,    65,    64,   111,    73,    93,    66,    19,   618,    95,
+     3,   609,   106,    62,   393,   526,    66,   120,    59,   618,
+   620,    32,   282,   205,   132,    89,   110,   173,   179,   139,
+   130,   614,   605,   273,   118,   181,    61,   270,   459,    79,
+   193,   206,   218,   187,   220,   177,   222,   191,   224,   194,
+   226,   227,   216,    74,   219,   199,   221,   117,   223,   190,
+   225,   392,    65,    64,   480,   572,   107,    72,   176,   208,
+    18,    11,     2,   136,    70,    53,   186,    33,   198,   201,
+   204,   175,   178,   180,   182,   185,   106,   189,   192,   231,
+    45,   173,   232,   233,   234,   235,   195,   210,   197,   183,
+   200,   203,    27,    22,   164,   137,    14,     6,   215,   258,
+   318,   580,   600,     4,   543,   592,   574,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   255,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   316,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   253,   nil,   nil,   nil,   nil,
+   nil,   379,   nil,   381,   249,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   252,   nil,   320,   nil,   nil,   327,   nil,   nil,
+   nil,   344,   nil,   325,   nil,   356,   330,   364,   370,   nil,
+   280,   nil,   nil,   nil,   nil,   251,   384,   nil,   343,   389,
+   nil,   nil,   355,   nil,   363,   369,   nil,   373,   nil,   377,
+   nil,   nil,   nil,   334,   nil,   321,   nil,   342,   nil,   nil,
+   nil,   354,   nil,   362,   368,   nil,   339,   375,   331,   nil,
+   351,   336,   359,   365,   341,   nil,   nil,   nil,   353,   nil,
+   361,   367,   nil,   387,   nil,   517,   nil,   nil,   nil,   328,
+   414,   nil,   333,   nil,   nil,   nil,   599,   340,   nil,   nil,
+   nil,   352,   nil,   360,   366,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   475,   nil,   nil,
+   nil,   nil,   nil,   456,   nil,   nil,   441,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   415,   nil,   nil,   433,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   463,
+   nil,   nil,   431,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   482,   nil,   nil,   nil,   nil,
+   nil,   473,   nil,   429,   nil,   nil,   nil,   nil,   nil,   498,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   471,
+   nil,   nil,   nil,   nil,   495,   464,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   469,   507,   nil,   nil,   516,
+   506,   493,   486,   nil,   487,   nil,   nil,   nil,   nil,   nil,
+   nil,   504,   nil,   nil,   nil,   nil,   491,   467,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   414,   502,   nil,   nil,   nil,
+   nil,   nil,   nil,   515,   255,   nil,   nil,   489,   555,   nil,
+   nil,   nil,   nil,   nil,   280,   nil,   nil,   500,   nil,   nil,
+   nil,   nil,   nil,   nil,   554,   577,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   516,   nil,   nil,
+   nil,   552,   nil,   nil,   546,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   589,    45,   550,   nil,   565,   567,
+   nil,   nil,   563,   nil,   nil,   nil,   nil,   343,   355,   363,
+   369,   515,   nil,   603,   nil,   nil,   nil,   548,   nil,   nil,
+   593,   595,   280,   nil,   nil,   nil,   nil,   nil,   nil,   414,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   626 ]
+
+racc_goto_check = [
+    56,    81,    34,    23,   104,    22,    83,   115,    24,    23,
+    15,    78,    59,    84,   109,    62,    15,    26,    88,    48,
+    55,    66,    72,    71,   105,    56,    60,    14,    54,    23,
+     1,    53,    23,    69,    51,    50,    60,    87,    58,    54,
+    53,    14,    39,    81,    60,    55,    82,    56,    83,   105,
+    69,    37,    36,    25,    86,    84,    68,    20,    52,    18,
+    88,    74,   109,    75,   109,    71,   109,    76,   109,    77,
+   109,   109,   110,    17,   110,    79,   110,    85,   110,    87,
+   110,    48,    66,    72,    80,    26,    59,    16,    82,    62,
+    13,    12,    11,    10,     9,     8,    86,     7,    90,    91,
+    92,    93,    94,    95,    96,    97,    23,    98,    99,    56,
+    23,    56,    56,    56,    56,    56,   100,    15,   101,    85,
+   102,   103,     6,     5,   106,   108,     4,     3,   112,    81,
+   109,   113,   114,     2,   116,   127,   129,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,    88,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,    81,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,    87,   nil,   nil,   nil,   nil,
+   nil,    78,   nil,    78,    82,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,    86,   nil,    83,   nil,   nil,    83,   nil,   nil,
+   nil,    81,   nil,    84,   nil,    81,    84,    81,    81,   nil,
+    82,   nil,   nil,   nil,   nil,    85,    81,   nil,    88,    81,
+   nil,   nil,    88,   nil,    88,    88,   nil,    88,   nil,    88,
+   nil,   nil,   nil,    87,   nil,    82,   nil,    87,   nil,   nil,
+   nil,    87,   nil,    87,    87,   nil,    82,    87,    86,   nil,
+    82,    86,    82,    82,    86,   nil,   nil,   nil,    86,   nil,
+    86,    86,   nil,    82,   nil,    24,   nil,   nil,   nil,    85,
+    81,   nil,    85,   nil,   nil,   nil,   115,    85,   nil,   nil,
+   nil,    85,   nil,    85,    85,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   104,   nil,   nil,
+   nil,   nil,   nil,    81,   nil,   nil,    88,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,    82,   nil,   nil,    87,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    81,
+   nil,   nil,    86,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,    83,   nil,   nil,   nil,   nil,
+   nil,    88,   nil,    85,   nil,   nil,   nil,   nil,   nil,    81,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,    87,
+   nil,   nil,   nil,   nil,    88,    82,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,    86,    81,   nil,   nil,    81,
+    88,    87,    82,   nil,    82,   nil,   nil,   nil,   nil,   nil,
+   nil,    87,   nil,   nil,   nil,   nil,    86,    85,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,    81,    86,   nil,   nil,   nil,
+   nil,   nil,   nil,    23,    88,   nil,   nil,    85,    81,   nil,
+   nil,   nil,   nil,   nil,    82,   nil,   nil,    85,   nil,   nil,
+   nil,   nil,   nil,   nil,    88,    22,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,    81,   nil,   nil,
+   nil,    87,   nil,   nil,    82,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,    22,    23,    86,   nil,    23,    23,
+   nil,   nil,    15,   nil,   nil,   nil,   nil,    88,    88,    88,
+    88,    23,   nil,    34,   nil,   nil,   nil,    85,   nil,   nil,
+    81,    81,    82,   nil,   nil,   nil,   nil,   nil,   nil,    81,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,    56 ]
+
+racc_goto_pointer = [
+   nil,    30,   133,   127,   120,   109,   100,    70,    62,    41,
+    23,    92,    86,    78,    15,   -18,    33,    19,     5,   nil,
+  -154,   nil,   -81,   -25,  -203,  -158,  -441,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   -86,   nil,  -546,  -554,   nil,  -172,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -192,   nil,
+  -423,  -240,  -335,  -573,  -581,   -34,   -54,   nil,    -2,   -45,
+   -23,   nil,   -42,   nil,   nil,   nil,   -24,   nil,    12,   -11,
+   nil,   -37,   -23,   nil,   -45,   -39,   -35,   -33,   -91,   -27,
+  -324,   -59,   -14,   -54,   -47,    17,    -6,   -23,   -42,   nil,
+    -4,    -3,    -2,    -1,     0,     1,     2,     3,     5,     6,
+    14,    16,    18,    19,   -98,   -30,    32,   nil,    49,   -87,
+   -76,   nil,   -17,  -407,  -446,  -312,  -350,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,  -434,   nil,  -396 ]
+
+racc_goto_default = [
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
+   nil,   nil,   nil,   nil,   nil,   nil,   nil,   534,   nil,    82,
+   nil,    86,   nil,   140,   nil,   nil,   nil,   519,   520,   521,
+   523,   525,   528,   531,    90,   533,   nil,   nil,   536,   511,
+   284,   287,   290,   294,   298,   301,   306,   311,   nil,   269,
+   nil,   nil,   nil,   nil,   610,   611,   612,    47,    49,    51,
+    36,    38,   nil,   105,    41,    42,    43,    44,   nil,   nil,
+    63,   nil,    37,    40,   104,   nil,   nil,   nil,   nil,   nil,
+   125,   100,    71,   nil,   nil,   285,   288,   292,   295,   122,
+   305,   310,   315,   nil,   nil,   nil,   nil,   nil,   nil,   297,
+   300,   304,   309,   313,   278,   nil,    77,    80,    83,    85,
+    87,    91,    96,   nil,   nil,   nil,   411,   283,   286,   289,
+   293,   296,   299,   303,   308,   312,   524,   527,   530,   nil ]
+
+racc_token_table = {
+ false => 0,
+ Object.new => 1,
+ :UMINUS => 2,
+ :UPLUS => 3,
+ "*" => 4,
+ "/" => 5,
+ "+" => 6,
+ "-" => 7,
+ :SYM_EQ => 8,
+ :SYM_NE => 9,
+ :SYM_LT => 10,
+ :SYM_START_DBLOCK => 11,
+ :SYM_START_CBLOCK => 12,
+ :SYM_GT => 13,
+ :SYM_END_CBLOCK => 14,
+ :SYM_END_DBLOCK => 15,
+ :SYM_LE => 16,
+ :SYM_GE => 17,
+ :EOF => 18,
+ :V_ARCHETYPE_ID => 19,
+ :SYM_ARCHETYPE => 20,
+ :Left_parenthesis_code => 21,
+ :Right_parenthesis_code => 22,
+ :Semicolon_code => 23,
+ :SYM_ADL_VERSION => 24,
+ :V_VERSION_STRING => 25,
+ :SYM_IS_CONTROLLED => 26,
+ :SYM_SPECIALIZE => 27,
+ :SYM_CONCEPT => 28,
+ :V_LOCAL_TERM_CODE_REF => 29,
+ :SYM_LANGUAGE => 30,
+ :SYM_DESCRIPTION => 31,
+ :SYM_DEFINITION => 32,
+ :SYM_MATCHES => 33,
+ :START_REGEXP_BLOCK => 34,
+ :REGEXP_BODY => 35,
+ :END_REGEXP_BLOCK => 36,
+ :ERR_C_DOMAIN_TYPE => 37,
+ :START_V_C_DOMAIN_TYPE_BLOCK => 38,
+ :END_V_C_DOMAIN_TYPE_BLOCK => 39,
+ :SYM_USE_NODE => 40,
+ :SYM_ALLOW_ARCHETYPE => 41,
+ :Star_code => 42,
+ :V_ATTRIBUTE_IDENTIFIER => 43,
+ :SYM_INCLUDE => 44,
+ :SYM_EXCLUDE => 45,
+ ":" => 46,
+ :SYM_INVARIANT => 47,
+ :V_ASSERTION_TEXT => 48,
+ :SYM_ONTOLOGY => 49,
+ :Left_bracket_code => 50,
+ :Right_bracket_code => 51,
+ :V_TYPE_IDENTIFIER => 52,
+ :V_GENERIC_TYPE_IDENTIFIER => 53,
+ :V_STRING => 54,
+ :Comma_code => 55,
+ :SYM_LIST_CONTINUE => 56,
+ :V_INTEGER => 57,
+ :Plus_code => 58,
+ :Minus_code => 59,
+ :SYM_INTERVAL_DELIM => 60,
+ :SYM_ELLIPSIS => 61,
+ :V_REAL => 62,
+ :SYM_TRUE => 63,
+ :SYM_FALSE => 64,
+ :V_CHARACTER => 65,
+ :V_ISO8601_EXTENDED_DATE => 66,
+ :V_ISO8601_EXTENDED_TIME => 67,
+ :V_ISO8601_EXTENDED_DATE_TIME => 68,
+ :V_ISO8601_DURATION => 69,
+ :V_QUALIFIED_TERM_CODE_REF => 70,
+ :V_URI => 71,
+ :SYM_EXISTS => 72,
+ :SYM_NOT => 73,
+ "=" => 74,
+ :SYM_AND => 75,
+ :SYM_OR => 76,
+ :SYM_XOR => 77,
+ :SYM_IMPLIES => 78,
+ :Slash_code => 79,
+ "^" => 80,
+ :SYM_EXISTENCE => 81,
+ :SYM_CARDINALITY => 82,
+ :SYM_ORDERED => 83,
+ :SYM_UNORDERED => 84,
+ :SYM_UNIQUE => 85,
+ :SYM_OCCURRENCES => 86,
+ :V_ISO8601_DATE_CONSTRAINT_PATTERN => 87,
+ :V_ISO8601_TIME_CONSTRAINT_PATTERN => 88,
+ :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN => 89,
+ :START_TERM_CODE_CONSTRAINT => 90,
+ :END_TERM_CODE_CONSTRAINT => 91,
+ :TERM_CODE => 92,
+ :V_ISO8601_DURATION_CONSTRAINT_PATTERN => 93 }
+
+racc_use_result_var = true
+
+racc_nt_base = 94
+
+Racc_arg = [
+ racc_action_table,
+ racc_action_check,
+ racc_action_default,
+ racc_action_pointer,
+ racc_goto_table,
+ racc_goto_check,
+ racc_goto_default,
+ racc_goto_pointer,
+ racc_nt_base,
+ racc_reduce_table,
+ racc_token_table,
+ racc_shift_n,
+ racc_reduce_n,
+ racc_use_result_var ]
+
+Racc_token_to_s_table = [
+'$end',
+'error',
+'UMINUS',
+'UPLUS',
+'"*"',
+'"/"',
+'"+"',
+'"-"',
+'SYM_EQ',
+'SYM_NE',
+'SYM_LT',
+'SYM_START_DBLOCK',
+'SYM_START_CBLOCK',
+'SYM_GT',
+'SYM_END_CBLOCK',
+'SYM_END_DBLOCK',
+'SYM_LE',
+'SYM_GE',
+'EOF',
+'V_ARCHETYPE_ID',
+'SYM_ARCHETYPE',
+'Left_parenthesis_code',
+'Right_parenthesis_code',
+'Semicolon_code',
+'SYM_ADL_VERSION',
+'V_VERSION_STRING',
+'SYM_IS_CONTROLLED',
+'SYM_SPECIALIZE',
+'SYM_CONCEPT',
+'V_LOCAL_TERM_CODE_REF',
+'SYM_LANGUAGE',
+'SYM_DESCRIPTION',
+'SYM_DEFINITION',
+'SYM_MATCHES',
+'START_REGEXP_BLOCK',
+'REGEXP_BODY',
+'END_REGEXP_BLOCK',
+'ERR_C_DOMAIN_TYPE',
+'START_V_C_DOMAIN_TYPE_BLOCK',
+'END_V_C_DOMAIN_TYPE_BLOCK',
+'SYM_USE_NODE',
+'SYM_ALLOW_ARCHETYPE',
+'Star_code',
+'V_ATTRIBUTE_IDENTIFIER',
+'SYM_INCLUDE',
+'SYM_EXCLUDE',
+'":"',
+'SYM_INVARIANT',
+'V_ASSERTION_TEXT',
+'SYM_ONTOLOGY',
+'Left_bracket_code',
+'Right_bracket_code',
+'V_TYPE_IDENTIFIER',
+'V_GENERIC_TYPE_IDENTIFIER',
+'V_STRING',
+'Comma_code',
+'SYM_LIST_CONTINUE',
+'V_INTEGER',
+'Plus_code',
+'Minus_code',
+'SYM_INTERVAL_DELIM',
+'SYM_ELLIPSIS',
+'V_REAL',
+'SYM_TRUE',
+'SYM_FALSE',
+'V_CHARACTER',
+'V_ISO8601_EXTENDED_DATE',
+'V_ISO8601_EXTENDED_TIME',
+'V_ISO8601_EXTENDED_DATE_TIME',
+'V_ISO8601_DURATION',
+'V_QUALIFIED_TERM_CODE_REF',
+'V_URI',
+'SYM_EXISTS',
+'SYM_NOT',
+'"="',
+'SYM_AND',
+'SYM_OR',
+'SYM_XOR',
+'SYM_IMPLIES',
+'Slash_code',
+'"^"',
+'SYM_EXISTENCE',
+'SYM_CARDINALITY',
+'SYM_ORDERED',
+'SYM_UNORDERED',
+'SYM_UNIQUE',
+'SYM_OCCURRENCES',
+'V_ISO8601_DATE_CONSTRAINT_PATTERN',
+'V_ISO8601_TIME_CONSTRAINT_PATTERN',
+'V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN',
+'START_TERM_CODE_CONSTRAINT',
+'END_TERM_CODE_CONSTRAINT',
+'TERM_CODE',
+'V_ISO8601_DURATION_CONSTRAINT_PATTERN',
+'$start',
+'input',
+'archetype',
+'arch_identification',
+'arch_specialisation',
+'arch_concept',
+'arch_language',
+'arch_description',
+'arch_definition',
+'arch_invariant',
+'arch_ontology',
+'arch_head',
+'arch_meta_data',
+'arch_meta_data_items',
+'arch_meta_data_item',
+'dadl_section',
+'cadl_section',
+'c_complex_object',
+'assertions',
+'c_complex_object_head',
+'c_complex_object_body',
+'c_complex_object_id',
+'c_occurrences',
+'type_identifier',
+'c_any',
+'c_attributes',
+'c_object',
+'v_c_domain_type',
+'archetype_internal_ref',
+'archetype_slot',
+'constraint_ref',
+'c_code_phrase',
+'c_ordinal',
+'c_primitive_object',
+'absolute_path',
+'c_archetype_slot_head',
+'c_includes',
+'c_excludes',
+'c_archetype_slot_id',
+'c_primitive',
+'c_integer',
+'c_real',
+'c_date',
+'c_time',
+'c_date_time',
+'c_duration',
+'c_string',
+'c_boolean',
+'c_attribute',
+'c_attr_head',
+'c_attr_values',
+'c_existence',
+'c_cardinality',
+'invariants',
+'invariant',
+'any_identifier',
+'boolean_expression',
+'dadl_input',
+'attr_vals',
+'complex_object_block',
+'attr_val',
+'attr_id',
+'object_block',
+'primitive_object_block',
+'single_attr_object_block',
+'multiple_attr_object_block',
+'untyped_multiple_attr_object_block',
+'multiple_attr_object_block_head',
+'keyed_objects',
+'keyed_object',
+'object_key',
+'simple_value',
+'untyped_single_attr_object_block',
+'single_attr_object_complex_head',
+'untyped_primitive_object_block',
+'primitive_object_value',
+'simple_list_value',
+'simple_interval_value',
+'term_code',
+'term_code_list_value',
+'string_value',
+'integer_value',
+'real_value',
+'boolean_value',
+'character_value',
+'date_value',
+'time_value',
+'date_time_value',
+'duration_value',
+'uri_value',
+'string_list_value',
+'integer_list_value',
+'real_list_value',
+'boolean_list_value',
+'character_list_value',
+'date_list_value',
+'time_list_value',
+'date_time_list_value',
+'duration_list_value',
+'integer_interval_value',
+'real_interval_value',
+'date_interval_value',
+'time_interval_value',
+'date_time_interval_value',
+'duration_interval_value',
+'assertion',
+'boolean_leaf',
+'boolean_node',
+'relative_path',
+'arithmetic_expression',
+'arithmetic_leaf',
+'arithmetic_node',
+'path_segment',
+'existence_spec',
+'cardinality_spec',
+'occurrence_spec',
+'cardinality_limit_value',
+'c_integer_spec',
+'c_real_spec',
+'c_date_constraint',
+'c_time_constraint',
+'c_date_time_constraint',
+'c_duration_constraint',
+'duration_pattern',
+'c_string_spec',
+'c_boolean_spec',
+'c_ordinal_spec',
+'ordinal',
+'term_code_constraint_section',
+'term_code_body']
+
+Racc_debug_parser = false
+
+##### racc system variables end #####
+
+ # reduce 0 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 32
+  def _reduce_1( val, _values, result )
+    result = val[0]
+   result
+  end
+.,.,
+
+ # reduce 2 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 57
+  def _reduce_3( val, _values, result )
+    assert_at(__FILE__,__LINE__) do
+      val[4].instance_of?(OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION) and val[5].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT) and val[7].instance_of?(OpenEHR::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY) 
+    end
+    
+    archetype_id = val[0][:archetype_id]
+    adl_version = val[0][:arch_head][:arch_meta_data][:adl_version]
+    concept = val[2]
+    language = val[3][:arch_language]
+    archetype = OpenEHR::AM::Archetype::ARCHETYPE.create(
+                                                         :archetype_id => archetype_id,
+                                                         :adl_version => adl_version,
+                                                         :concept => concept,
+                                                         :description => val[4],
+                                                         :definition => val[5],
+                                                         :ontology => val[7]
+                                                         ) do |archetype|
+      archetype.original_language = language
+    end
+    @@log.info("#{__FILE__}:#{__LINE__}: archetype = #{archetype} at #{@filename}:#{@lineno}")
+    result = archetype
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 63
+  def _reduce_4( val, _values, result )
+    result = {:arch_head => val[0], :archetype_id => val[1] }
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 67
+  def _reduce_5( val, _values, result )
+    raise
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 72
+  def _reduce_6( val, _values, result )
+    result = {:arch_meta_data => nil }
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 76
+  def _reduce_7( val, _values, result )
+    result = val[1]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 81
+  def _reduce_8( val, _values, result )
+    result = {:arch_meta_data => val[1] }
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 86
+  def _reduce_9( val, _values, result )
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 90
+  def _reduce_10( val, _values, result )
+    result = val[0].merge(val[2])
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 96
+  def _reduce_11( val, _values, result )
+    result = {:adl_version => val[2], :is_controlled => false }
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 100
+  def _reduce_12( val, _values, result )
+    result = {:is_controlled => true }
+   result
+  end
+.,.,
+
+ # reduce 13 omitted
+
+ # reduce 14 omitted
+
+ # reduce 15 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 111
+  def _reduce_16( val, _values, result )
+    result = {:arch_concept => val[1] }
+   result
+  end
+.,.,
+
+ # reduce 17 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 121
+  def _reduce_18( val, _values, result )
+    result = {:arch_language => nil}
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 125
+  def _reduce_19( val, _values, result )
+    result = {:arch_language => val[1]}
+   result
+  end
+.,.,
+
+ # reduce 20 omitted
+
+ # reduce 21 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 136
+  def _reduce_22( val, _values, result )
+    result = OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION.new(:details => val[1])
+   result
+  end
+.,.,
+
+ # reduce 23 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 144
+  def _reduce_24( val, _values, result )
+    result = val[1]
+   result
+  end
+.,.,
+
+ # reduce 25 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 154
+  def _reduce_26( val, _values, result )
+    assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT)}
+    @@log.info("#{__FILE__}:#{__LINE__}: c_complex_object = #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 158
+  def _reduce_27( val, _values, result )
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 169
+  def _reduce_28( val, _values, result )
+    result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
+      c_complex_object.node_id = val[0][:c_complex_object_id][:local_term_code_ref]
+      c_complex_object.rm_type_name = val[0][:c_complex_object_id][:type_identifier]
+      c_complex_object.occurrences = val[0][:c_occurrences]
+    end
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 177
+  def _reduce_29( val, _values, result )
+    result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
+      c_complex_object.node_id = val[0][:c_complex_object_id][:local_term_code_ref]
+      c_complex_object.rm_type_name = val[0][:c_complex_object_id][:type_identifier]
+      c_complex_object.occurrences = val[0][:c_occurrences]
+    end
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 184
+  def _reduce_30( val, _values, result )
+    result = {:c_complex_object_id => val[0], :c_occurrences => val[1]}
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 189
+  def _reduce_31( val, _values, result )
+    result = {:type_identifier => val[0]}
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 193
+  def _reduce_32( val, _values, result )
+    result = {:type_identifier => val[0], :local_term_code_ref => val[1]}
+   result
+  end
+.,.,
+
+ # reduce 33 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 199
+  def _reduce_34( val, _values, result )
+    result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new(:attributes => val[0])
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 207
+  def _reduce_35( val, _values, result )
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 211
+  def _reduce_36( val, _values, result )
+    result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 215
+  def _reduce_37( val, _values, result )
+    result = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_INTERNAL_REF.new
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 219
+  def _reduce_38( val, _values, result )
+    result = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_SLOT.new
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 223
+  def _reduce_39( val, _values, result )
+    result = OpenEHR::AM::Archetype::Constraint_Model::CONSTRAINT_REF.new
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 227
+  def _reduce_40( val, _values, result )
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 231
+  def _reduce_41( val, _values, result )
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 235
+  def _reduce_42( val, _values, result )
+    result = val[0]
+   result
+  end
+.,.,
+
+ # reduce 43 omitted
+
+ # reduce 44 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 250
+  def _reduce_45( val, _values, result )
+    result = val[1]
+   result
+  end
+.,.,
+
+ # reduce 46 omitted
+
+ # reduce 47 omitted
+
+ # reduce 48 omitted
+
+ # reduce 49 omitted
+
+ # reduce 50 omitted
+
+ # reduce 51 omitted
+
+ # reduce 52 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 270
+  def _reduce_53( val, _values, result )
+    assert_at(__FILE__,__LINE__){val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_PRIMITIVE)}
+    result = OpenEHR::AM::Archetype::Constraint_Model::C_PRIMITIVE_OBJECT.new(:item => val[0])
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 276
+  def _reduce_54( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}: c_integer = #{val[0]} at #{@filename}:#{@lineno}")
+    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_INTEGER.new
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 281
+  def _reduce_55( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}: c_real = #{val[0]} at #{@filename}:#{@lineno}")
+    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_REAL.new
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 286
+  def _reduce_56( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}: c_date = #{val[0]} at #{@filename}:#{@lineno}")
+    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE.new
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 291
+  def _reduce_57( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}: c_time = #{val[0]} at #{@filename}:#{@lineno}")
+    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_TIME.new
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 296
+  def _reduce_58( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}: c_date_time = #{val[0]} at #{@filename}:#{@lineno}")
+    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE_TIME.new
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 301
+  def _reduce_59( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}: c_duration = #{val[0]} at #{@filename}:#{@lineno}")
+    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DURATION.new
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 306
+  def _reduce_60( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}: c_string = #{val[0]} at #{@filename}:#{@lineno}")
+    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_STRING.new
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 312
+  def _reduce_61( val, _values, result )
+    assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN)}
+    @@log.info("#{__FILE__}:#{__LINE__}: c_boolean = #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+   result
+  end
+.,.,
+
+ # reduce 62 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 322
+  def _reduce_63( val, _values, result )
+    result = [val[0]]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 326
+  def _reduce_64( val, _values, result )
+    result = (val[0] << val[1])
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 335
+  def _reduce_65( val, _values, result )
+    assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
+    c_attribute = val[0]
+    c_attribute.children = val[3]
+    result = c_attribute
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 340
+  def _reduce_66( val, _values, result )
+    assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 345
+  def _reduce_67( val, _values, result )
+    assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 356
+  def _reduce_68( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}, c_existence = #{val[1]} at #{@filename}")
+    result = OpenEHR::AM::Archetype::Constraint_Model::C_SINGLE_ATTRIBUTE.new(
+                                                                              :rm_attribute_name => val[0],
+                                                                              :existence => val[1]
+                                                                              )
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 366
+  def _reduce_69( val, _values, result )
+    assert_at(__FILE__,__LINE__){ val[2].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY) }
+    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER: #{val[0]}, c_existence = #{val[1]}, c_cardinality = #{val[2]} at #{@filename}") 
+    result = OpenEHR::AM::Archetype::Constraint_Model::C_MULTIPLE_ATTRIBUTE.new(
+                                                                                :rm_attribute_name => val[0],
+                                                                                :existence => val[1],
+                                                                                :cardinality => val[2]
+                                                                                )
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 371
+  def _reduce_70( val, _values, result )
+    result = Array[val[0]]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 375
+  def _reduce_71( val, _values, result )
+    result = (val[0] << val[1])
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 379
+  def _reduce_72( val, _values, result )
+    result = Array[val[0]]
+   result
+  end
+.,.,
+
+ # reduce 73 omitted
+
+ # reduce 74 omitted
+
+ # reduce 75 omitted
+
+ # reduce 76 omitted
+
+ # reduce 77 omitted
+
+ # reduce 78 omitted
+
+ # reduce 79 omitted
+
+ # reduce 80 omitted
+
+ # reduce 81 omitted
+
+ # reduce 82 omitted
+
+ # reduce 83 omitted
+
+ # reduce 84 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 410
+  def _reduce_85( val, _values, result )
+    dadl_section = val[1]
+    result = OpenEHR::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new
+   result
+  end
+.,.,
+
+ # reduce 86 omitted
+
+ # reduce 87 omitted
+
+ # reduce 88 omitted
+
+ # reduce 89 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 424
+  def _reduce_90( val, _values, result )
+    result = Array[val[0]]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 428
+  def _reduce_91( val, _values, result )
+    result = (val[0] << val[1])
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 432
+  def _reduce_92( val, _values, result )
+    result = (val[0] << val[2])
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 438
+  def _reduce_93( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}: attr_id = #{val[0]}, object_block = #{val[2]} at #{@filename}:#{@lineno}")
+    result = {:attr_id => val[0], :object_block => val[2]}
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 444
+  def _reduce_94( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+   result
+  end
+.,.,
+
+ # reduce 95 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 450
+  def _reduce_96( val, _values, result )
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 454
+  def _reduce_97( val, _values, result )
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 459
+  def _reduce_98( val, _values, result )
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 463
+  def _reduce_99( val, _values, result )
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 468
+  def _reduce_100( val, _values, result )
+    result = {:untyped_multiple_attr_object_block => val[0]}
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 472
+  def _reduce_101( val, _values, result )
+    result = {:type_identifier => val[0], :untyped_multiple_attr_object_block => val[1]}
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 477
+  def _reduce_102( val, _values, result )
+    result = {:multiple_attr_object_block_head => val[0], :keyed_objects => val[1]}
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 483
+  def _reduce_103( val, _values, result )
+    @@log.info("SYM_START_DBLOCK: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 488
+  def _reduce_104( val, _values, result )
+    result = Array[val[0]]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 492
+  def _reduce_105( val, _values, result )
+    result = (val[0] << val[1])
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 498
+  def _reduce_106( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}: keyed_object = #{val[0]}, object_block = #{val[2]} at #{@filename}:#{@lineno}")
+    result = {:object_key => val[0], :object_block => val[1]}
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 504
+  def _reduce_107( val, _values, result )
+    @@log.info("object_key: [#{val[1]}] at #{@filename}:#{@lineno}")
+    result = val[1]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 509
+  def _reduce_108( val, _values, result )
+    result = {:untyped_single_attr_object_block => val[0]}
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 513
+  def _reduce_109( val, _values, result )
+    result = {:type_identifier => val[0], :untyped_single_attr_object_block => val[1]}
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 519
+  def _reduce_110( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]} at #{@filename}:#{@lineno}")
+    result = {:single_attr_object_complex_head => val[0]}
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 524
+  def _reduce_111( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]}, attr_vals = #{val[1]} at #{@filename}:#{@lineno}")
+    result = {:single_attr_object_complex_head => val[0], :attr_vals => val[1]}
+   result
+  end
+.,.,
+
+ # reduce 112 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 530
+  def _reduce_113( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}: untyped_primitive_object_block = #{val[0]} at #{@filename}:#{@lineno}")
+    result = {:untyped_primitive_object_block => val[0]}
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 535
+  def _reduce_114( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}: type_identifier = #{val[0]}, untyped_primitive_object_block = #{val[1]} at #{@filename}:#{@lineno}")
+    result = {:type_identifier => val[0], :untyped_primitive_object_block => val[1]}
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 540
+  def _reduce_115( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[1]}> at #{@filename}:#{@lineno}")
+    result = val[1]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 544
+  def _reduce_116( val, _values, result )
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 548
+  def _reduce_117( val, _values, result )
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 552
+  def _reduce_118( val, _values, result )
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 556
+  def _reduce_119( val, _values, result )
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 560
+  def _reduce_120( val, _values, result )
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 565
+  def _reduce_121( val, _values, result )
+    @@log.info("string_value: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 570
+  def _reduce_122( val, _values, result )
+    @@log.info("integer_value: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 575
+  def _reduce_123( val, _values, result )
+    @@log.info("real_value: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 580
+  def _reduce_124( val, _values, result )
+    @@log.info("boolean_value: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 585
+  def _reduce_125( val, _values, result )
+    @@log.info("character_value: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 590
+  def _reduce_126( val, _values, result )
+    @@log.info("date_value: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 595
+  def _reduce_127( val, _values, result )
+    @@log.info("time_value: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 600
+  def _reduce_128( val, _values, result )
+    @@log.info("date_time_value: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 605
+  def _reduce_129( val, _values, result )
+    @@log.info("duration_value: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 610
+  def _reduce_130( val, _values, result )
+    @@log.info("uri_value: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+   result
+  end
+.,.,
+
+ # reduce 131 omitted
+
+ # reduce 132 omitted
+
+ # reduce 133 omitted
+
+ # reduce 134 omitted
+
+ # reduce 135 omitted
+
+ # reduce 136 omitted
+
+ # reduce 137 omitted
+
+ # reduce 138 omitted
+
+ # reduce 139 omitted
+
+ # reduce 140 omitted
+
+ # reduce 141 omitted
+
+ # reduce 142 omitted
+
+ # reduce 143 omitted
+
+ # reduce 144 omitted
+
+ # reduce 145 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 633
+  def _reduce_146( val, _values, result )
+    @@log.info("V_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 638
+  def _reduce_147( val, _values, result )
+    @@log.info("V_GENERIC_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 644
+  def _reduce_148( val, _values, result )
+    @@log.info("V_STRING: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+   result
+  end
+.,.,
+
+ # reduce 149 omitted
+
+ # reduce 150 omitted
+
+ # reduce 151 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 658
+  def _reduce_152( val, _values, result )
+    begin
+      integer = Integer(val[0])
+    rescue
+      raise
+    end
+    result = integer
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 667
+  def _reduce_153( val, _values, result )
+    begin
+      integer = Integer(val[0])
+    rescue
+      raise
+    end
+    result = integer
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 676
+  def _reduce_154( val, _values, result )
+    begin
+      integer = Integer(val[0])
+    rescue
+      raise
+    end
+    result = - integer
+   result
+  end
+.,.,
+
+ # reduce 155 omitted
+
+ # reduce 156 omitted
+
+ # reduce 157 omitted
+
+ # reduce 158 omitted
+
+ # reduce 159 omitted
+
+ # reduce 160 omitted
+
+ # reduce 161 omitted
+
+ # reduce 162 omitted
+
+ # reduce 163 omitted
+
+ # reduce 164 omitted
+
+ # reduce 165 omitted
+
+ # reduce 166 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 702
+  def _reduce_167( val, _values, result )
+    begin
+      real = Float(val[0])
+    rescue
+      raise
+    end
+    result = real
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 711
+  def _reduce_168( val, _values, result )
+    begin
+      real = Float(val[1])
+    rescue
+      raise
+    end
+    result = real
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 720
+  def _reduce_169( val, _values, result )
+    begin
+      real = Float(val[1])
+    rescue
+      raise
+    end
+    result = - real
+   result
+  end
+.,.,
+
+ # reduce 170 omitted
+
+ # reduce 171 omitted
+
+ # reduce 172 omitted
+
+ # reduce 173 omitted
+
+ # reduce 174 omitted
+
+ # reduce 175 omitted
+
+ # reduce 176 omitted
+
+ # reduce 177 omitted
+
+ # reduce 178 omitted
+
+ # reduce 179 omitted
+
+ # reduce 180 omitted
+
+ # reduce 181 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 740
+  def _reduce_182( val, _values, result )
+    result = true
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 744
+  def _reduce_183( val, _values, result )
+    result = false
+   result
+  end
+.,.,
+
+ # reduce 184 omitted
+
+ # reduce 185 omitted
+
+ # reduce 186 omitted
+
+ # reduce 187 omitted
+
+ # reduce 188 omitted
+
+ # reduce 189 omitted
+
+ # reduce 190 omitted
+
+ # reduce 191 omitted
+
+ # reduce 192 omitted
+
+ # reduce 193 omitted
+
+ # reduce 194 omitted
+
+ # reduce 195 omitted
+
+ # reduce 196 omitted
+
+ # reduce 197 omitted
+
+ # reduce 198 omitted
+
+ # reduce 199 omitted
+
+ # reduce 200 omitted
+
+ # reduce 201 omitted
+
+ # reduce 202 omitted
+
+ # reduce 203 omitted
+
+ # reduce 204 omitted
+
+ # reduce 205 omitted
+
+ # reduce 206 omitted
+
+ # reduce 207 omitted
+
+ # reduce 208 omitted
+
+ # reduce 209 omitted
+
+ # reduce 210 omitted
+
+ # reduce 211 omitted
+
+ # reduce 212 omitted
+
+ # reduce 213 omitted
+
+ # reduce 214 omitted
+
+ # reduce 215 omitted
+
+ # reduce 216 omitted
+
+ # reduce 217 omitted
+
+ # reduce 218 omitted
+
+ # reduce 219 omitted
+
+ # reduce 220 omitted
+
+ # reduce 221 omitted
+
+ # reduce 222 omitted
+
+ # reduce 223 omitted
+
+ # reduce 224 omitted
+
+ # reduce 225 omitted
+
+ # reduce 226 omitted
+
+ # reduce 227 omitted
+
+ # reduce 228 omitted
+
+ # reduce 229 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 808
+  def _reduce_230( val, _values, result )
+    @@log.info("V_ISO8601_DURATION: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+   result
+  end
+.,.,
+
+ # reduce 231 omitted
+
+ # reduce 232 omitted
+
+ # reduce 233 omitted
+
+ # reduce 234 omitted
+
+ # reduce 235 omitted
+
+ # reduce 236 omitted
+
+ # reduce 237 omitted
+
+ # reduce 238 omitted
+
+ # reduce 239 omitted
+
+ # reduce 240 omitted
+
+ # reduce 241 omitted
+
+ # reduce 242 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 828
+  def _reduce_243( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}: V_QUALIFIED_TERM_CODE_REF = #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+   result
+  end
+.,.,
+
+ # reduce 244 omitted
+
+ # reduce 245 omitted
+
+ # reduce 246 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 838
+  def _reduce_247( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}: V_URI = #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+   result
+  end
+.,.,
+
+ # reduce 248 omitted
+
+ # reduce 249 omitted
+
+ # reduce 250 omitted
+
+ # reduce 251 omitted
+
+ # reduce 252 omitted
+
+ # reduce 253 omitted
+
+ # reduce 254 omitted
+
+ # reduce 255 omitted
+
+ # reduce 256 omitted
+
+ # reduce 257 omitted
+
+ # reduce 258 omitted
+
+ # reduce 259 omitted
+
+ # reduce 260 omitted
+
+ # reduce 261 omitted
+
+ # reduce 262 omitted
+
+ # reduce 263 omitted
+
+ # reduce 264 omitted
+
+ # reduce 265 omitted
+
+ # reduce 266 omitted
+
+ # reduce 267 omitted
+
+ # reduce 268 omitted
+
+ # reduce 269 omitted
+
+ # reduce 270 omitted
+
+ # reduce 271 omitted
+
+ # reduce 272 omitted
+
+ # reduce 273 omitted
+
+ # reduce 274 omitted
+
+ # reduce 275 omitted
+
+ # reduce 276 omitted
+
+ # reduce 277 omitted
+
+ # reduce 278 omitted
+
+ # reduce 279 omitted
+
+ # reduce 280 omitted
+
+ # reduce 281 omitted
+
+ # reduce 282 omitted
+
+ # reduce 283 omitted
+
+ # reduce 284 omitted
+
+ # reduce 285 omitted
+
+ # reduce 286 omitted
+
+ # reduce 287 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 907
+  def _reduce_288( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 911
+  def _reduce_289( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 922
+  def _reduce_290( val, _values, result )
+    result = Range.new(1,1)
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 926
+  def _reduce_291( val, _values, result )
+    result = val[3]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 936
+  def _reduce_292( val, _values, result )
+    begin
+      integer = Integer(val[0])
+    rescue
+      raise
+    end
+    result = integer
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 946
+  def _reduce_293( val, _values, result )
+    begin
+      from_integer = Integer(val[0])
+      to_integer = Integer(val[2])
+    rescue
+      raise
+    end
+    result = Range.new(from_integer,to_integer)
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 951
+  def _reduce_294( val, _values, result )
+    result = OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY.new
+   result
+  end
+.,.,
+
+ # reduce 295 omitted
+
+ # reduce 296 omitted
+
+ # reduce 297 omitted
+
+ # reduce 298 omitted
+
+ # reduce 299 omitted
+
+ # reduce 300 omitted
+
+ # reduce 301 omitted
+
+ # reduce 302 omitted
+
+ # reduce 303 omitted
+
+ # reduce 304 omitted
+
+ # reduce 305 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 970
+  def _reduce_306( val, _values, result )
+    result = val[3]
+   result
+  end
+.,.,
+
+ # reduce 307 omitted
+
+ # reduce 308 omitted
+
+ # reduce 309 omitted
+
+ # reduce 310 omitted
+
+ # reduce 311 omitted
+
+ # reduce 312 omitted
+
+ # reduce 313 omitted
+
+ # reduce 314 omitted
+
+ # reduce 315 omitted
+
+ # reduce 316 omitted
+
+ # reduce 317 omitted
+
+ # reduce 318 omitted
+
+ # reduce 319 omitted
+
+ # reduce 320 omitted
+
+ # reduce 321 omitted
+
+ # reduce 322 omitted
+
+ # reduce 323 omitted
+
+ # reduce 324 omitted
+
+ # reduce 325 omitted
+
+ # reduce 326 omitted
+
+ # reduce 327 omitted
+
+ # reduce 328 omitted
+
+ # reduce 329 omitted
+
+ # reduce 330 omitted
+
+ # reduce 331 omitted
+
+ # reduce 332 omitted
+
+ # reduce 333 omitted
+
+ # reduce 334 omitted
+
+ # reduce 335 omitted
+
+ # reduce 336 omitted
+
+ # reduce 337 omitted
+
+ # reduce 338 omitted
+
+ # reduce 339 omitted
+
+ # reduce 340 omitted
+
+ # reduce 341 omitted
+
+ # reduce 342 omitted
+
+ # reduce 343 omitted
+
+ # reduce 344 omitted
+
+ # reduce 345 omitted
+
+ # reduce 346 omitted
+
+ # reduce 347 omitted
+
+ # reduce 348 omitted
+
+ # reduce 349 omitted
+
+ # reduce 350 omitted
+
+ # reduce 351 omitted
+
+ # reduce 352 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 1040
+  def _reduce_353( val, _values, result )
+    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true)
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 1044
+  def _reduce_354( val, _values, result )
+    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false)
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 1048
+  def _reduce_355( val, _values, result )
+    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true,:false_valid => false)
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 1052
+  def _reduce_356( val, _values, result )
+    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false,:false_valid => true)
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 1057
+  def _reduce_357( val, _values, result )
+    result = val[0]
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 1061
+  def _reduce_358( val, _values, result )
+    raise 'Not implemented yet'
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 1065
+  def _reduce_359( val, _values, result )
+    raise 'Not implemented yet'
+   result
+  end
+.,.,
+
+ # reduce 360 omitted
+
+ # reduce 361 omitted
+
+ # reduce 362 omitted
+
+ # reduce 363 omitted
+
+ # reduce 364 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 1078
+  def _reduce_365( val, _values, result )
+    @in_interval = false
+    @@log.info("#{__FILE__}:#{__LINE__}, #{val[0]}|#{val[2]} at #{@filename}")
+   result
+  end
+.,.,
+
+ # reduce 366 omitted
+
+ # reduce 367 omitted
+
+ # reduce 368 omitted
+
+ # reduce 369 omitted
+
+ # reduce 370 omitted
+
+ # reduce 371 omitted
+
+ # reduce 372 omitted
+
+ # reduce 373 omitted
+
+module_eval <<'.,.,', 'lib/parser.y', 1100
+  def _reduce_374( val, _values, result )
+    @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}")
+   result
+  end
+.,.,
+
+module_eval <<'.,.,', 'lib/parser.y', 1110
+  def _reduce_375( val, _values, result )
+    result = val[0]
+   result
+  end
+.,.,
+
+ def _reduce_none( val, _values, result )
+  result
+ end
+
+    end   # class Parser
+
+  end   # module ADL
+
+end   # module OpenEHR
Index: /ruby/tags/0.0.2/adl_parser/lib/parser.y
===================================================================
--- /ruby/tags/0.0.2/adl_parser/lib/parser.y	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/lib/parser.y	(revision 39)
@@ -0,0 +1,1918 @@
+
+class OpenEHR::ADL::Parser
+
+#options omit_action_call
+
+prechigh
+
+  nonassoc UMINUS UPLUS
+  left '*' '/'
+  left '+' '-'
+
+  nonassoc SYM_EQ
+  nonassoc SYM_NE
+  nonassoc SYM_LT
+  nonassoc SYM_START_DBLOCK
+  nonassoc SYM_START_CBLOCK
+  nonassoc SYM_GT
+  nonassoc SYM_END_CBLOCK
+  nonassoc SYM_END_DBLOCK
+  nonassoc SYM_LE
+  nonassoc SYM_GE
+
+preclow
+
+
+rule
+### http://svn.openehr.org/ref_impl_eiffel/TRUNK/components/adl_parser/src/syntax/adl/parser/adl_validator.y
+
+input: archetype EOF
+  { 
+    result = val[0]
+  }
+  | error
+
+archetype: arch_identification arch_specialisation arch_concept arch_language arch_description arch_definition arch_invariant arch_ontology
+  { 
+    assert_at(__FILE__,__LINE__) do
+      val[4].instance_of?(OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION) and val[5].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT) and val[7].instance_of?(OpenEHR::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY) 
+    end
+    
+    archetype_id = val[0][:archetype_id]
+    adl_version = val[0][:arch_head][:arch_meta_data][:adl_version]
+    concept = val[2]
+    language = val[3][:arch_language]
+    archetype = OpenEHR::AM::Archetype::ARCHETYPE.create(
+                                                         :archetype_id => archetype_id,
+                                                         :adl_version => adl_version,
+                                                         :concept => concept,
+                                                         :description => val[4],
+                                                         :definition => val[5],
+                                                         :ontology => val[7]
+                                                         ) do |archetype|
+      archetype.original_language = language
+    end
+    @@log.info("#{__FILE__}:#{__LINE__}: archetype = #{archetype} at #{@filename}:#{@lineno}")
+    result = archetype
+  }
+
+
+arch_identification: arch_head V_ARCHETYPE_ID
+  { 
+    result = {:arch_head => val[0], :archetype_id => val[1] }
+  }
+  | SYM_ARCHETYPE error
+  { 
+    raise
+  }
+
+arch_head: SYM_ARCHETYPE
+  { 
+    result = {:arch_meta_data => nil }
+  }
+  | SYM_ARCHETYPE arch_meta_data
+  { 
+    result = val[1]
+  }
+
+arch_meta_data: Left_parenthesis_code arch_meta_data_items Right_parenthesis_code
+  { 
+    result = {:arch_meta_data => val[1] }
+  }
+
+arch_meta_data_items: arch_meta_data_item
+  { 
+    result = val[0]
+  }
+  | arch_meta_data_items Semicolon_code arch_meta_data_item
+  { 
+    result = val[0].merge(val[2])
+  }
+
+
+arch_meta_data_item: SYM_ADL_VERSION SYM_EQ V_VERSION_STRING
+  { 
+    result = {:adl_version => val[2], :is_controlled => false }
+  }
+  | SYM_IS_CONTROLLED
+  { 
+    result = {:is_controlled => true }
+  }
+
+# Define specialization in which its constraints are narrower than those of the parent.
+# Any data created via the use of the specialized archetype shall be conformant both to it and its parent.
+arch_specialisation: #-- empty is ok
+  | SYM_SPECIALIZE V_ARCHETYPE_ID
+  | SYM_SPECIALIZE error
+
+arch_concept: SYM_CONCEPT V_LOCAL_TERM_CODE_REF
+  { 
+    result = {:arch_concept => val[1] }
+  }
+  | SYM_CONCEPT error
+
+#arch_language: #-- empty is ok for ADL 1.4 tools
+#    | SYM_LANGUAGE V_DADL_TEXT
+#  | SYM_LANGUAGE error
+
+arch_language: #-- empty is ok for ADL 1.4 tools
+  {
+    result = {:arch_language => nil}
+  }
+    | SYM_LANGUAGE dadl_section
+  {
+    result = {:arch_language => val[1]}
+  }
+  | SYM_LANGUAGE error
+
+#arch_description: #-- no meta-data ok
+#    | SYM_DESCRIPTION V_DADL_TEXT
+#  | SYM_DESCRIPTION error
+
+arch_description: #-- no meta-data ok
+    | SYM_DESCRIPTION dadl_section
+  { 
+    result = OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION.new(:details => val[1])
+  }
+  | SYM_DESCRIPTION error
+  
+#arch_definition: SYM_DEFINITION V_CADL_TEXT
+#  | SYM_DEFINITION error
+arch_definition: SYM_DEFINITION cadl_section
+  { 
+    result = val[1]
+  }
+  | SYM_DEFINITION error
+
+
+### cADL section
+cadl_section: c_complex_object
+  { 
+    assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT)}
+    @@log.info("#{__FILE__}:#{__LINE__}: c_complex_object = #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+  }
+  | assertions
+  { 
+    result = val[0]
+  }
+#  | error
+
+#c_complex_object: c_complex_object_head SYM_MATCHES SYM_START_CBLOCK c_complex_object_body SYM_END_CBLOCK
+c_complex_object: c_complex_object_head SYM_MATCHES START_REGEXP_BLOCK REGEXP_BODY END_REGEXP_BLOCK # added by akimichi
+  { 
+    result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
+      c_complex_object.node_id = val[0][:c_complex_object_id][:local_term_code_ref]
+      c_complex_object.rm_type_name = val[0][:c_complex_object_id][:type_identifier]
+      c_complex_object.occurrences = val[0][:c_occurrences]
+    end
+  }
+    | c_complex_object_head SYM_MATCHES SYM_START_CBLOCK c_complex_object_body SYM_END_CBLOCK
+  { 
+    result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
+      c_complex_object.node_id = val[0][:c_complex_object_id][:local_term_code_ref]
+      c_complex_object.rm_type_name = val[0][:c_complex_object_id][:type_identifier]
+      c_complex_object.occurrences = val[0][:c_occurrences]
+    end
+  }
+#    | c_complex_object_head error SYM_END_CBLOCK
+#    | c_complex_object_head SYM_MATCHES SYM_START_CBLOCK c_complex_object_body c_invariants SYM_END_CBLOCK
+
+c_complex_object_head: c_complex_object_id c_occurrences
+  {
+    result = {:c_complex_object_id => val[0], :c_occurrences => val[1]}
+  }
+
+c_complex_object_id: type_identifier
+  {
+    result = {:type_identifier => val[0]}
+  }
+  | type_identifier V_LOCAL_TERM_CODE_REF
+  {
+    result = {:type_identifier => val[0], :local_term_code_ref => val[1]}
+  }
+
+c_complex_object_body: c_any #-- used to indicate that any value of a type is ok
+  | c_attributes
+  { 
+    result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new(:attributes => val[0])
+  }
+
+
+#------------------------- node types -----------------------
+
+c_object: v_c_domain_type
+  { 
+    result = val[0]
+  }
+  | c_complex_object
+  { 
+    result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new
+  }
+  | archetype_internal_ref
+  { 
+    result = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_INTERNAL_REF.new
+  }
+  | archetype_slot
+  { 
+    result = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_SLOT.new
+  }
+  | constraint_ref
+  { 
+    result = OpenEHR::AM::Archetype::Constraint_Model::CONSTRAINT_REF.new
+  }
+  | c_code_phrase
+  { 
+    result = val[0]
+  }
+  | c_ordinal
+  { 
+    result = val[0]
+  }
+  | c_primitive_object
+  { 
+    result = val[0]
+  }
+#  | v_c_domain_type
+#  | V_C_DOMAIN_TYPE
+  #   this is an attempt to match a dADL section inside cADL. It will
+  #   probably never work 100% properly since there can be '>' inside "||"
+  #   ranges, and also strings containing any character, e.g. units string
+  #   contining "{}" chars. The real solution is to use the dADL parser on
+  #   the buffer from the current point on and be able to fast-forward the
+  #   cursor to the last character matched by the dADL scanner
+  | ERR_C_DOMAIN_TYPE
+  | error
+
+v_c_domain_type: START_V_C_DOMAIN_TYPE_BLOCK dadl_section END_V_C_DOMAIN_TYPE_BLOCK
+  { 
+    result = val[1]
+  }
+
+# 'archetype_internal_ref' is a node that refers to a previously defined object node in the same archetype.
+archetype_internal_ref: SYM_USE_NODE type_identifier c_occurrences absolute_path
+  | SYM_USE_NODE type_identifier error
+
+# 'archetype_slot' is a node whose statements define a constraint that determines which other archetypes may appear at that point in the current archetype.
+archetype_slot: c_archetype_slot_head SYM_MATCHES SYM_START_CBLOCK c_includes c_excludes SYM_END_CBLOCK
+
+c_archetype_slot_head: c_archetype_slot_id c_occurrences
+
+c_archetype_slot_id: SYM_ALLOW_ARCHETYPE type_identifier
+  | SYM_ALLOW_ARCHETYPE type_identifier V_LOCAL_TERM_CODE_REF
+  | SYM_ALLOW_ARCHETYPE error
+
+# 'c_primitive_object' is an node representing a constraint on a primitive object type.
+c_primitive_object: c_primitive
+  {
+    assert_at(__FILE__,__LINE__){val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_PRIMITIVE)}
+    result = OpenEHR::AM::Archetype::Constraint_Model::C_PRIMITIVE_OBJECT.new(:item => val[0])
+  }
+
+c_primitive: c_integer
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}: c_integer = #{val[0]} at #{@filename}:#{@lineno}")
+    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_INTEGER.new
+  }
+  | c_real
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}: c_real = #{val[0]} at #{@filename}:#{@lineno}")
+    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_REAL.new
+  }
+  | c_date
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}: c_date = #{val[0]} at #{@filename}:#{@lineno}")
+    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE.new
+  }
+  | c_time
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}: c_time = #{val[0]} at #{@filename}:#{@lineno}")
+    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_TIME.new
+  }
+  | c_date_time
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}: c_date_time = #{val[0]} at #{@filename}:#{@lineno}")
+    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE_TIME.new
+  }
+  | c_duration
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}: c_duration = #{val[0]} at #{@filename}:#{@lineno}")
+    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DURATION.new
+  }
+  | c_string
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}: c_string = #{val[0]} at #{@filename}:#{@lineno}")
+    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_STRING.new
+  }
+  | c_boolean
+  {
+    assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN)}
+    @@log.info("#{__FILE__}:#{__LINE__}: c_boolean = #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+  }
+
+c_any: Star_code
+#c_any: '*'
+
+#---------------- BODY - relationships ----------------
+
+c_attributes: c_attribute
+  { 
+    result = [val[0]]
+  }
+  | c_attributes c_attribute
+  { 
+    result = (val[0] << val[1])
+  }
+
+# 'c_attribute' is a node representing a constraint on an attribute in an object model.
+c_attribute: c_attr_head SYM_MATCHES SYM_START_CBLOCK c_attr_values SYM_END_CBLOCK
+  { 
+    assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
+    c_attribute = val[0]
+    c_attribute.children = val[3]
+    result = c_attribute
+  }
+  | c_attr_head SYM_MATCHES START_REGEXP_BLOCK REGEXP_BODY END_REGEXP_BLOCK # added by akimichi
+  { 
+    assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
+    result = val[0]
+  }
+  | c_attr_head SYM_MATCHES SYM_START_CBLOCK error SYM_END_CBLOCK
+  { 
+    assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
+    result = val[0]
+  }
+
+
+c_attr_head: V_ATTRIBUTE_IDENTIFIER c_existence
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}, c_existence = #{val[1]} at #{@filename}")
+    result = OpenEHR::AM::Archetype::Constraint_Model::C_SINGLE_ATTRIBUTE.new(
+                                                                              :rm_attribute_name => val[0],
+                                                                              :existence => val[1]
+                                                                              )
+
+  }
+  | V_ATTRIBUTE_IDENTIFIER c_existence c_cardinality
+  {
+    assert_at(__FILE__,__LINE__){ val[2].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY) }
+    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER: #{val[0]}, c_existence = #{val[1]}, c_cardinality = #{val[2]} at #{@filename}") 
+    result = OpenEHR::AM::Archetype::Constraint_Model::C_MULTIPLE_ATTRIBUTE.new(
+                                                                                :rm_attribute_name => val[0],
+                                                                                :existence => val[1],
+                                                                                :cardinality => val[2]
+                                                                                )
+  }
+
+c_attr_values: c_object
+  { 
+    result = Array[val[0]]
+  }
+  | c_attr_values c_object
+  { 
+    result = (val[0] << val[1])
+  }
+  | c_any #	-- to allow a property to have any value
+  { 
+    result = Array[val[0]]
+  }
+
+### c_includes: #-- Empty
+###     | SYM_INCLUDE assertions
+c_includes: #-- Empty
+    | SYM_INCLUDE invariants
+
+### c_excludes: #-- Empty
+###     | SYM_EXCLUDE assertions
+c_excludes: #-- Empty
+    | SYM_EXCLUDE invariants
+
+invariants: invariant
+  | invariants invariant
+
+invariant: any_identifier ':' boolean_expression
+  | boolean_expression
+  | any_identifier ':' error
+
+arch_invariant: #-- no invariant ok
+    | SYM_INVARIANT V_ASSERTION_TEXT
+    | SYM_INVARIANT error
+
+# define all linguistic entries in this part as dADL.
+#arch_ontology: SYM_ONTOLOGY V_DADL_TEXT
+#  | SYM_ONTOLOGY error
+
+arch_ontology: SYM_ONTOLOGY dadl_section
+  { 
+    dadl_section = val[1]
+    result = OpenEHR::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new
+  }
+  | SYM_ONTOLOGY error
+
+
+### dADL section
+dadl_section: dadl_input
+
+dadl_input: attr_vals
+  | complex_object_block
+#  | error
+
+attr_vals: attr_val
+  {
+    result = Array[val[0]]
+  }
+  | attr_vals attr_val
+  {
+    result = (val[0] << val[1])
+  }
+  | attr_vals Semicolon_code attr_val
+  {
+    result = (val[0] << val[2])
+  }
+
+attr_val: attr_id SYM_EQ object_block
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}: attr_id = #{val[0]}, object_block = #{val[2]} at #{@filename}:#{@lineno}")
+    result = {:attr_id => val[0], :object_block => val[2]}
+  }
+
+attr_id: V_ATTRIBUTE_IDENTIFIER
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+  }
+  | V_ATTRIBUTE_IDENTIFIER error
+
+object_block: complex_object_block
+  { 
+    result = val[0]
+  }
+  | primitive_object_block
+  { 
+    result = val[0]
+  }
+
+complex_object_block: single_attr_object_block
+  { 
+    result = val[0]
+  }
+  | multiple_attr_object_block
+  { 
+    result = val[0]
+  }
+
+multiple_attr_object_block: untyped_multiple_attr_object_block
+  { 
+    result = {:untyped_multiple_attr_object_block => val[0]}
+  }
+  | type_identifier untyped_multiple_attr_object_block
+  { 
+    result = {:type_identifier => val[0], :untyped_multiple_attr_object_block => val[1]}
+  }
+
+untyped_multiple_attr_object_block: multiple_attr_object_block_head keyed_objects SYM_END_DBLOCK
+  { 
+    result = {:multiple_attr_object_block_head => val[0], :keyed_objects => val[1]}
+  }
+
+multiple_attr_object_block_head: SYM_START_DBLOCK
+  { 
+    @@log.info("SYM_START_DBLOCK: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+  }
+
+keyed_objects: keyed_object
+  { 
+    result = Array[val[0]]
+  }
+  | keyed_objects keyed_object
+  { 
+    result = (val[0] << val[1])
+  }
+
+keyed_object: object_key SYM_EQ object_block
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}: keyed_object = #{val[0]}, object_block = #{val[2]} at #{@filename}:#{@lineno}")
+    result = {:object_key => val[0], :object_block => val[1]}
+  }
+
+object_key: Left_bracket_code simple_value Right_bracket_code
+  {
+    @@log.info("object_key: [#{val[1]}] at #{@filename}:#{@lineno}")
+    result = val[1]
+  }
+
+single_attr_object_block: untyped_single_attr_object_block
+  {
+    result = {:untyped_single_attr_object_block => val[0]}
+  }
+  | type_identifier untyped_single_attr_object_block
+  {
+    result = {:type_identifier => val[0], :untyped_single_attr_object_block => val[1]}
+  }
+
+untyped_single_attr_object_block: single_attr_object_complex_head SYM_END_DBLOCK # <>
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]} at #{@filename}:#{@lineno}")
+    result = {:single_attr_object_complex_head => val[0]}
+  }
+  | single_attr_object_complex_head attr_vals SYM_END_DBLOCK
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]}, attr_vals = #{val[1]} at #{@filename}:#{@lineno}")
+    result = {:single_attr_object_complex_head => val[0], :attr_vals => val[1]}
+  }
+single_attr_object_complex_head: SYM_START_DBLOCK
+primitive_object_block: untyped_primitive_object_block
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}: untyped_primitive_object_block = #{val[0]} at #{@filename}:#{@lineno}")
+    result = {:untyped_primitive_object_block => val[0]}
+  }
+  | type_identifier untyped_primitive_object_block
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}: type_identifier = #{val[0]}, untyped_primitive_object_block = #{val[1]} at #{@filename}:#{@lineno}")
+    result = {:type_identifier => val[0], :untyped_primitive_object_block => val[1]}
+  }
+untyped_primitive_object_block: SYM_START_DBLOCK primitive_object_value SYM_END_DBLOCK
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[1]}> at #{@filename}:#{@lineno}")
+    result = val[1]
+  }
+primitive_object_value: simple_value
+  {
+    result = val[0]
+  }
+  | simple_list_value
+  {
+    result = val[0]
+  }
+  | simple_interval_value
+  {
+    result = val[0]
+  }
+  | term_code
+  {
+    result = val[0]
+  }
+  | term_code_list_value
+  {
+    result = val[0]
+  }
+simple_value: string_value
+  {
+    @@log.info("string_value: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+  }
+  | integer_value
+  {
+    @@log.info("integer_value: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+  }
+  | real_value
+  {
+    @@log.info("real_value: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+  }
+  | boolean_value
+  {
+    @@log.info("boolean_value: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+  }
+  | character_value
+  {
+    @@log.info("character_value: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+  }
+  | date_value
+  {
+    @@log.info("date_value: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+  }
+  | time_value
+  {
+    @@log.info("time_value: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+  }
+  | date_time_value
+  {
+    @@log.info("date_time_value: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+  }
+  | duration_value
+  {
+    @@log.info("duration_value: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+  }
+  | uri_value
+  {
+    @@log.info("uri_value: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+  }
+
+simple_list_value: string_list_value
+  | integer_list_value
+  | real_list_value
+  | boolean_list_value
+  | character_list_value
+  | date_list_value
+  | time_list_value
+  | date_time_list_value
+  | duration_list_value
+
+simple_interval_value: integer_interval_value
+  | real_interval_value
+  | date_interval_value
+  | time_interval_value
+  | date_time_interval_value
+  | duration_interval_value
+
+type_identifier: V_TYPE_IDENTIFIER
+  {
+    @@log.info("V_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+  }
+  | V_GENERIC_TYPE_IDENTIFIER
+  {
+    @@log.info("V_GENERIC_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+  }
+
+string_value: V_STRING
+  {
+    @@log.info("V_STRING: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+  }
+
+string_list_value: V_STRING Comma_code V_STRING
+  | string_list_value Comma_code V_STRING
+  | V_STRING Comma_code SYM_LIST_CONTINUE
+
+integer_value: V_INTEGER
+  { 
+    begin
+      integer = Integer(val[0])
+    rescue
+      raise
+    end
+    result = integer
+  }
+  | Plus_code V_INTEGER
+  {
+    begin
+      integer = Integer(val[0])
+    rescue
+      raise
+    end
+    result = integer
+  }
+  | Minus_code V_INTEGER
+  {
+    begin
+      integer = Integer(val[0])
+    rescue
+      raise
+    end
+    result = - integer
+  }
+###   | '+' V_INTEGER
+###   | '-' V_INTEGER
+
+integer_list_value: integer_value Comma_code integer_value
+  | integer_list_value Comma_code integer_value
+  | integer_value Comma_code SYM_LIST_CONTINUE
+
+integer_interval_value: SYM_INTERVAL_DELIM integer_value SYM_ELLIPSIS integer_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT integer_value SYM_ELLIPSIS integer_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM integer_value SYM_ELLIPSIS SYM_LT integer_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT integer_value SYM_ELLIPSIS SYM_LT integer_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LT integer_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LE integer_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT integer_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GE integer_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM integer_value SYM_INTERVAL_DELIM
+
+real_value: V_REAL
+  {
+    begin
+      real = Float(val[0])
+    rescue
+      raise
+    end
+    result = real
+  }
+  | Plus_code V_REAL
+  {
+    begin
+      real = Float(val[1])
+    rescue
+      raise
+    end
+    result = real
+  }
+  | Minus_code V_REAL
+  {
+    begin
+      real = Float(val[1])
+    rescue
+      raise
+    end
+    result = - real
+  }
+
+real_list_value: real_value Comma_code real_value
+  | real_list_value Comma_code real_value
+  | real_value Comma_code SYM_LIST_CONTINUE
+
+real_interval_value: SYM_INTERVAL_DELIM real_value SYM_ELLIPSIS real_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT real_value SYM_ELLIPSIS real_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM real_value SYM_ELLIPSIS SYM_LT real_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT real_value SYM_ELLIPSIS SYM_LT real_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LT real_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LE real_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT real_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GE real_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM real_value SYM_INTERVAL_DELIM
+
+
+boolean_value: SYM_TRUE
+  { 
+    result = true
+  }
+  | SYM_FALSE
+  { 
+    result = false
+  }
+
+boolean_list_value: boolean_value Comma_code boolean_value
+  | boolean_list_value Comma_code boolean_value
+  | boolean_value Comma_code SYM_LIST_CONTINUE
+
+character_value: V_CHARACTER
+
+character_list_value: character_value Comma_code character_value
+  | character_list_value Comma_code character_value
+  | character_value Comma_code SYM_LIST_CONTINUE
+
+date_value: V_ISO8601_EXTENDED_DATE
+
+date_list_value: date_value Comma_code date_value
+  | date_list_value Comma_code date_value
+  | date_value Comma_code SYM_LIST_CONTINUE
+
+date_interval_value: SYM_INTERVAL_DELIM date_value SYM_ELLIPSIS date_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT date_value SYM_ELLIPSIS date_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM date_value SYM_ELLIPSIS SYM_LT date_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT date_value SYM_ELLIPSIS SYM_LT date_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LT date_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LE date_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT date_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GE date_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM date_value SYM_INTERVAL_DELIM
+
+time_value: V_ISO8601_EXTENDED_TIME
+
+time_list_value: time_value Comma_code time_value
+  | time_list_value Comma_code time_value
+  | time_value Comma_code SYM_LIST_CONTINUE
+
+time_interval_value: SYM_INTERVAL_DELIM time_value SYM_ELLIPSIS time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT time_value SYM_ELLIPSIS time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM time_value SYM_ELLIPSIS SYM_LT time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT time_value SYM_ELLIPSIS SYM_LT time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LT time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LE time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GE time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM time_value SYM_INTERVAL_DELIM
+
+date_time_value: V_ISO8601_EXTENDED_DATE_TIME
+
+date_time_list_value: date_time_value Comma_code date_time_value
+  | date_time_list_value Comma_code date_time_value
+  | date_time_value Comma_code SYM_LIST_CONTINUE
+
+date_time_interval_value: SYM_INTERVAL_DELIM date_time_value SYM_ELLIPSIS date_time_value  SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT date_time_value SYM_ELLIPSIS date_time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM date_time_value SYM_ELLIPSIS SYM_LT date_time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT date_time_value SYM_ELLIPSIS SYM_LT date_time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LT date_time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LE date_time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT date_time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GE date_time_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM date_time_value SYM_INTERVAL_DELIM
+
+duration_value: V_ISO8601_DURATION
+  {
+    @@log.info("V_ISO8601_DURATION: #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+  }
+
+duration_list_value: duration_value Comma_code duration_value
+  | duration_list_value Comma_code duration_value
+  | duration_value Comma_code SYM_LIST_CONTINUE
+
+duration_interval_value: SYM_INTERVAL_DELIM duration_value SYM_ELLIPSIS duration_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT duration_value SYM_ELLIPSIS duration_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM duration_value SYM_ELLIPSIS SYM_LT duration_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT duration_value SYM_ELLIPSIS SYM_LT duration_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LT duration_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_LE duration_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GT duration_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM SYM_GE duration_value SYM_INTERVAL_DELIM
+  | SYM_INTERVAL_DELIM duration_value SYM_INTERVAL_DELIM
+
+term_code: V_QUALIFIED_TERM_CODE_REF
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}: V_QUALIFIED_TERM_CODE_REF = #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+  }
+
+term_code_list_value: term_code Comma_code term_code
+  | term_code_list_value Comma_code term_code
+  | term_code Comma_code SYM_LIST_CONTINUE
+
+uri_value: V_URI
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}: V_URI = #{val[0]} at #{@filename}:#{@lineno}")
+    result = val[0]
+  }
+
+
+#---------------------- ASSERTIONS ------------------------
+
+assertions: assertion
+  | assertions assertion
+
+assertion: any_identifier ':' boolean_expression
+  | boolean_expression
+  | any_identifier ':' error
+
+#---------------------- expressions ---------------------
+
+boolean_expression: boolean_leaf
+  | boolean_node
+
+boolean_node: SYM_EXISTS absolute_path
+#  | absolute_path
+  | SYM_EXISTS error
+  | relative_path SYM_MATCHES SYM_START_CBLOCK c_primitive SYM_END_CBLOCK
+  | relative_path SYM_MATCHES START_REGEXP_BLOCK REGEXP_BODY END_REGEXP_BLOCK # added by akimichi
+  | SYM_NOT boolean_leaf
+  | arithmetic_expression '=' arithmetic_expression
+  | arithmetic_expression SYM_NE arithmetic_expression
+  | arithmetic_expression SYM_LT arithmetic_expression
+  | arithmetic_expression SYM_GT arithmetic_expression
+  | arithmetic_expression SYM_LE arithmetic_expression
+  | arithmetic_expression SYM_GE arithmetic_expression
+  | boolean_expression SYM_AND boolean_expression
+  | boolean_expression SYM_OR boolean_expression
+  | boolean_expression SYM_XOR boolean_expression
+  | boolean_expression SYM_IMPLIES boolean_expression
+
+boolean_leaf: Left_parenthesis_code boolean_expression Right_parenthesis_code
+  | SYM_TRUE
+  | SYM_FALSE
+
+arithmetic_expression: arithmetic_leaf
+  | arithmetic_node
+
+arithmetic_node: arithmetic_expression '+' arithmetic_leaf
+  | arithmetic_expression '-' arithmetic_leaf
+  | arithmetic_expression Star_code arithmetic_leaf
+  | arithmetic_expression Slash_code arithmetic_leaf
+  | arithmetic_expression '^' arithmetic_leaf
+
+arithmetic_leaf:  Left_parenthesis_code arithmetic_expression Right_parenthesis_code
+  | integer_value
+  | real_value
+  | absolute_path
+
+
+#--------------- THE FOLLOWING SOURCE TAKEN FROM OG_PATH_VALIDATOR.Y -------------
+#--------------- except to remove movable_path ----------------------------------------------------
+
+
+absolute_path: Slash_code
+  | Slash_code relative_path
+#  | absolute_path Slash_code relative_path
+
+
+
+relative_path: path_segment
+  | relative_path Slash_code path_segment
+
+path_segment: V_ATTRIBUTE_IDENTIFIER V_LOCAL_TERM_CODE_REF
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}") 
+  }
+  | V_ATTRIBUTE_IDENTIFIER
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}") 
+  }
+
+
+#-------------------------------- END SOURCE TAKEN FROM OG_PATH_VALIDATOR.Y ----------------------
+
+
+#---------------- existence, occurrences, cardinality ----------------
+
+c_existence: #-- default to 1..1
+    { 
+    result = Range.new(1,1)
+  }
+  | SYM_EXISTENCE SYM_MATCHES SYM_START_CBLOCK existence_spec SYM_END_CBLOCK
+  { 
+    result = val[3]
+  }
+
+existence_spec:  V_INTEGER #-- can only be 0 or 1
+  { 
+    begin
+      integer = Integer(val[0])
+    rescue
+      raise
+    end
+    result = integer
+  }
+  | V_INTEGER SYM_ELLIPSIS V_INTEGER #-- can only be 0..0, 0..1, 1..1
+  { 
+    begin
+      from_integer = Integer(val[0])
+      to_integer = Integer(val[2])
+    rescue
+      raise
+    end
+    result = Range.new(from_integer,to_integer)
+  }
+
+c_cardinality: SYM_CARDINALITY SYM_MATCHES SYM_START_CBLOCK cardinality_spec SYM_END_CBLOCK
+  { 
+    result = OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY.new
+  }
+
+cardinality_spec: occurrence_spec
+  | occurrence_spec Semicolon_code SYM_ORDERED
+  | occurrence_spec Semicolon_code SYM_UNORDERED
+  | occurrence_spec Semicolon_code SYM_UNIQUE
+  | occurrence_spec Semicolon_code SYM_ORDERED Semicolon_code SYM_UNIQUE
+  | occurrence_spec Semicolon_code SYM_UNORDERED Semicolon_code SYM_UNIQUE
+  | occurrence_spec Semicolon_code SYM_UNIQUE Semicolon_code SYM_ORDERED
+  | occurrence_spec Semicolon_code SYM_UNIQUE Semicolon_code SYM_UNORDERED
+
+cardinality_limit_value: integer_value
+  | Star_code
+#  | '*'
+
+c_occurrences:  #-- default to 1..1
+  | SYM_OCCURRENCES SYM_MATCHES SYM_START_CBLOCK occurrence_spec SYM_END_CBLOCK
+  { 
+    result = val[3]
+  }
+  | SYM_OCCURRENCES error
+
+occurrence_spec: cardinality_limit_value #-- single integer or '*'
+  | V_INTEGER SYM_ELLIPSIS cardinality_limit_value
+
+#---------------------- leaf constraint types -----------------------
+
+c_integer_spec: integer_value
+  | integer_list_value
+  | integer_interval_value
+
+c_integer: c_integer_spec
+  | c_integer_spec Semicolon_code integer_value
+  | c_integer_spec Semicolon_code error
+
+c_real_spec: real_value
+  | real_list_value
+  | real_interval_value
+
+c_real: c_real_spec
+  | c_real_spec Semicolon_code real_value
+  | c_real_spec Semicolon_code error
+
+c_date_constraint: V_ISO8601_DATE_CONSTRAINT_PATTERN
+  | date_value
+  | date_interval_value
+
+c_date: c_date_constraint
+  | c_date_constraint Semicolon_code date_value
+  | c_date_constraint Semicolon_code error
+
+c_time_constraint: V_ISO8601_TIME_CONSTRAINT_PATTERN
+  | time_value
+  | time_interval_value
+
+c_time: c_time_constraint
+  | c_time_constraint Semicolon_code time_value
+  | c_time_constraint Semicolon_code error
+
+c_date_time_constraint: V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN
+  | date_time_value
+  | date_time_interval_value
+
+c_date_time: c_date_time_constraint
+  | c_date_time_constraint Semicolon_code date_time_value
+  | c_date_time_constraint Semicolon_code error
+
+c_duration_constraint: duration_pattern
+  | duration_pattern Slash_code duration_interval_value
+  | duration_value
+  | duration_interval_value
+
+c_duration: c_duration_constraint
+  | c_duration_constraint Semicolon_code duration_value
+  | c_duration_constraint Semicolon_code error
+
+c_string_spec:  V_STRING #-- single value, generates closed list
+  | string_list_value #-- closed list
+  | string_list_value Comma_code SYM_LIST_CONTINUE #-- open list
+#  | string_list_value ',' SYM_LIST_CONTINUE #-- open list
+#  | V_REGEXP #-- regular expression with "//" or "^^" delimiters
+
+c_string: c_string_spec
+  | c_string_spec Semicolon_code string_value
+  | c_string_spec Semicolon_code error
+
+c_boolean_spec: SYM_TRUE
+  { 
+    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true)
+  }
+  | SYM_FALSE
+  { 
+    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false)
+  }
+  | SYM_TRUE Comma_code SYM_FALSE
+  { 
+    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true,:false_valid => false)
+  }
+  | SYM_FALSE Comma_code SYM_TRUE
+  { 
+    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false,:false_valid => true)
+  }
+
+c_boolean: c_boolean_spec
+  { 
+    result = val[0]
+  }
+  | c_boolean_spec Semicolon_code boolean_value
+  {
+    raise 'Not implemented yet'
+  }
+  | c_boolean_spec Semicolon_code error
+  {
+    raise 'Not implemented yet'
+  }
+
+c_ordinal: c_ordinal_spec
+  | c_ordinal_spec Semicolon_code integer_value
+  | c_ordinal_spec Semicolon_code error
+
+c_ordinal_spec: ordinal
+  | c_ordinal_spec Comma_code ordinal
+
+ordinal: integer_value SYM_INTERVAL_DELIM V_QUALIFIED_TERM_CODE_REF
+  {
+    @in_interval = false
+    @@log.info("#{__FILE__}:#{__LINE__}, #{val[0]}|#{val[2]} at #{@filename}") 
+  }
+
+#c_code_phrase: V_TERM_CODE_CONSTRAINT #-- e.g. "[local::at0040, at0041; at0040]"
+c_code_phrase: term_code_constraint_section #-- e.g. "[local::at0040, at0041; at0040]"
+  | V_QUALIFIED_TERM_CODE_REF
+
+#term_code_constraint_section: START_TERM_CODE_CONSTRAINT term_code_body Right_bracket_code
+term_code_constraint_section: START_TERM_CODE_CONSTRAINT term_code_body END_TERM_CODE_CONSTRAINT
+term_code_body: # empty
+  | TERM_CODE
+  | term_code_body TERM_CODE
+### term_code_constraint_section: START_TERM_CODE_CONSTRAINT term_code_body END_TERM_CODE_CONSTRAINT
+### term_code_body: TERM_CODE
+###   | term_code_body TERM_CODE
+
+# A Constraint_Ref is a proxy for a set of constraints on an object.
+constraint_ref: V_LOCAL_TERM_CODE_REF #-- e.g. "ac0003"
+
+any_identifier: type_identifier
+  | V_ATTRIBUTE_IDENTIFIER
+  {
+    @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}")
+  }
+
+
+#----------------- TAKEN FROM DADL_VALIDATOR.Y -------------------
+#-----------------        DO NOT MODIFY        -------------------
+#---------------------- BASIC DATA VALUES -----------------------
+
+duration_pattern: V_ISO8601_DURATION_CONSTRAINT_PATTERN
+  { 
+    result = val[0]
+  }
+
+
+
+---- header
+
+$:.unshift File.join(File.dirname(__FILE__))
+require 'logger'
+require 'lib/util.rb'
+require 'lib/scanner.rb'
+require 'rubygems'
+require 'am.rb'
+$DEBUG = true
+
+
+
+---- inner
+
+def assert_at(file,line, message = "")
+  unless yield
+    raise "Assertion failed !: #{file}, #{line}: #{message}"
+  end
+end
+
+@@log = Logger.new('log/parser.log','daily')
+@@dadl_scanner = OpenEHR::ADL::Scanner::DADL::RootScanner.new
+@@cadl_scanner = OpenEHR::ADL::Scanner::CADL::RootScanner.new
+
+###----------/* keywords */ --------------------------------------------- 
+@@adl_reserved = {
+    'archetype' => :SYM_ARCHETYPE,
+    'adl_version' => :SYM_ADL_VERSION,
+    'controlled' => :SYM_IS_CONTROLLED,
+    'specialize' => :SYM_SPECIALIZE,
+    'concept' => :SYM_CONCEPT,
+    'language' => :SYM_LANGUAGE,
+    'description' => :SYM_DESCRIPTION,
+    'definition' => :SYM_DEFINITION,
+    'invariant' => :SYM_INVARIANT,
+    'ontology' => :SYM_ONTOLOGY,
+    'matches' => :SYM_MATCHES,
+    'is_in' => :SYM_MATCHES,
+    'occurrences' => :SYM_OCCURRENCES,
+    'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE 
+    'false' => :SYM_FALSE, # [Ff][Aa][Ll][Ss][Ee] -- -> SYM_FALSE 
+    'infinity' => :SYM_INFINITY # [Ii][Nn][Ff][Ii][Nn][Ii][Tt][Yy] -- -> SYM_INFINITY 
+}
+
+@@dadl_reserved = {
+  'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE 
+  'false' => :SYM_FALSE, # [Ff][Aa][Ll][Ss][Ee] -- -> SYM_FALSE 
+  'infinity' => :SYM_INFINITY # [Ii][Nn][Ff][Ii][Nn][Ii][Tt][Yy] -- -> SYM_INFINITY 
+}
+
+@@cadl_reserved = {
+  'then' => :SYM_THEN, # [Tt][Hh][Ee][Nn]
+  'else' => :SYM_ELSE, # [Ee][Ll][Ss][Ee]
+  'and' => :SYM_AND, # [Aa][Nn][Dd]
+  'or' => :SYM_OR, # [Oo][Rr]
+  'xor' => :SYM_XOR, # [Xx][Oo][Rr]
+  'not' => :SYM_NOT, # [Nn][Oo][Tt]
+  'implies' => :SYM_IMPLIES, # [Ii][Mm][Pp][Ll][Ii][Ee][Ss]
+  'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE 
+  'false' => :SYM_FALSE, # [Ff][Aa][Ll][Ss][Ee] -- -> SYM_FALSE 
+  'forall' => :SYM_FORALL, # [Ff][Oo][Rr][_][Aa][Ll][Ll]
+  'exists' => :SYM_EXISTS, # [Ee][Xx][Ii][Ss][Tt][Ss]
+  'existence' => :SYM_EXISTENCE, # [Ee][Xx][Iu][Ss][Tt][Ee][Nn][Cc][Ee]
+  'occurrences' => :SYM_OCCURRENCES, # [Oo][Cc][Cc][Uu][Rr][Rr][Ee][Nn][Cc][Ee][Ss]
+  'cardinality' => :SYM_CARDINALITY, # [Cc][Aa][Rr][Dd][Ii][Nn][Aa][Ll][Ii][Tt][Yy]
+  'ordered' => :SYM_ORDERED, # [Oo][Rr][Dd][Ee][Rr][Ee][Dd]
+  'unordered' => :SYM_UNORDERED, # [Uu][Nn][Oo][Rr][Dd][Ee][Rr][Ee][Dd]
+  'unique' => :SYM_UNIQUE, # [Uu][Nn][Ii][Qq][Uu][Ee]
+  'matches' => :SYM_MATCHES, # [Mm][Aa][Tt][Cc][Hh][Ee][Ss]
+  'is_in' => :SYM_MATCHES, # [Ii][Ss][_][Ii][Nn]
+  'invariant' => :SYM_INVARIANT, # [Ii][Nn][Vv][Aa][Rr][Ii][Aa][Nn][Tt]
+  'infinity' => :SYM_INFINITY, # [Ii][Nn][Ff][Ii][Nn][Ii][Tt][Yy] -- -> SYM_INFINITY 
+  'use_node' => :SYM_USE_NODE, # [Uu][Ss][Ee][_][Nn][Oo][Dd][Ee]
+  'use_archetype' => :SYM_ALLOW_ARCHETYPE, # [Uu][Ss][Ee][_][Aa][Rr][Cc][Hh][Ee][Tt][Yy][Pp][Ee]
+  'allow_archetype' => :SYM_ALLOW_ARCHETYPE, # [Aa][Ll][Ll][Oo][Ww][_][Aa][Rr][Cc][Hh][Ee][Tt][Yy][Pp][Ee]
+  'include' => :SYM_INCLUDE, # [Ii][Nn][Cc][Ll][Uu][Dd][Ee]
+  'exclude' => :SYM_EXCLUDE # [Ee][Xx][Cc][Ll][Uu][Dd][Ee]
+}
+
+
+###----------/* Scanner */ ----------------------------------------------- 
+
+def scan
+  until @data.nil?  do
+    case @adl_type.last
+    when :adl
+      @data = scan_adl(@data) do |sym, val|
+        yield sym, val
+      end
+    when :dadl
+      @data = scan_dadl(@data) do |sym, val|
+        yield sym, val
+      end
+    when :cadl
+      @data = scan_cadl(@data) do |sym, val|
+        yield sym, val
+      end
+    when :regexp
+      @data = scan_regexp(@data) do |sym, val|
+        yield sym, val
+      end
+    else
+      raise
+    end
+    @data = $' # variable $' receives the string after the match
+  end
+  yield :EOF, nil
+  yield false, '$'
+end # of scan
+
+def scan_adl(data)
+  until data.nil?  do
+    case @adl_type.last
+    when :adl
+#      puts "Entering scan_adl"
+      case data
+      when /\A\n/ # carriage return
+        @lineno += 1
+        ;
+      when /\A[ \t\r\f]+/ #just drop it
+        ;
+      when /\A--.*\n/ # single line comment
+        @lineno += 1
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_adl: COMMENT = #{$&} at #{@filename}:#{@lineno}")
+        ;
+      when /\Adescription/   # description
+        yield :SYM_DESCRIPTION, :SYM_DESCRIPTION
+      when /\Adefinition/   # definition
+        yield :SYM_DEFINITION, :SYM_DEFINITION
+#        @adl_type.push(:cadl)
+        ###----------/* symbols */ ------------------------------------------------- 
+      when /\A[A-Z][a-zA-Z0-9_]*/
+        yield :V_TYPE_IDENTIFIER, $&
+      when /\A[a-zA-Z][a-zA-Z0-9_-]+\.[a-zA-Z][a-zA-Z0-9_-]+\.[a-zA-Z0-9]+/   #V_ARCHETYPE_ID
+        yield :V_ARCHETYPE_ID, $&
+      when /\A[a-z][a-zA-Z0-9_]*/
+#        word = $&.downcase
+        word = $&
+        if @@adl_reserved[word]
+          @@log.info("#{__FILE__}:#{__LINE__}: scan_adl: @@adl_reserved = #{@@adl_reserved[word]} at #{@filename}:#{@lineno}")
+          yield @@adl_reserved[word], @@adl_reserved[word]
+        elsif #/\A[A-Z][a-zA-Z0-9_]*/
+          @@log.info("#{__FILE__}:#{__LINE__}: scan_adl: V_ATTRIBUTE_IDENTIFIER = #{$&} at #{@filename}:#{@lineno}")
+          yield :V_ATTRIBUTE_IDENTIFIER, $&
+        end
+      when /\A\=/   # =
+        yield :SYM_EQ, :SYM_EQ
+      when /\A\>=/   # >=
+        yield :SYM_GE, :SYM_GE
+      when /\A\<=/   # <=
+        yield :SYM_LE, :SYM_LE
+      when /\A\</   # <
+        if @in_interval
+#          @start_block_received = false
+          yield :SYM_LT, :SYM_LT
+        else
+#          @start_block_received = true
+          @adl_type.push(:dadl)
+          yield :SYM_START_DBLOCK,  $&
+        end
+      when /\A\>/   # >
+        if @in_interval
+          yield :SYM_GT, :SYM_GT
+        else
+          adl_type = @adl_type.pop
+#          puts "Escaping #{adl_type}"
+          assert_at(__FILE__,__LINE__){adl_type == :dadl}
+          yield :SYM_END_DBLOCK, :SYM_END_DBLOCK
+        end
+      when /\A\{/   # {
+        @adl_type.push(:cadl)
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: entering cADL at #{@filename}:#{@lineno}")
+        yield :SYM_START_CBLOCK, :SYM_START_CBLOCK
+      when /\A\}/   # }
+        adl_type = @adl_type.pop
+#        puts "Escaping #{adl_type}"
+        assert_at(__FILE__,__LINE__){adl_type == :cadl}
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: exiting cADL at #{@filename}:#{@lineno}")
+        yield :SYM_END_CBLOCK, $&
+      when /\A\-/   # -
+        yield :Minus_code, :Minus_code
+      when /\A\+/   # +
+        yield :Plus_code, :Plus_code
+      when /\A\*/   # *
+        yield :Star_code, :Star_code
+      when /\A\//   # /
+        yield :Slash_code, :Slash_code
+      when /\A\^/   # ^
+        yield :Caret_code, :Caret_code
+      when /\A\=/   # =
+        yield :Equal_code, :Equal_code
+      when /\A\.\.\./   # ...
+        yield :SYM_LIST_CONTINUE, :SYM_LIST_CONTINUE
+      when /\A\.\./   # ..
+        yield :SYM_ELLIPSIS, :SYM_ELLIPSIS
+      when /\A\./   # .
+        yield :Dot_code, :Dot_code
+      when /\A\;/   # ;
+        yield :Semicolon_code, :Semicolon_code
+      when /\A\,/   # ,
+        yield :Comma_code, :Comma_code
+      when /\A\:/   # :
+        yield :Colon_code, :Colon_code
+      when /\A\!/   # !
+        yield :Exclamation_code, :Exclamation_code
+      when /\A\(/   # (
+        yield :Left_parenthesis_code, :Left_parenthesis_code
+      when /\A\)/   # )
+        yield :Right_parenthesis_code, :Right_parenthesis_code
+      when /\A\$/   # $
+        yield :Dollar_code, :Dollar_code
+      when /\A\?\?/   # ??
+        yield :SYM_DT_UNKNOWN, :SYM_DT_UNKNOWN
+      when /\A\?/   # ?
+        yield :Question_mark_code, :Question_mark_code
+      when /\A[0-9]+\.[0-9]+(\.[0-9]+)*/   # ?
+        yield :V_VERSION_STRING, :V_VERSION_STRING
+      when /\A\|/   # |
+        if @in_interval
+          @in_interval = false
+        else
+          @in_interval = true
+        end
+        yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
+      when /\A\[[a-zA-Z0-9()\._-]+::[a-zA-Z0-9\._-]+\]/
+#      when /\A\[[a-zA-Z0-9()\._-]+\:\:[a-zA-Z0-9\._-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
+        yield :V_QUALIFIED_TERM_CODE_REF, $&
+      when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
+        yield :V_LOCAL_TERM_CODE_REF, $&
+      when /\A\[/   # [
+        yield :Left_bracket_code, :Left_bracket_code
+      when /\A\]/   # ]
+        yield :Right_bracket_code, :Right_bracket_code
+
+      when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
+        yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
+      when /\Aa[ct][0-9.]+/   #V_LOCAL_CODE
+        yield :V_LOCAL_CODE, $&
+      when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9](Z|[+-][0-9]{4})?/   #V_ISO8601_EXTENDED_DATE_TIME YYYY-MM-DDThh:mm:ss[,sss][Z|+/- -n-n-n-n-]-
+        yield :V_ISO8601_EXTENDED_DATE_TIME, $&
+      when /\A[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})? /   #V_ISO8601_EXTENDED_TIME hh:mm:ss[,sss][Z|+/-nnnn]
+        yield :V_ISO8601_EXTENDED_TIME, $&
+      when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]|[0-9]{4}-[0-1][0-9]/   #V_ISO8601_EXTENDED_DATE YYYY-MM-DD
+        yield :V_ISO8601_EXTENDED_DATE, $&
+      when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
+        yield :V_GENERIC_TYPE_IDENTIFIER, $&
+      when /\A[0-9]+|[0-9]+[eE][+-]?[0-9]+/   #V_INTEGER
+        yield :V_INTEGER, $&
+      when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
+        yield :V_REAL, $&
+        #    when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
+      when /\A"([^"]*)"/m #V_STRING
+        yield :V_STRING, $1
+      when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
+        yield :V_URI, $&
+      when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
+        yield :V_ISO8601_DURATION, $&
+      when /\A\S/ #UTF8CHAR
+        yield :UTF8CHAR, $&
+      end
+      data = $' # variable $' receives the string after the match
+    when :dadl
+#      puts "Entering scan_dadl"
+      data = scan_dadl(data) do |sym, val|
+        yield sym, val
+      end
+    when :cadl
+#      puts "Entering scan_cadl"
+      data = scan_cadl(data) do |sym, val|
+        yield sym, val
+      end
+    when :regexp
+#      puts "Entering scan_regexp"
+      data = scan_regexp(data) do |sym, val|
+        yield sym, val
+      end
+    when :term_constraint
+#      puts "Entering scan_term_constraint"
+      data = scan_term_constraint(data) do |sym, val|
+        yield sym, val
+      end
+    else
+      raise
+    end
+  end
+end # scan_adl
+
+
+def scan_cadl(data)
+  until data.nil?  do
+    case @adl_type.last
+    when :cadl
+#      puts "Entering scan_cadl"
+      case scanned = @@cadl_scanner.parse(data)
+      when Yaparc::Result::OK
+        if scanned.value[0] == :START_V_C_DOMAIN_TYPE_BLOCK
+          @in_c_domain_type = true
+          @adl_type.push(:dadl)
+          yield scanned.value
+        else
+          yield scanned.value
+        end
+        data = scanned.input
+      end
+
+      case data
+      when /\A\n/ # carriage return
+        @lineno += 1
+        ;
+      when /\A[ \t\r\f]+/ #just drop it
+        ;
+      when /\A--.*\n/ # single line comment
+        @lineno += 1
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: COMMENT = #{$&} at #{@filename}:#{@lineno}")
+        ;
+        ###----------/* symbols */ ------------------------------------------------- 
+      when /\A\=/   # =
+        yield :SYM_EQ, :SYM_EQ
+      when /\A\>=/   # >=
+        yield :SYM_GE, :SYM_GE
+      when /\A\<=/   # <=
+        yield :SYM_LE, :SYM_LE
+###       when /\A[A-Z][a-zA-Z0-9_]*[ \n]*\</   # V_C_DOMAIN_TYPE
+###         @in_c_domain_type = true
+###         @adl_type.push(:dadl)
+###         yield :START_V_C_DOMAIN_TYPE_BLOCK, $&
+      when /\A\</   # <
+        if @in_interval
+          yield :SYM_LT, :SYM_LT
+        else
+          @adl_type.push(:dadl)
+          yield :SYM_START_DBLOCK,  $&
+        end
+      when /\A\>/   # >
+        if @in_interval
+          yield :SYM_GT, :SYM_GT
+        else
+          adl_type = @adl_type.pop
+#          puts "Escaping #{adl_type}"
+          assert_at(__FILE__,__LINE__){adl_type == :dadl}
+          yield :SYM_END_DBLOCK, :SYM_END_DBLOCK
+        end
+      when /\A\-/   # -
+        yield :Minus_code, :Minus_code
+      when /\A\+/   # +
+        yield :Plus_code, :Plus_code
+      when /\A\*/   # *
+        yield :Star_code, :Star_code
+      when /\A\//   # /
+        yield :Slash_code, :Slash_code
+      when /\A\^/   # ^
+        yield :Caret_code, :Caret_code
+      when /\A\.\.\./   # ...
+        yield :SYM_LIST_CONTINUE, :SYM_LIST_CONTINUE
+      when /\A\.\./   # ..
+        yield :SYM_ELLIPSIS, :SYM_ELLIPSIS
+      when /\A\./   # .
+        yield :Dot_code, :Dot_code
+      when /\A\;/   # ;
+        yield :Semicolon_code, :Semicolon_code
+      when /\A\,/   # ,
+        yield :Comma_code, :Comma_code
+      when /\A\:/   # :
+        yield :Colon_code, :Colon_code
+      when /\A\!/   # !
+        yield :Exclamation_code, :Exclamation_code
+      when /\A\(/   # (
+        yield :Left_parenthesis_code, :Left_parenthesis_code
+      when /\A\)/   # )
+        yield :Right_parenthesis_code, :Right_parenthesis_code
+      when /\A\{\// #V_REGEXP
+        if @adl_type.last != :regexp
+          @in_regexp = true
+          @adl_type.push(:regexp)
+          yield :START_REGEXP_BLOCK, :START_REGEXP_BLOCK
+        else
+          raise
+        end
+#        yield :V_REGEXP, :V_REGEXP
+      when /\A\{/   # {
+        @adl_type.push(:cadl)
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: entering cADL at #{@filename}:#{@lineno}")
+        yield :SYM_START_CBLOCK, :SYM_START_CBLOCK
+      when /\A\}/   # }
+        adl_type = @adl_type.pop
+#        puts "Escaping #{adl_type}"
+        assert_at(__FILE__,__LINE__){adl_type == :cadl}
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: exiting cADL at #{@filename}:#{@lineno}")
+        yield :SYM_END_CBLOCK, :SYM_END_CBLOCK
+      when /\A\$/   # $
+        yield :Dollar_code, :Dollar_code
+      when /\A\?\?/   # ??
+        yield :SYM_DT_UNKNOWN, :SYM_DT_UNKNOWN
+      when /\A\?/   # ?
+        yield :Question_mark_code, :Question_mark_code
+      when /\A\|/   # |
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: @in_interval = #{@in_interval} at #{@filename}:#{@lineno}")
+        if @in_interval
+          @in_interval = false
+        else
+#          @in_interval = false
+          @in_interval = true
+        end
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: SYM_INTERVAL_DELIM at #{@filename}:#{@lineno}")
+        yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
+
+      when /\A\[[a-zA-Z0-9._\-]+::[a-zA-Z0-9._\-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
+        yield :V_QUALIFIED_TERM_CODE_REF, $&
+      when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
+        yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
+      when /\A\[([a-zA-Z0-9()._\-]+::[a-zA-Z0-9._\_-]+)\]/
+        yield :V_TERM_CODE_CONSTRAINT, :V_TERM_CODE_CONSTRAINT
+      when /\A\[[a-zA-Z0-9\(\)\._\-]+::[ \t\n]*/
+        @adl_type.push(:term_constraint)
+        yield :START_TERM_CODE_CONSTRAINT, $&
+      when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
+        yield :V_LOCAL_TERM_CODE_REF, $&
+      when /\A\[/   # [
+        yield :Left_bracket_code, :Left_bracket_code
+      when /\A\]/   # ]
+        yield :Right_bracket_code, :Right_bracket_code
+      when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
+        yield :V_GENERIC_TYPE_IDENTIFIER, $&
+      when /\A[yY][yY][yY][yY]-[mM?X][mM?X]-[dD?X][dD?X][T\t][hH?X][hH?X]:[mM?X][mM?X]:[sS?X][sS?X]/
+        yield :V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN, $&
+      when /\A[yY][yY][yY][yY]-[mM?X][mM?X]-[dD?X][dD?X]/
+        yield :V_ISO8601_DATE_CONSTRAINT_PATTERN, $&
+      when /\A[hH][hH]:[mM?X][mM?X]:[sS?X][sS?X]/
+        yield :V_ISO8601_TIME_CONSTRAINT_PATTERN, $&
+      when /\A[a-z][a-zA-Z0-9_]*/
+        word = $&.dup
+        if @@cadl_reserved[word.downcase]
+          yield @@cadl_reserved[word.downcase], @@cadl_reserved[word.downcase]
+        else
+          @@log.info("#{__FILE__}:#{__LINE__}: scan_cadl: V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}:#{@lineno}")
+          yield :V_ATTRIBUTE_IDENTIFIER, word #V_ATTRIBUTE_IDENTIFIER /\A[a-z][a-zA-Z0-9_]*/
+        end
+      when /\A[A-Z][a-zA-Z0-9_]*/
+        word = $&.dup
+        if @@cadl_reserved[word.downcase]
+          yield @@cadl_reserved[word.downcase], @@cadl_reserved[word.downcase]
+        else
+          yield :V_TYPE_IDENTIFIER, $&
+        end
+      when /\Aa[ct][0-9.]+/   #V_LOCAL_CODE
+        yield :V_LOCAL_CODE, $&
+      when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9](Z|[+-][0-9]{4})?/   #V_ISO8601_EXTENDED_DATE_TIME YYYY-MM-DDThh:mm:ss[,sss][Z|+/- -n-n-n-n-]-
+        yield :V_ISO8601_EXTENDED_DATE_TIME, $&
+      when /\A[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})? /   #V_ISO8601_EXTENDED_TIME hh:mm:ss[,sss][Z|+/-nnnn]
+        yield :V_ISO8601_EXTENDED_TIME, $&
+      when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]|[0-9]{4}-[0-1][0-9]/   #V_ISO8601_EXTENDED_DATE YYYY-MM-DD
+        yield :V_ISO8601_EXTENDED_DATE, $&
+      when /\A[0-9]+|[0-9]+[eE][+-]?[0-9]+/   #V_INTEGER
+        yield :V_INTEGER, $&
+      when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
+        yield :V_REAL, $&
+           when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
+      when /\A"([^"]*)"/m #V_STRING
+        yield :V_STRING, $1
+      when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
+        yield :V_URI, $&
+###       when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
+###         yield :V_ISO8601_DURATION, $&
+      when /\A\S/ #UTF8CHAR
+        yield :UTF8CHAR, $&
+      else
+        raise
+      end
+      data = $' # variable $' receives the string after the match
+    when :adl
+#      puts "Entering scan_adl"
+      data = scan_adl(data) do |sym, val|
+        yield sym, val
+      end
+    when :dadl
+#      puts "Entering scan_dadl"
+      data = scan_dadl(data) do |sym, val|
+        yield sym, val
+      end
+    when :regexp
+#      puts "Entering scan_regexp"
+      data = scan_regexp(data) do |sym, val|
+        yield sym, val
+      end
+    when :term_constraint
+#      puts "Entering scan_term_constraint"
+      data = scan_term_constraint(data) do |sym, val|
+        yield sym, val
+      end
+    else
+      raise
+    end
+  end # of until
+end # of scan_cadl
+
+def scan_dadl(data)
+  until data.nil?  do
+    case @adl_type.last
+    when :dadl
+#      puts "Entering scan_dadl"
+      case scanned = @@dadl_scanner.parse(data)
+      when Yaparc::Result::OK
+        yield scanned.value
+        data = scanned.input
+      else
+      end
+
+      case data
+      when /\A\n/ # carriage return
+        @lineno += 1
+        ;
+      when /\A[ \t\r\f]+/ #just drop it
+        ;
+      when /\A--.*\n/ # single line comment
+        @lineno += 1
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_dadl: COMMENT = #{$&} at #{@filename}:#{@lineno}")
+        ;
+        ###----------/* symbols */ ------------------------------------------------- 
+      when /\A\=/   # =
+        yield :SYM_EQ, :SYM_EQ
+      when /\A\>\=/   # >=
+        yield :SYM_GE, :SYM_GE
+      when /\A\<\=/   # <=
+        yield :SYM_LE, :SYM_LE
+      when /\A\</   # <
+        if @in_interval
+          yield :SYM_LT, :SYM_LT
+        else
+          @adl_type.push(:dadl)
+          yield :SYM_START_DBLOCK, :SYM_START_DBLOCK
+        end
+      when /\A\>/   # >
+        if @in_interval
+#          @in_interval = false
+          yield :SYM_GT, :SYM_GT
+        elsif @in_c_domain_type == true
+          assert_at(__FILE__,__LINE__){@adl_type.last == :dadl}
+          adl_type = @adl_type.pop
+          if @adl_type.last == :cadl
+            @in_c_domain_type = false
+            yield :END_V_C_DOMAIN_TYPE_BLOCK, $&
+          else
+            yield :SYM_END_DBLOCK, $&
+          end
+        elsif @in_c_domain_type == false
+          adl_type = @adl_type.pop
+#          puts "Escaping #{adl_type}"
+          assert_at(__FILE__,__LINE__){adl_type == :dadl}
+          yield :SYM_END_DBLOCK, $&
+        else
+          raise
+        end
+      when /\A\-/   # -
+        yield :Minus_code, :Minus_code
+      when /\A\+/   # +
+        yield :Plus_code, :Plus_code
+      when /\A\*/   # *
+        yield :Star_code, :Star_code
+      when /\A\//   # /
+        yield :Slash_code, :Slash_code
+      when /\A\^/   # ^
+        yield :Caret_code, :Caret_code
+      when /\A\.\.\./   # ...
+        yield :SYM_LIST_CONTINUE, :SYM_LIST_CONTINUE
+      when /\A\.\./   # ..
+        yield :SYM_ELLIPSIS, :SYM_ELLIPSIS
+      when /\A\./   # .
+        yield :Dot_code, :Dot_code
+      when /\A\;/   # ;
+        yield :Semicolon_code, :Semicolon_code
+      when /\A\,/   # ,
+        yield :Comma_code, :Comma_code
+      when /\A\:/   # :
+        yield :Colon_code, :Colon_code
+      when /\A\!/   # !
+        yield :Exclamation_code, :Exclamation_code
+      when /\A\(/   # (
+        yield :Left_parenthesis_code, :Left_parenthesis_code
+      when /\A\)/   # )
+        yield :Right_parenthesis_code, :Right_parenthesis_code
+      when /\A\$/   # $
+        yield :Dollar_code, :Dollar_code
+      when /\A\?\?/   # ??
+        yield :SYM_DT_UNKNOWN, :SYM_DT_UNKNOWN
+      when /\A\?/   # ?
+        yield :Question_mark_code, :Question_mark_code
+      when /\A\|/   # |
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_dadl: @in_interval = #{@in_interval} at #{@filename}:#{@lineno}")
+        if @in_interval
+          @in_interval = false
+        else
+#          @in_interval = false
+          @in_interval = true
+        end
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_dadl: SYM_INTERVAL_DELIM at #{@filename}:#{@lineno}")
+        yield :SYM_INTERVAL_DELIM, :SYM_INTERVAL_DELIM
+###       when /\A\[[a-zA-Z0-9()\._-]+::[a-zA-Z0-9\._-]+\]/   #V_QUALIFIED_TERM_CODE_REF form [ICD10AM(1998)::F23]
+###         yield :V_QUALIFIED_TERM_CODE_REF, $&
+###       when /\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/   #V_LOCAL_TERM_CODE_REF
+###         yield :V_LOCAL_TERM_CODE_REF, $&
+###       when /\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/   #ERR_V_QUALIFIED_TERM_CODE_REF
+###         yield :ERR_V_QUALIFIED_TERM_CODE_REF, $&
+      when /\A\[/   # [
+        yield :Left_bracket_code, :Left_bracket_code
+      when /\A\]/   # ]
+        yield :Right_bracket_code, :Right_bracket_code
+###       when /\A[A-Z][a-zA-Z0-9_-]*/
+###         yield :V_TYPE_IDENTIFIER, $&
+###       when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
+###         yield :V_GENERIC_TYPE_IDENTIFIER, $&
+###       when /\A[a-z][a-zA-Z0-9_]*/
+###         word = $&.downcase
+###         if @@dadl_reserved[word]
+###           yield @@dadl_reserved[word], @@dadl_reserved[word]
+###         else
+###           yield :V_ATTRIBUTE_IDENTIFIER, $&
+###         end
+###       when /\Aa[ct][0-9.]+/   #V_LOCAL_CODE
+###         yield :V_LOCAL_CODE, $&
+      when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})?|[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9](Z|[+-][0-9]{4})?/   #V_ISO8601_EXTENDED_DATE_TIME YYYY-MM-DDThh:mm:ss[,sss][Z|+/- -n-n-n-n-]-
+        yield :V_ISO8601_EXTENDED_DATE_TIME, $&
+      when /\A[0-2][0-9]:[0-6][0-9]:[0-6][0-9](,[0-9]+)?(Z|[+-][0-9]{4})?|[0-2][0-9]:[0-6][0-9](Z|[+-][0-9]{4})? /   #V_ISO8601_EXTENDED_TIME hh:mm:ss[,sss][Z|+/-nnnn]
+        yield :V_ISO8601_EXTENDED_TIME, $&
+      when /\A[0-9]{4}-[0-1][0-9]-[0-3][0-9]|[0-9]{4}-[0-1][0-9]/   #V_ISO8601_EXTENDED_DATE YYYY-MM-DD
+        yield :V_ISO8601_EXTENDED_DATE, $&
+      when /\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/   #V_GENERIC_TYPE_IDENTIFIER
+        yield :V_GENERIC_TYPE_IDENTIFIER, $&
+      when /\A[0-9]+|[0-9]+[eE][+-]?[0-9]+/   #V_INTEGER
+        yield :V_INTEGER, $&
+###       when /\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+ /   #V_REAL
+###         yield :V_REAL, $&
+        #    when /\A"((?:[^"\\]+|\\.)*)"/ #V_STRING
+###       when /\A"([^"]*)"/m #V_STRING
+###         yield :V_STRING, $1
+      when /\A[a-z]+:\/\/[^<>|\\{}^~"\[\] ]*/ #V_URI
+        yield :V_URI, $&
+###       when /\AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?T([0-9]+[hH])?([0-9]+[mM])?([0-9]+[sS])?|P([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/   #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
+###         yield :V_ISO8601_DURATION, $&
+      when /\A\S/ #UTF8CHAR
+        yield :UTF8CHAR, $&
+      end
+      data = $' # variable $' receives the string after the match
+    when :adl
+#      puts "Entering scan_adl"
+      data = scan_adl(data) do |sym, val|
+        yield sym, val
+      end
+    when :cadl
+#      puts "Entering scan_cadl"
+      data = scan_cadl(data) do |sym, val|
+        yield sym, val
+      end
+    when :regexp
+#      puts "Entering scan_regexp"
+      data = scan_regexp(data) do |sym, val|
+        yield sym, val
+      end
+    when :term_constraint
+#      puts "Entering scan_term_constraint"
+      data = scan_term_constraint(data) do |sym, val|
+        yield sym, val
+      end
+    else
+      raise
+    end
+  end
+end # of scan_dadl
+
+def scan_regexp(data)
+  until data.nil?  do
+    case @adl_type.last
+    when :regexp
+#      puts "Entering scan_regexp"
+      case data
+      when /\A\/\}/ #V_REGEXP
+        if @adl_type.last == :regexp
+          @in_regexp = false
+          @adl_type.pop
+          yield :END_REGEXP_BLOCK, :END_REGEXP_BLOCK
+        else
+          raise
+        end
+      when /\A(.*)(\/\})/ #V_REGEXP
+        yield :REGEXP_BODY, $1
+        if @adl_type.last == :regexp
+          @in_regexp = false
+          @adl_type.pop
+          yield :END_REGEXP_BLOCK, :END_REGEXP_BLOCK
+        else
+          raise
+        end
+      else
+        raise data
+      end
+      data = $' # variable $' receives the string after the match
+    when :adl
+#      puts "Entering scan_adl"
+      data = scan_adl(data) do |sym, val|
+        yield sym, val
+      end
+    when :dadl
+#      puts "Entering scan_dadl"
+      data = scan_dadl(data) do |sym, val|
+        yield sym, val
+      end
+    when :cadl
+#      puts "Entering scan_cadl"
+      data = scan_cadl(data) do |sym, val|
+        yield sym, val
+      end
+    when :term_constraint
+#      puts "Entering scan_term_constraint"
+      data = scan_term_constraint(data) do |sym, val|
+        yield sym, val
+      end
+    else
+      raise
+    end
+  end
+end # of scan_regexp
+
+def scan_term_constraint(data)
+  until data.nil?  do
+    case @adl_type.last
+    when :term_constraint
+#      puts "Entering scan_term_constraint"
+      case data
+      when /\A\n/ # carriage return
+        @lineno += 1
+        ;
+      when /\A[ \t\r\f]+/ #just drop it
+        ;
+      when /\A--.*$/ # single line comment
+        @lineno += 1
+        @@log.info("#{__FILE__}:#{__LINE__}: scan_term_constraint: COMMENT = #{$&} at #{@filename}:#{@lineno}")
+        ;
+      when /\A[a-zA-Z0-9\._\-]+[ \t]*,/ # match any line, with ',' termination
+        yield :TERM_CODE, $&
+      when /\A[a-zA-Z0-9\._\-]+[ \t]*;/ #match second last line with ';' termination (assumed value)
+        yield :TERM_CODE, $&
+#      when /\A[a-zA-Z0-9\._\-]+[ \t]*\]/ # match final line, terminating in ']'
+      when /\A[a-zA-Z0-9\._\-]*[ \t]*\]/ # match final line, terminating in ']'
+        adl_type = @adl_type.pop
+        assert_at(__FILE__,__LINE__){adl_type == :term_constraint}
+        yield :END_TERM_CODE_CONSTRAINT, $&
+      else
+        raise "data = #{data}"
+      end
+      data = $' # variable $' receives the string after the match
+    when :adl
+#      puts "Entering scan_adl"
+      data = scan_adl(data) do |sym, val|
+        yield sym, val
+      end
+    when :dadl
+#      puts "Entering scan_dadl"
+      data = scan_dadl(data) do |sym, val|
+        yield sym, val
+      end
+    when :cadl
+#      puts "Entering scan_cadl"
+      data = scan_cadl(data) do |sym, val|
+        yield sym, val
+      end
+    else
+      raise
+    end
+  end
+end # of scan_term_constraint
+
+
+def parse(data, filename, lineno = 1, debug = false)
+  @yydebug = true
+  @parsestring = data
+  @data = data
+  @lineno = lineno
+  @filename = filename
+  @adl_type = [:adl] # {:adl, :cadl, :dadl}
+  @in_regexp = false
+  @in_interval = false
+  @in_c_domain_type = false
+  yyparse self, :scan
+end
+
+def on_error( t, v, values)
+  raise Racc::ParseError, "#{@filename}:#{@lineno}: Inline syntax error on #{v.inspect}"
+end
+
+
+
+
+
+
+
+### Local Variables:
+### mode:ruby
+### mode:font-lock
+### comment-column:0
+### comment-start: "### "
+### comment-end:"" 
+### End:
+
+
+
+
Index: /ruby/tags/0.0.2/adl_parser/lib/scanner.rb
===================================================================
--- /ruby/tags/0.0.2/adl_parser/lib/scanner.rb	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/lib/scanner.rb	(revision 39)
@@ -0,0 +1,326 @@
+require 'logger'
+require 'rubygems'
+require 'yaparc'
+
+
+
+module OpenEHR
+  module ADL
+    module Scanner
+      module Common
+        LOG = Logger.new('log/scanner.log','daily')
+
+        class V_QUALIFIED_TERM_CODE_REF
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(Yaparc::Regex.new(/\A\[[a-zA-Z0-9()\._-]+::[a-zA-Z0-9\._-]+\]/)) do |match|
+                LOG.info("V_QUALIFIED_TERM_CODE_REF: #{match}")
+                [:V_QUALIFIED_TERM_CODE_REF, match]
+              end
+            end
+          end
+        end
+        
+        class V_LOCAL_TERM_CODE_REF
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(Yaparc::Regex.new(/\A\[[a-zA-Z0-9][a-zA-Z0-9._\-]*\]/)) do |match|
+                LOG.info("V_TERM_CODE_REF: #{match}")
+                [:V_LOCAL_TERM_CODE_REF, match]
+              end
+            end
+          end
+        end
+
+        class ERR_V_QUALIFIED_TERM_CODE_REF
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(Yaparc::Regex.new(/\A\[[a-zA-Z0-9._\- ]+::[a-zA-Z0-9._\- ]+\]/)) do |match|
+                LOG.info("ERR_V_QUALIFIED_TERM_CODE_REF: #{match}")
+                [:ERR_V_QUALIFIED_TERM_CODE_REF, match]
+              end
+            end
+          end
+        end
+
+        class V_TYPE_IDENTIFIER
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(Yaparc::Regex.new(/\A[A-Z][a-zA-Z0-9_]*/)) do |match|
+                LOG.info("V_TYPE_IDENTIFIER: #{match}")
+                [:V_TYPE_IDENTIFIER, match]
+              end
+            end
+          end
+        end
+
+        class V_GENERIC_TYPE_IDENTIFIER
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(Yaparc::Regex.new(/\A[A-Z][a-zA-Z0-9_]*<[a-zA-Z0-9,_<>]+>/)) do |match|
+                LOG.info("V_GENERIC_TYPE_IDENTIFIER: #{match}")
+                [:V_GENERIC_TYPE_IDENTIFIER, match]
+              end
+            end
+          end
+        end
+
+
+        class V_LOCAL_CODE
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(Yaparc::Regex.new(/\Aa[ct][0-9.]+/)) do |match|
+                LOG.info("V_LOCAL_CODE: #{match}")
+                [:V_LOCAL_CODE, match]
+              end
+            end
+          end
+        end
+
+        class V_STRING
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(Yaparc::Regex.new(/\A"([^"]*)"/m)) do |match|
+                LOG.info("V_STRING: #{match}")
+                [:V_STRING, match]
+              end
+            end
+          end
+        end
+
+        class V_REAL
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(Yaparc::Regex.new(/\A[0-9]+\.[0-9]+|[0-9]+\.[0-9]+[eE][+-]?[0-9]+/)) do |match|
+                LOG.info("V_REAL: #{match}")
+                [:V_REAL, match]
+              end
+            end
+          end
+        end
+
+        #V_ISO8601_DURATION PnYnMnWnDTnnHnnMnnS
+        class V_ISO8601_DURATION
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(
+                                Yaparc::Alt.new(Yaparc::Regex.new(/\AP([0-9]+|[yY])?([0-9]+|[mM])?([0-9]+|[wW])?([0-9]+|[dD])?T([0-9]+|[hH])?([0-9]+|[mM])?([0-9]+|[sS])?/),
+                                                Yaparc::Regex.new(/\AP([0-9]+|[yY])?([0-9]+|[mM])?([0-9]+|[wW])?([0-9]+|[dD])?/))) do |match|
+                LOG.info("V_ISO8601_DURATION: #{match}")
+                [:V_ISO8601_DURATION, match]
+              end
+            end
+          end
+        end
+
+      end # of Common
+
+      module DADL
+        # c.f. http://www.openehr.org/svn/ref_impl_eiffel/TRUNK/components/adl_parser/src/syntax/adl/parser/adl_scanner.l
+        RESERVED = {
+          'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE 
+          'false' => :SYM_FALSE, # [Ff][Aa][Ll][Ss][Ee] -- -> SYM_FALSE 
+          'infinity' => :SYM_INFINITY # [Ii][Nn][Ff][Ii][Nn][Ii][Tt][Yy] -- -> SYM_INFINITY 
+        }
+
+        class RootScanner
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Alt.new(Reserved.new,
+                              OpenEHR::ADL::Scanner::Common::V_QUALIFIED_TERM_CODE_REF.new,
+                              OpenEHR::ADL::Scanner::Common::V_LOCAL_TERM_CODE_REF.new,
+                              OpenEHR::ADL::Scanner::Common::ERR_V_QUALIFIED_TERM_CODE_REF.new,
+                              OpenEHR::ADL::Scanner::Common::V_TYPE_IDENTIFIER.new,
+                              OpenEHR::ADL::Scanner::Common::V_GENERIC_TYPE_IDENTIFIER.new,
+                              OpenEHR::ADL::Scanner::Common::V_STRING.new,
+                              OpenEHR::ADL::Scanner::Common::V_LOCAL_CODE.new,
+                              OpenEHR::ADL::Scanner::Common::V_REAL.new,
+                              OpenEHR::ADL::Scanner::Common::V_ISO8601_DURATION.new
+                              )
+            end
+          end
+        end
+
+        class Reserved
+          include Yaparc::Parsable
+          
+          def initialize
+            @parser = lambda do |input|
+              reserved_parsers = OpenEHR::ADL::Scanner::DADL::RESERVED.map do |keyword| 
+                Yaparc::Tokenize.new(
+                                     Yaparc::Literal.new(keyword[0])
+                                     )
+              end
+              Yaparc::Alt.new(Yaparc::Apply.new(Yaparc::Alt.new(*reserved_parsers)) do |match|
+                                OpenEHR::ADL::Scanner::Common::LOG.info("Reserved: #{match}")
+                                [OpenEHR::ADL::Scanner::DADL::RESERVED[match], OpenEHR::ADL::Scanner::DADL::RESERVED[match]]
+                              end,
+                              Yaparc::Apply.new(Yaparc::Regex.new(/\A[a-z][a-zA-Z0-9_]*/)) do |match|
+                                OpenEHR::ADL::Scanner::Common::LOG.info("V_ATTRIBUTE_IDENTIFIER: #{match}")
+                                [:V_ATTRIBUTE_IDENTIFIER, match]
+                              end)
+            end
+          end
+        end
+
+
+
+      end # of DADL
+
+      module CADL
+        # c.f. http://www.openehr.org/svn/ref_impl_eiffel/TRUNK/components/adl_parser/src/syntax/cadl/parser/cadl_scanner.l
+        RESERVED = {
+          'ordered' => :SYM_ORDERED, # [Oo][Rr][Dd][Ee][Rr][Ee][Dd]
+          'unordered' => :SYM_UNORDERED, # [Uu][Nn][Oo][Rr][Dd][Ee][Rr][Ee][Dd]
+          'then' => :SYM_THEN, # [Tt][Hh][Ee][Nn]
+          'else' => :SYM_ELSE, # [Ee][Ll][Ss][Ee]
+          'and' => :SYM_AND, # [Aa][Nn][Dd]
+          'or' => :SYM_OR, # [Oo][Rr]
+          'xor' => :SYM_XOR, # [Xx][Oo][Rr]
+          'not' => :SYM_NOT, # [Nn][Oo][Tt]
+          'implies' => :SYM_IMPLIES, # [Ii][Mm][Pp][Ll][Ii][Ee][Ss]
+          'true' => :SYM_TRUE, #[Tt][Rr][Uu][Ee] -- -> SYM_TRUE 
+          'false' => :SYM_FALSE, # [Ff][Aa][Ll][Ss][Ee] -- -> SYM_FALSE 
+          'forall' => :SYM_FORALL, # [Ff][Oo][Rr][_][Aa][Ll][Ll]
+          'exists' => :SYM_EXISTS, # [Ee][Xx][Ii][Ss][Tt][Ss]
+          'existence' => :SYM_EXISTENCE, # [Ee][Xx][Iu][Ss][Tt][Ee][Nn][Cc][Ee]
+          'occurrences' => :SYM_OCCURRENCES, # [Oo][Cc][Cc][Uu][Rr][Rr][Ee][Nn][Cc][Ee][Ss]
+          'cardinality' => :SYM_CARDINALITY, # [Cc][Aa][Rr][Dd][Ii][Nn][Aa][Ll][Ii][Tt][Yy]
+          'unique' => :SYM_UNIQUE, # [Uu][Nn][Ii][Qq][Uu][Ee]
+          'matches' => :SYM_MATCHES, # [Mm][Aa][Tt][Cc][Hh][Ee][Ss]
+          'is_in' => :SYM_MATCHES, # [Ii][Ss][_][Ii][Nn]
+          'invariant' => :SYM_INVARIANT, # [Ii][Nn][Vv][Aa][Rr][Ii][Aa][Nn][Tt]
+          'infinity' => :SYM_INFINITY, # [Ii][Nn][Ff][Ii][Nn][Ii][Tt][Yy] -- -> SYM_INFINITY 
+          'use_node' => :SYM_USE_NODE, # [Uu][Ss][Ee][_][Nn][Oo][Dd][Ee]
+          'use_archetype' => :SYM_ALLOW_ARCHETYPE, # [Uu][Ss][Ee][_][Aa][Rr][Cc][Hh][Ee][Tt][Yy][Pp][Ee]
+          'allow_archetype' => :SYM_ALLOW_ARCHETYPE, # [Aa][Ll][Ll][Oo][Ww][_][Aa][Rr][Cc][Hh][Ee][Tt][Yy][Pp][Ee]
+          'include' => :SYM_INCLUDE, # [Ii][Nn][Cc][Ll][Uu][Dd][Ee]
+          'exclude' => :SYM_EXCLUDE # [Ee][Xx][Cc][Ll][Uu][Dd][Ee]
+        }
+
+        #V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN, /\A[yY][yY][yY][yY]-[mM?X][mM?X]-[dD?X][dD?X][T\t][hH?X][hH?X]:[mM?X][mM?X]:[sS?X][sS?X]/
+        class V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(Yaparc::Regex.new(/\A[yY][yY][yY][yY]-[mM?X][mM?X]-[dD?X][dD?X][T\t][hH?X][hH?X]:[mM?X][mM?X]:[sS?X][sS?X]/)) do |match|
+                OpenEHR::ADL::Scanner::Common::LOG.info("V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN: #{match}")
+                [:V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN, match]
+              end
+            end
+          end
+        end
+
+        #V_ISO8601_DATE_CONSTRAINT_PATTERN  /\A[yY][yY][yY][yY]-[mM?X][mM?X]-[dD?X][dD?X]/
+        class V_ISO8601_DATE_CONSTRAINT_PATTERN
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(Yaparc::Regex.new(/\A[yY][yY][yY][yY]-[mM?X][mM?X]-[dD?X][dD?X]/)) do |match|
+                OpenEHR::ADL::Scanner::Common::LOG.info("V_ISO8601_DATE_CONSTRAINT_PATTERN: #{match}")
+                [:V_ISO8601_DATE_CONSTRAINT_PATTERN, match]
+              end
+            end
+          end
+        end
+
+        #V_ISO8601_TIME_CONSTRAINT_PATTERN /\A[hH][hH]:[mM?X][mM?X]:[sS?X][sS?X]/
+        class V_ISO8601_TIME_CONSTRAINT_PATTERN
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(Yaparc::Regex.new(/\A[hH][hH]:[mM?X][mM?X]:[sS?X][sS?X]/)) do |match|
+                OpenEHR::ADL::Scanner::Common::LOG.info("V_ISO8601_TIME_CONSTRAINT_PATTERN: #{match}")
+                [:V_ISO8601_TIME_CONSTRAINT_PATTERN, match]
+              end
+            end
+          end
+        end
+
+        #V_ISO8601_DURATION_CONSTRAINT_PATTERN 
+        class V_ISO8601_DURATION_CONSTRAINT_PATTERN
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(Yaparc::Alt.new(Yaparc::Regex.new(/\AP[yY]?[mM]?[wW]?[dD]?T[hH]?[mM]?[sS]?/),
+                                                Yaparc::Regex.new(/\AP[yY]?[mM]?[wW]?[dD]?/))) do |match|
+                OpenEHR::ADL::Scanner::Common::LOG.info("V_ISO8601_DURATION_CONSTRAINT_PATTERN: #{match}")
+                [:V_ISO8601_DURATION_CONSTRAINT_PATTERN, match]
+              end
+            end
+          end
+        end
+
+        #V_C_DOMAIN_TYPE /\A[A-Z][a-zA-Z0-9_]*[ \n]*\</
+        class V_C_DOMAIN_TYPE
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Apply.new(Yaparc::Regex.new(/\A[A-Z][a-zA-Z0-9_]*[ \n]*\</)) do |match|
+                OpenEHR::ADL::Scanner::Common::LOG.info("V_C_DOMAIN_TYPE: #{match}")
+                [:START_V_C_DOMAIN_TYPE_BLOCK, match]
+              end
+            end
+          end
+        end
+
+        class RootScanner
+          include Yaparc::Parsable
+          def initialize
+            @parser = lambda do |input|
+              Yaparc::Alt.new(V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN.new,
+                              V_ISO8601_DATE_CONSTRAINT_PATTERN.new,
+                              V_ISO8601_TIME_CONSTRAINT_PATTERN.new,
+                              OpenEHR::ADL::Scanner::Common::V_ISO8601_DURATION.new,
+                              V_C_DOMAIN_TYPE.new,
+                              V_ISO8601_DURATION_CONSTRAINT_PATTERN.new,
+                              Reserved.new,
+                              OpenEHR::ADL::Scanner::Common::V_QUALIFIED_TERM_CODE_REF.new,
+                              OpenEHR::ADL::Scanner::Common::V_LOCAL_TERM_CODE_REF.new,
+                              OpenEHR::ADL::Scanner::Common::ERR_V_QUALIFIED_TERM_CODE_REF.new,
+                              OpenEHR::ADL::Scanner::Common::V_TYPE_IDENTIFIER.new,
+                              OpenEHR::ADL::Scanner::Common::V_GENERIC_TYPE_IDENTIFIER.new,
+                              OpenEHR::ADL::Scanner::Common::V_STRING.new,
+                              OpenEHR::ADL::Scanner::Common::V_LOCAL_CODE.new,
+                              OpenEHR::ADL::Scanner::Common::V_REAL.new,
+                              OpenEHR::ADL::Scanner::Common::V_ISO8601_DURATION.new
+                              )
+            end
+          end
+        end
+
+        class Reserved
+          include Yaparc::Parsable
+          
+          def initialize
+            @parser = lambda do |input|
+              orderd_reserved = RESERVED.keys.sort{|x,y| y.length <=> x.length  }
+              reserved_parsers = orderd_reserved.map do |keyword| 
+                Yaparc::Literal.new(keyword)
+              end
+              Yaparc::Alt.new(Yaparc::Apply.new(Yaparc::Alt.new(*reserved_parsers)) do |match|
+                                OpenEHR::ADL::Scanner::Common::LOG.info("Reserved: #{match}")
+                                [OpenEHR::ADL::Scanner::CADL::RESERVED[match], OpenEHR::ADL::Scanner::CADL::RESERVED[match]]
+                              end,
+                              Yaparc::Apply.new(Yaparc::Regex.new(/\A[a-z][a-zA-Z0-9_]*/)) do |match|
+                                OpenEHR::ADL::Scanner::Common::LOG.info("V_ATTRIBUTE_IDENTIFIER: #{match}")
+                                [:V_ATTRIBUTE_IDENTIFIER, match]
+                              end)
+            end
+          end
+        end
+
+      end
+    end
+  end
+end
Index: /ruby/tags/0.0.2/adl_parser/lib/shell.rb
===================================================================
--- /ruby/tags/0.0.2/adl_parser/lib/shell.rb	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/lib/shell.rb	(revision 39)
@@ -0,0 +1,35 @@
+$:.unshift File.join(File.dirname(__FILE__))
+require 'validator.rb'
+require 'stringio'
+
+module OpenEHR
+  module Application
+    class Shell
+      def run
+        raise 'not implemented'
+      end
+    end
+
+    class ADLValidator < Shell
+      def initialize(validator)
+        @validator = validator
+      end
+
+      def run(input, name = nil)
+        input_stream = case input
+                       when String
+                         StringIO.new(input)
+                       when File
+                         input
+                       when StringIO
+                         input
+                       else
+                         raise
+                       end
+        @validator.validate(input_stream.read, name)
+        input_stream.close
+      end
+    end
+  end
+end
+
Index: /ruby/tags/0.0.2/adl_parser/lib/util.rb
===================================================================
--- /ruby/tags/0.0.2/adl_parser/lib/util.rb	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/lib/util.rb	(revision 39)
@@ -0,0 +1,6 @@
+
+def assert_at(file,line, message = "")
+  unless yield
+    raise "Assertion failed !: #{file}, #{line}: #{message}"
+  end
+end
Index: /ruby/tags/0.0.2/adl_parser/lib/validator.rb
===================================================================
--- /ruby/tags/0.0.2/adl_parser/lib/validator.rb	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/lib/validator.rb	(revision 39)
@@ -0,0 +1,20 @@
+$:.unshift File.join(File.dirname(__FILE__))
+require 'parser.rb'
+
+
+module OpenEHR
+  module ADL
+
+    class Validator
+      def initialize(parser)
+        @parser = parser
+      end
+
+      def validate(input_string, name = nil)
+        @parser.parse(input_string, name)
+      end
+    end
+
+  end
+end
+
Index: /ruby/tags/0.0.2/adl_parser/tests/dadl_embedded_cadl.dadl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/dadl_embedded_cadl.dadl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/dadl_embedded_cadl.dadl	(revision 39)
@@ -0,0 +1,48 @@
+archetype_id = <"adl-test-OUTER.mixed_types.draft">
+concept = <"at0000">	--  empty definition test
+description = <
+	original_author = <
+		["name"] = <"Thomas Beale">
+		["organisation"] = <"OceanInformatics.biz">
+		["submission"] = <"01/05/2004">
+	>
+	lifecycle_state = <"draft">
+	details = <
+		["en"] = <
+			language = <"en">
+			purpose = <"Test archetype for mixed node types">
+			keywords = <"ADL", "test">
+			copyright = <"copyright (c) 2004 The openEHR Foundation">
+		>
+	>
+>
+definition = <{
+	OUTER[at0000] matches {
+		items cardinality matches {0..*; ordered} matches {
+			COMPLEX_OBJECT[at0001] matches {*}
+
+			use_node COMPLEX_OBJECT /items[at0001]
+
+			use_node COMPLEX_OBJECT /items[at0002]
+
+			COMPLEX_OBJECT[at0002] matches {*}
+
+			allow_archetype COMPLEX_OBJECT matches {
+				include
+					id matches {/.*/}
+			}
+
+			COMPLEX_OBJECT[at0003] matches {*}
+		}
+	}
+}>
+ontology = <
+	term_definitions = <
+		["en"] = <
+			["at0000"] = <text = <"outer object">; description = <"outer object">>
+			["at0001"] = <text = <"complex object 1">; description = <"complex object 1">>
+			["at0002"] = <text = <"complex object 2">; description = <"complex object 2">>
+			["at0003"] = <text = <"complex object 3">; description = <"complex object 3">>
+		>
+	>
+>
Index: /ruby/tags/0.0.2/adl_parser/tests/dadl_line_break.dadl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/dadl_line_break.dadl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/dadl_line_break.dadl	(revision 39)
@@ -0,0 +1,23 @@
+archetype_id = <"adl-test-OUTER.mixed_types.draft">
+concept = <"at0000">	--  empty definition test
+description = <
+	original_author = <
+		["name"] = <"Thomas Beale">
+		["organisation"] = <"OceanInformatics.biz">
+		["submission"] = <"01/05/2004">
+	>
+	lifecycle_state = <"draft">
+	details = <
+		["en"] = <
+			language = <"en">
+			purpose = <"Test archetype for mixed node types. This is a really long
+				paragraph in which all kinds of annoying whitespace and linebreaks
+				appear.
+				
+				Even new paragraphs. But you have to admit it makes the text more 
+				readable.">
+			keywords = <"ADL", "test">
+			copyright = <"copyright (c) 2004 The openEHR Foundation">
+		>
+	>
+>
Index: /ruby/tags/0.0.2/adl_parser/tests/dparser_test.rb
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/dparser_test.rb	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/dparser_test.rb	(revision 39)
@@ -0,0 +1,22 @@
+#$:.unshift File.join(File.dirname(__FILE__))
+
+require 'lib/dparser.rb'
+require 'test/unit'
+
+class DADLParserTest < Test::Unit::TestCase
+  def setup
+    @parser = ::OpenEHR::DADLParser.new
+  end
+
+  def test_init
+    assert_instance_of ::OpenEHR::DADLParser,@parser
+  end
+
+  def test_parse
+    dadl_line_break = File.read('tests/dadl_line_break.dadl')
+    assert_nothing_raised do
+      @parser.parse(dadl_line_break, 'dadl_line_break')
+    end
+  end
+
+end
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-ACTION.imaging.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-ACTION.imaging.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-ACTION.imaging.v1.adl	(revision 39)
@@ -0,0 +1,275 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-ACTION.imaging.v1
+
+concept
+	[at0000]	-- Imaging investigation
+language
+	original_language = <[ISO_639-1::en]>
+description
+	original_author = <
+		["name"] = <"Sam Heard">
+		["organisation"] = <"Ocean Informatics">
+		["date"] = <"17/04/2006">
+		["email"] = <"sam.heard@oceaninformatics.biz">
+	>
+	details = <
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"To record actions regarding imaging investigations.">
+			use = <"">
+			keywords = <"Xray", "ultrasound", "MRI", "magnetic resonance", "CT", "scan", "tomography">
+			misuse = <"Not used for recording the findings of the investigation; use openEHR-EHR-OBSERVATION.imaging for the findings.">
+		>
+	>
+	lifecycle_state = <"AuthorDraft">
+	other_contributors = <>
+
+definition
+	ACTION[at0000] matches {	-- Imaging investigation
+		ism_transition matches {
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::524]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0001]}		-- Planned
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::524]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0004]}		-- Requested
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::527]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0002]}		-- Postponed
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::528]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0003]}		-- Cancelled
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::529]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0005]}		-- Appointment made
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::529]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0006]}		-- Resheduled
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::245]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0007]}		-- Commenced
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::245]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0008]}		-- Investigation complete
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::245]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0009]}		-- Reported
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::245]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0011]}		-- Report communicated
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::245]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0012]}		-- Further imaging required
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::530]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0013]}		-- Imaging suspended
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::531]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0014]}		-- Imaging aborted
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::532]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0010]}		-- Completed
+					}
+				}
+			}
+		}
+		description matches {
+			allow_archetype ITEM_TREE occurrences matches {0..1} matches {
+				include
+					archetype_id/value matches {/imaging\.v1/}
+				exclude
+					archetype_id/value matches {/.*/}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["en"] = <
+			items = <
+				["at0000"] = <
+					description = <"An action related to an investigation by an imaging technique">
+					text = <"Imaging investigation">
+				>
+				["at0001"] = <
+					description = <"Imaging investigation is planned">
+					text = <"Planned">
+				>
+				["at0002"] = <
+					description = <"Imaging investigation is postponed">
+					text = <"Postponed">
+				>
+				["at0003"] = <
+					description = <"Imaging investigation is cancelled">
+					text = <"Cancelled">
+				>
+				["at0004"] = <
+					description = <"Imaging investigation has been requested">
+					text = <"Requested">
+				>
+				["at0005"] = <
+					description = <"Imaging investigation scheduled for specific date and time">
+					text = <"Appointment made">
+				>
+				["at0006"] = <
+					description = <"Appointment for imaging investigation has been altered">
+					text = <"Resheduled">
+				>
+				["at0007"] = <
+					description = <"Imaging investigation has commenced">
+					text = <"Commenced">
+				>
+				["at0008"] = <
+					description = <"The imaging investigation has been completed; awaiting report">
+					text = <"Investigation complete">
+				>
+				["at0009"] = <
+					description = <"The imaging investigation has been reported">
+					text = <"Reported">
+				>
+				["at0010"] = <
+					description = <"The imaging investigation is completed and report processed">
+					text = <"Completed">
+				>
+				["at0011"] = <
+					description = <"The imaging investigation has been reported and communicated to the referer">
+					text = <"Report communicated">
+				>
+				["at0012"] = <
+					description = <"The investigator has established that further imaging is required">
+					text = <"Further imaging required">
+				>
+				["at0013"] = <
+					description = <"The imaging was not able to be completed">
+					text = <"Imaging suspended">
+				>
+				["at0014"] = <
+					description = <"The imaging investigation was not and will not be completed.">
+					text = <"Imaging aborted">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-ACTION.referral.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-ACTION.referral.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-ACTION.referral.v1.adl	(revision 39)
@@ -0,0 +1,351 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-ACTION.referral.v1
+
+concept
+	[at0000]	-- Referral actions
+language
+	original_language = <[ISO_639-1::en]>
+	translations = <
+		["de"] = <
+			language = <[ISO_639-1::de]>
+			author = <
+				["name"] = <"Jasmin Buck, Sebastian Garde">
+				["organisation"] = <"University of Heidelberg, Central Queensland University">
+			>
+		>
+	>
+description
+	original_author = <
+		["name"] = <"Sam Heard">
+		["email"] = <"sam.heard@oceaninformatics.biz">
+	>
+	details = <
+		["de"] = <
+			language = <[ISO_639-1::de]>
+			purpose = <"Zur Dokumentation von Handlungen, die auf eine Behandlungsanfrage an einen zweiten Gesundheitsdienstleister basieren">
+			use = <"">
+			misuse = <"">
+		>
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"For recording actions based on a request for a second provider to provide care">
+			use = <"">
+			misuse = <"">
+		>
+	>
+	lifecycle_state = <"NotSet">
+	other_contributors = <>
+
+definition
+	ACTION[at0000] matches {	-- Referral actions
+		ism_transition matches {
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::524]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0001]}		-- Planned
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::524]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0002]}		-- Communicated
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::524]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0003]}		-- Acknowledged
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::527]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0005]}		-- Postponed
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::528]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0006]}		-- Cancelled
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::529]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0004]}		-- Appointment
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::245]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0008]}		-- Attended
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::245]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0009]}		-- Secondary referral
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::245]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0010]}		-- Secondary referral completed
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::245]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0011]}		-- Return of care
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::530]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0007]}		-- Did not attend
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::531]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0013]}		-- No further contact
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::531]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0014]}		-- Multiple 'did not attend'
+					}
+				}
+			}
+			ISM_TRANSITION matches {
+				current_state matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[openehr::532]}
+					}
+				}
+				careflow_step matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::at0012]}		-- Completed
+					}
+				}
+			}
+		}
+		description matches {
+			allow_archetype ITEM_TREE occurrences matches {0..1} matches {
+				include
+					domain_concept matches {/referral\.v1/}
+				exclude
+					domain_concept matches {/.*/}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["de"] = <
+			items = <
+				["at0000"] = <
+					description = <"Zur Dokumentation von Handlungen, die auf eine Behandlungsanfrage an einen zweiten Gesundheitsdienstleister basieren">
+					text = <"Überweisungshandlungen">
+				>
+				["at0001"] = <
+					description = <"Überweisung wurde geplant, aber keine weiter Handlung hat stattgefunden">
+					text = <"Geplant">
+				>
+				["at0002"] = <
+					description = <"Die Anfrage für die Überweisung wurde übermittelt">
+					text = <"Übermittelt">
+				>
+				["at0003"] = <
+					description = <"Die Überweisungsanfrage wurde vom zweiten Gesundheitsdienstleister bestätigt">
+					text = <"Bestätigt">
+				>
+				["at0004"] = <
+					description = <"Ein Termin mit dem zweiten Gesundheitsdienstleister wurde vereinbart">
+					text = <"Termin">
+				>
+				["at0005"] = <
+					description = <"Die Überweisung wurde verschoben, wird aber in der Zukunft durchgeführt werden">
+					text = <"Verschoben">
+				>
+				["at0006"] = <
+					description = <"Die Überweisung wurde gestrichen">
+					text = <"Gestrichen">
+				>
+				["at0007"] = <
+					description = <"Die Person ist zu ihrem Termin nicht erschienen">
+					text = <"Nicht erschienen">
+				>
+				["at0008"] = <
+					description = <"Die Person suchte den zweiten Gesundheitsdienstleister auf">
+					text = <"Erschienen">
+				>
+				["at0009"] = <
+					description = <"Eine Überweisung zu einem dritten Gesundheisdienstleister wurde organisiert">
+					text = <"Zweite Überweisung">
+				>
+				["at0010"] = <
+					description = <"Die zweite Überweisung ist abgeschlossen">
+					text = <"Zweite Überweisung abgeschlossen">
+				>
+				["at0011"] = <
+					description = <"Die Behandlung wurde zurück zum überweisenden Gesundheitsdienstleister gegeben">
+					text = <"Behandlung zurückgegeben">
+				>
+				["at0012"] = <
+					description = <"Der Überweisungsprozess ist abgeschlossen">
+					text = <"Abgeschlossen">
+				>
+				["at0013"] = <
+					description = <"Der Überweisungsprozess ist nicht abgeschlossen, es besteht aber kein Kontakt zum zweiten Gesundheitsdienstleister mehr">
+					text = <"Kein weiterer Kontakt">
+				>
+				["at0014"] = <
+					description = <"Die Person ist zu wiederholten Gelegenheiten nicht erschienen - es werden keine weiteren Termine vereinbart">
+					text = <"Wiederholtes 'nicht erschienen'">
+				>
+			>
+		>
+		["en"] = <
+			items = <
+				["at0000"] = <
+					description = <"Actions arising based on a request for health care from a second health care provider.">
+					text = <"Referral actions">
+				>
+				["at0001"] = <
+					description = <"Referral has been planned but no further action">
+					text = <"Planned">
+				>
+				["at0002"] = <
+					description = <"The request for referral has been communicated">
+					text = <"Communicated">
+				>
+				["at0003"] = <
+					description = <"The referral request has been acknowledged by second provider">
+					text = <"Acknowledged">
+				>
+				["at0004"] = <
+					description = <"An appointment with the second provider has been arranged">
+					text = <"Appointment">
+				>
+				["at0005"] = <
+					description = <"Referral has been postponed but will be organised in the future">
+					text = <"Postponed">
+				>
+				["at0006"] = <
+					description = <"Referral has been cancelled">
+					text = <"Cancelled">
+				>
+				["at0007"] = <
+					description = <"The person did not attend for their appointment">
+					text = <"Did not attend">
+				>
+				["at0008"] = <
+					description = <"The person attended the second provider">
+					text = <"Attended">
+				>
+				["at0009"] = <
+					description = <"Referral to a third provider has been organised">
+					text = <"Secondary referral">
+				>
+				["at0010"] = <
+					description = <"Secondary referral is complete">
+					text = <"Secondary referral completed">
+				>
+				["at0011"] = <
+					description = <"Care is transferred back to referrer">
+					text = <"Return of care">
+				>
+				["at0012"] = <
+					description = <"Referral process is complete">
+					text = <"Completed">
+				>
+				["at0013"] = <
+					description = <"The referral process was not completed but no further contact with second provider is organised">
+					text = <"No further contact">
+				>
+				["at0014"] = <
+					description = <"The person did not attend on multiple occasions - no further appointments will been sent">
+					text = <"Multiple 'did not attend'">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.auscultation-chest.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.auscultation-chest.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.auscultation-chest.v1.adl	(revision 39)
@@ -0,0 +1,765 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-CLUSTER.auscultation-chest.v1
+specialize
+	openEHR-EHR-CLUSTER.auscultation.v1
+
+concept
+	[at0000.1]	-- Auscultation of the chest
+language
+	original_language = <[ISO_639-1::en]>
+description
+	original_author = <
+		["name"] = <"Sam Heard">
+		["organisation"] = <"Ocean Informatics">
+		["date"] = <"7/04/2007">
+		["email"] = <"sam.heard@oceaninformatics.biz">
+	>
+	details = <
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"To record data found on examination of the chest by auscultation/listening">
+			use = <"To be embedded in an openEHR-EHR-OBSERVATION.exam cluster to express findings determined by auscultation of the chest">
+			keywords = <"auscultate", "listen", "auscultation", "listening", "lungs", "chest", "bruit", "heart", "bowel sounds", "breath sounds", "heart sounds">
+			misuse = <"Not for use in any other context at present">
+		>
+	>
+	lifecycle_state = <"Initial">
+	other_contributors = <"Heather Leslie", ...>
+
+definition
+	CLUSTER[at0000.1] matches {	-- Auscultation of the chest
+		items cardinality matches {0..*; unordered} matches {
+			CLUSTER[at0001] occurrences matches {0..1} matches {	-- Normal Statements
+				items cardinality matches {0..*; unordered} matches {
+					ELEMENT[at0003] occurrences matches {0..*} matches {	-- Normal Statement
+						value matches {
+							DV_CODED_TEXT matches {
+								defining_code matches {
+									[local::
+									at0.1, 	-- Clear
+									at0.2, 	-- No rhonchi
+									at0.3, 	-- No wheeze
+									at0.4, 	-- No crepitations
+									at0.5, 	-- No crackles
+									at0.6, 	-- Two heart sounds, no bruits
+									at0.7, 	-- Two heart sounds, no murmurs
+									at0.8, 	-- Two normal heart sounds
+									at0056, 	-- No murmur
+									at0057, 	-- No bruit
+									at0.9, 	-- Normal first heart sound
+									at0.10, 	-- Normal second heart sound
+									at0.11, 	-- No Bronchial breathing
+									at0.12, 	-- No Amphoric breathing
+									at0.13, 	-- Normal Vocal Resonance
+									at0.14, 	-- No abnormal added sounds
+									at0073, 	-- Normal bowel sounds
+									at0085]	-- No abnormality detected
+								}
+							}
+						}
+					}
+				}
+			}
+			ELEMENT[at0004] occurrences matches {0..1} matches {	-- Clinical Description
+				value matches {
+					DV_TEXT matches {*}
+				}
+			}
+			CLUSTER[at0002] occurrences matches {0..1} matches {	-- Findings
+				items cardinality matches {0..*; unordered} matches {
+					CLUSTER[at0.15] occurrences matches {0..1} matches {	-- Heart sounds and bruits
+						items cardinality matches {0..*; unordered} matches {
+							CLUSTER[at0.16] occurrences matches {0..1} matches {	-- First heart sound
+								items cardinality matches {0..*; unordered} matches {
+									ELEMENT[at0.17] occurrences matches {0..1} matches {	-- Volume
+										value matches {
+											0|[local::at0.18], 	-- Not heard
+											1|[local::at0.19], 	-- Variable
+											2|[local::at0.20], 	-- Soft
+											3|[local::at0.21], 	-- Normal
+											4|[local::at0.22]; 	-- Loud
+											0  	-- assumed value
+										}
+									}
+									ELEMENT[at0.23] occurrences matches {0..1} matches {	-- Splitting
+										value matches {
+											DV_CODED_TEXT matches {
+												defining_code matches {
+													[local::
+													at0.24, 	-- No splitting
+													at0.25, 	-- Physiological splitting
+													at0.26, 	-- Fixed splitting
+													at0.27, 	-- Paradoxical splitting
+													at0.28]	-- Exaggerated splitting
+												}
+											}
+										}
+									}
+									use_node ELEMENT /items[at0004]
+								}
+							}
+							CLUSTER[at0.29] occurrences matches {0..1} matches {	-- Second heart sound
+								items cardinality matches {0..*; unordered} matches {
+									use_node ELEMENT /items[at0002]/items[at0.15]/items[at0.16]/items[at0.17]
+									use_node ELEMENT /items[at0002]/items[at0.15]/items[at0.16]/items[at0.23]
+									use_node ELEMENT /items[at0004]
+								}
+							}
+							CLUSTER[at0.75] occurrences matches {0..*} matches {	-- Added heart sound
+								items cardinality matches {0..*; unordered} matches {
+									ELEMENT[at0.76] occurrences matches {0..*} matches {	-- Specific sound
+										value matches {
+											DV_CODED_TEXT matches {
+												defining_code matches {
+													[local::
+													at0.30, 	-- Opening snap
+													at0.32, 	-- Ejection click
+													at0.33, 	-- Pericardial rub
+													at0.57, 	-- Third heart sound
+													at0.58, 	-- Fourth heart sound
+													at0.65, 	-- Prosthetic valve sound
+													at0.66]	-- Gallop rythm
+												}
+											}
+										}
+									}
+									ELEMENT[at0.43] occurrences matches {0..*} matches {	-- Phase of heart cycle
+										value matches {
+											DV_CODED_TEXT matches {
+												defining_code matches {
+													[local::
+													at0.44, 	-- Continuous
+													at0.45, 	-- Systolic
+													at0.46, 	-- Diastolic
+													at0.47, 	-- Pan-systolic
+													at0.48, 	-- Pan-diastolic
+													at0.49, 	-- Early systolic
+													at0.50, 	-- Mid-Systolic
+													at0.51, 	-- Late Systolic
+													at0.52, 	-- Early Diastolic
+													at0.53, 	-- Mid-diastolic
+													at0.54]	-- Late Diastolic
+												}
+											}
+										}
+									}
+									ELEMENT[at0.59] occurrences matches {0..1} matches {	-- Volume
+										value matches {
+											0|[local::at0.60], 	-- Not audible
+											1|[local::at0.61], 	-- Variable
+											2|[local::at0.62], 	-- Soft
+											3|[local::at0.63], 	-- Moderate
+											4|[local::at0.64]; 	-- Loud
+											0  	-- assumed value
+										}
+									}
+									use_node ELEMENT /items[at0004]
+								}
+							}
+							CLUSTER[at0.31] occurrences matches {0..*} matches {	-- Bruits
+								items cardinality matches {0..*; unordered} matches {
+									ELEMENT[at0.35] occurrences matches {0..1} matches {	-- Maximal Location
+										value matches {
+											DV_TEXT matches {*}
+										}
+									}
+									ELEMENT[at0.36] occurrences matches {0..*} matches {	-- Radiation
+										value matches {
+											DV_TEXT matches {*}
+										}
+									}
+									ELEMENT[at0.34] occurrences matches {0..1} matches {	-- Grading
+										value matches {
+											1|[local::at0.37], 	-- Grade 1
+											2|[local::at0.38], 	-- Grade 2
+											3|[local::at0.39], 	-- Grade 3
+											4|[local::at0.40], 	-- Grade 4
+											5|[local::at0.41], 	-- Grade 5
+											6|[local::at0.42]  	-- Grade 6
+										}
+									}
+									ELEMENT[at0.55] occurrences matches {0..1} matches {	-- Character
+										value matches {
+											DV_TEXT matches {*}
+										}
+									}
+									ELEMENT[at0.56] occurrences matches {0..1} matches {	-- Pitch
+										value matches {
+											DV_TEXT matches {*}
+										}
+									}
+									use_node ELEMENT /items[at0002]/items[at0.15]/items[at0.75]/items[at0.43]
+									use_node ELEMENT /items[at0004]
+								}
+							}
+							ELEMENT[at0.67] occurrences matches {0..1} matches {	-- Drawing
+								value matches {
+									DV_MULTIMEDIA matches {
+										media_type matches {
+											[openEHR::
+											425, 
+											426, 
+											427, 
+											428, 
+											429]
+										}
+									}
+								}
+							}
+							ELEMENT[at0.68] occurrences matches {0..1} matches {	-- Phonogram
+								value matches {
+									DV_MULTIMEDIA matches {
+										media_type matches {
+											[openEHR::
+											409, 
+											410]
+										}
+									}
+								}
+							}
+						}
+					}
+					CLUSTER[at0.69] occurrences matches {0..1} matches {	-- Lung
+						items cardinality matches {0..*; unordered} matches {
+							CLUSTER[at0.70] occurrences matches {0..1} matches {	-- Area
+								items cardinality matches {0..*; unordered} matches {
+									ELEMENT[at0.83] occurrences matches {0..1} matches {	-- Region
+										value matches {
+											DV_TEXT matches {*}
+										}
+									}
+									ELEMENT[at0.72] occurrences matches {0..1} matches {	-- Phase of respiratory cycle
+										value matches {
+											DV_CODED_TEXT matches {
+												defining_code matches {
+													[local::
+													at0.73, 	-- Inspiratory
+													at0.74, 	-- Expiratory
+													at0.77, 	-- Early Inspiratory
+													at0.78, 	-- Late inspiratory
+													at0.79, 	-- Early expiratory
+													at0.80]	-- Late expiratory
+												}
+											}
+										}
+									}
+									ELEMENT[at0.81] occurrences matches {0..1} matches {	-- Findings
+										value matches {
+											DV_TEXT matches {*}
+										}
+									}
+								}
+							}
+							ELEMENT[at0.82] occurrences matches {0..1} matches {	-- Drawing
+								value matches {
+									DV_MULTIMEDIA matches {
+										media_type matches {
+											[openEHR::
+											425, 
+											426, 
+											427, 
+											428, 
+											429]
+										}
+									}
+								}
+							}
+							use_node ELEMENT /items[at0004]
+						}
+					}
+					CLUSTER[at0009] occurrences matches {0..1} matches {	-- Bowel sounds
+						items cardinality matches {0..*; unordered} matches {
+							ELEMENT[at0074] occurrences matches {0..*} matches {	-- Specific Findings
+								value matches {
+									DV_CODED_TEXT matches {
+										defining_code matches {
+											[local::
+											at0078, 	-- Absent bowel sounds
+											at0079, 	-- Decreased bowel sounds
+											at0080, 	-- Increased bowel sounds
+											at0081]	-- Tinkling bowel sounds
+										}
+									}
+								}
+							}
+							use_node ELEMENT /items[at0004]
+						}
+					}
+					CLUSTER[at0010] occurrences matches {0..1} matches {	-- Vessel bruit
+						items cardinality matches {0..*; unordered} matches {
+							ELEMENT[at0088] matches {	-- Vessel name
+								value matches {
+									DV_TEXT matches {*}
+								}
+							}
+							ELEMENT[at0030] occurrences matches {0..1} matches {	-- Maximal Location
+								value matches {
+									DV_TEXT matches {*}
+								}
+							}
+							ELEMENT[at0091] occurrences matches {0..1} matches {	-- Description
+								value matches {
+									DV_TEXT matches {*}
+								}
+							}
+						}
+					}
+					CLUSTER[at0089] occurrences matches {0..1} matches {	-- Other sounds
+						items cardinality matches {0..*; unordered} matches {
+							ELEMENT[at0090] matches {	-- Description
+								value matches {
+									DV_TEXT matches {*}
+								}
+							}
+							use_node ELEMENT /items[at0002]/items[at0010]/items[at0030]
+						}
+					}
+					CLUSTER[at0086] occurrences matches {0..*} matches {	-- Localised auscultation
+						items cardinality matches {0..*; unordered} matches {
+							ELEMENT[at0087] matches {	-- Site or region
+								value matches {
+									DV_TEXT matches {*}
+								}
+							}
+							allow_archetype CLUSTER occurrences matches {0..1} matches {
+								include
+									archetype_id/value matches {/auscultation\.v1/}
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["en"] = <
+			items = <
+				["at0.1"] = <
+					description = <"No abnormal breath sounds">
+					text = <"Clear">
+				>
+				["at0.10"] = <
+					description = <"*">
+					text = <"Normal second heart sound">
+				>
+				["at0.11"] = <
+					description = <"*">
+					text = <"No Bronchial breathing">
+				>
+				["at0.12"] = <
+					description = <"*">
+					text = <"No Amphoric breathing">
+				>
+				["at0.13"] = <
+					description = <"*">
+					text = <"Normal Vocal Resonance">
+				>
+				["at0.14"] = <
+					description = <"*">
+					text = <"No abnormal added sounds">
+				>
+				["at0.15"] = <
+					description = <"*">
+					text = <"Heart sounds and bruits">
+				>
+				["at0.16"] = <
+					description = <"Findings about the first heart sound">
+					text = <"First heart sound">
+				>
+				["at0.17"] = <
+					description = <"The volume of the first heart sound">
+					text = <"Volume">
+				>
+				["at0.18"] = <
+					description = <"The first heart sound is not heard">
+					text = <"Not heard">
+				>
+				["at0.19"] = <
+					description = <"The sound is variable in volume">
+					text = <"Variable">
+				>
+				["at0.2"] = <
+					description = <"No high or low pitched wheezes">
+					text = <"No rhonchi">
+				>
+				["at0.20"] = <
+					description = <"The sound is softer than normal">
+					text = <"Soft">
+				>
+				["at0.21"] = <
+					description = <"The sound is of normal volume">
+					text = <"Normal">
+				>
+				["at0.22"] = <
+					description = <"The volume is increased">
+					text = <"Loud">
+				>
+				["at0.23"] = <
+					description = <"Splitting of the heart sound">
+					text = <"Splitting">
+				>
+				["at0.24"] = <
+					description = <"The heart sound is not split">
+					text = <"No splitting">
+				>
+				["at0.25"] = <
+					description = <"The heart sound is split due to physiological changes">
+					text = <"Physiological splitting">
+				>
+				["at0.26"] = <
+					description = <"The heart sound is always split">
+					text = <"Fixed splitting">
+				>
+				["at0.27"] = <
+					description = <"The variable splitting is not physiological">
+					text = <"Paradoxical splitting">
+				>
+				["at0.28"] = <
+					description = <"The timing of the splitting is physiological but it is more obvious than normal">
+					text = <"Exaggerated splitting">
+				>
+				["at0.29"] = <
+					description = <"Findings about the second heart sound">
+					text = <"Second heart sound">
+				>
+				["at0.3"] = <
+					description = <"No wheezing noises">
+					text = <"No wheeze">
+				>
+				["at0.30"] = <
+					description = <"Opening sound of the mitral valve">
+					text = <"Opening snap">
+				>
+				["at0.31"] = <
+					description = <"Group of findings about auscultation of the heart">
+					text = <"Bruits">
+				>
+				["at0.32"] = <
+					description = <"Systolic click when the heart contracts">
+					text = <"Ejection click">
+				>
+				["at0.33"] = <
+					description = <"Rubbing noise during contractions on the pericardium">
+					text = <"Pericardial rub">
+				>
+				["at0.34"] = <
+					description = <"Grading of the loudness of a heart murmur">
+					text = <"Grading">
+				>
+				["at0.35"] = <
+					description = <"Site where finding is heard maximally">
+					text = <"Maximal Location">
+				>
+				["at0.36"] = <
+					description = <"Sites where finding is heard in addition to maximal site">
+					text = <"Radiation">
+				>
+				["at0.37"] = <
+					description = <"very faint to recognize the murmur even after listening for a while">
+					text = <"Grade 1">
+				>
+				["at0.38"] = <
+					description = <"faint, but easy to recognize the murmur right after the stethoscope is placed on the chest">
+					text = <"Grade 2">
+				>
+				["at0.39"] = <
+					description = <"intermediate loudness between II/VI -IV/VI">
+					text = <"Grade 3">
+				>
+				["at0.4"] = <
+					description = <"No high pitched crackling sounds">
+					text = <"No crepitations">
+				>
+				["at0.40"] = <
+					description = <"with loud murmur (palpable thrill)">
+					text = <"Grade 4">
+				>
+				["at0.41"] = <
+					description = <"very loud, but you can not hear the murmur, if the stethoscope is away from the chest wall">
+					text = <"Grade 5">
+				>
+				["at0.42"] = <
+					description = <"the loudest murmur you can hear, even if the stethoscope is off the chest wall">
+					text = <"Grade 6">
+				>
+				["at0.43"] = <
+					description = <"The timing in relation to the contraction of the heart">
+					text = <"Phase of heart cycle">
+				>
+				["at0.44"] = <
+					description = <"*">
+					text = <"Continuous">
+				>
+				["at0.45"] = <
+					description = <"*">
+					text = <"Systolic">
+				>
+				["at0.46"] = <
+					description = <"*">
+					text = <"Diastolic">
+				>
+				["at0.47"] = <
+					description = <"*">
+					text = <"Pan-systolic">
+				>
+				["at0.48"] = <
+					description = <"*">
+					text = <"Pan-diastolic">
+				>
+				["at0.49"] = <
+					description = <"*">
+					text = <"Early systolic">
+				>
+				["at0.5"] = <
+					description = <"No high pitched crackling sounds">
+					text = <"No crackles">
+				>
+				["at0.50"] = <
+					description = <"*">
+					text = <"Mid-Systolic">
+				>
+				["at0.51"] = <
+					description = <"*">
+					text = <"Late Systolic">
+				>
+				["at0.52"] = <
+					description = <"*">
+					text = <"Early Diastolic">
+				>
+				["at0.53"] = <
+					description = <"*">
+					text = <"Mid-diastolic">
+				>
+				["at0.54"] = <
+					description = <"*">
+					text = <"Late Diastolic">
+				>
+				["at0.55"] = <
+					description = <"The character of the sound">
+					text = <"Character">
+				>
+				["at0.56"] = <
+					description = <"The pitch of the sound">
+					text = <"Pitch">
+				>
+				["at0.57"] = <
+					description = <"A heart sound in early diastole">
+					text = <"Third heart sound">
+				>
+				["at0.58"] = <
+					description = <"A heart sound in late diastole">
+					text = <"Fourth heart sound">
+				>
+				["at0.59"] = <
+					description = <"The volume of the sound">
+					text = <"Volume">
+				>
+				["at0.6"] = <
+					description = <"Normal heart sounds">
+					text = <"Two heart sounds, no bruits">
+				>
+				["at0.60"] = <
+					description = <"The sound is not audible">
+					text = <"Not audible">
+				>
+				["at0.61"] = <
+					description = <"The sound is variable">
+					text = <"Variable">
+				>
+				["at0.62"] = <
+					description = <"The sound is soft">
+					text = <"Soft">
+				>
+				["at0.63"] = <
+					description = <"The sound is at about the expected level the first heart sound">
+					text = <"Moderate">
+				>
+				["at0.64"] = <
+					description = <"The sound is louder than the first heart sound">
+					text = <"Loud">
+				>
+				["at0.65"] = <
+					description = <"Sound due to a prosthetic heart valve">
+					text = <"Prosthetic valve sound">
+				>
+				["at0.66"] = <
+					description = <"Audible rythm similar to a horse galloping due to added heart sounds">
+					text = <"Gallop rythm">
+				>
+				["at0.67"] = <
+					description = <"Drawing of the sounds of the heart">
+					text = <"Drawing">
+				>
+				["at0.68"] = <
+					description = <"Recording of the heart sounds">
+					text = <"Phonogram">
+				>
+				["at0.69"] = <
+					description = <"Group of findings about auscultation of the lung">
+					text = <"Lung">
+				>
+				["at0.7"] = <
+					description = <"Normal heart sounds">
+					text = <"Two heart sounds, no murmurs">
+				>
+				["at0.70"] = <
+					description = <"*">
+					text = <"Area">
+				>
+				["at0.72"] = <
+					description = <"The timing of the sounds in relation to breathing">
+					text = <"Phase of respiratory cycle">
+				>
+				["at0.73"] = <
+					description = <"During inspiration">
+					text = <"Inspiratory">
+				>
+				["at0.74"] = <
+					description = <"During expiration">
+					text = <"Expiratory">
+				>
+				["at0.75"] = <
+					description = <"A grouping of discription of one or more added heart sounds">
+					text = <"Added heart sound">
+				>
+				["at0.76"] = <
+					description = <"Specific auscultatory findings related to examination of the heart">
+					text = <"Specific sound">
+				>
+				["at0.77"] = <
+					description = <"Soon after inspiration begins">
+					text = <"Early Inspiratory">
+				>
+				["at0.78"] = <
+					description = <"At the final stages of inspiration">
+					text = <"Late inspiratory">
+				>
+				["at0.79"] = <
+					description = <"Soon after expiration begins">
+					text = <"Early expiratory">
+				>
+				["at0.8"] = <
+					description = <"*">
+					text = <"Two normal heart sounds">
+				>
+				["at0.80"] = <
+					description = <"At the late stages of expiration">
+					text = <"Late expiratory">
+				>
+				["at0.81"] = <
+					description = <"Specific auscultatory findings related to examination of the lungs">
+					text = <"Findings">
+				>
+				["at0.82"] = <
+					description = <"Drawing of the breath sounds">
+					text = <"Drawing">
+				>
+				["at0.83"] = <
+					description = <"The region to which the findings relate">
+					text = <"Region">
+				>
+				["at0.9"] = <
+					description = <"*">
+					text = <"Normal first heart sound">
+				>
+				["at0000"] = <
+					description = <"Findings on Auscultation">
+					text = <"Auscultation">
+				>
+				["at0000.1"] = <
+					description = <"Findings on auscultation of the chest">
+					text = <"Auscultation of the chest">
+				>
+				["at0001"] = <
+					description = <"A group of statements about the normality of auscultation">
+					text = <"Normal Statements">
+				>
+				["at0002"] = <
+					description = <"Findings on auscultation">
+					text = <"Findings">
+				>
+				["at0003"] = <
+					description = <"Statements about the normality of the auscultation">
+					text = <"Normal Statement">
+				>
+				["at0004"] = <
+					description = <"Detailed clinical description of the findings on auscultation">
+					text = <"Clinical Description">
+				>
+				["at0009"] = <
+					description = <"Group of findings about auscultation of the bowel">
+					text = <"Bowel sounds">
+				>
+				["at0010"] = <
+					description = <"Group of findings about auscultation of a major blood vessel">
+					text = <"Vessel bruit">
+				>
+				["at0030"] = <
+					description = <"Site where finding is heard maximally">
+					text = <"Maximal Location">
+				>
+				["at0056"] = <
+					description = <"No murmur is heard">
+					text = <"No murmur">
+				>
+				["at0057"] = <
+					description = <"No bruit is heard">
+					text = <"No bruit">
+				>
+				["at0073"] = <
+					description = <"Bowel sounds are normal in intensity and character">
+					text = <"Normal bowel sounds">
+				>
+				["at0074"] = <
+					description = <"Specific auscultatory findings related to examination of the bowels">
+					text = <"Specific Findings">
+				>
+				["at0078"] = <
+					description = <"No bowel sounds can be heard">
+					text = <"Absent bowel sounds">
+				>
+				["at0079"] = <
+					description = <"Bowel sounds are less than normal">
+					text = <"Decreased bowel sounds">
+				>
+				["at0080"] = <
+					description = <"Bowel sounds are more intense than normal">
+					text = <"Increased bowel sounds">
+				>
+				["at0081"] = <
+					description = <"High pitched and very frequent bowel sounds can be heard">
+					text = <"Tinkling bowel sounds">
+				>
+				["at0085"] = <
+					description = <"Nothing abnormal on auscultation">
+					text = <"No abnormality detected">
+				>
+				["at0086"] = <
+					description = <"Auscultation in a particular site">
+					text = <"Localised auscultation">
+				>
+				["at0087"] = <
+					description = <"The site of the localised findings">
+					text = <"Site or region">
+				>
+				["at0088"] = <
+					description = <"The name of the vessel to which is being listened">
+					text = <"Vessel name">
+				>
+				["at0089"] = <
+					description = <"Recording of sounds of a different nature">
+					text = <"Other sounds">
+				>
+				["at0090"] = <
+					description = <"Description of other sounds">
+					text = <"Description">
+				>
+				["at0091"] = <
+					description = <"Description of the bruit">
+					text = <"Description">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.auscultation.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.auscultation.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.auscultation.v1.adl	(revision 39)
@@ -0,0 +1,217 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-CLUSTER.auscultation.v1
+
+concept
+	[at0000]	-- Auscultation
+language
+	original_language = <[ISO_639-1::en]>
+description
+	original_author = <
+		["name"] = <"Sam Heard">
+		["organisation"] = <"Ocean Informatics">
+		["date"] = <"7/04/2007">
+		["email"] = <"sam.heard@oceaninformatics.biz">
+	>
+	details = <
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"To record data found on examination by auscultation/listening">
+			use = <"To be embedded in an openEHR-EHR-OBSERVATION.exam cluster to express findings determined by auscultation">
+			keywords = <"auscultate", "listen", "auscultation", "listening", "bruit", "bowel sounds", "sounds">
+			misuse = <"Not for use in any other context at present">
+		>
+	>
+	lifecycle_state = <"OrganisationDraft">
+	other_contributors = <"Heather Leslie", ...>
+
+definition
+	CLUSTER[at0000] matches {	-- Auscultation
+		items cardinality matches {0..*; unordered} matches {
+			CLUSTER[at0001] occurrences matches {0..1} matches {	-- Normal Statements
+				items cardinality matches {0..*; unordered} matches {
+					ELEMENT[at0003] occurrences matches {0..*} matches {	-- Normal Statement
+						value matches {
+							DV_CODED_TEXT matches {
+								defining_code matches {
+									[local::
+									at0056, 	-- No murmur
+									at0057, 	-- No bruit
+									at0073, 	-- Normal bowel sounds
+									at0085]	-- No abnormality detected
+								}
+							}
+						}
+					}
+				}
+			}
+			ELEMENT[at0004] occurrences matches {0..1} matches {	-- Clinical Description
+				value matches {
+					DV_TEXT matches {*}
+				}
+			}
+			CLUSTER[at0002] occurrences matches {0..1} matches {	-- Findings
+				items cardinality matches {0..*; unordered} matches {
+					CLUSTER[at0009] occurrences matches {0..1} matches {	-- Bowel sounds
+						items cardinality matches {0..*; unordered} matches {
+							ELEMENT[at0074] occurrences matches {0..*} matches {	-- Specific Findings
+								value matches {
+									DV_CODED_TEXT matches {
+										defining_code matches {
+											[local::
+											at0078, 	-- Absent bowel sounds
+											at0079, 	-- Decreased bowel sounds
+											at0080, 	-- Increased bowel sounds
+											at0081]	-- Tinkling bowel sounds
+										}
+									}
+								}
+							}
+							use_node ELEMENT /items[at0004]
+						}
+					}
+					CLUSTER[at0010] occurrences matches {0..1} matches {	-- Vessel bruit
+						items cardinality matches {0..*; unordered} matches {
+							ELEMENT[at0088] matches {	-- Vessel name
+								value matches {
+									DV_TEXT matches {*}
+								}
+							}
+							ELEMENT[at0030] occurrences matches {0..1} matches {	-- Maximal Location
+								value matches {
+									DV_TEXT matches {*}
+								}
+							}
+							ELEMENT[at0091] occurrences matches {0..1} matches {	-- Description
+								value matches {
+									DV_TEXT matches {*}
+								}
+							}
+						}
+					}
+					CLUSTER[at0089] occurrences matches {0..1} matches {	-- Other sounds
+						items cardinality matches {0..*; unordered} matches {
+							ELEMENT[at0090] matches {	-- Description
+								value matches {
+									DV_TEXT matches {*}
+								}
+							}
+							use_node ELEMENT /items[at0002]/items[at0010]/items[at0030]
+						}
+					}
+					CLUSTER[at0086] occurrences matches {0..*} matches {	-- Localised auscultation
+						items cardinality matches {0..*; unordered} matches {
+							ELEMENT[at0087] matches {	-- Site or region
+								value matches {
+									DV_TEXT matches {*}
+								}
+							}
+							allow_archetype CLUSTER occurrences matches {0..1} matches {
+								include
+									archetype_id/value matches {/auscultation\.v1/}
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["en"] = <
+			items = <
+				["at0000"] = <
+					description = <"Findings on Auscultation">
+					text = <"Auscultation">
+				>
+				["at0001"] = <
+					description = <"A group of statements about the normality of auscultation">
+					text = <"Normal Statements">
+				>
+				["at0002"] = <
+					description = <"Findings on auscultation">
+					text = <"Findings">
+				>
+				["at0003"] = <
+					description = <"Statements about the normality of the auscultation">
+					text = <"Normal Statement">
+				>
+				["at0004"] = <
+					description = <"Detailed clinical description of the findings on auscultation">
+					text = <"Clinical Description">
+				>
+				["at0009"] = <
+					description = <"Group of findings about auscultation of the bowel">
+					text = <"Bowel sounds">
+				>
+				["at0010"] = <
+					description = <"Group of findings about auscultation of a major blood vessel">
+					text = <"Vessel bruit">
+				>
+				["at0030"] = <
+					description = <"Site where finding is heard maximally">
+					text = <"Maximal Location">
+				>
+				["at0056"] = <
+					description = <"No murmur is heard">
+					text = <"No murmur">
+				>
+				["at0057"] = <
+					description = <"No bruit is heard">
+					text = <"No bruit">
+				>
+				["at0073"] = <
+					description = <"Bowel sounds are normal in intensity and character">
+					text = <"Normal bowel sounds">
+				>
+				["at0074"] = <
+					description = <"Specific auscultatory findings related to examination of the bowels">
+					text = <"Specific Findings">
+				>
+				["at0078"] = <
+					description = <"No bowel sounds can be heard">
+					text = <"Absent bowel sounds">
+				>
+				["at0079"] = <
+					description = <"Bowel sounds are less than normal">
+					text = <"Decreased bowel sounds">
+				>
+				["at0080"] = <
+					description = <"Bowel sounds are more intense than normal">
+					text = <"Increased bowel sounds">
+				>
+				["at0081"] = <
+					description = <"High pitched and very frequent bowel sounds can be heard">
+					text = <"Tinkling bowel sounds">
+				>
+				["at0085"] = <
+					description = <"Nothing abnormal on auscultation">
+					text = <"No abnormality detected">
+				>
+				["at0086"] = <
+					description = <"Auscultation in a particular site">
+					text = <"Localised auscultation">
+				>
+				["at0087"] = <
+					description = <"The site of the localised findings">
+					text = <"Site or region">
+				>
+				["at0088"] = <
+					description = <"The name of the vessel to which is being listened">
+					text = <"Vessel name">
+				>
+				["at0089"] = <
+					description = <"Recording of sounds of a different nature">
+					text = <"Other sounds">
+				>
+				["at0090"] = <
+					description = <"Description of other sounds">
+					text = <"Description">
+				>
+				["at0091"] = <
+					description = <"Description of the bruit">
+					text = <"Description">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.dimensions-circumference.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.dimensions-circumference.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.dimensions-circumference.v1.adl	(revision 39)
@@ -0,0 +1,134 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-CLUSTER.dimensions-circumference.v1
+specialize
+	openEHR-EHR-CLUSTER.dimensions.v1
+
+concept
+	[at0000.1]	-- Circumference
+language
+	original_language = <[ISO_639-1::en]>
+	translations = <
+		["de"] = <
+			language = <[ISO_639-1::de]>
+			author = <
+				["name"] = <"Jasmin Buck, Sebastian Garde">
+				["organisation"] = <"University of Heidelberg, Central Queensland University">
+			>
+		>
+	>
+description
+	original_author = <
+		["name"] = <"unknown">
+	>
+	details = <
+		["de"] = <
+			language = <[ISO_639-1::de]>
+			purpose = <"Zur Beschreibung der Umfangs eines betrachteten Körperteils.">
+			use = <"Zur Messung des Umfangs von Körperteilen, wie Taille oder Kopfumfang">
+			keywords = <"Umfang", ...>
+			misuse = <"">
+		>
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"To describe the circumference of a body part examined">
+			use = <"For use when measuring the circumference of body parts such as waist, head circumference">
+			keywords = <"circumference", ...>
+			misuse = <"">
+		>
+	>
+	lifecycle_state = <"OrganisationDraft">
+	other_contributors = <>
+
+definition
+	CLUSTER[at0000.1] matches {	-- Circumference
+		items cardinality matches {0..*; unordered} matches {
+			ELEMENT[at0001] occurrences matches {0..1} matches {	-- Circumference
+				value matches {
+					C_DV_QUANTITY <
+						property = <[openehr::122]>
+						list = <
+							["1"] = <
+								units = <"cm">
+							>
+						>
+					>
+				}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["de"] = <
+			items = <
+				["at0000"] = <
+					description = <"Die Ausmaße eines betrachteten Teils">
+					text = <"Ausmaße">
+				>
+				["at0000.1"] = <
+					description = <"Der Umfang des betrachteten Körperteils">
+					text = <"Umfang">
+				>
+				["at0001"] = <
+					description = <"Der Umfang des betrachteten Teils">
+					text = <"Umfang">
+				>
+				["at0002"] = <
+					description = <"Die Länge des betrachteten Teils (longidudinale Körperachse)">
+					text = <"Länge">
+				>
+				["at0003"] = <
+					description = <"Die Breite oder Weite (transversale Körperachse)">
+					text = <"Breite">
+				>
+				["at0004"] = <
+					description = <"Die Tiefe des betrachteten Teils (dorsal-ventrale Körperachse)">
+					text = <"Tiefe">
+				>
+				["at0005"] = <
+					description = <"Die Fläche des betrachteten Teils">
+					text = <"Fläche">
+				>
+				["at0006"] = <
+					description = <"Das Volumen des betrachteten Teils">
+					text = <"Volumen">
+				>
+			>
+		>
+		["en"] = <
+			items = <
+				["at0000"] = <
+					description = <"The physical dimensions of a part examined">
+					text = <"Dimensions">
+				>
+				["at0000.1"] = <
+					description = <"The circumference of the body part examined">
+					text = <"Circumference">
+				>
+				["at0001"] = <
+					description = <"The circumference of the part examined">
+					text = <"Circumference">
+				>
+				["at0002"] = <
+					description = <"The length of the part examined (longitudinal anatomical axis)">
+					text = <"Length">
+				>
+				["at0003"] = <
+					description = <"The width or breadth (transverse anatomical axis)">
+					text = <"Breadth">
+				>
+				["at0004"] = <
+					description = <"The depth of the part examined (dorso-ventral anatomical axis)">
+					text = <"Depth">
+				>
+				["at0005"] = <
+					description = <"The area of the part examined">
+					text = <"Area">
+				>
+				["at0006"] = <
+					description = <"The volume of the part examined">
+					text = <"Volume">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.dimensions.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.dimensions.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.dimensions.v1.adl	(revision 39)
@@ -0,0 +1,241 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-CLUSTER.dimensions.v1
+
+concept
+	[at0000]	-- Dimensions
+language
+	original_language = <[ISO_639-1::en]>
+	translations = <
+		["de"] = <
+			language = <[ISO_639-1::de]>
+			author = <
+				["name"] = <"Jasmin Buck, Sebastian Garde">
+				["organisation"] = <"University of Heidelberg, Central Queensland University">
+			>
+		>
+	>
+description
+	original_author = <
+		["name"] = <"unknown">
+	>
+	details = <
+		["de"] = <
+			language = <[ISO_639-1::de]>
+			purpose = <"Zur Beschreibung der Ausmaße eines betrachteten Teils.">
+			use = <"">
+			keywords = <"Größe", "Volumen">
+			misuse = <"">
+		>
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"To describe the dimensions of a part examined or viewed">
+			use = <"">
+			keywords = <"size", "volume">
+			misuse = <"">
+		>
+	>
+	lifecycle_state = <"Initial">
+	other_contributors = <>
+
+definition
+	CLUSTER[at0000] matches {	-- Dimensions
+		items cardinality matches {0..*; unordered} matches {
+			ELEMENT[at0001] occurrences matches {0..1} matches {	-- Circumference
+				value matches {
+					C_DV_QUANTITY <
+						property = <[openehr::122]>
+						list = <
+							["1"] = <
+								units = <"µm">
+							>
+							["2"] = <
+								units = <"mm">
+							>
+							["3"] = <
+								units = <"cm">
+							>
+							["4"] = <
+								units = <"m">
+							>
+						>
+					>
+				}
+			}
+			ELEMENT[at0002] occurrences matches {0..1} matches {	-- Length
+				value matches {
+					C_DV_QUANTITY <
+						property = <[openehr::122]>
+						list = <
+							["1"] = <
+								units = <"µm">
+							>
+							["2"] = <
+								units = <"mm">
+							>
+							["3"] = <
+								units = <"cm">
+							>
+							["4"] = <
+								units = <"m">
+							>
+						>
+					>
+				}
+			}
+			ELEMENT[at0003] occurrences matches {0..1} matches {	-- Breadth
+				value matches {
+					C_DV_QUANTITY <
+						property = <[openehr::122]>
+						list = <
+							["1"] = <
+								units = <"µm">
+							>
+							["2"] = <
+								units = <"mm">
+							>
+							["3"] = <
+								units = <"cm">
+							>
+							["4"] = <
+								units = <"m">
+							>
+						>
+					>
+				}
+			}
+			ELEMENT[at0004] occurrences matches {0..1} matches {	-- Depth
+				value matches {
+					C_DV_QUANTITY <
+						property = <[openehr::122]>
+						list = <
+							["1"] = <
+								units = <"µm">
+							>
+							["2"] = <
+								units = <"mm">
+							>
+							["3"] = <
+								units = <"cm">
+							>
+							["4"] = <
+								units = <"m">
+							>
+						>
+					>
+				}
+			}
+			ELEMENT[at0005] occurrences matches {0..1} matches {	-- Area
+				value matches {
+					C_DV_QUANTITY <
+						property = <[openehr::335]>
+						list = <
+							["1"] = <
+								units = <"mm2">
+							>
+							["2"] = <
+								units = <"cm2">
+							>
+							["3"] = <
+								units = <"% body">
+							>
+							["4"] = <
+								units = <"% head, neck">
+							>
+							["5"] = <
+								units = <"% lower limb">
+							>
+							["6"] = <
+								units = <"% trunk">
+							>
+							["7"] = <
+								units = <"% upper limb">
+							>
+						>
+					>
+				}
+			}
+			ELEMENT[at0006] occurrences matches {0..1} matches {	-- Volume
+				value matches {
+					C_DV_QUANTITY <
+						property = <[openehr::129]>
+						list = <
+							["1"] = <
+								units = <"mm3">
+							>
+							["2"] = <
+								units = <"ml">
+							>
+						>
+					>
+				}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["de"] = <
+			items = <
+				["at0000"] = <
+					description = <"Die Ausmaße eines betrachteten Teils">
+					text = <"Ausmaße">
+				>
+				["at0001"] = <
+					description = <"Der Umfang des betrachteten Teils">
+					text = <"Umfang">
+				>
+				["at0002"] = <
+					description = <"Die Länge des betrachteten Teils (longidudinale Körperachse)">
+					text = <"Länge">
+				>
+				["at0003"] = <
+					description = <"Die Breite oder Weite (transversale Körperachse)">
+					text = <"Breite">
+				>
+				["at0004"] = <
+					description = <"Die Tiefe des betrachteten Teils (dorsal-ventrale Körperachse)">
+					text = <"Tiefe">
+				>
+				["at0005"] = <
+					description = <"Die Fläche des betrachteten Teils">
+					text = <"Fläche">
+				>
+				["at0006"] = <
+					description = <"Das Volumen des betrachteten Teils">
+					text = <"Volumen">
+				>
+			>
+		>
+		["en"] = <
+			items = <
+				["at0000"] = <
+					description = <"The physical dimensions of a part examined">
+					text = <"Dimensions">
+				>
+				["at0001"] = <
+					description = <"The circumference of the part examined">
+					text = <"Circumference">
+				>
+				["at0002"] = <
+					description = <"The length of the part examined (longitudinal anatomical axis)">
+					text = <"Length">
+				>
+				["at0003"] = <
+					description = <"The width or breadth (transverse anatomical axis)">
+					text = <"Breadth">
+				>
+				["at0004"] = <
+					description = <"The depth of the part examined (dorso-ventral anatomical axis)">
+					text = <"Depth">
+				>
+				["at0005"] = <
+					description = <"The area of the part examined">
+					text = <"Area">
+				>
+				["at0006"] = <
+					description = <"The volume of the part examined">
+					text = <"Volume">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-abdomen.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-abdomen.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-abdomen.v1.adl	(revision 39)
@@ -0,0 +1,321 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-CLUSTER.exam-abdomen.v1
+specialize
+	openEHR-EHR-CLUSTER.exam.v1
+
+concept
+	[at0000.1]	-- Examination of the abdomen
+language
+	original_language = <[ISO_639-1::en]>
+description
+	original_author = <
+		["name"] = <"Heather Leslie">
+		["organisation"] = <"Ocean Informatics">
+		["date"] = <"11/04/2007">
+		["email"] = <"heather.leslie@oceaninformatics.biz">
+	>
+	details = <
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"A cluster for recording findings on physical examination of the abdomen">
+			use = <"">
+			keywords = <"examination", "physical">
+			misuse = <"">
+		>
+	>
+	lifecycle_state = <"Initial">
+	other_contributors = <>
+
+definition
+	CLUSTER[at0000.1] matches {	-- Examination of the abdomen
+		items cardinality matches {0..*; unordered} matches {
+			CLUSTER[at0004] occurrences matches {0..1} matches {	-- Normal statements
+				items cardinality matches {0..*; unordered} matches {
+					ELEMENT[at0005] occurrences matches {0..*} matches {	-- Normal statement
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+				}
+			}
+			ELEMENT[at0002] occurrences matches {0..1} matches {	-- Clinical description
+				value matches {
+					DV_TEXT matches {*}
+				}
+			}
+			CLUSTER[at0008] occurrences matches {0..1} matches {	-- Findings
+				items cardinality matches {0..*; unordered} matches {
+					CLUSTER[at0.2] occurrences matches {0..1} matches {	-- Abdominal wall
+						items cardinality matches {0..*; unordered} matches {
+							ELEMENT[at0.3] occurrences matches {0..1} matches {	-- Description
+								value matches {
+									DV_CODED_TEXT matches {
+										defining_code matches {[local::]}
+									}
+								}
+							}
+							allow_archetype CLUSTER occurrences matches {0..1} matches {
+								include
+									archetype_id/value matches {/inspection\.v1draft/}
+									archetype_id/value matches {/exam-generic-mass\.v1/}
+									archetype_id/value matches {/palpation\.v1/}
+									archetype_id/value matches {/inspection-skin\.v1draft/}
+									archetype_id/value matches {/exam-generic-lymphnode\.v1/}
+							}
+						}
+					}
+					CLUSTER[at0.9] occurrences matches {0..1} matches {	-- Abdominal Region
+						items cardinality matches {0..*; unordered} matches {
+							ELEMENT[at0.10] occurrences matches {0..1} matches {	-- Region
+								value matches {
+									DV_CODED_TEXT matches {
+										defining_code matches {
+											[local::
+											at0.11, 	-- Left upper quadrant
+											at0.12, 	-- Epigastrium
+											at0.16, 	-- Left upper quadrant
+											at0.17, 	-- Right loin
+											at0.18, 	-- Central/peri-umbilical
+											at0.19, 	-- Left loin
+											at0.20, 	-- Right iliac fossa
+											at0.21]	-- Left iliac fossa
+										}
+									}
+								}
+							}
+							allow_archetype CLUSTER occurrences matches {0..1} matches {
+								include
+									archetype_id/value matches {/palpation\.v1/}
+									archetype_id/value matches {/percussion\.v1/}
+							}
+							use_node ELEMENT /items[at0008]/items[at0.2]/items[at0.3]
+						}
+					}
+					CLUSTER[at0.5] occurrences matches {0..1} matches {	-- Abdomen Contents
+						items cardinality matches {0..*; unordered} matches {
+							allow_archetype CLUSTER occurrences matches {0..1} matches {
+								include
+									archetype_id/value matches {/exam-generic-mass\.v1/}
+									archetype_id/value matches {/exam-generic-lympnode\.v1/}
+									archetype_id/value matches {/exam-generic\.v1/}
+									archetype_id/value matches {/exam\.v1/}
+									archetype_id/value matches {/auscultation\.v1/}
+							}
+							CLUSTER[at0.13] occurrences matches {0..1} matches {	-- Organs
+								items cardinality matches {0..*; unordered} matches {
+									CLUSTER[at0.14] occurrences matches {0..1} matches {	-- Liver
+										items cardinality matches {0..*; unordered} matches {
+											allow_archetype CLUSTER occurrences matches {0..1} matches {
+												include
+													archetype_id/value matches {/palpation\.v1/}
+													archetype_id/value matches {/percussion\.v1/}
+													archetype_id/value matches {/dimensions\.v1/}
+													archetype_id/value matches {/relative_position_abdomen\.v1draft/}
+													archetype_id/value matches {/size\.v1/}
+													archetype_id/value matches {/exam-generic-mass\.v1/}
+											}
+											use_node ELEMENT /items[at0008]/items[at0.2]/items[at0.3]
+										}
+									}
+									CLUSTER[at0.7] occurrences matches {0..1} matches {	-- Spleen
+										items cardinality matches {0..*; unordered} matches {
+											allow_archetype CLUSTER occurrences matches {0..1} matches {
+												include
+													archetype_id/value matches {/dimensions\.v1/}
+													archetype_id/value matches {/exam-generic-mass\.v1/}
+													archetype_id/value matches {/exam-generic\.v1/}
+													archetype_id/value matches {/exam\.v1/}
+													archetype_id/value matches {/palpation\.v1/}
+													archetype_id/value matches {/percussion\.v1/}
+													archetype_id/value matches {/relative_position_abdomen\.v1draft/}
+													archetype_id/value matches {/size\.v1/}
+											}
+											use_node ELEMENT /items[at0008]/items[at0.2]/items[at0.3]
+										}
+									}
+									CLUSTER[at0.8] occurrences matches {0..1} matches {	-- Kidney
+										items cardinality matches {0..*; unordered} matches {
+											allow_archetype CLUSTER occurrences matches {0..1} matches {
+												include
+													archetype_id/value matches {/dimensions\.v1/}
+													archetype_id/value matches {/exam-generic-mass\.v1/}
+													archetype_id/value matches {/exam-generic\.v1/}
+													archetype_id/value matches {/exam\.v1/}
+													archetype_id/value matches {/palpation\.v1/}
+													archetype_id/value matches {/percussion\.v1/}
+													archetype_id/value matches {/relative_position_abdomen\.v1draft/}
+											}
+											use_node ELEMENT /items[at0008]/items[at0.2]/items[at0.3]
+										}
+									}
+									CLUSTER[at0.15] occurrences matches {0..1} matches {	-- Bowel
+										items cardinality matches {0..*; unordered} matches {
+											allow_archetype CLUSTER occurrences matches {0..1} matches {
+												include
+													archetype_id/value matches {/palpation\.v1/}
+													archetype_id/value matches {/exam-generic-mass\.v1/}
+													archetype_id/value matches {/exam-generic\.v1/}
+													archetype_id/value matches {/exam\.v1/}
+													archetype_id/value matches {/percussion\.v1/}
+													archetype_id/value matches {/relative_position_abdomen\.v1draft/}
+											}
+											use_node ELEMENT /items[at0008]/items[at0.2]/items[at0.3]
+										}
+									}
+								}
+							}
+							use_node ELEMENT /items[at0008]/items[at0.2]/items[at0.3]
+						}
+					}
+					CLUSTER[at0003] occurrences matches {0..1} matches {	-- Detail
+						items cardinality matches {0..*; unordered} matches {
+							allow_archetype CLUSTER occurrences matches {0..1} matches {
+								include
+									archetype_id/value matches {/exam-generic\.v1/}
+							}
+						}
+					}
+				}
+			}
+			ELEMENT[at0006] occurrences matches {0..*} matches {	-- Image
+				value matches {
+					DV_MULTIMEDIA matches {
+						media_type matches {
+							[openEHR::
+							426, 
+							427, 
+							429]
+						}
+					}
+				}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["en"] = <
+			items = <
+				["at0.10"] = <
+					description = <"*">
+					text = <"Region">
+				>
+				["at0.11"] = <
+					description = <"*">
+					text = <"Left upper quadrant">
+				>
+				["at0.12"] = <
+					description = <"*">
+					text = <"Epigastrium">
+				>
+				["at0.13"] = <
+					description = <"*">
+					text = <"Organs">
+				>
+				["at0.14"] = <
+					description = <"*">
+					text = <"Liver">
+				>
+				["at0.15"] = <
+					description = <"*">
+					text = <"Bowel">
+				>
+				["at0.16"] = <
+					description = <"*">
+					text = <"Left upper quadrant">
+				>
+				["at0.17"] = <
+					description = <"*">
+					text = <"Right loin">
+				>
+				["at0.18"] = <
+					description = <"*">
+					text = <"Central/peri-umbilical">
+				>
+				["at0.19"] = <
+					description = <"*">
+					text = <"Left loin">
+				>
+				["at0.2"] = <
+					description = <"*">
+					text = <"Abdominal wall">
+				>
+				["at0.20"] = <
+					description = <"*">
+					text = <"Right iliac fossa">
+				>
+				["at0.21"] = <
+					description = <"*">
+					text = <"Left iliac fossa">
+				>
+				["at0.22"] = <
+					description = <"*">
+					text = <"New element">
+				>
+				["at0.23"] = <
+					description = <"Clinical description of finding">
+					text = <"Description">
+				>
+				["at0.3"] = <
+					description = <"Clincial description of findings">
+					text = <"Description">
+				>
+				["at0.4"] = <
+					description = <"Shape of abdomen">
+					text = <"Shape">
+				>
+				["at0.5"] = <
+					description = <"*">
+					text = <"Abdomen Contents">
+				>
+				["at0.6"] = <
+					description = <"Clinical description">
+					text = <"Description">
+				>
+				["at0.7"] = <
+					description = <"*">
+					text = <"Spleen">
+				>
+				["at0.8"] = <
+					description = <"*">
+					text = <"Kidney">
+				>
+				["at0.9"] = <
+					description = <"*">
+					text = <"Abdominal Region">
+				>
+				["at0000"] = <
+					description = <"Basic examination cluster for describing findings on physical examination when there is no named focus of examination">
+					text = <"Examination">
+				>
+				["at0000.1"] = <
+					description = <"For recording findings on physical examination of the abdomen">
+					text = <"Examination of the abdomen">
+				>
+				["at0002"] = <
+					description = <"Textural description of the part examined">
+					text = <"Clinical description">
+				>
+				["at0003"] = <
+					description = <"More focused examination findings">
+					text = <"Detail">
+				>
+				["at0004"] = <
+					description = <"A group of statements about the normality of the examination">
+					text = <"Normal statements">
+				>
+				["at0005"] = <
+					description = <"A specific statement of normality">
+					text = <"Normal statement">
+				>
+				["at0006"] = <
+					description = <"Drawing or image of the area examined">
+					text = <"Image">
+				>
+				["at0008"] = <
+					description = <"Clinical findings">
+					text = <"Findings">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-chest.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-chest.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-chest.v1.adl	(revision 39)
@@ -0,0 +1,379 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-CLUSTER.exam-chest.v1
+specialize
+	openEHR-EHR-CLUSTER.exam.v1
+
+concept
+	[at0000.1]	-- Examination of the chest
+language
+	original_language = <[ISO_639-1::en]>
+description
+	original_author = <
+		["name"] = <"Sam Heard">
+		["organisation"] = <"Ocean Informatics">
+		["date"] = <"9/04/2007">
+		["email"] = <"Sam.Heard@OceanInformatics.biz">
+	>
+	details = <
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"A cluster for recording findings on physical examination of the chest">
+			use = <"">
+			keywords = <"examination", "physical", "chest", "thorax", "lungs">
+			misuse = <"">
+		>
+	>
+	lifecycle_state = <"Initial">
+	other_contributors = <>
+
+definition
+	CLUSTER[at0000.1] matches {	-- Examination of the chest
+		items cardinality matches {0..*; unordered} matches {
+			CLUSTER[at0004] occurrences matches {0..1} matches {	-- Normal statements
+				items cardinality matches {0..*; unordered} matches {
+					ELEMENT[at0005] occurrences matches {0..*} matches {	-- Normal statement
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+				}
+			}
+			ELEMENT[at0002] occurrences matches {0..1} matches {	-- Clinical description
+				value matches {
+					DV_TEXT matches {*}
+				}
+			}
+			CLUSTER[at0008] occurrences matches {0..1} matches {	-- Findings
+				items cardinality matches {0..*; unordered} matches {
+					CLUSTER[at0.1] occurrences matches {0..1} matches {	-- Chest wall
+						items cardinality matches {0..*; unordered} matches {
+							ELEMENT[at0.2] occurrences matches {0..1} matches {	-- Description
+								value matches {
+									DV_CODED_TEXT matches {
+										defining_code matches {[local::]}
+									}
+								}
+							}
+							ELEMENT[at0.28] occurrences matches {0..1} matches {	-- Shape
+								value matches {
+									DV_TEXT matches {*}
+								}
+							}
+							CLUSTER[at0.30] occurrences matches {0..1} matches {	-- Heart - Apex beat
+								items cardinality matches {0..*; unordered} matches {
+									ELEMENT[at0.31] occurrences matches {0..1} matches {	-- Visible
+										value matches {
+											DV_BOOLEAN matches {
+												value matches {True, False}
+											}
+										}
+									}
+									CLUSTER[at0.32] occurrences matches {0..1} matches {	-- Palpation
+										items cardinality matches {0..*; unordered} matches {
+											ELEMENT[at0.33] occurrences matches {0..1} matches {	-- Palpable
+												value matches {
+													DV_BOOLEAN matches {
+														value matches {True, False}
+													}
+												}
+											}
+											ELEMENT[at0.34] occurrences matches {0..1} matches {	-- Maximal location
+												value matches {
+													DV_TEXT matches {*}
+												}
+											}
+										}
+									}
+								}
+							}
+							allow_archetype CLUSTER occurrences matches {0..1} matches {
+								include
+									archetype_id/value matches {/palpation\.v1draft/}
+									archetype_id/value matches {/inspection\.v1draft/}
+									archetype_id/value matches {/auscultation-chest\.v1/}
+							}
+						}
+					}
+					CLUSTER[at0.3] occurrences matches {0..1} matches {	-- Respiratory system
+						items cardinality matches {0..*; unordered} matches {
+							ELEMENT[at0.4] occurrences matches {0..1} matches {	-- Trachea
+								value matches {
+									DV_CODED_TEXT matches {
+										defining_code matches {
+											[local::
+											at0.5, 	-- Midline
+											at0.6, 	-- Deviated to the left
+											at0.7]	-- Deviated to the right
+										}
+									}
+								}
+							}
+							CLUSTER[at0.8] occurrences matches {0..1} matches {	-- Breathing
+								items cardinality matches {0..*; unordered} matches {
+									ELEMENT[at0.19] occurrences matches {0..1} matches {	-- Description
+										value matches {
+											DV_TEXT matches {*}
+										}
+									}
+									ELEMENT[at0.9] occurrences matches {0..1} matches {	-- Type
+										value matches {
+											DV_CODED_TEXT matches {
+												defining_code matches {
+													[local::
+													at0.10, 	-- Diaphragmatic breathing
+													at0.11]	-- Thoracic breathing
+												}
+											}
+										}
+									}
+									ELEMENT[at0.12] occurrences matches {0..1} matches {	-- Effort
+										value matches {
+											5|[local::at0.13], 	-- Normal breathing effort
+											6|[local::at0.14], 	-- Mild increase in effort
+											8|[local::at0.15], 	-- Moderate increased effort
+											10|[local::at0.16]  	-- Major increased effort
+										}
+									}
+									CLUSTER[at0.17] occurrences matches {0..1} matches {	-- Signs of increased effort
+										items cardinality matches {0..*; unordered} matches {
+											ELEMENT[at0.18] occurrences matches {0..*} matches {	-- Sign
+												value matches {
+													DV_CODED_TEXT matches {
+														defining_code matches {
+															[local::
+															at0.25, 	-- Using accessory muscles
+															at0.20, 	-- Intercostal recession
+															at0.24, 	-- Subcostal recession
+															at0.23, 	-- Suprasternal recession
+															at0.21, 	-- Sternal recession
+															at0.22]	-- Rib retraction
+														}
+													}
+												}
+											}
+										}
+									}
+									ELEMENT[at0.26] occurrences matches {0..1} matches {	-- Paradoxical movement (flail chest)
+										value matches {
+											DV_BOOLEAN matches {
+												value matches {True, False}
+											}
+										}
+									}
+								}
+							}
+						}
+					}
+					CLUSTER[at0003] occurrences matches {0..1} matches {	-- Detail
+						items cardinality matches {0..*; unordered} matches {
+							allow_archetype CLUSTER occurrences matches {0..1} matches {
+								include
+									archetype_id/value matches {/exam-generic\.v1/}
+									archetype_id/value matches {/auscultation-chest\.v1/}
+									archetype_id/value matches {/palpation\.v1/}
+									archetype_id/value matches {/inspection\.v1draft/}
+									archetype_id/value matches {/percussion\.v1/}
+							}
+						}
+					}
+				}
+			}
+			CLUSTER[at0.27] occurrences matches {0..1} matches {	-- Lymph nodes
+				items cardinality matches {0..*; unordered} matches {
+					allow_archetype CLUSTER occurrences matches {0..1} matches {
+						include
+							archetype_id/value matches {/exam-generic-lympnode\.v1/}
+					}
+				}
+			}
+			ELEMENT[at0006] occurrences matches {0..*} matches {	-- Image
+				value matches {
+					DV_MULTIMEDIA matches {
+						media_type matches {
+							[openEHR::
+							426, 
+							427, 
+							429]
+						}
+					}
+				}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["en"] = <
+			items = <
+				["at0.1"] = <
+					description = <"Findings about the chest wall">
+					text = <"Chest wall">
+				>
+				["at0.10"] = <
+					description = <"Breathing using the diaphragm and not the chest wall">
+					text = <"Diaphragmatic breathing">
+				>
+				["at0.11"] = <
+					description = <"Breathing using expansion of the chest wall">
+					text = <"Thoracic breathing">
+				>
+				["at0.12"] = <
+					description = <"Effort required for breathing">
+					text = <"Effort">
+				>
+				["at0.13"] = <
+					description = <"Diaphragmatic breathing as at rest">
+					text = <"Normal breathing effort">
+				>
+				["at0.14"] = <
+					description = <"Breathing using obvious chest expansion">
+					text = <"Mild increase in effort">
+				>
+				["at0.15"] = <
+					description = <"Breathing with signs of abnormal breathing">
+					text = <"Moderate increased effort">
+				>
+				["at0.16"] = <
+					description = <"Many signs of increased breathing effort">
+					text = <"Major increased effort">
+				>
+				["at0.17"] = <
+					description = <"Signs of increased respiratory effort">
+					text = <"Signs of increased effort">
+				>
+				["at0.18"] = <
+					description = <"Use of accessory respiratory muscles">
+					text = <"Sign">
+				>
+				["at0.19"] = <
+					description = <"Description of breathing">
+					text = <"Description">
+				>
+				["at0.2"] = <
+					description = <"The contour of the chest wall">
+					text = <"Description">
+				>
+				["at0.20"] = <
+					description = <"Drawing in between the ribs on inspiration">
+					text = <"Intercostal recession">
+				>
+				["at0.21"] = <
+					description = <"Drawing in of the sternum on inspiration">
+					text = <"Sternal recession">
+				>
+				["at0.22"] = <
+					description = <"Indrawing of the chest wall on inspiration">
+					text = <"Rib retraction">
+				>
+				["at0.23"] = <
+					description = <"Indrawing above the sternum on inspiration">
+					text = <"Suprasternal recession">
+				>
+				["at0.24"] = <
+					description = <"Indrawing of the subcostal abdominal wall ">
+					text = <"Subcostal recession">
+				>
+				["at0.25"] = <
+					description = <"Use of accessory respiratory muscles during inspiration">
+					text = <"Using accessory muscles">
+				>
+				["at0.26"] = <
+					description = <"Any paradoxical movement of the chest wall during respiration">
+					text = <"Paradoxical movement (flail chest)">
+				>
+				["at0.27"] = <
+					description = <"Lymphnodes">
+					text = <"Lymph nodes">
+				>
+				["at0.28"] = <
+					description = <"The shape of the chest">
+					text = <"Shape">
+					comment = <"ChestShape SNOMED query">
+				>
+				["at0.29"] = <
+					description = <"Pidgeon chest, with prominent lower sternum">
+					text = <"Pectus carinatum">
+				>
+				["at0.3"] = <
+					description = <"Respiratory findings">
+					text = <"Respiratory system">
+				>
+				["at0.30"] = <
+					description = <"*">
+					text = <"Heart - Apex beat">
+				>
+				["at0.31"] = <
+					description = <"Apex beat is visible">
+					text = <"Visible">
+				>
+				["at0.32"] = <
+					description = <"*">
+					text = <"Palpation">
+				>
+				["at0.33"] = <
+					description = <"Apex beat is palpable">
+					text = <"Palpable">
+				>
+				["at0.34"] = <
+					description = <"Site of maximal location of apex beat">
+					text = <"Maximal location">
+				>
+				["at0.4"] = <
+					description = <"The position of the trachea">
+					text = <"Trachea">
+				>
+				["at0.5"] = <
+					description = <"The trachea is in the midline position">
+					text = <"Midline">
+				>
+				["at0.6"] = <
+					description = <"The trachea is deviated to the left">
+					text = <"Deviated to the left">
+				>
+				["at0.7"] = <
+					description = <"The trachea is deviated to the right">
+					text = <"Deviated to the right">
+				>
+				["at0.8"] = <
+					description = <"Findings about breathing">
+					text = <"Breathing">
+				>
+				["at0.9"] = <
+					description = <"Type of breathing">
+					text = <"Type">
+				>
+				["at0000"] = <
+					description = <"Basic examination cluster for describing findings on physical examination when there is no named focus of examination">
+					text = <"Examination">
+				>
+				["at0000.1"] = <
+					description = <"For recording findings on physical examination of the chest wall and lungs">
+					text = <"Examination of the chest">
+				>
+				["at0002"] = <
+					description = <"Textural description of the part examined">
+					text = <"Clinical description">
+				>
+				["at0003"] = <
+					description = <"More focused examination findings">
+					text = <"Detail">
+				>
+				["at0004"] = <
+					description = <"A group of statements about the normality of the examination">
+					text = <"Normal statements">
+				>
+				["at0005"] = <
+					description = <"A specific statement of normality">
+					text = <"Normal statement">
+				>
+				["at0006"] = <
+					description = <"Drawing or image of the area examined">
+					text = <"Image">
+				>
+				["at0008"] = <
+					description = <"Clinical findings">
+					text = <"Findings">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-fetus.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-fetus.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-fetus.v1.adl	(revision 39)
@@ -0,0 +1,577 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-CLUSTER.exam-fetus.v1
+specialize
+	openEHR-EHR-CLUSTER.exam.v1
+
+concept
+	[at0000.1]	-- Examination of the fetus
+language
+	original_language = <[ISO_639-1::en]>
+description
+	original_author = <
+		["name"] = <"unknown">
+	>
+	details = <
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"For recording findings on physical examination relating to the fetus while in the uterus">
+			use = <"">
+			keywords = <"foetus", "fetal", "foetal">
+			misuse = <"">
+		>
+	>
+	lifecycle_state = <"Initial">
+	other_contributors = <>
+
+definition
+	CLUSTER[at0000.1] matches {	-- Examination of the fetus
+		items cardinality matches {0..*; unordered} matches {
+			CLUSTER[at0004] occurrences matches {0..1} matches {	-- Normal statements
+				items cardinality matches {0..*; unordered} matches {
+					ELEMENT[at0005] occurrences matches {0..*} matches {	-- Normal statement
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+				}
+			}
+			ELEMENT[at0002] occurrences matches {0..1} matches {	-- Clinical description
+				value matches {
+					DV_TEXT matches {*}
+				}
+			}
+			CLUSTER[at0008] occurrences matches {0..1} matches {	-- Findings
+				items cardinality matches {0..*; unordered} matches {
+					ELEMENT[at0.4] occurrences matches {0..1} matches {	-- Lie of the fetus
+						value matches {
+							DV_CODED_TEXT matches {
+								defining_code matches {
+									[local::
+									at0.5, 	-- Longitudinal
+									at0.6, 	-- Transverse
+									at0.7]	-- Oblique
+								}
+							}
+						}
+					}
+					ELEMENT[at0.8] occurrences matches {0..1} matches {	-- Presentation
+						value matches {
+							DV_CODED_TEXT matches {
+								defining_code matches {
+									[local::
+									at0.9, 	-- Cephalic
+									at0.10, 	-- Breech
+									at0.11, 	-- Full breech
+									at0.12, 	-- Extended breech
+									at0.13, 	-- Shoulder
+									at0.69, 	-- Footling breech
+									at0.70, 	-- Face
+									at0.71, 	-- Cord
+									at0.72]	-- Compound
+								}
+							}
+						}
+					}
+					ELEMENT[at0.42] occurrences matches {0..1} matches {	-- Position
+						value matches {
+							DV_CODED_TEXT matches {
+								defining_code matches {
+									[local::
+									at0.43, 	-- Right Occipito-transverse
+									at0.44, 	-- Right Occipito-anterior
+									at0.45, 	-- Right Occipito-posterior
+									at0.46, 	-- Occipito-anterior
+									at0.47, 	-- Occipito-posterior
+									at0.48, 	-- Left Occipito-transverse
+									at0.49, 	-- Left Occipito-anterior
+									at0.50, 	-- Left Occipito-posterior
+									at0.51, 	-- Right Sacro-transverse
+									at0.52, 	-- Right Sacro-anterior
+									at0.53, 	-- Right Sacro-posterior
+									at0.54, 	-- Sacro-Anterior
+									at0.55, 	-- Sacro-Posterior
+									at0.56, 	-- Left Sacro-transverse
+									at0.57, 	-- Left Sacro-anterior
+									at0.58, 	-- Left Sacro-posterior
+									at0.59, 	-- Right Mento-transverse
+									at0.60, 	-- Right Mento-anterior
+									at0.61, 	-- Right Mento-posterior
+									at0.62, 	-- Mento-Anterior
+									at0.63, 	-- Mento-Posterior
+									at0.64, 	-- Left Mento-transverse
+									at0.65, 	-- Left Mento-anterior
+									at0.61]	-- Right Mento-posterior
+								}
+							}
+						}
+					}
+					ELEMENT[at0.32] occurrences matches {0..1} matches {	-- Attitude
+						value matches {
+							DV_CODED_TEXT matches {
+								defining_code matches {
+									[local::
+									at0.33, 	-- Flexed
+									at0.34, 	-- Deflexed
+									at0.35]	-- Extended
+								}
+							}
+						}
+					}
+					CLUSTER[at0.74] occurrences matches {0..1} matches {	-- Engagement
+						items cardinality matches {0..*; unordered} matches {
+							ELEMENT[at0.22] occurrences matches {0..1} matches {	-- Fifths
+								value matches {
+									DV_CODED_TEXT matches {
+										defining_code matches {
+											[local::
+											at0.23, 	-- Not engaged (0/5)
+											at0.24, 	-- 1/5
+											at0.25, 	-- 2/5
+											at0.26, 	-- 3/5
+											at0.27, 	-- 4/5
+											at0.28]	-- Fully engaged (5/5)
+										}
+									}
+								}
+							}
+							ELEMENT[at0.75] occurrences matches {0..1} matches {	-- Qualitative
+								value matches {
+									DV_CODED_TEXT matches {
+										defining_code matches {
+											[local::
+											at0.76, 	-- High and mobile
+											at0.77, 	-- At pelvic brim
+											at0.78]	-- Engaged
+										}
+									}
+								}
+							}
+						}
+					}
+					ELEMENT[at0.14] occurrences matches {0..1} matches {	-- Size relative to gestation
+						value matches {
+							DV_CODED_TEXT matches {
+								defining_code matches {
+									[local::
+									at0.15, 	-- Small for dates
+									at0.67, 	-- ? small for dates
+									at0.16, 	-- Normal
+									at0.68, 	-- ? large for dates
+									at0.17]	-- Large for dates
+								}
+							}
+						}
+					}
+					ELEMENT[at0.29] occurrences matches {0..1} matches {	-- Station
+						value matches {
+							C_DV_QUANTITY <
+								property = <[openehr::122]>
+								list = <
+									["1"] = <
+										units = <"cm">
+										magnitude = <|-5.0..5.0|>
+										precision = <|0|>
+									>
+								>
+							>
+						}
+					}
+					ELEMENT[at0.18] occurrences matches {0..1} matches {	-- Estimated fetal weight
+						value matches {
+							C_DV_QUANTITY <
+								property = <[openehr::124]>
+								list = <
+									["1"] = <
+										units = <"kg">
+										magnitude = <|0.0..20.0|>
+									>
+									["2"] = <
+										units = <"gm">
+										magnitude = <|0.0..20000.0|>
+										precision = <|0|>
+									>
+								>
+							>
+						}
+					}
+					CLUSTER[at0007] occurrences matches {0..1} matches {	-- Size
+						items cardinality matches {0..*; unordered} matches {
+							allow_archetype CLUSTER occurrences matches {0..1} matches {
+								include
+									archetype_id/value matches {/dimensions\.v1/}
+									archetype_id/value matches {/size\.v1draft/}
+							}
+						}
+					}
+					CLUSTER[at0003] occurrences matches {0..1} matches {	-- Detail
+						items cardinality matches {0..*; unordered} matches {
+							allow_archetype CLUSTER occurrences matches {0..1} matches {
+								include
+									archetype_id/value matches {/exam\.v1/}
+							}
+						}
+					}
+				}
+			}
+			ELEMENT[at0006] occurrences matches {0..*} matches {	-- Image
+				value matches {
+					DV_MULTIMEDIA matches {
+						media_type matches {
+							[openEHR::
+							426, 
+							427, 
+							429]
+						}
+					}
+				}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["en"] = <
+			items = <
+				["at0.10"] = <
+					description = <"The breech is the presenting part">
+					text = <"Breech">
+				>
+				["at0.11"] = <
+					description = <"The breech is presenting with the legs flexed">
+					text = <"Full breech">
+				>
+				["at0.12"] = <
+					description = <"The breech is the presenting part with the leg(s) extended">
+					text = <"Extended breech">
+				>
+				["at0.13"] = <
+					description = <"The shoulder is the presenting part">
+					text = <"Shoulder">
+				>
+				["at0.14"] = <
+					description = <"The apparent size of the baby relative to normal for gestation">
+					text = <"Size relative to gestation">
+				>
+				["at0.15"] = <
+					description = <"The size of the baby is smaller than expected for gestation">
+					text = <"Small for dates">
+				>
+				["at0.16"] = <
+					description = <"The size of the baby is normal for gestation">
+					text = <"Normal">
+				>
+				["at0.17"] = <
+					description = <"The size of the baby is larger than expected for gestation">
+					text = <"Large for dates">
+				>
+				["at0.18"] = <
+					description = <"The estimated weight of the baby on examination">
+					text = <"Estimated fetal weight">
+				>
+				["at0.19"] = <
+					description = <"The position of the head in relation to the pelvis">
+					text = <"Denominator">
+				>
+				["at0.20"] = <
+					description = <"The occiput is anterior rotated to the anterior">
+					text = <"Left occipito-anterior">
+				>
+				["at0.21"] = <
+					description = <"The occiput is at the back">
+					text = <"Occipito-posterior">
+				>
+				["at0.22"] = <
+					description = <"The proportion of the presenting part which is felt above the pelvis">
+					text = <"Fifths">
+				>
+				["at0.23"] = <
+					description = <"The head is not engaged in the pelvis">
+					text = <"Not engaged (0/5)">
+				>
+				["at0.24"] = <
+					description = <"About 20% of the head is inside the pelvis">
+					text = <"1/5">
+				>
+				["at0.25"] = <
+					description = <"About 40% of the head is inside the pelvis">
+					text = <"2/5">
+				>
+				["at0.26"] = <
+					description = <"About 60% of the head is inside the pelvis">
+					text = <"3/5">
+				>
+				["at0.27"] = <
+					description = <"About 80% of the head is inside the pelvis">
+					text = <"4/5">
+				>
+				["at0.28"] = <
+					description = <"The head is inside the pelvis">
+					text = <"Fully engaged (5/5)">
+				>
+				["at0.29"] = <
+					description = <"Posiiton relative to the ischial spines (minus is above, 0 is at the spines and plus is below)">
+					text = <"Station">
+				>
+				["at0.30"] = <
+					description = <"The occiput is adjacent to the symphasis pubis">
+					text = <"Occipito-anterior">
+				>
+				["at0.31"] = <
+					description = <"The occiput is anterior rotated to the right">
+					text = <"Right occipito-anterior">
+				>
+				["at0.32"] = <
+					description = <"The degree of flexion of the body">
+					text = <"Attitude">
+				>
+				["at0.33"] = <
+					description = <"The fetus is fully flexed">
+					text = <"Flexed">
+				>
+				["at0.34"] = <
+					description = <"The fetus is not flexed">
+					text = <"Deflexed">
+				>
+				["at0.35"] = <
+					description = <"The fetus is extended">
+					text = <"Extended">
+				>
+				["at0.36"] = <
+					description = <"The occiput is on the left">
+					text = <"Left occipito-transverse">
+				>
+				["at0.37"] = <
+					description = <"The occiput is on the right">
+					text = <"Right occipito-transverse">
+				>
+				["at0.38"] = <
+					description = <"*">
+					text = <"Position">
+				>
+				["at0.39"] = <
+					description = <"The occipital bone">
+					text = <"Occipito">
+				>
+				["at0.4"] = <
+					description = <"The position of the fetus">
+					text = <"Lie of the fetus">
+				>
+				["at0.40"] = <
+					description = <"The chin">
+					text = <"Mento">
+				>
+				["at0.41"] = <
+					description = <"The sacral bone">
+					text = <"Sacro">
+				>
+				["at0.42"] = <
+					description = <"The orientation of the denominator">
+					text = <"Position">
+				>
+				["at0.43"] = <
+					description = <"The occiput is towards the right">
+					text = <"Right Occipito-transverse">
+				>
+				["at0.44"] = <
+					description = <"The occiput is towards the right and anterior">
+					text = <"Right Occipito-anterior">
+				>
+				["at0.45"] = <
+					description = <"The occiput is to the right and posterior">
+					text = <"Right Occipito-posterior">
+				>
+				["at0.46"] = <
+					description = <"The occiput is towards the symphasis">
+					text = <"Occipito-anterior">
+				>
+				["at0.47"] = <
+					description = <"The occiput is towards the sacrum">
+					text = <"Occipito-posterior">
+				>
+				["at0.48"] = <
+					description = <"The occiput is towards the left">
+					text = <"Left Occipito-transverse">
+				>
+				["at0.49"] = <
+					description = <"The occiput is to the left and symphasis">
+					text = <"Left Occipito-anterior">
+				>
+				["at0.5"] = <
+					description = <"The lie is along the line of the mother's spine">
+					text = <"Longitudinal">
+				>
+				["at0.50"] = <
+					description = <"The occiput is to the left and posterior">
+					text = <"Left Occipito-posterior">
+				>
+				["at0.51"] = <
+					description = <"The fetal sacrum is towards the right">
+					text = <"Right Sacro-transverse">
+				>
+				["at0.52"] = <
+					description = <"The fetal sacrum is towards the right and anterior">
+					text = <"Right Sacro-anterior">
+				>
+				["at0.53"] = <
+					description = <"The fetal sacrum is to the right and posterior">
+					text = <"Right Sacro-posterior">
+				>
+				["at0.54"] = <
+					description = <"The fetal sacrum is towards the symphasis">
+					text = <"Sacro-Anterior">
+				>
+				["at0.55"] = <
+					description = <"The fetal sacrum is towards the sacrum">
+					text = <"Sacro-Posterior">
+				>
+				["at0.56"] = <
+					description = <"The fetal sacrum is towards the left">
+					text = <"Left Sacro-transverse">
+				>
+				["at0.57"] = <
+					description = <"The fetal sacrum is to the left and symphasis">
+					text = <"Left Sacro-anterior">
+				>
+				["at0.58"] = <
+					description = <"The fetal sacrum is to the left and posterior">
+					text = <"Left Sacro-posterior">
+				>
+				["at0.59"] = <
+					description = <"The fetal chin is towards the right">
+					text = <"Right Mento-transverse">
+				>
+				["at0.6"] = <
+					description = <"The lie is perpendicular to the mother's spine">
+					text = <"Transverse">
+				>
+				["at0.60"] = <
+					description = <"The fetal chin is towards the right and anterior">
+					text = <"Right Mento-anterior">
+				>
+				["at0.61"] = <
+					description = <"The fetal chin is to the right and posterior">
+					text = <"Right Mento-posterior">
+				>
+				["at0.62"] = <
+					description = <"The fetal chin is towards the symphasis">
+					text = <"Mento-Anterior">
+				>
+				["at0.63"] = <
+					description = <"The fetal chin is towards the sacrum">
+					text = <"Mento-Posterior">
+				>
+				["at0.64"] = <
+					description = <"The fetal chin is towards the left">
+					text = <"Left Mento-transverse">
+				>
+				["at0.65"] = <
+					description = <"The fetal chin is to the left and symphasis">
+					text = <"Left Mento-anterior">
+				>
+				["at0.66"] = <
+					description = <"The fetal chin is to the left and posterior">
+					text = <"Left Mento-posterior">
+				>
+				["at0.67"] = <
+					description = <"Possibly small for this gestation">
+					text = <"? small for dates">
+				>
+				["at0.68"] = <
+					description = <"Possibly larger than expected for this gestation">
+					text = <"? large for dates">
+				>
+				["at0.69"] = <
+					description = <"A fetal foot is extended and presenting">
+					text = <"Footling breech">
+				>
+				["at0.7"] = <
+					description = <"The lie is oblique to the mother's spine">
+					text = <"Oblique">
+				>
+				["at0.70"] = <
+					description = <"The head is extended and the face is presenting">
+					text = <"Face">
+				>
+				["at0.71"] = <
+					description = <"The umbilical cord is presenting">
+					text = <"Cord">
+				>
+				["at0.72"] = <
+					description = <"There is a compound presentation">
+					text = <"Compound">
+				>
+				["at0.73"] = <
+					description = <"*">
+					text = <"Station">
+				>
+				["at0.74"] = <
+					description = <"Estimation of presenting part in relation to pelvic brim">
+					text = <"Engagement">
+				>
+				["at0.75"] = <
+					description = <"Description of engagement of fetal head">
+					text = <"Qualitative">
+				>
+				["at0.76"] = <
+					description = <"*">
+					text = <"High and mobile">
+				>
+				["at0.77"] = <
+					description = <"*">
+					text = <"At pelvic brim">
+				>
+				["at0.78"] = <
+					description = <"*">
+					text = <"Engaged">
+				>
+				["at0.79"] = <
+					description = <"*">
+					text = <"Estimation">
+				>
+				["at0.8"] = <
+					description = <"The presenting part of the fetus">
+					text = <"Presentation">
+				>
+				["at0.9"] = <
+					description = <"The head is the presenting part">
+					text = <"Cephalic">
+				>
+				["at0000"] = <
+					description = <"Generic examination cluster for describing a finding on physical examination">
+					text = <"Examination">
+				>
+				["at0000.1"] = <
+					description = <"Examination cluster for describing a finding on physical examination of a fetus">
+					text = <"Examination of the fetus">
+				>
+				["at0002"] = <
+					description = <"Textural description of the part examined">
+					text = <"Clinical description">
+				>
+				["at0003"] = <
+					description = <"More focused examination findings">
+					text = <"Detail">
+				>
+				["at0004"] = <
+					description = <"A group of statements about the normality of the examination">
+					text = <"Normal statements">
+				>
+				["at0005"] = <
+					description = <"A specific statement of normality">
+					text = <"Normal statement">
+				>
+				["at0006"] = <
+					description = <"Drawing or image of the area examined">
+					text = <"Image">
+				>
+				["at0007"] = <
+					description = <"Information about the size of the object for examination">
+					text = <"Size">
+				>
+				["at0008"] = <
+					description = <"Clinical findings">
+					text = <"Findings">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-generic-joint.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-generic-joint.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-generic-joint.v1.adl	(revision 39)
@@ -0,0 +1,146 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-CLUSTER.exam-generic-joint.v1
+specialize
+	openEHR-EHR-CLUSTER.exam-generic.v1
+
+concept
+	[at0000.1.1]	-- Examination of a named joint
+language
+	original_language = <[ISO_639-1::en]>
+description
+	original_author = <
+		["name"] = <"unknown">
+	>
+	details = <
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"A generic cluster for recording findings on physical examination.">
+			use = <"">
+			keywords = <"examination", "physical">
+			misuse = <"">
+		>
+	>
+	lifecycle_state = <"Initial">
+	other_contributors = <>
+
+definition
+	CLUSTER[at0000.1.1] matches {	-- Examination of a named joint
+		items cardinality matches {0..*; unordered} matches {
+			ELEMENT[at0.9.1] matches {	-- Joint
+				value matches {
+					DV_TEXT matches {*}
+				}
+			}
+			CLUSTER[at0004] occurrences matches {0..1} matches {	-- Normal statements
+				items cardinality matches {0..*; unordered} matches {
+					ELEMENT[at0005] occurrences matches {0..*} matches {	-- Normal statement
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+				}
+			}
+			ELEMENT[at0002] occurrences matches {0..1} matches {	-- Clinical description
+				value matches {
+					DV_TEXT matches {*}
+				}
+			}
+			CLUSTER[at0008] occurrences matches {0..1} matches {	-- Findings
+				items cardinality matches {0..*; unordered} matches {
+					allow_archetype CLUSTER occurrences matches {0..*} matches {
+						include
+							archetype_id/value matches {/palpation\.v1draft/}
+							archetype_id/value matches {/inspection\.v1draft/}
+							archetype_id/value matches {/move-joint\.v1draft/}
+						exclude
+							archetype_id/value matches {/.*/}
+					}
+					CLUSTER[at0.1] occurrences matches {0..1} matches {	-- Size
+						items cardinality matches {0..*; unordered} matches {
+							allow_archetype CLUSTER occurrences matches {0..1} matches {
+								include
+									archetype_id/value matches {/dimensions\.v1/}
+									archetype_id/value matches {/size\.v1draft/}
+							}
+						}
+					}
+					CLUSTER[at0003] occurrences matches {0..1} matches {	-- Detail
+						items cardinality matches {0..*; unordered} matches {
+							allow_archetype CLUSTER occurrences matches {0..1} matches {
+								include
+									archetype_id/value matches {/exam\.v1/}
+							}
+						}
+					}
+				}
+			}
+			ELEMENT[at0006] occurrences matches {0..*} matches {	-- Image
+				value matches {
+					DV_MULTIMEDIA matches {
+						media_type matches {
+							[openEHR::
+							426, 
+							427, 
+							429]
+						}
+					}
+				}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["en"] = <
+			items = <
+				["at0.1"] = <
+					description = <"Information about the size of the object for examination">
+					text = <"Size">
+				>
+				["at0.9"] = <
+					description = <"The object of examination">
+					text = <"Object">
+				>
+				["at0.9.1"] = <
+					description = <"The joint examined">
+					text = <"Joint">
+				>
+				["at0000"] = <
+					description = <"Generic examination cluster for describing a finding on physical examination">
+					text = <"Examination">
+				>
+				["at0000.1"] = <
+					description = <"Generic examination cluster for describing a finding on physical examination">
+					text = <"Examination of a named body part">
+				>
+				["at0000.1.1"] = <
+					description = <"Generic examination cluster for describing findings relating to a joint on physical examination">
+					text = <"Examination of a named joint">
+				>
+				["at0002"] = <
+					description = <"Textural description of the part examined">
+					text = <"Clinical description">
+				>
+				["at0003"] = <
+					description = <"More focused examination findings">
+					text = <"Detail">
+				>
+				["at0004"] = <
+					description = <"A group of statements about the normality of the examination">
+					text = <"Normal statements">
+				>
+				["at0005"] = <
+					description = <"A specific statement of normality">
+					text = <"Normal statement">
+				>
+				["at0006"] = <
+					description = <"Drawing or image of the area examined">
+					text = <"Image">
+				>
+				["at0008"] = <
+					description = <"Clinical findings">
+					text = <"Findings">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-generic-lymphnode.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-generic-lymphnode.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-generic-lymphnode.v1.adl	(revision 39)
@@ -0,0 +1,176 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-CLUSTER.exam-generic-lymphnode.v1
+specialize
+	openEHR-EHR-CLUSTER.exam-generic.v1
+
+concept
+	[at0000.1.1]	-- Examination of lymph nodes
+language
+	original_language = <[ISO_639-1::en]>
+description
+	original_author = <
+		["name"] = <"unknown">
+	>
+	details = <
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"For recording findings on physical examination of lymph nodes">
+			use = <"">
+			keywords = <"examination", "physical", "lymph", "nodes">
+			misuse = <"">
+		>
+	>
+	lifecycle_state = <"OrganisationDraft">
+	other_contributors = <>
+
+definition
+	CLUSTER[at0000.1.1] matches {	-- Examination of lymph nodes
+		items cardinality matches {0..*; unordered} matches {
+			ELEMENT[at0.9.1] matches {	-- Lymph node group
+				value matches {
+					DV_TEXT matches {*}
+				}
+			}
+			CLUSTER[at0004] occurrences matches {0..1} matches {	-- Normal statements
+				items cardinality matches {0..*; unordered} matches {
+					ELEMENT[at0005] occurrences matches {0..*} matches {	-- Normal statement
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+				}
+			}
+			ELEMENT[at0002] occurrences matches {0..1} matches {	-- Clinical description
+				value matches {
+					DV_TEXT matches {*}
+				}
+			}
+			CLUSTER[at0008] occurrences matches {0..1} matches {	-- Findings
+				items cardinality matches {0..*; unordered} matches {
+					allow_archetype CLUSTER occurrences matches {0..*} matches {
+						include
+							archetype_id/value matches {/palpation\.v1draft/}
+							archetype_id/value matches {/inspection\.v1draft/}
+						exclude
+							archetype_id/value matches {/.*/}
+					}
+					CLUSTER[at0.1] occurrences matches {0..1} matches {	-- Size
+						items cardinality matches {0..*; unordered} matches {
+							allow_archetype CLUSTER occurrences matches {0..1} matches {
+								include
+									archetype_id/value matches {/size\.v1draft/}
+							}
+						}
+					}
+					CLUSTER[at0003.0.1] occurrences matches {0..1} matches {	-- Individual nodes
+						items cardinality matches {0..*; unordered} matches {
+							CLUSTER[at0.0.12] occurrences matches {0..1} matches {	-- Node
+								items cardinality matches {1..*; unordered} matches {
+									ELEMENT[at0.0.11] occurrences matches {0..1} matches {	-- Node name
+										value matches {
+											DV_TEXT matches {*}
+										}
+									}
+									ELEMENT[at0.0.13] occurrences matches {0..1} matches {	-- Description
+										value matches {
+											DV_TEXT matches {*}
+										}
+									}
+								}
+							}
+						}
+					}
+				}
+			}
+			ELEMENT[at0006] occurrences matches {0..*} matches {	-- Image
+				value matches {
+					DV_MULTIMEDIA matches {
+						media_type matches {
+							[openEHR::
+							426, 
+							427, 
+							429]
+						}
+					}
+				}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["en"] = <
+			items = <
+				["at0.0.10"] = <
+					description = <"All major lymph nodes">
+					text = <"Lymph nodes">
+				>
+				["at0.0.11"] = <
+					description = <"The name of the node">
+					text = <"Node name">
+					comment = <"SNOMED Lymphnode">
+				>
+				["at0.0.12"] = <
+					description = <"Group of findings relating to an individual node">
+					text = <"Node">
+				>
+				["at0.0.13"] = <
+					description = <"Description of individual node">
+					text = <"Description">
+				>
+				["at0.1"] = <
+					description = <"Information about the size of the object for examination">
+					text = <"Size">
+				>
+				["at0.9"] = <
+					description = <"The object of examination">
+					text = <"Object">
+				>
+				["at0.9.1"] = <
+					description = <"The group of nodes examined">
+					text = <"Lymph node group">
+					comment = <"SNOMED query LymphnodeGroup">
+				>
+				["at0000"] = <
+					description = <"Generic examination cluster for describing a finding on physical examination">
+					text = <"Examination">
+				>
+				["at0000.1"] = <
+					description = <"Generic examination cluster for describing a finding on physical examination">
+					text = <"Examination of a named body part">
+				>
+				["at0000.1.1"] = <
+					description = <"For recording the findings on physical examination of lymph nodes">
+					text = <"Examination of lymph nodes">
+				>
+				["at0002"] = <
+					description = <"Textural description of the part examined">
+					text = <"Clinical description">
+				>
+				["at0003"] = <
+					description = <"More focused examination findings">
+					text = <"Detail">
+				>
+				["at0003.0.1"] = <
+					description = <"More focused examination findings on each node">
+					text = <"Individual nodes">
+				>
+				["at0004"] = <
+					description = <"A group of statements about the normality of the examination">
+					text = <"Normal statements">
+				>
+				["at0005"] = <
+					description = <"A specific statement of normality">
+					text = <"Normal statement">
+				>
+				["at0006"] = <
+					description = <"Drawing or image of the area examined">
+					text = <"Image">
+				>
+				["at0008"] = <
+					description = <"Clinical findings">
+					text = <"Findings">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-generic-mass.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-generic-mass.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-generic-mass.v1.adl	(revision 39)
@@ -0,0 +1,221 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-CLUSTER.exam-generic-mass.v1
+specialize
+	openEHR-EHR-CLUSTER.exam-generic.v1
+
+concept
+	[at0000.1]	-- Examination of a named mass
+language
+	original_language = <[ISO_639-1::en]>
+description
+	original_author = <
+		["name"] = <"unknown">
+	>
+	details = <
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"A generic cluster for recording findings on physical examination of the findings when examining a pathological mass occupying lesion which might be a swelling, lump or mass.">
+			use = <"">
+			keywords = <"examination", "physical">
+			misuse = <"">
+		>
+	>
+	lifecycle_state = <"Initial">
+	other_contributors = <>
+
+definition
+	CLUSTER[at0000.1.1] matches {	-- Examination of a mass lesion
+		items cardinality matches {0..*; unordered} matches {
+			ELEMENT[at0.9] matches {	-- Object
+				value matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {
+							[local::
+							at0.0.1, 	-- Mass
+							at0.0.2, 	-- Lump
+							at0.0.3]	-- Swelling
+						}
+					}
+				}
+			}
+			CLUSTER[at0004] occurrences matches {0..1} matches {	-- Normal statements
+				items cardinality matches {0..*; unordered} matches {
+					ELEMENT[at0005] occurrences matches {0..*} matches {	-- Normal statement
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+				}
+			}
+			ELEMENT[at0002] occurrences matches {0..1} matches {	-- Clinical description
+				value matches {
+					DV_TEXT matches {*}
+				}
+			}
+			CLUSTER[at0008] occurrences matches {0..1} matches {	-- Findings
+				items cardinality matches {0..*; unordered} matches {
+					allow_archetype CLUSTER occurrences matches {0..*} matches {
+						include
+							archetype_id/value matches {/palpation\.v1draft/}
+							archetype_id/value matches {/inspection\.v1draft/}
+					}
+					CLUSTER[at0.1] occurrences matches {0..1} matches {	-- Size
+						items cardinality matches {0..*; unordered} matches {
+							allow_archetype CLUSTER occurrences matches {0..1} matches {
+								include
+									archetype_id/value matches {/dimensions\.v1/}
+									archetype_id/value matches {/size\.v1draft/}
+							}
+						}
+					}
+					ELEMENT[at0.0.4] occurrences matches {0..1} matches {	-- Location
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+					ELEMENT[at0.0.5] occurrences matches {0..1} matches {	-- Arising from
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+					ELEMENT[at0.0.6] occurrences matches {0..1} matches {	-- Mobility
+						value matches {
+							DV_CODED_TEXT matches {
+								defining_code matches {
+									[local::
+									at0.0.7, 	-- Highly mobile
+									at0.0.8, 	-- Mobile
+									at0.0.9, 	-- Fixed
+									at0.0.10]	-- Adherent
+								}
+							}
+						}
+					}
+					allow_archetype CLUSTER occurrences matches {0..*} matches {
+						include
+							archetype_id/value matches {/palpation\.v1draft/}
+							archetype_id/value matches {/auscultation\.v1draft/}
+							archetype_id/value matches {/inspection\.v1draft/}
+						exclude
+							archetype_id/value matches {/.*/}
+					}
+					CLUSTER[at0003] occurrences matches {0..1} matches {	-- Detail
+						items cardinality matches {0..*; unordered} matches {
+							allow_archetype CLUSTER occurrences matches {0..1} matches {
+								include
+									archetype_id/value matches {/exam\.v1/}
+							}
+						}
+					}
+				}
+			}
+			ELEMENT[at0006] occurrences matches {0..*} matches {	-- Image
+				value matches {
+					DV_MULTIMEDIA matches {
+						media_type matches {
+							[openEHR::
+							426, 
+							427, 
+							429]
+						}
+					}
+				}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["en"] = <
+			items = <
+				["at0.0.1"] = <
+					description = <"The object is a mass lesion">
+					text = <"Mass">
+				>
+				["at0.0.10"] = <
+					description = <"The mass merges with surrounding structures">
+					text = <"Adherent">
+				>
+				["at0.0.2"] = <
+					description = <"The object is a lump">
+					text = <"Lump">
+				>
+				["at0.0.3"] = <
+					description = <"The object of examination is a swelling">
+					text = <"Swelling">
+				>
+				["at0.0.4"] = <
+					description = <"The location of the mass">
+					text = <"Location">
+				>
+				["at0.0.5"] = <
+					description = <"The organ or body structure from which the lesion is arising">
+					text = <"Arising from">
+				>
+				["at0.0.6"] = <
+					description = <"The mobility of the mass lesion">
+					text = <"Mobility">
+				>
+				["at0.0.7"] = <
+					description = <"The mass lesion is apparently untethered to surrounding structures">
+					text = <"Highly mobile">
+				>
+				["at0.0.8"] = <
+					description = <"The mass is tethered but moves freely">
+					text = <"Mobile">
+				>
+				["at0.0.9"] = <
+					description = <"The mass is fixed to surrounding structures">
+					text = <"Fixed">
+				>
+				["at0.1"] = <
+					description = <"Information about the size of the object for examination">
+					text = <"Size">
+				>
+				["at0.9"] = <
+					description = <"The object of examination">
+					text = <"Object">
+				>
+				["at0000"] = <
+					description = <"Generic examination cluster for describing a finding on physical examination">
+					text = <"Examination">
+				>
+				["at0000.1"] = <
+					description = <"For describing findings on physical examination relating to a mass">
+					text = <"Examination of a named mass">
+				>
+				["at0000.1.1"] = <
+					description = <"Generic examination cluster for describing the findings on physical examination of a mass, lump or swelling">
+					text = <"Examination of a mass lesion">
+				>
+				["at0001"] = <
+					description = <"The object of the examination">
+					text = <"Object">
+				>
+				["at0002"] = <
+					description = <"Textural description of the part examined">
+					text = <"Clinical description">
+				>
+				["at0003"] = <
+					description = <"More focused examination findings">
+					text = <"Detail">
+				>
+				["at0004"] = <
+					description = <"A group of statements about the normality of the examination">
+					text = <"Normal statements">
+				>
+				["at0005"] = <
+					description = <"A specific statement of normality">
+					text = <"Normal statement">
+				>
+				["at0006"] = <
+					description = <"Drawing or image of the area examined">
+					text = <"Image">
+				>
+				["at0008"] = <
+					description = <"Clinical findings">
+					text = <"Findings">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-generic.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-generic.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-generic.v1.adl	(revision 39)
@@ -0,0 +1,139 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-CLUSTER.exam-generic.v1
+specialize
+	openEHR-EHR-CLUSTER.exam.v1
+
+concept
+	[at0000.1]	-- Examination of a named body part
+language
+	original_language = <[ISO_639-1::en]>
+description
+	original_author = <
+		["name"] = <"unknown">
+	>
+	details = <
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"A generic cluster for recording findings on physical examination.">
+			use = <"">
+			keywords = <"examination", "physical">
+			misuse = <"">
+		>
+	>
+	lifecycle_state = <"Initial">
+	other_contributors = <>
+
+definition
+	CLUSTER[at0000.1] matches {	-- Examination of a named body part
+		items cardinality matches {0..*; unordered} matches {
+			ELEMENT[at0.9] matches {	-- Object
+				value matches {
+					DV_TEXT matches {*}
+				}
+			}
+			CLUSTER[at0004] occurrences matches {0..1} matches {	-- Normal statements
+				items cardinality matches {0..*; unordered} matches {
+					ELEMENT[at0005] occurrences matches {0..*} matches {	-- Normal statement
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+				}
+			}
+			ELEMENT[at0002] occurrences matches {0..1} matches {	-- Clinical description
+				value matches {
+					DV_TEXT matches {*}
+				}
+			}
+			CLUSTER[at0008] occurrences matches {0..1} matches {	-- Findings
+				items cardinality matches {0..*; unordered} matches {
+					allow_archetype CLUSTER occurrences matches {0..*} matches {
+						include
+							archetype_id/value matches {/palpation\.v1draft/}
+							archetype_id/value matches {/auscultation\.v1draft/}
+							archetype_id/value matches {/inspection\.v1draft/}
+							archetype_id/value matches {/percussion\.v1draft/}
+						exclude
+							archetype_id/value matches {/.*/}
+					}
+					CLUSTER[at0.1] occurrences matches {0..1} matches {	-- Size
+						items cardinality matches {0..*; unordered} matches {
+							allow_archetype CLUSTER occurrences matches {0..1} matches {
+								include
+									archetype_id/value matches {/dimensions\.v1/}
+									archetype_id/value matches {/size\.v1draft/}
+							}
+						}
+					}
+					CLUSTER[at0003] occurrences matches {0..1} matches {	-- Detail
+						items cardinality matches {0..*; unordered} matches {
+							allow_archetype CLUSTER occurrences matches {0..1} matches {
+								include
+									archetype_id/value matches {/exam-generic\.v1/}
+							}
+						}
+					}
+				}
+			}
+			ELEMENT[at0006] occurrences matches {0..*} matches {	-- Image
+				value matches {
+					DV_MULTIMEDIA matches {
+						media_type matches {
+							[openEHR::
+							426, 
+							427, 
+							429]
+						}
+					}
+				}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["en"] = <
+			items = <
+				["at0.1"] = <
+					description = <"Information about the size of the object for examination">
+					text = <"Size">
+				>
+				["at0.9"] = <
+					description = <"The object of examination">
+					text = <"Object">
+				>
+				["at0000"] = <
+					description = <"Generic examination cluster for describing a finding on physical examination">
+					text = <"Examination">
+				>
+				["at0000.1"] = <
+					description = <"Generic examination cluster for describing a finding on physical examination">
+					text = <"Examination of a named body part">
+				>
+				["at0002"] = <
+					description = <"Textural description of the part examined">
+					text = <"Clinical description">
+				>
+				["at0003"] = <
+					description = <"More focused examination findings">
+					text = <"Detail">
+				>
+				["at0004"] = <
+					description = <"A group of statements about the normality of the examination">
+					text = <"Normal statements">
+				>
+				["at0005"] = <
+					description = <"A specific statement of normality">
+					text = <"Normal statement">
+				>
+				["at0006"] = <
+					description = <"Drawing or image of the area examined">
+					text = <"Image">
+				>
+				["at0008"] = <
+					description = <"Clinical findings">
+					text = <"Findings">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-nervous_system.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-nervous_system.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-nervous_system.v1.adl	(revision 39)
@@ -0,0 +1,116 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-CLUSTER.exam-nervous_system.v1
+specialize
+	openEHR-EHR-CLUSTER.exam.v1
+
+concept
+	[at0000.1]	-- Examination of nervous system
+language
+	original_language = <[ISO_639-1::en]>
+description
+	original_author = <
+		["name"] = <"unknown">
+	>
+	details = <
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"A generic cluster for recording findings on physical examination of the nervous system.">
+			use = <"">
+			keywords = <"examination", "physical">
+			misuse = <"">
+		>
+	>
+	lifecycle_state = <"Initial">
+	other_contributors = <>
+
+definition
+	CLUSTER[at0000.1] matches {	-- Examination of nervous system
+		items cardinality matches {0..*; unordered} matches {
+			CLUSTER[at0004] occurrences matches {0..1} matches {	-- Normal statements
+				items cardinality matches {0..*; unordered} matches {
+					ELEMENT[at0005] occurrences matches {0..*} matches {	-- Normal statement
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+				}
+			}
+			ELEMENT[at0002] occurrences matches {0..1} matches {	-- Clinical description
+				value matches {
+					DV_TEXT matches {*}
+				}
+			}
+			CLUSTER[at0008] occurrences matches {0..1} matches {	-- Findings
+				items cardinality matches {0..*; unordered} matches {
+					allow_archetype CLUSTER occurrences matches {0..1} matches {
+						include
+							archetype_id/value matches {/cranial_nerves\.v1draft/}
+							archetype_id/value matches {/coordination\.v1draft/}
+							archetype_id/value matches {/balance\.v1draft/}
+							archetype_id/value matches {/gait\.v1draft/}
+							archetype_id/value matches {/move\.v1/}
+					}
+					CLUSTER[at0003] occurrences matches {0..1} matches {	-- Detail
+						items cardinality matches {0..*; unordered} matches {
+							allow_archetype CLUSTER occurrences matches {0..1} matches {
+								include
+									archetype_id/value matches {/exam-generic\.v1/}
+							}
+						}
+					}
+				}
+			}
+			ELEMENT[at0006] occurrences matches {0..*} matches {	-- Image
+				value matches {
+					DV_MULTIMEDIA matches {
+						media_type matches {
+							[openEHR::
+							426, 
+							427, 
+							429]
+						}
+					}
+				}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["en"] = <
+			items = <
+				["at0000"] = <
+					description = <"Basic examination cluster for describing findings on physical examination when there is no named focus of examination">
+					text = <"Examination">
+				>
+				["at0000.1"] = <
+					description = <"Basic examination cluster for describing findings on physical examination of the nervous system">
+					text = <"Examination of nervous system">
+				>
+				["at0002"] = <
+					description = <"Textural description of the part examined">
+					text = <"Clinical description">
+				>
+				["at0003"] = <
+					description = <"More focused examination findings">
+					text = <"Detail">
+				>
+				["at0004"] = <
+					description = <"A group of statements about the normality of the examination">
+					text = <"Normal statements">
+				>
+				["at0005"] = <
+					description = <"A specific statement of normality">
+					text = <"Normal statement">
+				>
+				["at0006"] = <
+					description = <"Drawing or image of the area examined">
+					text = <"Image">
+				>
+				["at0008"] = <
+					description = <"Clinical findings">
+					text = <"Findings">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-uterine_cervix.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-uterine_cervix.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-CLUSTER.exam-uterine_cervix.v1.adl	(revision 39)
@@ -0,0 +1,420 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-CLUSTER.exam-uterine_cervix.v1
+specialize
+	openEHR-EHR-CLUSTER.exam.v1
+
+concept
+	[at0000.1]	-- Examination of the cervix
+language
+	original_language = <[ISO_639-1::en]>
+description
+	original_author = <
+		["name"] = <"unknown">
+	>
+	details = <
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"A cluster for recording findings regarding the uterine cervix on physical examination.">
+			use = <"">
+			keywords = <"examination", "physical", "cervix", "uterine">
+			misuse = <"">
+		>
+	>
+	lifecycle_state = <"Initial">
+	other_contributors = <>
+
+definition
+	CLUSTER[at0000.1] matches {	-- Examination of the cervix
+		items cardinality matches {0..*; unordered} matches {
+			CLUSTER[at0004] occurrences matches {0..1} matches {	-- Normal statements
+				items cardinality matches {0..*; unordered} matches {
+					ELEMENT[at0005] occurrences matches {0..*} matches {	-- Normal statement
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+				}
+			}
+			ELEMENT[at0002] occurrences matches {0..1} matches {	-- Clinical description
+				value matches {
+					DV_TEXT matches {*}
+				}
+			}
+			CLUSTER[at0008] occurrences matches {0..1} matches {	-- Findings
+				items cardinality matches {0..*; unordered} matches {
+					ELEMENT[at0.8] occurrences matches {0..1} matches {	-- Position
+						value matches {
+							DV_CODED_TEXT matches {
+								defining_code matches {
+									[local::
+									at0.9, 	-- Central
+									at0.10, 	-- To the right
+									at0.11, 	-- To the left
+									at0.12, 	-- Anterior
+									at0.13]	-- Posterior
+								}
+							}
+						}
+					}
+					ELEMENT[at0.36] occurrences matches {0..1} matches {	-- Consistency
+						value matches {
+							DV_CODED_TEXT matches {
+								defining_code matches {
+									[local::
+									at0.37, 	-- Soft
+									at0.38]	-- Firm
+								}
+							}
+						}
+					}
+					CLUSTER[at0007] occurrences matches {0..1} matches {	-- Size
+						items cardinality matches {0..*; unordered} matches {
+							allow_archetype CLUSTER occurrences matches {0..1} matches {
+								include
+									archetype_id/value matches {/dimensions\.v1/}
+							}
+						}
+					}
+					CLUSTER[at0.48] occurrences matches {0..1} matches {	-- Labour-specific findings
+						items cardinality matches {0..*; unordered} matches {
+							ELEMENT[at0.14] occurrences matches {0..1} matches {	-- Effacement
+								value matches {
+									0|[local::at0.15], 	-- Uneffaced
+									5|[local::at0.26], 	-- Ripe
+									10|[local::at0.16], 	-- 10% effaced
+									20|[local::at0.17], 	-- 20% effaced
+									30|[local::at0.18], 	-- 30% effaced
+									40|[local::at0.19], 	-- 40% effaced
+									50|[local::at0.20], 	-- Partially (50%) effaced
+									60|[local::at0.21], 	-- 60% effaced
+									70|[local::at0.22], 	-- 70% effaced
+									80|[local::at0.23], 	-- 80% effaced
+									90|[local::at0.24], 	-- 90% effaced
+									100|[local::at0.25]  	-- Fully effaced
+								}
+							}
+							ELEMENT[at0.40] occurrences matches {0..1} matches {	-- Thickness
+								value matches {
+									DV_CODED_TEXT matches {
+										defining_code matches {
+											[local::
+											at0.41, 	-- Thick
+											at0.42, 	-- Thin
+											at0.43, 	-- Paper-thin
+											at0.44]	-- Oedematous
+										}
+									}
+								}
+							}
+							ELEMENT[at0.45] occurrences matches {0..1} matches {	-- Application to presenting part
+								value matches {
+									DV_CODED_TEXT matches {
+										defining_code matches {
+											[local::
+											at0.46, 	-- Loosely applied
+											at0.47]	-- Tightly applied
+										}
+									}
+								}
+							}
+							CLUSTER[at0.27] occurrences matches {0..2} matches {	-- Cervical os
+								items cardinality matches {0..*; unordered} matches {
+									ELEMENT[at0.32] occurrences matches {0..1} matches {	-- Site
+										value matches {
+											DV_CODED_TEXT matches {
+												defining_code matches {
+													[local::
+													at0.33, 	-- External os
+													at0.34]	-- Internal os
+												}
+											}
+										}
+									}
+									CLUSTER[at0.31] occurrences matches {0..1} matches {	-- Dilation
+										items cardinality matches {0..*; unordered} matches {
+											ELEMENT[at0.28] occurrences matches {0..1} matches {	-- Estimate
+												value matches {
+													C_DV_QUANTITY <
+														property = <[openehr::122]>
+														list = <
+															["1"] = <
+																units = <"cm">
+																magnitude = <|0.0..10.0|>
+																precision = <|1|>
+															>
+														>
+													>
+												}
+											}
+											ELEMENT[at0.35] occurrences matches {0..1} matches {	-- Number of finger tips admitted
+												value matches {
+													DV_COUNT matches {*}
+												}
+											}
+										}
+									}
+									ELEMENT[at0.29] occurrences matches {0..1} matches {	-- Findings
+										value matches {
+											DV_TEXT matches {*}
+										}
+									}
+								}
+							}
+						}
+					}
+					allow_archetype CLUSTER occurrences matches {0..*} matches {
+						include
+							archetype_id/value matches {/palpation\.v1draft/}
+							archetype_id/value matches {/inspection\.v1draft/}
+						exclude
+							archetype_id/value matches {/.*/}
+					}
+					CLUSTER[at0.30] occurrences matches {0..1} matches {	-- Vaginal fluid
+						items cardinality matches {0..*; unordered} matches {
+							allow_archetype CLUSTER occurrences matches {0..1} matches {
+								include
+									archetype_id/value matches {/fluid\.v1/}
+							}
+						}
+					}
+					CLUSTER[at0003] occurrences matches {0..1} matches {	-- Detail
+						items cardinality matches {0..*; unordered} matches {
+							allow_archetype CLUSTER occurrences matches {0..1} matches {
+								include
+									archetype_id/value matches {/exam\.v1/}
+									archetype_id/value matches {/exam-fetus\.v1/}
+							}
+						}
+					}
+				}
+			}
+			ELEMENT[at0006] occurrences matches {0..*} matches {	-- Image
+				value matches {
+					DV_MULTIMEDIA matches {
+						media_type matches {
+							[openEHR::
+							426, 
+							427, 
+							429]
+						}
+					}
+				}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["en"] = <
+			items = <
+				["at0.1"] = <
+					description = <"Information about the size of the object for examination">
+					text = <"Size">
+				>
+				["at0.10"] = <
+					description = <"The cervix is deviated to the right">
+					text = <"To the right">
+				>
+				["at0.11"] = <
+					description = <"The cervix is deviated to the left">
+					text = <"To the left">
+				>
+				["at0.12"] = <
+					description = <"The cervix is anterior near the pubis">
+					text = <"Anterior">
+				>
+				["at0.13"] = <
+					description = <"The cervix is at the back near the sacrum">
+					text = <"Posterior">
+				>
+				["at0.14"] = <
+					description = <"The effacement of the uterine cervix in late pregnancy or labour.">
+					text = <"Effacement">
+				>
+				["at0.15"] = <
+					description = <"The cervix has not changed its form">
+					text = <"Uneffaced">
+				>
+				["at0.16"] = <
+					description = <"The cervix is effaced to about 10%">
+					text = <"10% effaced">
+				>
+				["at0.17"] = <
+					description = <"The cervix is effaced to about 20%">
+					text = <"20% effaced">
+				>
+				["at0.18"] = <
+					description = <"The cervix is effaced to about 30%">
+					text = <"30% effaced">
+				>
+				["at0.19"] = <
+					description = <"The cervix is effaced to about 40%">
+					text = <"40% effaced">
+				>
+				["at0.20"] = <
+					description = <"The cervix is partially effaced to about 50%">
+					text = <"Partially (50%) effaced">
+				>
+				["at0.21"] = <
+					description = <"The cervix is effaced to about 60%">
+					text = <"60% effaced">
+				>
+				["at0.22"] = <
+					description = <"The cervix is effaced to about 70%">
+					text = <"70% effaced">
+				>
+				["at0.23"] = <
+					description = <"The cervix is effaced to about 80%">
+					text = <"80% effaced">
+				>
+				["at0.24"] = <
+					description = <"The cervix is effaced to about 90%">
+					text = <"90% effaced">
+				>
+				["at0.25"] = <
+					description = <"The cervix is fully effaced to 100%">
+					text = <"Fully effaced">
+				>
+				["at0.26"] = <
+					description = <"The cervix is ripe and beginning to efface">
+					text = <"Ripe">
+				>
+				["at0.27"] = <
+					description = <"The outlet of the uterus">
+					text = <"Cervical os">
+				>
+				["at0.28"] = <
+					description = <"The dilation of the os">
+					text = <"Estimate">
+				>
+				["at0.29"] = <
+					description = <"Findings about the cervical os">
+					text = <"Findings">
+				>
+				["at0.30"] = <
+					description = <"Vaginal loss or discharge">
+					text = <"Vaginal fluid">
+				>
+				["at0.31"] = <
+					description = <"Dilation of cervix">
+					text = <"Dilation">
+				>
+				["at0.32"] = <
+					description = <"Identify part of cervix which is being examined">
+					text = <"Site">
+				>
+				["at0.33"] = <
+					description = <"External opening of the cervix to the vagina">
+					text = <"External os">
+				>
+				["at0.34"] = <
+					description = <"Internal opening of the cervix to the uterus">
+					text = <"Internal os">
+				>
+				["at0.35"] = <
+					description = <"Number of finger tips that are able to be admitted into the internal or external os">
+					text = <"Number of finger tips admitted">
+				>
+				["at0.36"] = <
+					description = <"Consistency of cervix">
+					text = <"Consistency">
+				>
+				["at0.37"] = <
+					description = <"Soft">
+					text = <"Soft">
+				>
+				["at0.38"] = <
+					description = <"Firm">
+					text = <"Firm">
+				>
+				["at0.39"] = <
+					description = <"Length of cervix">
+					text = <"Length">
+				>
+				["at0.40"] = <
+					description = <"Cervical thickness">
+					text = <"Thickness">
+				>
+				["at0.41"] = <
+					description = <"Thick">
+					text = <"Thick">
+				>
+				["at0.42"] = <
+					description = <"Thin">
+					text = <"Thin">
+				>
+				["at0.43"] = <
+					description = <"Very thin">
+					text = <"Paper-thin">
+				>
+				["at0.44"] = <
+					description = <"Thickened and swollen">
+					text = <"Oedematous">
+				>
+				["at0.45"] = <
+					description = <"Application of cervix to fetal presenting part">
+					text = <"Application to presenting part">
+				>
+				["at0.46"] = <
+					description = <"Not moulded to presenting part">
+					text = <"Loosely applied">
+				>
+				["at0.47"] = <
+					description = <"Moulded to presenting part">
+					text = <"Tightly applied">
+				>
+				["at0.48"] = <
+					description = <"*">
+					text = <"Labour-specific findings">
+				>
+				["at0.8"] = <
+					description = <"The position in relation to the normal anatomical position">
+					text = <"Position">
+				>
+				["at0.9"] = <
+					description = <"The cervix is central and in the normal position">
+					text = <"Central">
+				>
+				["at0000"] = <
+					description = <"Generic examination cluster for describing a finding on physical examination">
+					text = <"Examination">
+				>
+				["at0000.1"] = <
+					description = <"Examination findings on physical examination of the uterine cervix">
+					text = <"Examination of the cervix">
+				>
+				["at0001"] = <
+					description = <"The object of the examination">
+					text = <"Object">
+				>
+				["at0002"] = <
+					description = <"Textural description of the part examined">
+					text = <"Clinical description">
+				>
+				["at0003"] = <
+					description = <"More focused examination findings">
+					text = <"Detail">
+				>
+				["at0004"] = <
+					description = <"A group of statements about the normality of the examination">
+					text = <"Normal statements">
+				>
+				["at0005"] = <
+					description = <"A specific statement of normality">
+					text = <"Normal statement">
+				>
+				["at0006"] = <
+					description = <"Drawing or image of the area examined">
+					text = <"Image">
+				>
+				["at0007"] = <
+					description = <"Information about the size of the object for examination">
+					text = <"Size">
+				>
+				["at0008"] = <
+					description = <"Clinical findings">
+					text = <"Findings">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-COMPOSITION.discharge.v1draft.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-COMPOSITION.discharge.v1draft.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-COMPOSITION.discharge.v1draft.adl	(revision 39)
@@ -0,0 +1,53 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-COMPOSITION.discharge.v1draft
+
+concept
+	[at0000]	-- Discharge
+language
+	original_language = <[ISO_639-1::en]>
+description
+	original_author = <
+		["name"] = <"unknown">
+	>
+	details = <
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"For communication at the time of discharge from an episode of care or an institution.">
+			use = <"">
+			misuse = <"">
+		>
+	>
+	lifecycle_state = <"Initial">
+	other_contributors = <>
+
+definition
+	COMPOSITION[at0000] matches {	-- Discharge
+		category matches {
+			DV_CODED_TEXT matches {
+				defining_code matches {[openehr::433]}
+			}
+		}
+		context matches {
+			EVENT_CONTEXT matches {
+				other_context matches {
+					ITEM_TREE[at0001] matches {*}
+				}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["en"] = <
+			items = <
+				["at0000"] = <
+					description = <"A summarising communication about at the time of discharge from an institution or an episode of care">
+					text = <"Discharge">
+				>
+				["at0001"] = <
+					description = <"@ internal @">
+					text = <"Tree">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-COMPOSITION.encounter.v1draft.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-COMPOSITION.encounter.v1draft.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-COMPOSITION.encounter.v1draft.adl	(revision 39)
@@ -0,0 +1,45 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-COMPOSITION.encounter.v1draft
+
+concept
+	[at0000]	-- Encounter
+language
+	original_language = <[ISO_639-1::en]>
+description
+	original_author = <
+		["name"] = <"Thomas Beale">
+		["organisation"] = <"Ocean Informatics">
+		["date"] = <"2005-10-10">
+	>
+	details = <
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"Record of encounter as a progress note.">
+			use = <"">
+			keywords = <"progress", "note", "encounter">
+			misuse = <"">
+		>
+	>
+	lifecycle_state = <"AuthorDraft">
+	other_contributors = <>
+
+definition
+	COMPOSITION[at0000] matches {	-- Encounter
+		category matches {
+			DV_CODED_TEXT matches {
+				defining_code matches {[openehr::433]}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["en"] = <
+			items = <
+				["at0000"] = <
+					description = <"Generic encounter or progress note composition">
+					text = <"Encounter">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-EVALUATION.adverse.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-EVALUATION.adverse.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-EVALUATION.adverse.v1.adl	(revision 39)
@@ -0,0 +1,411 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-EVALUATION.adverse.v1
+
+concept
+	[at0000]	-- Adverse reaction
+language
+	original_language = <[ISO_639-1::en]>
+	translations = <
+		["de"] = <
+			language = <[ISO_639-1::de]>
+			author = <
+				["name"] = <"Jasmin Buck, Sebastian Garde">
+				["organisation"] = <"University of Heidelberg, Central Queensland University">
+			>
+		>
+	>
+description
+	original_author = <
+		["name"] = <"Sam Heard">
+		["organisation"] = <"Ocean Informatics">
+		["date"] = <"23/04/2006">
+		["email"] = <"sam.heard@oceaninformatics.biz">
+	>
+	details = <
+		["de"] = <
+			language = <[ISO_639-1::de]>
+			purpose = <"Zur Dokumentation von Nebenwirkungen auf einen bestimmten Wirkstoff. Die Art dieses Stoffes kann ebenfalls Dokumentiert werden. Früherer Aufzeichnungen können hinzugefügt werden und auch die Art der Reaktion beim jeweiligen Ereignis.">
+			use = <"">
+			keywords = <"Reaktion", "allergisch", "Allergie", "Intoleranz">
+			misuse = <"Nicht zur Dokumentation keines Verlaufs einer Reaktion auf eine Substanz. Für diesen Zweck openEHR-EVALUATION.excluded-adverse  benutzen. Für unbekannte Reaktionen auf beliebige Wirkstoffe openEHR-EVALUATION.excluded benutzen.">
+		>
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"For recording adverse reaction(s) to a particular 'Agent' the type of which may be recorded also. Historical recordings may be added and the type of reaction on each occasion.">
+			use = <"">
+			keywords = <"reaction", "allergic", "allergy", "intolerance">
+			misuse = <"Do not use for recording no history of a reaction to a substance. Use openEHR-EVALUATION.excluded-adverse for this purpose. No known reactions to any agents, use openEHR-EVALUATION.excluded.">
+		>
+	>
+	lifecycle_state = <"AuthorDraft">
+	other_contributors = <"NEHTA data groups (Australia)", "General Practice Computing Group (Australia)">
+
+definition
+	EVALUATION[at0000] matches {	-- Adverse reaction
+		data matches {
+			ITEM_TREE[at0002] matches {	-- structure
+				items cardinality matches {0..*; unordered} matches {
+					ELEMENT[at0003] matches {	-- Agent
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+					ELEMENT[at0010] occurrences matches {0..1} matches {	-- Agent category
+						value matches {
+							DV_CODED_TEXT matches {
+								defining_code matches {
+									[local::
+									at0011, 	-- Food
+									at0012, 	-- Animal
+									at0013, 	-- Medication
+									at0014, 	-- Other chemical or substance
+									at0031, 	-- Non-active ingredient of medication
+									at0033, 	-- Imaging dye or media
+									at0034]	-- Environmental
+								}
+							}
+						}
+					}
+					CLUSTER[at0019] occurrences matches {0..*} matches {	-- Exposure and reaction detail
+						items cardinality matches {1..*; unordered} matches {
+							ELEMENT[at0032] occurrences matches {0..1} matches {	-- Specific substance
+								value matches {
+									DV_TEXT matches {*}
+								}
+							}
+							ELEMENT[at0015] occurrences matches {0..1} matches {	-- Reaction category
+								value matches {
+									DV_CODED_TEXT matches {
+										defining_code matches {
+											[local::
+											at0016, 	-- Intolerance
+											at0017, 	-- Sensitivity
+											at0018, 	-- Allergy
+											at0030]	-- No reaction
+										}
+									}
+								}
+							}
+							ELEMENT[at0004] occurrences matches {0..1} matches {	-- Probability of causation
+								value matches {
+									DV_CODED_TEXT matches {
+										defining_code matches {
+											[local::
+											at0005, 	-- Certain/Highly likely
+											at0006, 	-- Probable
+											at0007]	-- Possible
+										}
+									}
+								}
+							}
+							ELEMENT[at0020] occurrences matches {0..1} matches {	-- Date of exposure
+								value matches {
+									DV_DATE_TIME matches {
+										value matches {yyyy-??-??T??:??:??}
+									}
+								}
+							}
+							ELEMENT[at0021] occurrences matches {0..1} matches {	-- Duration of the exposure
+								value matches {
+									DV_DURATION matches {
+										value matches {PYMWDTHMS}
+									}
+								}
+							}
+							ELEMENT[at0023] occurrences matches {0..1} matches {	-- Reaction severity
+								value matches {
+									DV_CODED_TEXT matches {
+										defining_code matches {
+											[local::
+											at0024, 	-- Mild
+											at0025, 	-- Disabling
+											at0026]	-- Life threatening
+										}
+									}
+								}
+							}
+							ELEMENT[at0022] matches {	-- Reaction description
+								value matches {
+									DV_TEXT matches {*}
+								}
+							}
+							ELEMENT[at0027] occurrences matches {0..1} matches {	-- Date of onset of reaction
+								value matches {
+									DV_DATE_TIME matches {
+										value matches {yyyy-??-??T??:??:??}
+									}
+								}
+							}
+							ELEMENT[at0028] occurrences matches {0..1} matches {	-- Duration of the reaction
+								value matches {
+									C_DV_QUANTITY <
+										property = <[openehr::128]>
+									>
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["de"] = <
+			items = <
+				["at0000"] = <
+					description = <"Zur Dokumentation des Vorhandenseins von schädlichen oder unerwünschten Reaktionen auf einen Wirkstoff oder eine Substanz, einschließlich Nahrung, festgestellt von einem Klinikarzt - Vergiftungen und unsachgemäßer Gebrauch ausgeschlossen">
+					text = <"Nebenwirkung">
+				>
+				["at0002"] = <
+					description = <"@ internal @">
+					text = <"Structure">
+				>
+				["at0003"] = <
+					description = <"Der Wirkstoff, die Substanz oder die Klasse, welche die Nebenwirkung ausgelöst hat">
+					text = <"Wirkstoff">
+				>
+				["at0004"] = <
+					description = <"Grad an Sicherheit, dass der Wirkstoff der Auslöser der Reaktion war">
+					text = <"Wahrscheinlichkeit für kausalen Zusammenhang">
+				>
+				["at0005"] = <
+					description = <"Die Reaktion ist laut einem Klinikarzt auf den Wirkstoff zurückzuführen">
+					text = <"Sicher/ sehr wahrscheinlich">
+				>
+				["at0006"] = <
+					description = <"Die Reaktion ist wahrscheinlich auf den Wirkstoff zurückzuführen">
+					text = <"Wahrscheinlich">
+				>
+				["at0007"] = <
+					description = <"Die Reaktion ist möglicherweise auf den Wirkstoff zurückzuführen">
+					text = <"Möglicherweise">
+				>
+				["at0010"] = <
+					description = <"Die Gruppe des Wirkstoffs">
+					text = <"Wirkstoffgruppe">
+				>
+				["at0011"] = <
+					description = <"Eine Substanz, die als Teil der Ernährung zugeführt wurde ">
+					text = <"Nahrungsmittel">
+				>
+				["at0012"] = <
+					description = <"Ein lebender Organismus und dessen Gift oder produzierter Stoff">
+					text = <"Tier">
+				>
+				["at0013"] = <
+					description = <"Eine Substanz, die aus medizinischen Gründen eingenommen oder verabreicht wurde">
+					text = <"Medikament">
+				>
+				["at0014"] = <
+					description = <"Nicht-medizinische Chemikalie oder Substanz">
+					text = <"Andere Chemikalie oder Substanz">
+				>
+				["at0015"] = <
+					description = <"Die Art der von der Person erfahrenen Reaktion, von einem Klinikarzt ermittelt">
+					text = <"Reaktionsart">
+				>
+				["at0016"] = <
+					description = <"Führt zu unerfreulichen Symptomen, die ausreichen um einen Gebrauch in der Zukunft zu vermeiden">
+					text = <"Intoleranz">
+				>
+				["at0017"] = <
+					description = <"Führt zu Krankhaftigkeit die eventuell zum Wohle des Patienten behandelt werden muss">
+					text = <"Empfindlichkeit">
+				>
+				["at0018"] = <
+					description = <"Führt zu einer IgE Reaktion">
+					text = <"Allergie">
+				>
+				["at0019"] = <
+					description = <"Einzelheiten der von der Person erfahrenen Reaktion">
+					text = <"Exposition und Einzelheiten der Reaktion">
+				>
+				["at0020"] = <
+					description = <"Das Datum (+/- Zeit) wann die Person gegenüber dem Wirkstoff exponiert wurde">
+					text = <"Datum der Exposition">
+				>
+				["at0021"] = <
+					description = <"Die Dauer der Exposition gegenüber dem Wirkstoff">
+					text = <"Dauer der Exposition">
+				>
+				["at0022"] = <
+					description = <"Eine Beschreibung der von einer Person erfahrenen Reaktion auf einen Wirkstoff">
+					text = <"Beschreibung der Reaktion">
+				>
+				["at0023"] = <
+					description = <"Die Klasse der Reaktion für zukünftige Empfehlungen">
+					text = <"Schweregrad der Reaktion">
+				>
+				["at0024"] = <
+					description = <"Eine Reaktion, die wenig Leiden und keinen Verlust der Arbeitsfähigkeit/ Schulfähigkeit verursacht">
+					text = <"Gelinde">
+				>
+				["at0025"] = <
+					description = <"Eine Reaktion, die Krankheit und/oder den Verlust Funktionen verursacht">
+					text = <"Unfähig machend">
+				>
+				["at0026"] = <
+					description = <"Eine Reaktion die lebensbedrohlich wahr oder sein kann">
+					text = <"Lebensbedrohlich">
+				>
+				["at0027"] = <
+					description = <"Das Datum, an dem die Reaktion eintrat">
+					text = <"Datum des Beginns der Reaktion">
+				>
+				["at0028"] = <
+					description = <"Die Dauer der Reaktion">
+					text = <"Dauer der Reaktion">
+				>
+				["at0030"] = <
+					description = <"Die Person war ohne Reaktion exponiert">
+					text = <"Keine Reaktion">
+				>
+				["at0031"] = <
+					description = <"Ein nicht-medizinischer Bestandteil des Medikaments, wie Farbstoff, Konservierungsstoff, usw. (Untertyp von andere Chemikalien)">
+					text = <"Inaktiver Bestandteil des Medikaments">
+				>
+				["at0032"] = <
+					description = <"Die charakteristische Substanz, die die Reaktion verursacht, falls verschieden vom Wirkstoff (z.B. Marken oder Teile einer Klasse)">
+					text = <"Charakteristische Substanz">
+				>
+				["at0033"] = <
+					description = <"Zur diagnostischen Bildgebung benutzter Farbstoff oder Medium (Untertyp von anderen Chemikalien)">
+					text = <"Abbildender Farbstoff oder Medium">
+				>
+				["at0034"] = <
+					description = <"Ein in der Umwelt vorhandener Wirkstoff">
+					text = <"Umgebend">
+				>
+			>
+		>
+		["en"] = <
+			items = <
+				["at0000"] = <
+					description = <"Recording the presence of a harmful or undesirable response to an agent or substance including food, as determined by the clinician - excluding poisoning and abnormal use">
+					text = <"Adverse reaction">
+				>
+				["at0002"] = <
+					description = <"@ internal @">
+					text = <"structure">
+				>
+				["at0003"] = <
+					description = <"The agent or substance or class that caused the adverse reaction">
+					text = <"Agent">
+				>
+				["at0004"] = <
+					description = <"Degree of certainty that the agent was the cause of the reaction">
+					text = <"Probability of causation">
+				>
+				["at0005"] = <
+					description = <"A reaction to the agent is deemed to be or have been present by the clinician">
+					text = <"Certain/Highly likely">
+				>
+				["at0006"] = <
+					description = <"The reaction is deemed to be the probable cause of the reaction">
+					text = <"Probable">
+				>
+				["at0007"] = <
+					description = <"The agent is deemed to be a possible cause of the reaction">
+					text = <"Possible">
+				>
+				["at0010"] = <
+					description = <"The category of the agent">
+					text = <"Agent category">
+				>
+				["at0011"] = <
+					description = <"A substance taken as part of the diet">
+					text = <"Food">
+				>
+				["at0012"] = <
+					description = <"A living organism or its venom or produce">
+					text = <"Animal">
+				>
+				["at0013"] = <
+					description = <"A substance taken or applied  for medicinal purposes">
+					text = <"Medication">
+				>
+				["at0014"] = <
+					description = <"Non-medicinal chemicals or substances">
+					text = <"Other chemical or substance">
+				>
+				["at0015"] = <
+					description = <"The type of reaction experience by the person as determined by the clinician">
+					text = <"Reaction category">
+				>
+				["at0016"] = <
+					description = <"Leads to unpleasant symptoms which are sufficient to avoid use in the future">
+					text = <"Intolerance">
+				>
+				["at0017"] = <
+					description = <"Leads to morbidity which is potentially threatening to the wellbeing of the person">
+					text = <"Sensitivity">
+				>
+				["at0018"] = <
+					description = <"Leads to an IgE mediated reaction">
+					text = <"Allergy">
+				>
+				["at0019"] = <
+					description = <"Details of the reaction experienced by the person">
+					text = <"Exposure and reaction detail">
+				>
+				["at0020"] = <
+					description = <"The date (+/- time) when the person became exposed to the agent">
+					text = <"Date of exposure">
+				>
+				["at0021"] = <
+					description = <"The duration of the exposure to the agent">
+					text = <"Duration of the exposure">
+				>
+				["at0022"] = <
+					description = <"A description of the reaction to this agent as experienced by the person">
+					text = <"Reaction description">
+				>
+				["at0023"] = <
+					description = <"The category of the reaction for future reference">
+					text = <"Reaction severity">
+				>
+				["at0024"] = <
+					description = <"A reaction which causes little distress and no loss of work/school">
+					text = <"Mild">
+				>
+				["at0025"] = <
+					description = <"A reaction which causes morbidity and/or loss of function">
+					text = <"Disabling">
+				>
+				["at0026"] = <
+					description = <"A reaction which was or could be lifethreatening">
+					text = <"Life threatening">
+				>
+				["at0027"] = <
+					description = <"The date the reaction began">
+					text = <"Date of onset of reaction">
+				>
+				["at0028"] = <
+					description = <"The duration of the reaction">
+					text = <"Duration of the reaction">
+				>
+				["at0030"] = <
+					description = <"Person has been exposed with no reaction">
+					text = <"No reaction">
+				>
+				["at0031"] = <
+					description = <"A non-medicinal ingredient of medication such as colouring, preservative, etc (subtype of other chemical)">
+					text = <"Non-active ingredient of medication">
+				>
+				["at0032"] = <
+					description = <"The specific substance that caused the reaction if different from the agent (e.g. brands or members of a class)">
+					text = <"Specific substance">
+				>
+				["at0033"] = <
+					description = <"A dye or media used in diagnostic imaging (subtype of other chemical)">
+					text = <"Imaging dye or media">
+				>
+				["at0034"] = <
+					description = <"An agent present in the environment">
+					text = <"Environmental">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-INSTRUCTION.medication.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-INSTRUCTION.medication.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-INSTRUCTION.medication.v1.adl	(revision 39)
@@ -0,0 +1,88 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-INSTRUCTION.medication.v1
+
+concept
+	[at0000]	-- Medication order
+language
+	original_language = <[ISO_639-1::en]>
+	translations = <
+		["de"] = <
+			language = <[ISO_639-1::de]>
+			author = <
+				["name"] = <"Jasmin Buck, Sebastian Garde">
+				["organisation"] = <"University of Heidelberg, Central Queensland University">
+			>
+		>
+	>
+description
+	original_author = <
+		["name"] = <"Sam Heard">
+		["organisation"] = <"Ocean Informatics">
+		["date"] = <"21/04/2006">
+		["email"] = <"sam.heard@oceaninformatics.biz">
+	>
+	details = <
+		["de"] = <
+			language = <[ISO_639-1::de]>
+			purpose = <"Zur Dokumentation einer Medikationsverordnung, kann mehr als eine Aktivität enthalten, aber immer mit der selben Struktur">
+			use = <"Zur Dokumentation von Anweisungen bezüglich eines Medikaments">
+			keywords = <"Verschreibung", "Medikationsverordnung", "Verordnung">
+			misuse = <"Nicht zur Dokumentation der Verabreichung, der Gabe usw. benutzen. Für diese Dokumentation openEHR-EHR-ACTION.medication benutzen.">
+		>
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"For recording a medication order, which may involve more than one activity, but all have the same structure.">
+			use = <"For recording an instruction about medication.">
+			keywords = <"prescribe", "medication order", "order">
+			misuse = <"Do not use for recording administration, dispensing etc. Use openEHR-EHR-ACTION.medication for these recordings.">
+		>
+	>
+	lifecycle_state = <"AuthorDraft">
+	other_contributors = <"NEHTA (Australia) data groups", ...>
+
+definition
+	INSTRUCTION[at0000] matches {	-- Medication order
+		activities cardinality matches {0..*; unordered} matches {
+			ACTIVITY[at0001] occurrences matches {0..*} matches {	-- Medication activity
+				action_archetype_id matches {/medication\.v1/}
+				description matches {
+					allow_archetype ITEM_TREE occurrences matches {0..1} matches {
+						include
+							archetype_id/value matches {/medication\.v1/}
+							archetype_id/value matches {/medication-formulation\.v1/}
+							archetype_id/value matches {/medication-vaccine\.v1/}
+						exclude
+							archetype_id/value matches {/.*/}
+					}
+				}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["de"] = <
+			items = <
+				["at0000"] = <
+					description = <"Eine von einem Klinikarzt verfasste Verordnung oder Anweisung, die beschreibt welches Medikament wann, für wie lange usw. eingenommen werden soll">
+					text = <"Medikationsverordnung">
+				>
+				["at0001"] = <
+					description = <"Informationen über die auszuführende Medikationshandlung">
+					text = <"Medikationshandlung">
+				>
+			>
+		>
+		["en"] = <
+			items = <
+				["at0000"] = <
+					description = <"An order or instruction created by a clinician which specifies which medication to take, when, for how long etc.">
+					text = <"Medication order">
+				>
+				["at0001"] = <
+					description = <"Information about the medication action(s) to be carried out">
+					text = <"Medication activity">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-INSTRUCTION.referral.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-INSTRUCTION.referral.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-INSTRUCTION.referral.v1.adl	(revision 39)
@@ -0,0 +1,84 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-INSTRUCTION.referral.v1
+
+concept
+	[at0000]	-- Referral to second provider
+language
+	original_language = <[ISO_639-1::en]>
+	translations = <
+		["de"] = <
+			language = <[ISO_639-1::de]>
+			author = <
+				["name"] = <"Jasmin Buck, Sebastian Garde">
+				["organisation"] = <"University of Heidelberg, Central Queensland University">
+			>
+		>
+	>
+description
+	original_author = <
+		["name"] = <"Sam Heard">
+		["email"] = <"sam.heard@oceaninformatics.biz">
+	>
+	details = <
+		["de"] = <
+			language = <[ISO_639-1::de]>
+			purpose = <"Zur Dokumentation einer Bitte nach Behandlung (Überweisung) durch einen zweiten Gesundheitsdienstleister.">
+			use = <"">
+			keywords = <"Überweisung", "Anfrage", "Anordnung">
+			misuse = <"">
+		>
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"For recording a request for care (referral to) a second health provider">
+			use = <"">
+			keywords = <"refer", "request", "order">
+			misuse = <"">
+		>
+	>
+	lifecycle_state = <"AuthorDraft">
+	other_contributors = <>
+
+definition
+	INSTRUCTION[at0000] matches {	-- Referral to second provider
+		activities cardinality matches {0..*; unordered} matches {
+			ACTIVITY[at0001] occurrences matches {0..1} matches {	-- Refer
+				action_archetype_id matches {/referral\.v1/}
+				description matches {
+					allow_archetype ITEM_TREE occurrences matches {0..1} matches {
+						include
+							archetype_id/value matches {/referral\.v1/}
+						exclude
+							archetype_id/value matches {/.*/}
+					}
+				}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["de"] = <
+			items = <
+				["at0000"] = <
+					description = <"Eine Bitte nach Gesundheitsdienstleistung von einem Anbieter zu einem zweiten.">
+					text = <"Überweisung zu einem zweiten Gesundheitsdienstleister">
+				>
+				["at0001"] = <
+					description = <"Die Handlung der Überweisung zu einem zweiten Gesundheitsdienstleister">
+					text = <"Überweisung">
+				>
+			>
+		>
+		["en"] = <
+			items = <
+				["at0000"] = <
+					description = <"A request for health care from one provider to a second provider">
+					text = <"Referral to second provider">
+				>
+				["at0001"] = <
+					description = <"The activity of referring to a second health provider">
+					text = <"Refer">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl	(revision 39)
@@ -0,0 +1,492 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-ITEM_TREE.laboratory_request.v1
+
+concept
+	[at0000]	-- Laboratory test request
+language
+	original_language = <[ISO_639-1::en]>
+	translations = <
+		["de"] = <
+			language = <[ISO_639-1::de]>
+			author = <
+				["name"] = <"Jasmin Buck, Sebastian Garde">
+				["organisation"] = <"University of Heidelberg, Central Queensland University">
+			>
+		>
+	>
+description
+	original_author = <
+		["name"] = <"unknown">
+	>
+	details = <
+		["de"] = <
+			language = <[ISO_639-1::de]>
+			purpose = <"Laboranforderung">
+			use = <"*">
+			misuse = <"*">
+		>
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"Laboratory request">
+			use = <"">
+			misuse = <"">
+		>
+	>
+	lifecycle_state = <"Initial">
+	other_contributors = <>
+
+definition
+	ITEM_TREE[at0000] occurrences matches {0..*} matches {	-- Laboratory test request
+		items cardinality matches {0..*; unordered} matches {
+			CLUSTER[at0002] occurrences matches {0..1} matches {	-- Clinical information
+				items cardinality matches {0..*; unordered} matches {
+					ELEMENT[at0003] occurrences matches {0..1} matches {	-- Findings
+						value matches {
+							DV_CODED_TEXT matches {
+								defining_code matches {[local::]}
+							}
+						}
+					}
+				}
+			}
+			CLUSTER[at0004] occurrences matches {0..1} matches {	-- Tests required
+				items cardinality matches {0..*; unordered} matches {
+					ELEMENT[at0005] occurrences matches {0..*} matches {	-- Test name
+						value matches {
+							DV_CODED_TEXT matches {
+								defining_code matches {[local::]}
+							}
+						}
+					}
+				}
+			}
+			ELEMENT[at0006] occurrences matches {0..1} matches {	-- DateTime requested
+				value matches {
+					DV_DATE_TIME matches {
+						value matches {yyyy-??-??T??:??:??}
+					}
+				}
+			}
+			ELEMENT[at0007] occurrences matches {0..1} matches {	-- Special instructions
+				value matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[local::]}
+					}
+				}
+			}
+			CLUSTER[at0008] occurrences matches {0..1} matches {	-- Requesting provider details
+				items cardinality matches {0..*; unordered} matches {
+					ELEMENT[at0009] occurrences matches {0..1} matches {	-- Name
+						value matches {
+							DV_CODED_TEXT matches {
+								defining_code matches {[local::]}
+							}
+						}
+					}
+					CLUSTER[at0010] occurrences matches {0..1} matches {	-- Contact details
+						items cardinality matches {0..*; unordered} matches {
+							ELEMENT[at0011] occurrences matches {0..1} matches {	-- Telephone
+								value matches {
+									DV_CODED_TEXT matches {
+										defining_code matches {[local::]}
+									}
+								}
+							}
+							ELEMENT[at0012] occurrences matches {0..1} matches {	-- Email
+								value matches {
+									DV_CODED_TEXT matches {
+										defining_code matches {[local::]}
+									}
+								}
+							}
+							ELEMENT[at0013] occurrences matches {0..1} matches {	-- Facsimile
+								value matches {
+									DV_CODED_TEXT matches {
+										defining_code matches {[local::]}
+									}
+								}
+							}
+							ELEMENT[at0014] occurrences matches {0..1} matches {	-- Address
+								value matches {
+									DV_CODED_TEXT matches {
+										defining_code matches {[local::]}
+									}
+								}
+							}
+						}
+					}
+				}
+			}
+			CLUSTER[at0015] occurrences matches {0..1} matches {	-- Laboratory details
+				items cardinality matches {0..*; unordered} matches {
+					ELEMENT[at0016] occurrences matches {0..1} matches {	-- Name
+						value matches {
+							DV_CODED_TEXT matches {
+								defining_code matches {[local::]}
+							}
+						}
+					}
+					CLUSTER[at0017] occurrences matches {0..1} matches {	-- Contact details
+						items cardinality matches {0..*; unordered} matches {
+							ELEMENT[at0018] occurrences matches {0..1} matches {	-- Telephone
+								value matches {
+									DV_CODED_TEXT matches {
+										defining_code matches {[local::]}
+									}
+								}
+							}
+							ELEMENT[at0019] occurrences matches {0..1} matches {	-- Email
+								value matches {
+									DV_CODED_TEXT matches {
+										defining_code matches {[local::]}
+									}
+								}
+							}
+							ELEMENT[at0020] occurrences matches {0..1} matches {	-- Facsimile
+								value matches {
+									DV_CODED_TEXT matches {
+										defining_code matches {[local::]}
+									}
+								}
+							}
+							ELEMENT[at0021] occurrences matches {0..1} matches {	-- Address
+								value matches {
+									DV_CODED_TEXT matches {
+										defining_code matches {[local::]}
+									}
+								}
+							}
+						}
+					}
+				}
+			}
+			CLUSTER[at0022] occurrences matches {0..1} matches {	-- Process
+				items cardinality matches {0..*; unordered} matches {
+					CLUSTER[at0024] occurrences matches {0..1} matches {	-- Urgency
+						items cardinality matches {0..*; unordered} matches {
+							ELEMENT[at0025] occurrences matches {0..1} matches {	-- Timing
+								value matches {
+									0|[local::at0026], 	-- Emergency
+									1|[local::at0027], 	-- Urgent
+									2|[local::at0028]  	-- Non-urgent
+								}
+							}
+						}
+					}
+					CLUSTER[at0029] occurrences matches {0..1} matches {	-- Specimen details
+						items cardinality matches {0..*; unordered} matches {
+							ELEMENT[at0030] occurrences matches {0..1} matches {	-- Descriptions
+								value matches {
+									DV_CODED_TEXT matches {
+										defining_code matches {[local::]}
+									}
+								}
+							}
+							ELEMENT[at0031] occurrences matches {0..1} matches {	-- Body site
+								value matches {
+									DV_CODED_TEXT matches {
+										defining_code matches {[local::]}
+									}
+								}
+							}
+							ELEMENT[at0032] occurrences matches {0..1} matches {	-- Collection DateTime
+								value matches {
+									DV_DATE_TIME matches {
+										value matches {yyyy-??-??T??:??:??}
+									}
+								}
+							}
+							ELEMENT[at0033] occurrences matches {0..1} matches {	-- Collector name
+								value matches {
+									DV_CODED_TEXT matches {
+										defining_code matches {[local::]}
+									}
+								}
+							}
+							ELEMENT[at0034] occurrences matches {0..1} matches {	-- Tubes collected
+								value matches {
+									DV_COUNT matches {*}
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["de"] = <
+			items = <
+				["at0000"] = <
+					description = <"Angeforderte Daten eines Labortests als Teil einer Anweisung">
+					text = <"Labortest Anforderung">
+				>
+				["at0002"] = <
+					description = <"Für die Laboranfrage relevante klinische Informationen">
+					text = <"Klinische Informationen">
+				>
+				["at0003"] = <
+					description = <"Für die Laboranfrage relevante klinische Befunde">
+					text = <"Befunde">
+				>
+				["at0004"] = <
+					description = <"Die angeforderten Test bei dieser Laboranfrage">
+					text = <"Angeforderte Tests">
+				>
+				["at0005"] = <
+					description = <"Testname">
+					text = <"Testname">
+				>
+				["at0006"] = <
+					description = <"Datum und Zeitpunkt, wann der Labortest in Auftrag gegeben wurde">
+					text = <"Zeitpunkt des Auftrags">
+				>
+				["at0007"] = <
+					description = <"Besondere Anweisungen dieser Labortestanforderung">
+					text = <"Besondere Anweisungen">
+				>
+				["at0008"] = <
+					description = <"Einzelheiten des Anfordernden">
+					text = <"Einzelheiten des Anfordernden">
+				>
+				["at0009"] = <
+					description = <"Name des Anfordernden">
+					text = <"Name">
+				>
+				["at0010"] = <
+					description = <"Kontakteinzelheiten des Dienstleisters, die den Labortest angefordert hat">
+					text = <"Kantakteinzelheiten">
+				>
+				["at0011"] = <
+					description = <"*">
+					text = <"Telefonnummer">
+				>
+				["at0012"] = <
+					description = <"*">
+					text = <"E-Mail">
+				>
+				["at0013"] = <
+					description = <"*">
+					text = <"Faxnummer">
+				>
+				["at0014"] = <
+					description = <"*">
+					text = <"Adress">
+				>
+				["at0015"] = <
+					description = <"Einzelheiten des Labors zu dem die Anforderung übermittelt wurde">
+					text = <"Einzelheiten des Labors">
+				>
+				["at0016"] = <
+					description = <"*">
+					text = <"Name">
+				>
+				["at0017"] = <
+					description = <"*">
+					text = <"Kontakteinzelheiten">
+				>
+				["at0018"] = <
+					description = <"*">
+					text = <"Telefonnummer">
+				>
+				["at0019"] = <
+					description = <"*">
+					text = <"E-Mail">
+				>
+				["at0020"] = <
+					description = <"*">
+					text = <"Faxnummer">
+				>
+				["at0021"] = <
+					description = <"*">
+					text = <"Adresse">
+				>
+				["at0022"] = <
+					description = <"Informationen zum Ablauf der Laboranforderung">
+					text = <"Ablauf">
+				>
+				["at0024"] = <
+					description = <"*">
+					text = <"Dringlichkeit">
+				>
+				["at0025"] = <
+					description = <"*">
+					text = <"Zeitvorgabe">
+				>
+				["at0026"] = <
+					description = <"Angeforderter Labortest muss sofort ausgeführt werden">
+					text = <"Notfall">
+				>
+				["at0027"] = <
+					description = <"Der angeforderte Labortest muss so bald wie möglich ausgeführt werden">
+					text = <"Dringend">
+				>
+				["at0028"] = <
+					description = <"Ausführung des angeforderter Labortest wenn es dem Labor möglich ist">
+					text = <"Nicht dringend">
+				>
+				["at0029"] = <
+					description = <"Einzelheiten der Probe">
+					text = <"Einzelheiten der Probe">
+				>
+				["at0030"] = <
+					description = <"Beschreibung der Probe">
+					text = <"Beschreibung">
+				>
+				["at0031"] = <
+					description = <"Die Körperstelle, an der die Probe genommen wurde">
+					text = <"Körperstelle">
+				>
+				["at0032"] = <
+					description = <"Das Datum und der Zeitpunkt, wann die Probe gewonnen wurde">
+					text = <"Zeitpunkt der Gewinnung">
+				>
+				["at0033"] = <
+					description = <"Der Name des Abnehmers der Probe">
+					text = <"Name des Abnehmers">
+				>
+				["at0034"] = <
+					description = <"Anzahl der Sammelröhrchen">
+					text = <"Sammelröhrchen">
+				>
+			>
+		>
+		["en"] = <
+			items = <
+				["at0000"] = <
+					description = <"Data about a laboratory test request as part of an instruction">
+					text = <"Laboratory test request">
+				>
+				["at0002"] = <
+					description = <"Clinical information relevant to the laboratory request">
+					text = <"Clinical information">
+				>
+				["at0003"] = <
+					description = <"Clinical findings relevant to the laboratory request.">
+					text = <"Findings">
+				>
+				["at0004"] = <
+					description = <"The required tests by this laboratory request">
+					text = <"Tests required">
+				>
+				["at0005"] = <
+					description = <"Test name">
+					text = <"Test name">
+				>
+				["at0006"] = <
+					description = <"The date and time when the laboratory tests were requested">
+					text = <"DateTime requested">
+				>
+				["at0007"] = <
+					description = <"The special instructions of this laboratory request">
+					text = <"Special instructions">
+				>
+				["at0008"] = <
+					description = <"The laboratory request provider details">
+					text = <"Requesting provider details">
+				>
+				["at0009"] = <
+					description = <"Name of the requesting provider">
+					text = <"Name">
+				>
+				["at0010"] = <
+					description = <"Contact details of the provider who made the laboratory request">
+					text = <"Contact details">
+				>
+				["at0011"] = <
+					description = <"*">
+					text = <"Telephone">
+				>
+				["at0012"] = <
+					description = <"*">
+					text = <"Email">
+				>
+				["at0013"] = <
+					description = <"*">
+					text = <"Facsimile">
+				>
+				["at0014"] = <
+					description = <"*">
+					text = <"Address">
+				>
+				["at0015"] = <
+					description = <"The details of the laboratory to which the laboratory request was referred.">
+					text = <"Laboratory details">
+				>
+				["at0016"] = <
+					description = <"Name of the laboratory">
+					text = <"Name">
+				>
+				["at0017"] = <
+					description = <"*">
+					text = <"Contact details">
+				>
+				["at0018"] = <
+					description = <"*">
+					text = <"Telephone">
+				>
+				["at0019"] = <
+					description = <"*">
+					text = <"Email">
+				>
+				["at0020"] = <
+					description = <"*">
+					text = <"Facsimile">
+				>
+				["at0021"] = <
+					description = <"*">
+					text = <"Address">
+				>
+				["at0022"] = <
+					description = <"Information about the process of the laboratory request">
+					text = <"Process">
+				>
+				["at0024"] = <
+					description = <"*">
+					text = <"Urgency">
+				>
+				["at0025"] = <
+					description = <"*">
+					text = <"Timing">
+				>
+				["at0026"] = <
+					description = <"Require the laboratory test done immediately">
+					text = <"Emergency">
+				>
+				["at0027"] = <
+					description = <"Require the laboratory test done as soon as possible">
+					text = <"Urgent">
+				>
+				["at0028"] = <
+					description = <"Require the laboratory test at laboratories convenience">
+					text = <"Non-urgent">
+				>
+				["at0029"] = <
+					description = <"Specimen details">
+					text = <"Specimen details">
+				>
+				["at0030"] = <
+					description = <"Descriptions of the specimen">
+					text = <"Descriptions">
+				>
+				["at0031"] = <
+					description = <"The site of the body where the specimen was collected">
+					text = <"Body site">
+				>
+				["at0032"] = <
+					description = <"The date and time when the specimen was collected.">
+					text = <"Collection DateTime">
+				>
+				["at0033"] = <
+					description = <"The specimen collector name">
+					text = <"Collector name">
+				>
+				["at0034"] = <
+					description = <"Indicate number of tubes">
+					text = <"Tubes collected">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-ITEM_TREE.imaging.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-ITEM_TREE.imaging.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-ITEM_TREE.imaging.v1.adl	(revision 39)
@@ -0,0 +1,127 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-ITEM_TREE.imaging.v1
+
+concept
+	[at0000]	-- Imaging data
+language
+	original_language = <[ISO_639-1::en]>
+description
+	original_author = <
+		["name"] = <"Sam Heard">
+		["organisation"] = <"Ocean Informatics">
+		["date"] = <"9/01/2007">
+		["email"] = <"sam.heard@oceaninformatics.biz">
+	>
+	details = <
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"Data for the description of the action or instruction related to imaging">
+			use = <"">
+			keywords = <"Xray", "scan", "MRI", "CT", "nuclear", "ultrasound">
+			misuse = <"">
+		>
+	>
+	lifecycle_state = <"AuthorDraft">
+	other_contributors = <>
+
+definition
+	ITEM_TREE[at0001] occurrences matches {0..*} matches {	-- Tree
+		items cardinality matches {0..*; ordered} matches {
+			CLUSTER[at0002] occurrences matches {0..1} matches {	-- Clinical information
+				items cardinality matches {1; unordered} matches {
+					ELEMENT[at0003] matches {	-- Findings
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+				}
+			}
+			CLUSTER[at0004] occurrences matches {1..*} matches {	-- Imaging
+				items cardinality matches {1..*; unordered} matches {
+					ELEMENT[at0005] matches {	-- Imaging procedure
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+					ELEMENT[at0007] occurrences matches {0..1} matches {	-- Anatomical site
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+					ELEMENT[at0006] occurrences matches {0..*} matches {	-- Views
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+				}
+			}
+			CLUSTER[at0008] occurrences matches {0..1} matches {	-- Process
+				items cardinality matches {0..*; unordered} matches {
+					ELEMENT[at0009] occurrences matches {0..1} matches {	-- Date of imaging
+						value matches {
+							DV_DATE_TIME matches {
+								value matches {yyyy-??-??T??:??:??}
+							}
+						}
+					}
+					ELEMENT[at0010] occurrences matches {0..1} matches {	-- Location
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+				}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["en"] = <
+			items = <
+				["at0000"] = <
+					description = <"Data recorded about an imaging action or instruction">
+					text = <"Imaging data">
+				>
+				["at0001"] = <
+					description = <"@ internal @">
+					text = <"Tree">
+				>
+				["at0002"] = <
+					description = <"Clinical information relevant to the imaging investigation">
+					text = <"Clinical information">
+				>
+				["at0003"] = <
+					description = <"Clinical findings relevant to the imaging investigation">
+					text = <"Findings">
+				>
+				["at0004"] = <
+					description = <"Information about the imaging">
+					text = <"Imaging">
+				>
+				["at0005"] = <
+					description = <"The type of imaging">
+					text = <"Imaging procedure">
+				>
+				["at0006"] = <
+					description = <"The imaging views">
+					text = <"Views">
+				>
+				["at0007"] = <
+					description = <"The anatomical site (or object) for imaging">
+					text = <"Anatomical site">
+				>
+				["at0008"] = <
+					description = <"The process of the imaging investigation">
+					text = <"Process">
+				>
+				["at0009"] = <
+					description = <"The date the imaging is to be or was carried out.">
+					text = <"Date of imaging">
+				>
+				["at0010"] = <
+					description = <"The location where the imaging is to be or was carried out">
+					text = <"Location">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-ITEM_TREE.medication.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-ITEM_TREE.medication.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-ITEM_TREE.medication.v1.adl	(revision 39)
@@ -0,0 +1,869 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-ITEM_TREE.medication.v1
+
+concept
+	[at0000]	-- Medication description
+language
+	original_language = <[ISO_639-1::en]>
+	translations = <
+		["de"] = <
+			language = <[ISO_639-1::de]>
+			author = <
+				["name"] = <"Jasmin Buck, Sebastian Garde">
+				["organisation"] = <"University of Heidelberg, Central Queensland University">
+			>
+		>
+	>
+description
+	original_author = <
+		["name"] = <"Sam Heard">
+		["organisation"] = <"Ocean Informatics">
+		["date"] = <"12/03/2006">
+		["email"] = <"sam.heard@oceaninformatics.biz">
+	>
+	details = <
+		["de"] = <
+			language = <[ISO_639-1::de]>
+			purpose = <"Zur Dokumentation der präzisierten Beschreibung der Medikation als Teil einer INSTRUCTION oder ACTION hinsichtlich der Medikation. Dies wird üblicherweise als Erwiderung auf eine Medikationsverordnung oder Verschreibung erfolgen. Kann selbst verabreicht oder durch einen Pharmazeuten bereitgestellt werden.">
+			use = <"Zum Gebrauch mit INSTRUCTION.medication und ACTION.medication zur Beschreibung der Medikation">
+			keywords = <"Medikation", "Beschreibung">
+			misuse = <"*">
+		>
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"Specifies the description of the medication as part of an INSTRUCTION or ACTION recording taken with regard to medication. This will usually be in response to a medication order or prescription, but may be self administered or supplied by a pharmacy.">
+			use = <"For use with INSTRUCTION.medication and ACTION.medication to describe the medication">
+			keywords = <"medication", "description">
+			misuse = <"">
+		>
+	>
+	lifecycle_state = <"AuthorDraft">
+	other_contributors = <>
+
+definition
+	ITEM_TREE[at0000] occurrences matches {0..*} matches {	-- Medication description
+		items cardinality matches {0..*; ordered} matches {
+			ELEMENT[at0001] matches {	-- Name of medication
+				value matches {
+					DV_TEXT matches {*}
+				}
+			}
+			ELEMENT[at0002] occurrences matches {0..1} matches {	-- Administration instructions
+				value matches {
+					DV_TEXT matches {*}
+				}
+			}
+			ELEMENT[at0003] occurrences matches {0..1} matches {	-- Strength per dose unit
+				value matches {
+					C_DV_QUANTITY <
+						property = <[openehr::124]>
+						list = <
+							["1"] = <
+								units = <"pg">
+								magnitude = <|>=0.0|>
+							>
+							["2"] = <
+								units = <"µg">
+								magnitude = <|>=0.0|>
+							>
+							["3"] = <
+								units = <"mg">
+								magnitude = <|>=0.0|>
+							>
+							["4"] = <
+								units = <"gm">
+								magnitude = <|>=0.0|>
+							>
+						>
+					>
+					C_DV_QUANTITY <
+						property = <[openehr::385]>
+						list = <
+							["1"] = <
+								units = <"IU">
+								magnitude = <|>=0.0|>
+							>
+							["2"] = <
+								units = <"mIU">
+								magnitude = <|>=0.0|>
+							>
+						>
+					>
+					C_DV_QUANTITY <
+						property = <[openehr::445]>
+						list = <
+							["1"] = <
+								units = <"mU">
+								magnitude = <|>=0.0|>
+							>
+							["2"] = <
+								units = <"U">
+								magnitude = <|>=0.0|>
+							>
+						>
+					>
+				}
+			}
+			ELEMENT[at0006] matches {	-- Dose unit
+				value matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[ac0001]}		-- any term that 'is a' Dose unit for this form
+					}
+				}
+			}
+			ELEMENT[at0004] occurrences matches {0..1} matches {	-- Form
+				value matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[ac0000]}		-- Any term that 'is_a' form of medication
+					}
+				}
+			}
+			CLUSTER[at0033] occurrences matches {0..1} matches {	-- Dose
+				items cardinality matches {1; unordered} matches {
+					CLUSTER[at0035] occurrences matches {0..1} matches {	-- By absolute quantity
+						items cardinality matches {0..*; unordered} matches {
+							ELEMENT[at0036] occurrences matches {1..2} matches {	-- Quantity by volume
+								value matches {
+									C_DV_QUANTITY <
+										property = <[openehr::129]>
+										list = <
+											["1"] = <
+												units = <"ml">
+												magnitude = <|>=0.0|>
+											>
+											["2"] = <
+												units = <"l">
+												magnitude = <|>=0.0|>
+											>
+										>
+									>
+									DV_INTERVAL<DV_QUANTITY> matches {
+										upper matches {
+											C_DV_QUANTITY <
+												property = <[openehr::129]>
+												list = <
+													["1"] = <
+														units = <"ml">
+														magnitude = <|>=0.0|>
+													>
+													["2"] = <
+														units = <"l">
+														magnitude = <|>=0.0|>
+													>
+												>
+											>
+										}
+										lower matches {
+											C_DV_QUANTITY <
+												property = <[openehr::129]>
+												list = <
+													["1"] = <
+														units = <"ml">
+														magnitude = <|>=0.0|>
+													>
+													["2"] = <
+														units = <"l">
+														magnitude = <|>=0.0|>
+													>
+												>
+											>
+										}
+									}
+								}
+							}
+							ELEMENT[at0037] occurrences matches {0..1} matches {	-- Quantity by mass
+								value matches {
+									C_DV_QUANTITY <
+										property = <[openehr::124]>
+										list = <
+											["1"] = <
+												units = <"µg">
+												magnitude = <|>=0.0|>
+											>
+											["2"] = <
+												units = <"mg">
+											>
+											["3"] = <
+												units = <"gm">
+											>
+										>
+									>
+									DV_INTERVAL<DV_QUANTITY> matches {
+										upper matches {
+											C_DV_QUANTITY <
+												property = <[openehr::124]>
+												list = <
+													["1"] = <
+														units = <"µg">
+														magnitude = <|>=0.0|>
+													>
+													["2"] = <
+														units = <"mg">
+														magnitude = <|>=0.0|>
+													>
+													["3"] = <
+														units = <"gm">
+														magnitude = <|>=0.0|>
+													>
+												>
+											>
+										}
+										lower matches {
+											C_DV_QUANTITY <
+												property = <[openehr::124]>
+												list = <
+													["1"] = <
+														units = <"µg">
+														magnitude = <|>=0.0|>
+													>
+													["2"] = <
+														units = <"mg">
+														magnitude = <|>=0.0|>
+													>
+													["3"] = <
+														units = <"gm">
+														magnitude = <|>=0.0|>
+													>
+												>
+											>
+										}
+									}
+								}
+							}
+						}
+					}
+					CLUSTER[at0034] occurrences matches {0..1} matches {	-- By dose units
+						items cardinality matches {0..*; unordered} matches {
+							ELEMENT[at0005] matches {	-- Number or fraction
+								value matches {
+									DV_COUNT matches {
+										magnitude matches {|>=1|}
+									}
+									DV_INTERVAL<DV_COUNT> matches {
+										upper matches {
+											DV_COUNT matches {
+												magnitude matches {|>=1|}
+											}
+										}
+										lower matches {
+											DV_COUNT matches {
+												magnitude matches {|>=1|}
+											}
+										}
+									}
+									DV_PROPORTION matches {
+										numerator matches {|>=1.0|}
+										denominator matches {|1.0..4.0|}
+										type matches {1, 2, 4}
+									}
+								}
+							}
+						}
+					}
+				}
+			}
+			ELEMENT[at0007] occurrences matches {0..1} matches {	-- Dose duration
+				value matches {
+					C_DV_QUANTITY <
+						property = <[openehr::128]>
+						list = <
+							["1"] = <
+								units = <"d">
+							>
+							["2"] = <
+								units = <"h">
+							>
+							["3"] = <
+								units = <"min">
+							>
+							["4"] = <
+								units = <"s">
+								magnitude = <|>=0.0|>
+							>
+						>
+					>
+				}
+			}
+			ELEMENT[at0008] occurrences matches {0..1} matches {	-- Route
+				value matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[ac0002]}		-- Any term that 'is_a' route of administration
+					}
+				}
+			}
+			ELEMENT[at0009] occurrences matches {0..1} matches {	-- Is long term
+				value matches {
+					DV_BOOLEAN matches {
+						value matches {True, False}
+					}
+				}
+			}
+			CLUSTER[at0010] occurrences matches {0..1} matches {	-- Indications
+				items cardinality matches {0..*; unordered} matches {
+					ELEMENT[at0011] occurrences matches {0..*} matches {	-- Indication
+						value matches {
+							DV_TEXT matches {*}
+							DV_URI matches {*}
+						}
+					}
+				}
+			}
+			ELEMENT[at0012] occurrences matches {0..1} matches {	-- Generic name
+				name matches {
+					DV_CODED_TEXT matches {
+						defining_code matches {[ac0003]}		-- =Generic name OR Brand name
+					}
+				}
+				value matches {
+					DV_TEXT matches {*}
+				}
+			}
+			CLUSTER[at0013] occurrences matches {0..1} matches {	-- Safety limits
+				items cardinality matches {1..4; ordered} matches {
+					ELEMENT[at0014] occurrences matches {0..1} matches {	-- Maximum dose unit frequency
+						value matches {
+							C_DV_QUANTITY <
+								assumed_value = <
+									units = <"{QUALIFIED REAL/TIME}">
+									precision = <-1>
+									magnitude = <1.0>
+								>
+								property = <[openehr::382]>
+								list = <
+									["1"] = <
+										units = <"{QUALIFIED REAL/TIME}">
+										magnitude = <|>0.0|>
+									>
+								>
+							>
+						}
+					}
+					ELEMENT[at0015] occurrences matches {0..1} matches {	-- Dosage per kg body weight
+						value matches {
+							DV_INTERVAL<DV_QUANTITY> matches {
+								upper matches {
+									C_DV_QUANTITY <
+										property = <[openehr::0]>
+									>
+								}
+								lower matches {
+									C_DV_QUANTITY <
+										property = <[openehr::0]>
+									>
+								}
+							}
+						}
+					}
+					ELEMENT[at0016] occurrences matches {0..1} matches {	-- Minimum dose interval
+						value matches {
+							C_DV_QUANTITY <
+								property = <[openehr::128]>
+								list = <
+									["1"] = <
+										units = <"min">
+										magnitude = <|>=0.0|>
+									>
+									["2"] = <
+										units = <"h">
+										magnitude = <|>=0.0|>
+									>
+									["3"] = <
+										units = <"d">
+										magnitude = <|>=0.0|>
+									>
+									["4"] = <
+										units = <"wk">
+										magnitude = <|>=0.0|>
+									>
+									["5"] = <
+										units = <"mo">
+										magnitude = <|>=0.0|>
+									>
+								>
+							>
+						}
+					}
+					ELEMENT[at0017] occurrences matches {0..1} matches {	-- Maximum dose interval
+						value matches {
+							C_DV_QUANTITY <
+								property = <[openehr::128]>
+								list = <
+									["1"] = <
+										units = <"d">
+										magnitude = <|>=0.0|>
+									>
+									["2"] = <
+										units = <"h">
+										magnitude = <|>=0.0|>
+									>
+									["3"] = <
+										units = <"min">
+										magnitude = <|>=0.0|>
+									>
+									["4"] = <
+										units = <"wk">
+										magnitude = <|>=0.0|>
+									>
+									["5"] = <
+										units = <"mo">
+										magnitude = <|>=0.0|>
+									>
+								>
+							>
+						}
+					}
+				}
+			}
+			CLUSTER[at0018] occurrences matches {0..1} matches {	-- Administration information
+				items cardinality matches {0..*; unordered} matches {
+					ELEMENT[at0019] occurrences matches {0..1} matches {	-- Date (time) of first administration
+						value matches {
+							DV_DATE_TIME matches {
+								value matches {yyyy-??-??T??:??:??}
+							}
+						}
+					}
+					ELEMENT[at0020] occurrences matches {0..1} matches {	-- Batch number
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+					ELEMENT[at0021] occurrences matches {0..1} matches {	-- Site of administration
+						value matches {
+							DV_CODED_TEXT matches {
+								defining_code matches {[local::]}
+							}
+						}
+					}
+					ELEMENT[at0022] occurrences matches {0..1} matches {	-- Sequence number
+						value matches {
+							DV_COUNT matches {*}
+						}
+					}
+					ELEMENT[at0032] occurrences matches {0..1} matches {	-- Date (time) of last administration
+						value matches {
+							DV_DATE_TIME matches {
+								value matches {yyyy-??-??T??:??:??}
+							}
+						}
+					}
+				}
+			}
+			CLUSTER[at0023] occurrences matches {0..1} matches {	-- Dispensing information
+				items cardinality matches {0..*; unordered} matches {
+					ELEMENT[at0024] occurrences matches {0..1} matches {	-- Quantity to be dispensed
+						value matches {
+							C_DV_QUANTITY <
+								property = <[openehr::445]>
+							>
+							DV_COUNT matches {
+								magnitude matches {|>0|; 1}
+							}
+							DV_TEXT matches {*}
+						}
+					}
+					ELEMENT[at0025] occurrences matches {0..1} matches {	-- Number of authorised repeat dispensing
+						value matches {
+							DV_COUNT matches {
+								magnitude matches {|>=0|}
+							}
+						}
+					}
+					ELEMENT[at0026] occurrences matches {0..1} matches {	-- Dispensed product
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+					ELEMENT[at0027] occurrences matches {0..1} matches {	-- Brand substitution allowed
+						value matches {
+							DV_BOOLEAN matches {
+								value matches {True, False}
+							}
+						}
+					}
+					ELEMENT[at0028] occurrences matches {0..1} matches {	-- Authority approval number
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+					ELEMENT[at0029] occurrences matches {0..1} matches {	-- Patient counselled on CMI
+						value matches {
+							DV_BOOLEAN matches {
+								value matches {True, False}
+							}
+						}
+					}
+					ELEMENT[at0030] occurrences matches {0..1} matches {	-- Deferred supply
+						value matches {
+							DV_BOOLEAN matches {
+								value matches {True, False}
+							}
+						}
+					}
+					ELEMENT[at0031] occurrences matches {0..1} matches {	-- Reason for deferred supply
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+				}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["de"] = <
+			items = <
+				["at0000"] = <
+					description = <"Die Angabe einer Medikation zur Dokumentation als Teil einer ACTION oder INSTRUCTION">
+					text = <"Medikationsangabe">
+				>
+				["at0001"] = <
+					description = <"Der Name des Medikaments - kann kodiert sein">
+					text = <"Name des Medikaments">
+				>
+				["at0002"] = <
+					description = <"Detaillierte Anweisungen, wie dieses Medikament verabreicht wird">
+					text = <"Verabreichungsanweisungen">
+				>
+				["at0003"] = <
+					description = <"Die Stärke des Medikaments">
+					text = <"Stärke pro Dosiseinheit">
+				>
+				["at0004"] = <
+					description = <"Die Form des Medikaments">
+					text = <"Form">
+				>
+				["at0005"] = <
+					description = <"Die Anzahl (oder Teil) an Dosiseinheiten, die zu einem bestimmten Zeitpunkt eingenommen wird">
+					text = <"Anzahl oder Teil">
+				>
+				["at0006"] = <
+					description = <"Die Dosiseinheit in der dieses Medikament verabreicht wird">
+					text = <"Dosiseinheit">
+				>
+				["at0007"] = <
+					description = <"Die Zeit über die eine einzelne Dosis verabreicht wird">
+					text = <"Dosisdauer">
+				>
+				["at0008"] = <
+					description = <"Die Art der Verabreichung">
+					text = <"Art">
+				>
+				["at0009"] = <
+					description = <"Eingefügt und auf True gesetzt, wenn dieses Medikament fortlaufend oder immer wieder über einen signifikanten Zeitraum eingenommen wird ">
+					text = <"Ist Langzeit">
+				>
+				["at0010"] = <
+					description = <"Hinweise zu verwandten Problemen und Diagnosen, unnormale Testergebnisse usw.">
+					text = <"Hinweise">
+				>
+				["at0011"] = <
+					description = <"Die Bezeichnung der Verabreichung">
+					text = <"Bezeichnung">
+				>
+				["at0012"] = <
+					description = <"Der allgemeine Name des Wirkstoffes als alternativer Name zum Medikamentenname">
+					text = <"Allgemeiner Name">
+				>
+				["at0013"] = <
+					description = <"*">
+					text = <"Sicherheitsgrenze">
+				>
+				["at0014"] = <
+					description = <"Die maximale Anzahl an Dosiseinheiten die in einem bestimmten Zeitintervall eingenommen werden darf">
+					text = <"Maximale Dosiseinheit Frequenz">
+				>
+				["at0015"] = <
+					description = <"Die Dosis pro kg Körpergewicht">
+					text = <"Dosis pro kg Körpergewicht">
+				>
+				["at0016"] = <
+					description = <"Das minimale sichere Intervall zwischen zwei Dosen">
+					text = <"Minimales Dosisintervall">
+				>
+				["at0017"] = <
+					description = <"Das maximale sichere Intervall zwischen zwei Dosen">
+					text = <"Maximales Dosisintervall">
+				>
+				["at0018"] = <
+					description = <"Informationen bezüglich der Verabreichung der verordneten Medikation">
+					text = <"Verabreichungsinformationen">
+				>
+				["at0019"] = <
+					description = <"Das Datum und der Zeitpunkt (wenn erforderlich) wann das Medikament zum ersten Mal verabreicht wird/ wurde">
+					text = <"Zeitpunkt der ersten Verabreichung">
+				>
+				["at0020"] = <
+					description = <"Nummer zur Identifikation der Erzeugung">
+					text = <"Chargennummer">
+				>
+				["at0021"] = <
+					description = <"Die Lokalisation der Verabreichung, z.B. äußerer Oberschenkel wenn intramuskulär, per PEG bei Patienten mit Schluckstörung">
+					text = <"Lokalisation der Verabreichung">
+				>
+				["at0022"] = <
+					description = <"Die Dosisnummer oder Abfolge">
+					text = <"Laufnummer">
+				>
+				["at0023"] = <
+					description = <"Daten, die die Rezeptur betreffen">
+					text = <"Informationen zur Rezeptur">
+				>
+				["at0024"] = <
+					description = <"Die gesamte, zu verabreichende Menge">
+					text = <"Zu verabreichende Menge">
+				>
+				["at0025"] = <
+					description = <"Die Anzahl, wie oft diese Menge des Medikaments verabreicht werden darf, bevor eine erneute Verschreibung notwendig ist">
+					text = <"Anzahl an berechtigten Verabreichungswiederholungen">
+				>
+				["at0026"] = <
+					description = <"Der Name des verabreichten Produkts">
+					text = <"Verabreichtes Produkt">
+				>
+				["at0027"] = <
+					description = <"True, wenn das Fabrikat bei der Verabreichung ausgetauscht werden darf">
+					text = <"Ersetzen des Fabrikats erlaub">
+				>
+				["at0028"] = <
+					description = <"*">
+					text = <"Zulassungsnummer">
+				>
+				["at0029"] = <
+					description = <"Arzneibesteller berät den Patient">
+					text = <"Patient wird beraten">
+				>
+				["at0030"] = <
+					description = <"True, wenn sich die Bereitstellung des Medikaments verzögert">
+					text = <"Verzögerte Bereitstellung">
+				>
+				["at0031"] = <
+					description = <"Informationen bezüglich der Verzögerung der Bereitstellung">
+					text = <"Gründe für die Verzögerung der Bereitstellung">
+				>
+				["at0032"] = <
+					description = <"Das Datum und der Zeitpunkt (wenn erforderlich) an dem das Medikament zum letzten Mal verabreicht wurde">
+					text = <"Zeitpunkt der letzten Verabreichung">
+				>
+				["at0033"] = <
+					description = <"Die Einzeldosis">
+					text = <"Dosis">
+				>
+				["at0034"] = <
+					description = <"Dosis als Anzahl (oder Teil) von Dosiseinheiten">
+					text = <"Spezifiziert durch Dosiseinheit">
+				>
+				["at0035"] = <
+					description = <"Absolute Dosierung">
+					text = <"Spezifiert durch absolute Menge">
+				>
+				["at0036"] = <
+					description = <"Volumenbasierte Menge oder Mengenintervall der Einzeldosis">
+					text = <"Volumen">
+				>
+				["at0037"] = <
+					description = <"Massenbasierte Menge oder Mengenintervall der Einzeldosis">
+					text = <"Masse">
+				>
+			>
+		>
+		["en"] = <
+			items = <
+				["at0000"] = <
+					description = <"The description of a medication for recording as part of an ACTION or INSTRUCTION">
+					text = <"Medication description">
+				>
+				["at0001"] = <
+					description = <"The name of the intervention - which may be coded">
+					text = <"Name of medication">
+				>
+				["at0002"] = <
+					description = <"Detailed instructions about how to administer this medication">
+					text = <"Administration instructions">
+				>
+				["at0003"] = <
+					description = <"The strength of the medication">
+					text = <"Strength per dose unit">
+				>
+				["at0004"] = <
+					description = <"The form of the medication">
+					text = <"Form">
+				>
+				["at0005"] = <
+					description = <"The number of dose units to be taken at any time">
+					text = <"Number or fraction">
+				>
+				["at0006"] = <
+					description = <"The dose unit that is given for this type of medication">
+					text = <"Dose unit">
+				>
+				["at0007"] = <
+					description = <"The time over which an individual dose is to be administered">
+					text = <"Dose duration">
+				>
+				["at0008"] = <
+					description = <"The route of administration">
+					text = <"Route">
+				>
+				["at0009"] = <
+					description = <"Included and set to true if this medication is to be used continuously or repeatedly over a significant period of time.">
+					text = <"Is long term">
+				>
+				["at0010"] = <
+					description = <"Indications including related problems and diagnoses, abnormal test results etc">
+					text = <"Indications">
+				>
+				["at0011"] = <
+					description = <"The indication for the intervention">
+					text = <"Indication">
+				>
+				["at0012"] = <
+					description = <"The generic name of the drug which is an alternative name to the name of medication">
+					text = <"Generic name">
+				>
+				["at0013"] = <
+					description = <"*">
+					text = <"Safety limits">
+				>
+				["at0014"] = <
+					description = <"The maximum number of dose units to be taken in a particular time">
+					text = <"Maximum dose unit frequency">
+				>
+				["at0015"] = <
+					description = <"The dose per kg of body weight">
+					text = <"Dosage per kg body weight">
+				>
+				["at0016"] = <
+					description = <"The minimum safe interval between doses">
+					text = <"Minimum dose interval">
+				>
+				["at0017"] = <
+					description = <"The maximum safe interval between doses">
+					text = <"Maximum dose interval">
+				>
+				["at0018"] = <
+					description = <"Information relating to the administration of the medication order">
+					text = <"Administration information">
+				>
+				["at0019"] = <
+					description = <"The date and time (if required) the medication is/was first administered">
+					text = <"Date (time) of first administration">
+				>
+				["at0020"] = <
+					description = <"Manufacturer's identification number">
+					text = <"Batch number">
+				>
+				["at0021"] = <
+					description = <"The site of administration e.g. outer thigh if intramuscular, via PEG if patient is nil orally">
+					text = <"Site of administration">
+				>
+				["at0022"] = <
+					description = <"The dose number or sequence">
+					text = <"Sequence number">
+				>
+				["at0023"] = <
+					description = <"Data relating to dispensing">
+					text = <"Dispensing information">
+				>
+				["at0024"] = <
+					description = <"The total quantity to be dispensed">
+					text = <"Quantity to be dispensed">
+				>
+				["at0025"] = <
+					description = <"The number of times this quantity of medication may be dispensed before a further prescription is required">
+					text = <"Number of authorised repeat dispensing">
+				>
+				["at0026"] = <
+					description = <"The name of the product dispensed">
+					text = <"Dispensed product">
+				>
+				["at0027"] = <
+					description = <"True if an alternative brand may be substituted when dispensing">
+					text = <"Brand substitution allowed">
+				>
+				["at0028"] = <
+					description = <"*">
+					text = <"Authority approval number">
+				>
+				["at0029"] = <
+					description = <"Dispenser counselled the patient with regard to the Consumer Medicines Information">
+					text = <"Patient counselled on CMI">
+				>
+				["at0030"] = <
+					description = <"True if the supply of the medication has been deferred">
+					text = <"Deferred supply">
+				>
+				["at0031"] = <
+					description = <"Information relating to the reason for deferred supply">
+					text = <"Reason for deferred supply">
+				>
+				["at0032"] = <
+					description = <"The date and time (if required) the medication is  to be administered for the last time">
+					text = <"Date (time) of last administration">
+				>
+				["at0033"] = <
+					description = <"The dose to be administered at one time">
+					text = <"Dose">
+				>
+				["at0034"] = <
+					description = <"Dose as number (or fraction) of the dose units">
+					text = <"By dose units">
+				>
+				["at0035"] = <
+					description = <"Dosage by absolute quantity">
+					text = <"By absolute quantity">
+				>
+				["at0036"] = <
+					description = <"The quantity (or range) to be administered as a single dose">
+					text = <"Quantity by volume">
+				>
+				["at0037"] = <
+					description = <"*">
+					text = <"Quantity by mass">
+				>
+			>
+		>
+	>
+	constraint_definitions = <
+		["de"] = <
+			items = <
+				["ac0000"] = <
+					description = <"Begriffe wie Tablette, Inhalator, Flüssigkeit...">
+					text = <"Beliebiger Begriff, der eine Form eines Medikaments ist">
+				>
+				["ac0001"] = <
+					description = <"Eine Menge an Begriffen, die die Dosiseinheiten für eine Medikation beschreiben - z.B. Tablette, Stoß, Ampulle usw. - erlaubt es, die Dosis als Zahl auszudrücken">
+					text = <"Beliebiger Ausdruck, der eine Dosiseinheit für diese Form ist">
+				>
+				["ac0002"] = <
+					description = <"Der Weg, auf welchem dieses Medikament verabreicht wird">
+					text = <"Beliebiger Ausdruck, der ein Weg der Verabreichung ist">
+				>
+				["ac0003"] = <
+					description = <"*">
+					text = <"=Name des Generikums oder Markenname">
+				>
+			>
+		>
+		["en"] = <
+			items = <
+				["ac0000"] = <
+					description = <"Terms such as tablet, inhaler, liquid....">
+					text = <"Any term that 'is_a' form of medication">
+				>
+				["ac0001"] = <
+					description = <"A set of terms that describes the dose units for medication - e.g. tablet, puff, ampule etc - which allow the dose to be expressed as a number.">
+					text = <"any term that 'is a' Dose unit for this form">
+				>
+				["ac0002"] = <
+					description = <"The route by which the medication is administered">
+					text = <"Any term that 'is_a' route of administration">
+				>
+				["ac0003"] = <
+					description = <"*">
+					text = <"=Generic name OR Brand name">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-ITEM_TREE.referral.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-ITEM_TREE.referral.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-ITEM_TREE.referral.v1.adl	(revision 39)
@@ -0,0 +1,494 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-ITEM_TREE.referral.v1
+
+concept
+	[at0000]	-- Referral data
+language
+	original_language = <[ISO_639-1::en]>
+	translations = <
+		["de"] = <
+			language = <[ISO_639-1::de]>
+			author = <
+				["name"] = <"Jasmin Buck, Sebastian Garde">
+				["organisation"] = <"University of Heidelberg, Central Queensland University">
+			>
+		>
+	>
+description
+	original_author = <
+		["name"] = <"Sam Heard">
+		["organisation"] = <"Ocean Informatics">
+		["date"] = <"22/04/2006">
+		["email"] = <"sam.heard@oceaninformatics.biz">
+	>
+	details = <
+		["de"] = <
+			language = <[ISO_639-1::de]>
+			purpose = <"Zur Dokumentation von Informationen einer Überweisung als Teil einer Anweisung (INSTRUCTION) oder Handlung (ACTION)">
+			use = <"*">
+			misuse = <"*">
+		>
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"For recording information about a referral as part of an instruction or action.">
+			use = <"">
+			misuse = <"">
+		>
+	>
+	lifecycle_state = <"Initial">
+	other_contributors = <>
+
+definition
+	ITEM_TREE[at0000] occurrences matches {0..*} matches {	-- Referral data
+		items cardinality matches {0..*; unordered} matches {
+			ELEMENT[at0002] matches {	-- Clinical issue
+				value matches {
+					DV_TEXT matches {*}
+				}
+			}
+			ELEMENT[at0035] occurrences matches {0..1} matches {	-- Other details
+				value matches {
+					DV_TEXT matches {*}
+				}
+			}
+			CLUSTER[at0014] occurrences matches {0..1} matches {	-- Referring provider details
+				items cardinality matches {1; unordered} matches {
+					ELEMENT[at0015] matches {	-- Name of referring provider
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+					ELEMENT[at0017] occurrences matches {0..1} matches {	-- Role of referring provider
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+					ELEMENT[at0016] occurrences matches {0..1} matches {	-- Address of referring provider
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+					CLUSTER[at0026] occurrences matches {0..1} matches {	-- Contact details of the referring provider
+						items cardinality matches {0..*; unordered} matches {
+							ELEMENT[at0025] occurrences matches {0..*} matches {	-- Telephone
+								name matches {
+									DV_CODED_TEXT matches {
+										defining_code matches {
+											[local::
+											at0029, 	-- Mobile
+											at0030, 	-- Work
+											at0031, 	-- Alternative work
+											at0032, 	-- Direct work line
+											at0033]	-- Pager
+										}
+									}
+								}
+								value matches {
+									DV_TEXT matches {*}
+								}
+							}
+							ELEMENT[at0028] occurrences matches {0..1} matches {	-- Email
+								value matches {
+									DV_TEXT matches {*}
+								}
+							}
+							ELEMENT[at0027] occurrences matches {0..1} matches {	-- Faxsimile
+								value matches {
+									DV_TEXT matches {*}
+								}
+							}
+						}
+					}
+				}
+			}
+			CLUSTER[at0021] matches {	-- Secondary provider details
+				items cardinality matches {1..*; unordered} matches {
+					ELEMENT[at0022] occurrences matches {0..1} matches {	-- Name of secondary provider
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+					ELEMENT[at0024] occurrences matches {0..1} matches {	-- Role of secondary provider
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+					ELEMENT[at0023] occurrences matches {0..1} matches {	-- Address of secondary provider
+						value matches {
+							DV_TEXT matches {*}
+						}
+					}
+					CLUSTER[at0034] occurrences matches {0..1} matches {	-- Contact details of the secondary provider
+						items cardinality matches {0..*; unordered} matches {
+							use_node ELEMENT /items[at0014]/items[at0026]/items[at0025]
+							use_node ELEMENT /items[at0014]/items[at0026]/items[at0028]
+							use_node ELEMENT /items[at0014]/items[at0026]/items[at0027]
+						}
+					}
+				}
+			}
+			CLUSTER[at0003] occurrences matches {0..1} matches {	-- Process
+				items cardinality matches {0..*; unordered} matches {
+					CLUSTER[at0004] occurrences matches {0..1} matches {	-- Urgency
+						items cardinality matches {0..*; unordered} matches {
+							ELEMENT[at0005] occurrences matches {0..1} matches {	-- Timing
+								value matches {
+									0|[local::at0006], 	-- Emergency
+									1|[local::at0007], 	-- Urgent
+									2|[local::at0008]  	-- Non-urgent
+								}
+							}
+							ELEMENT[at0009] occurrences matches {0..1} matches {	-- Impact
+								value matches {
+									0|[local::at0010], 	-- High
+									1|[local::at0011], 	-- Moderate
+									2|[local::at0012]  	-- Low
+								}
+							}
+							ELEMENT[at0013] occurrences matches {0..1} matches {	-- Maximal delay
+								value matches {
+									C_DV_QUANTITY <
+										property = <[openehr::128]>
+										list = <
+											["1"] = <
+												units = <"h">
+												magnitude = <|>0.0|>
+											>
+											["2"] = <
+												units = <"d">
+												magnitude = <|>0.0|>
+											>
+											["3"] = <
+												units = <"wk">
+												magnitude = <|>0.0|>
+											>
+											["4"] = <
+												units = <"mo">
+												magnitude = <|>0.0|>
+											>
+											["5"] = <
+												units = <"min">
+											>
+										>
+									>
+								}
+							}
+						}
+					}
+					ELEMENT[at0018] occurrences matches {0..1} matches {	-- Date referred
+						value matches {
+							DV_DATE_TIME matches {
+								value matches {yyyy-??-??T??:??:??}
+							}
+						}
+					}
+					ELEMENT[at0019] occurrences matches {0..1} matches {	-- Date first attended
+						value matches {
+							DV_DATE_TIME matches {
+								value matches {yyyy-??-??T??:??:??}
+							}
+						}
+					}
+					ELEMENT[at0020] occurrences matches {0..1} matches {	-- Date last attended
+						value matches {
+							DV_DATE_TIME matches {
+								value matches {yyyy-??-??T??:??:??}
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["de"] = <
+			items = <
+				["at0000"] = <
+					description = <"Daten einer Überweisung, dokumentiert als Teil einer INSTRUCTION oder ACTION">
+					text = <"Überweisungsdaten">
+				>
+				["at0002"] = <
+					description = <"die klinische Fragestellung, die eine Behandlung eines zweiten Gesundheitdienstleisters erfordert">
+					text = <"Klinische Fragestellung">
+				>
+				["at0003"] = <
+					description = <"Informationen zum Ablauf der Überweisung">
+					text = <"Ablauf">
+				>
+				["at0004"] = <
+					description = <"Informationen zur Dringlichkeit der Überweisung">
+					text = <"Dringlichkeit">
+				>
+				["at0005"] = <
+					description = <"eine angemessene Zeitberechung des Auftrages">
+					text = <"Zeitliche Dringlichkeit ">
+				>
+				["at0006"] = <
+					description = <"die Person benötigt sofortige Behandlung">
+					text = <"Notfall">
+				>
+				["at0007"] = <
+					description = <"die Person benötigt so bald wie möglich eine Behandlung">
+					text = <"Eilig">
+				>
+				["at0008"] = <
+					description = <"die Person benötigt zum nächstmöglichen Termin eine Behandlung">
+					text = <"nicht eilig">
+				>
+				["at0009"] = <
+					description = <"der Einfluss des Zustandes auf das Leben der Person">
+					text = <"Einfluss">
+				>
+				["at0010"] = <
+					description = <"der Zustand hat einen bedeutenden Einfluss auf die Körperfunktionen der Person">
+					text = <"hoch">
+				>
+				["at0011"] = <
+					description = <"der Zustand hat einen Einfluss, aber die Person hat die meisten Körperfunktionen">
+					text = <"moderat">
+				>
+				["at0012"] = <
+					description = <"der Zustand hat geringen oder keinen Einfluss auf die Körperfunktionen der Person">
+					text = <"gering">
+				>
+				["at0013"] = <
+					description = <"Ein Angabe des maximalen Verzugs, der bis zur Behandlung der Person als vertretbar angesehen wird">
+					text = <"Maximaler Verzug">
+				>
+				["at0014"] = <
+					description = <"Informationen über überweisenden Dienstleister bzw. den ersten Dienstleister">
+					text = <"Einzelheiten des überweisenden Dienstleisters">
+				>
+				["at0015"] = <
+					description = <"Name des überweisenden Dienstleisters">
+					text = <"Name des überweisenden Dienstleisters">
+				>
+				["at0016"] = <
+					description = <"*">
+					text = <"Adresse des überweisenden Dienstleisters">
+				>
+				["at0017"] = <
+					description = <"*">
+					text = <"Aufgabe des überweisenden Dienstleisters">
+				>
+				["at0018"] = <
+					description = <"das Datum der ursprünglichen Überweisung">
+					text = <"Datum der Überweisung">
+				>
+				["at0019"] = <
+					description = <"das Datum, an dem die Person das erste Mal vom zweiten Gesundheitsdienstleister behandelt wurde">
+					text = <"Datum der ersten Behandlung">
+				>
+				["at0020"] = <
+					description = <"das Datum, an dem die Person das letzte Mal vom zweiten Gesundheitsdienstleister behandelt wurde">
+					text = <"Datum der letzten Behandlung">
+				>
+				["at0021"] = <
+					description = <"Einzelheiten des Gesundheitsdienstleisters, an den die Überweisung gerichtet ist">
+					text = <"Einzelheiten des zweiten Gesundheitsdienstleisters">
+				>
+				["at0022"] = <
+					description = <"der Name des Gesundheitsdienstleisters, an den die Überweisung gerichtet ist">
+					text = <"Name des zweiten Gesundheitsdienstleisters">
+				>
+				["at0023"] = <
+					description = <"die Adresse des Gesundheitsdienstleisters, an den die Überweisung gerichtet ist">
+					text = <"Adresse des zweiten Gesundheitsdienstleisters">
+				>
+				["at0024"] = <
+					description = <"die Aufgabe des Gesundheitsdienstleisters, an den die Überweisung gerichtet ist">
+					text = <"Aufgabe des zweiten Gesundheitsdienstleisters">
+				>
+				["at0025"] = <
+					description = <"Telefonnummern">
+					text = <"Telefon">
+				>
+				["at0026"] = <
+					description = <"die Kontakteinzelheiten des überweisenden Dienstleisters">
+					text = <"Kontakteinzelheiten des überweisenden Dienstleisters">
+				>
+				["at0027"] = <
+					description = <"die Faxnummer des Anbieters">
+					text = <"Fax">
+				>
+				["at0028"] = <
+					description = <"E-Mail Adresse des Anbieters">
+					text = <"E-Mail">
+				>
+				["at0029"] = <
+					description = <"die Nummer eines mobilen Telefons oder Handys">
+					text = <"Mobil">
+				>
+				["at0030"] = <
+					description = <"die Telefonnummer des Arbeitsplatzes">
+					text = <"Nummer">
+				>
+				["at0031"] = <
+					description = <"eine Alternative Telefonnummer">
+					text = <"alternative Nummer">
+				>
+				["at0032"] = <
+					description = <"eine Telefonnummer, die direkt zum Dienstleiter vermittlelt">
+					text = <"Durchwahl">
+				>
+				["at0033"] = <
+					description = <"eine Pagernummer zum Hinterlassen von Nachrichten">
+					text = <"Pager">
+				>
+				["at0034"] = <
+					description = <"*">
+					text = <"Kontaktdetails des zweiten Gesundheitsdienstleisters">
+				>
+				["at0035"] = <
+					description = <"andere für die Überweisung relevante Einzelheiten">
+					text = <"Andere Einzelheiten">
+				>
+			>
+		>
+		["en"] = <
+			items = <
+				["at0000"] = <
+					description = <"Data about a referral recorded as part of an instruction or action">
+					text = <"Referral data">
+				>
+				["at0002"] = <
+					description = <"The clinical issue that requires care from the second provider">
+					text = <"Clinical issue">
+				>
+				["at0003"] = <
+					description = <"Information about the process of the referral">
+					text = <"Process">
+				>
+				["at0004"] = <
+					description = <"information about the urgency of the referral">
+					text = <"Urgency">
+				>
+				["at0005"] = <
+					description = <"The appropriate timing of the appointment">
+					text = <"Timing">
+				>
+				["at0006"] = <
+					description = <"Person requires care immediately">
+					text = <"Emergency">
+				>
+				["at0007"] = <
+					description = <"Person requires care as soon as possible">
+					text = <"Urgent">
+				>
+				["at0008"] = <
+					description = <"Person requires care at providers convenience">
+					text = <"Non-urgent">
+				>
+				["at0009"] = <
+					description = <"The impact of the condition on the person's life">
+					text = <"Impact">
+				>
+				["at0010"] = <
+					description = <"The condition is having major impact on the person's ability to function">
+					text = <"High">
+				>
+				["at0011"] = <
+					description = <"The condition is having an impact but the person is able to function to a large extent">
+					text = <"Moderate">
+				>
+				["at0012"] = <
+					description = <"The condition is having little or no impact on the person's ability to function">
+					text = <"Low">
+				>
+				["at0013"] = <
+					description = <"An indication of the maximum delay that would be reasonable before the person is seen">
+					text = <"Maximal delay">
+				>
+				["at0014"] = <
+					description = <"Information about the referrer or primary provider">
+					text = <"Referring provider details">
+				>
+				["at0015"] = <
+					description = <"The name of the referring provider">
+					text = <"Name of referring provider">
+				>
+				["at0016"] = <
+					description = <"*">
+					text = <"Address of referring provider">
+				>
+				["at0017"] = <
+					description = <"*">
+					text = <"Role of referring provider">
+				>
+				["at0018"] = <
+					description = <"The date of the original referral">
+					text = <"Date referred">
+				>
+				["at0019"] = <
+					description = <"The date the person first attended the secondary provider">
+					text = <"Date first attended">
+				>
+				["at0020"] = <
+					description = <"The date the person last attended the second provider">
+					text = <"Date last attended">
+				>
+				["at0021"] = <
+					description = <"Details about the provider to whom the referral is directed">
+					text = <"Secondary provider details">
+				>
+				["at0022"] = <
+					description = <"The name of the provider to which the referral is directed">
+					text = <"Name of secondary provider">
+				>
+				["at0023"] = <
+					description = <"The address of the provider to which the referral is directed">
+					text = <"Address of secondary provider">
+				>
+				["at0024"] = <
+					description = <"The role of the provider to which the referral is directed">
+					text = <"Role of secondary provider">
+				>
+				["at0025"] = <
+					description = <"Telephone contact information">
+					text = <"Telephone">
+				>
+				["at0026"] = <
+					description = <"Contact details of the referring provider">
+					text = <"Contact details of the referring provider">
+				>
+				["at0027"] = <
+					description = <"The faxsimile number of the provider">
+					text = <"Faxsimile">
+				>
+				["at0028"] = <
+					description = <"Email address of the provider">
+					text = <"Email">
+				>
+				["at0029"] = <
+					description = <"The mobile or cell phone number">
+					text = <"Mobile">
+				>
+				["at0030"] = <
+					description = <"The work telephone number">
+					text = <"Work">
+				>
+				["at0031"] = <
+					description = <"An alternative work telephone number">
+					text = <"Alternative work">
+				>
+				["at0032"] = <
+					description = <"A phone number that is direct to the provider">
+					text = <"Direct work line">
+				>
+				["at0033"] = <
+					description = <"A pager number to leave messages">
+					text = <"Pager">
+				>
+				["at0034"] = <
+					description = <"*">
+					text = <"Contact details of the secondary provider">
+				>
+				["at0035"] = <
+					description = <"Other details relevant to the referral">
+					text = <"Other details">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-OBSERVATION.apgar.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-OBSERVATION.apgar.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-OBSERVATION.apgar.v1.adl	(revision 39)
@@ -0,0 +1,545 @@
+archetype (adl_version=1.4)
+    openEHR-EHR-OBSERVATION.apgar.v1
+
+concept
+    [at0000]	-- Apgar score
+language
+    original_language = <[ISO_639-1::en]>
+    translations = <
+        ["de"] = <
+            language = <[ISO_639-1::de]>
+            author = <
+                ["name"] = <"Jasmin Buck, Sebastian Garde">
+                ["organisation"] = <"University of Heidelberg, Central Queensland University">
+            >
+        >
+        ["en-us"] = <
+            language = <[ISO_639-1::en-us]>
+            author = <
+                ["name"] = <"????">
+            >
+        >
+    >
+description
+    original_author = <
+        ["name"] = <"Sam Heard">
+        ["organisation"] = <"Ocean Informatics">
+        ["date"] = <"2004-05-18">
+        ["email"] = <"sam.heard@oceaninformatics.biz">
+    >
+    details = <
+        ["en-us"] = <
+            language = <[ISO_639-1::en-us]>
+            purpose = <"Record Apgar index or assessment for newborn. The root time of the event series is always birth.">
+            use = <"Allows recording of infant well-being at 1,2,5 and or 10 mintues after birth. The total may be recorded alone - if this is all that is available - but all five ordinal values should be completed in order that the total can be calculated. The total is the sum of the five ordinal values (min 0, max 10).">
+            keywords = <"apgar", "index", "score", "newborn">
+            misuse = <"Only partially completing the score and adding less than five values to give the total.">
+        >
+        ["en"] = <
+            language = <[ISO_639-1::en]>
+            purpose = <"Record Apgar index or assessment for newborn. The root time of the event series is always birth.">
+            use = <"Allows recording of infant well-being at 1,2,5 and or 10 mintues after birth. The total may be recorded alone - if this is all that is available - but all five ordinal values should be completed in order that the total can be calculated. The total is the sum of the five ordinal values (min 0, max 10).">
+            keywords = <"apgar", "newborn", "index", "score">
+            misuse = <"Only partially completing the score and adding less than five values to give the total.">
+        >
+        ["de"] = <
+            language = <[ISO_639-1::de]>
+            purpose = <"Zur Dokumentation des Apgar Wertes oder Beurteilung f%Gï¿½%@r Neugeborene. Der zu Grunde liegende Zeitpunkt der Ereignisreihe ist immer die Geburt.">
+            use = <"Erm%Gï¿½%@glicht die Dokumentation des Wohlergehens des S%Gï¿½%@uglings 1, 2, 5 und/ oder 10 Minuten nach der Geburt. Die Summe kann einzeln dokumentiert werden - falls nur diese verf%Gï¿½%@gbar ist - es sollten aber alle f%Gï¿½%@nf Zahlenwerte vervollst%Gï¿½%@ndigt werden, damit die Summe errechnet werden kann. Die Gesamtsumme ist die Summe der f%Gï¿½%@nf Zahlenwerte (minimal 0, maximal 10).">
+            keywords = <"Apgar", "Neugeborenes", "Index", "Wert">
+            misuse = <"Nur teilweise Vervollst%Gï¿½%@ndigung der Werte und Addieren von weniger als f%Gï¿½%@nf Werten zur Gesamtsumme.">
+        >
+    >
+    lifecycle_state = <"AuthorDraft">
+    other_contributors = <>
+
+definition
+    OBSERVATION[at0000] matches {	-- Apgar score
+        data matches {
+            HISTORY[at0002] matches {	-- history
+                events cardinality matches {1..*; unordered} matches {
+                    POINT_EVENT[at0003] occurrences matches {0..1} matches {	-- 1 minute
+                        offset matches {
+                            DV_DURATION matches {
+                                value matches {|PT1M|}
+                            }
+                        }
+                        data matches {
+                            ITEM_LIST[at0001] matches {	-- structure
+                                items cardinality matches {1..6; ordered} matches {
+                                    ELEMENT[at0005] occurrences matches {0..1} matches {	-- Heart rate
+                                        value matches {
+                                            0|[local::at0006], 	-- No heart beat
+                                            1|[local::at0007], 	-- Less than 100 beats per minute
+                                            2|[local::at0008]  	-- Greater than or equal to 100 beats per minute
+                                        }
+                                    }
+                                    ELEMENT[at0009] occurrences matches {0..1} matches {	-- Breathing
+                                        value matches {
+                                            0|[local::at0010], 	-- No effort
+                                            1|[local::at0011], 	-- Moderate effort
+                                            2|[local::at0012]  	-- Crying
+                                        }
+                                    }
+                                    ELEMENT[at0013] occurrences matches {0..1} matches {	-- Muscle tone
+                                        value matches {
+                                            0|[local::at0014], 	-- Limp
+                                            1|[local::at0015], 	-- Some flexing of arms and legs
+                                            2|[local::at0016]  	-- Active motion
+                                        }
+                                    }
+                                    ELEMENT[at0017] occurrences matches {0..1} matches {	-- Reflex response
+                                        value matches {
+                                            0|[local::at0018], 	-- No response to airways suction
+                                            1|[local::at0019], 	-- Grimace during airways suction
+                                            2|[local::at0020]  	-- Grimace and cough/sneeze during airways suction
+                                        }
+                                    }
+                                    ELEMENT[at0021] occurrences matches {0..1} matches {	-- Colour
+                                        value matches {
+                                            0|[local::at0022], 	-- Whole body is blue or pale
+                                            1|[local::at0023], 	-- Good colour in body, hands or feet blue 
+                                            2|[local::at0024]  	-- Completely pink or good colour
+                                        }
+                                    }
+                                    ELEMENT[at0025] matches {	-- Total
+                                        value matches {
+                                            DV_COUNT matches {
+                                                magnitude matches {|0..10|}
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    POINT_EVENT[at0026] occurrences matches {0..1} matches {	-- 2 minute
+                        offset matches {
+                            DV_DURATION matches {
+                                value matches {|PT2M|}
+                            }
+                        }
+                        data matches {
+                            use_node ITEM_LIST /data[at0002]/events[at0003]/data[at0001]
+                        }
+                    }
+                    POINT_EVENT[at0027] occurrences matches {0..1} matches {	-- 5 minute
+                        offset matches {
+                            DV_DURATION matches {
+                                value matches {|PT5M|}
+                            }
+                        }
+                        data matches {
+                            use_node ITEM_LIST /data[at0002]/events[at0003]/data[at0001]
+                        }
+                    }
+                    POINT_EVENT[at0028] occurrences matches {0..1} matches {	-- 10 minute
+                        offset matches {
+                            DV_DURATION matches {
+                                value matches {|PT10M|}
+                            }
+                        }
+                        data matches {
+                            use_node ITEM_LIST /data[at0002]/events[at0003]/data[at0001]
+                        }
+                    }
+                }
+            }
+        }
+        protocol matches {
+            ITEM_LIST[at0029] matches {	-- List
+                items cardinality matches {0..*; unordered} matches {
+                    ELEMENT[at0030] occurrences matches {0..1} matches {	-- Notes on measurement
+                        value matches {
+                            DV_TEXT matches {*}
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+ontology
+    terminologies_available = <"LNC205", ...>
+    term_definitions = <
+        ["en"] = <
+            items = <
+                ["at0000"] = <
+                    description = <"Clinical score derived from assessment of breathing, colour, muscle tone, heart rate and reflex response usually taken at 1, 5 and 10 minutes after birth">
+                    text = <"Apgar score">
+                >
+                ["at0001"] = <
+                    description = <"@ internal @">
+                    text = <"structure">
+                >
+                ["at0002"] = <
+                    description = <"@ internal @">
+                    text = <"history">
+                >
+                ["at0003"] = <
+                    description = <"Apgar score at one minute from birth">
+                    text = <"1 minute">
+                >
+                ["at0005"] = <
+                    description = <"Assessment of heart function in the new born">
+                    text = <"Heart rate">
+                >
+                ["at0006"] = <
+                    description = <"No heart beat is present (palpation at base of umbilical cord)">
+                    text = <"No heart beat">
+                >
+                ["at0007"] = <
+                    description = <"Heart rate of less than 100 beats per minute">
+                    text = <"Less than 100 beats per minute">
+                >
+                ["at0008"] = <
+                    description = <"Heart rate of greater than or equal to 100 beats per minute">
+                    text = <"Greater than or equal to 100 beats per minute">
+                >
+                ["at0009"] = <
+                    description = <"Assessment of the neonate's breathing effort">
+                    text = <"Breathing">
+                >
+                ["at0010"] = <
+                    description = <"No effort to breath">
+                    text = <"No effort">
+                >
+                ["at0011"] = <
+                    description = <"Some effort to breath, moving chest">
+                    text = <"Moderate effort">
+                >
+                ["at0012"] = <
+                    description = <"Crying or breathing normally">
+                    text = <"Crying">
+                >
+                ["at0013"] = <
+                    description = <"Assessment of the baby's muscle tone">
+                    text = <"Muscle tone">
+                >
+                ["at0014"] = <
+                    description = <"Limp or floppy and not moving spontaneously">
+                    text = <"Limp">
+                >
+                ["at0015"] = <
+                    description = <"Some movement and flexion of the arms or legs">
+                    text = <"Some flexing of arms and legs">
+                >
+                ["at0016"] = <
+                    description = <"Active and mobile">
+                    text = <"Active motion">
+                >
+                ["at0017"] = <
+                    description = <"Assessment of the response of the baby to suction from a nostril">
+                    text = <"Reflex response">
+                >
+                ["at0018"] = <
+                    description = <"No gag or response to suction of the airway">
+                    text = <"No response to airways suction">
+                >
+                ["at0019"] = <
+                    description = <"Grimace only as reaction to airways suction">
+                    text = <"Grimace during airways suction">
+                >
+                ["at0020"] = <
+                    description = <"Grimace and cough, sneeze or gag as response to airway suction">
+                    text = <"Grimace and cough/sneeze during airways suction">
+                >
+                ["at0021"] = <
+                    description = <"The colour of the skin on the body and trunk and limbs">
+                    text = <"Colour">
+                >
+                ["at0022"] = <
+                    description = <"The body is pale or blue in color">
+                    text = <"Whole body is blue or pale">
+                >
+                ["at0023"] = <
+                    description = <"The body is pink, hands and feet pale or blue">
+                    text = <"Good colour in body, hands or feet blue ">
+                >
+                ["at0024"] = <
+                    description = <"Pink or good color to whole body">
+                    text = <"Completely pink or good colour">
+                >
+                ["at0025"] = <
+                    description = <"The total of the ordinal scores for each parameter">
+                    text = <"Total">
+                >
+                ["at0026"] = <
+                    description = <"Apgar score 2 minutes after birth">
+                    text = <"2 minute">
+                >
+                ["at0027"] = <
+                    description = <"Apgar score 5 minutes after birth">
+                    text = <"5 minute">
+                >
+                ["at0028"] = <
+                    description = <"Apgar score 10 minutes after birth">
+                    text = <"10 minute">
+                >
+                ["at0029"] = <
+                    description = <"@ internal @">
+                    text = <"List">
+                >
+                ["at0030"] = <
+                    description = <"Notes on measurement of the apgar">
+                    text = <"Notes on measurement">
+                >
+            >
+        >
+        ["en-us"] = <
+            items = <
+                ["at0000"] = <
+                    description = <"Clinical score derived from assessment of breathing, colour, muscle tone, heart rate and reflex response usually taken at 1, 5 and 10 minutes after birth">
+                    text = <"Apgar score">
+                >
+                ["at0001"] = <
+                    description = <"@ internal @">
+                    text = <"structure">
+                >
+                ["at0002"] = <
+                    description = <"@ internal @">
+                    text = <"history">
+                >
+                ["at0003"] = <
+                    description = <"Apgar score at one minute from birth">
+                    text = <"1 minute">
+                >
+                ["at0005"] = <
+                    description = <"Assessment of heart function in the new born">
+                    text = <"Heart rate">
+                >
+                ["at0006"] = <
+                    description = <"No heart beat is present - palpation of the base of umbilical cord">
+                    text = <"No heart beat">
+                >
+                ["at0007"] = <
+                    description = <"Less than 100 beats per minute">
+                    text = <"Less than 100 beats per minute">
+                >
+                ["at0008"] = <
+                    description = <"Heart rate of greater than or equal to 100 beats per minute">
+                    text = <"Greater than or equal to 100 beats per minute">
+                >
+                ["at0009"] = <
+                    description = <"Assessment of the neonate's breathing effort">
+                    text = <"Breathing">
+                >
+                ["at0010"] = <
+                    description = <"No effort to breath">
+                    text = <"No effort">
+                >
+                ["at0011"] = <
+                    description = <"Some effort to breath">
+                    text = <"Moderate effort">
+                >
+                ["at0012"] = <
+                    description = <"Crying or breathing normally">
+                    text = <"Crying">
+                >
+                ["at0013"] = <
+                    description = <"Assessment of the baby's muscle tone">
+                    text = <"Muscle tone">
+                >
+                ["at0014"] = <
+                    description = <"Limp or floppy and not moving spontaneously">
+                    text = <"Limp">
+                >
+                ["at0015"] = <
+                    description = <"Some movement and flexion of the arms or legs">
+                    text = <"Some flexing of arms and legs">
+                >
+                ["at0016"] = <
+                    description = <"Active and mobile">
+                    text = <"Active motion">
+                >
+                ["at0017"] = <
+                    description = <"Assessment of the response of the baby to suction from a nostril">
+                    text = <"Reflex response">
+                >
+                ["at0018"] = <
+                    description = <"No gag or response to suction of the airway">
+                    text = <"No response to airways suction">
+                >
+                ["at0019"] = <
+                    description = <"Grimace only as reaction to airways suction">
+                    text = <"Grimace during airways suction">
+                >
+                ["at0020"] = <
+                    description = <"Grimace and cough, sneeze or gag as response to airway suction">
+                    text = <"Grimace and cough/sneeze during airways suction">
+                >
+                ["at0021"] = <
+                    description = <"The color of the skin on the body, trunk and limbs">
+                    text = <"Color">
+                >
+                ["at0022"] = <
+                    description = <"The body is gray or blue in color">
+                    text = <"Whole body is gray">
+                >
+                ["at0023"] = <
+                    description = <"The body is pink, hands and feet gray or blue">
+                    text = <"Good color in body, hands or feet blue">
+                >
+                ["at0024"] = <
+                    description = <"Pink or good color to whole body">
+                    text = <"Completely pink or good color">
+                >
+                ["at0025"] = <
+                    description = <"The total of the ordinal scores for each parameter">
+                    text = <"Score">
+                >
+                ["at0026"] = <
+                    description = <"Apgar score 2 minutes after birth">
+                    text = <"2 minute">
+                >
+                ["at0027"] = <
+                    description = <"Apgar score 5 minutes after birth">
+                    text = <"5 minute">
+                >
+                ["at0028"] = <
+                    description = <"Apgar score 10 minutes after birth">
+                    text = <"10 minute">
+                >
+                ["at0029"] = <
+                    description = <"@ internal @">
+                    text = <"List">
+                >
+                ["at0030"] = <
+                    description = <"Any notes on the measurement of the apgar">
+                    text = <"Notes on measurement">
+                >
+            >
+        >
+        ["de"] = <
+            items = <
+                ["at0000"] = <
+                    description = <"Klinischer Wert, abgeleitet von der Beurteilung der Atmung, der Hautfarbe, dem Muskeltonus, der Herzfrequenz und der Reaktion von Reflexen, %Gï¿½%@blicherweise 1, 5 und 10 Minuten nach der Geburt erhoben">
+                    text = <"Apgar Wert">
+                >
+                ["at0001"] = <
+                    description = <"@ internal @">
+                    text = <"Structure">
+                >
+                ["at0002"] = <
+                    description = <"@ internal @">
+                    text = <"History">
+                >
+                ["at0003"] = <
+                    description = <"Apgar Wert 1 Minute nach der Geburt">
+                    text = <"1 Minute">
+                >
+                ["at0005"] = <
+                    description = <"Beurteilung der Herzfunktion des Neubegorenen">
+                    text = <"Herzfrequenz">
+                >
+                ["at0006"] = <
+                    description = <"Kein Herzschlag vorhanden (Palpation am Ende der Nabelschnur)">
+                    text = <"Kein Herzschlag">
+                >
+                ["at0007"] = <
+                    description = <"Herzfrequenz von weniger als 100 Schl%Gï¿½%@gen pro Minute">
+                    text = <"Weniger als 100 Schl%Gï¿½%@ge pro Minute">
+                >
+                ["at0008"] = <
+                    description = <"Herzfrequenz von mehr als oder genau 100 Schl%Gï¿½%@gen pro Minute">
+                    text = <"Mehr als oder genau 100 Schl%Gï¿½%@ge pro Minute">
+                >
+                ["at0009"] = <
+                    description = <"Beurteilung des Atmungsbestreben des Neugeborenen">
+                    text = <"Atmung">
+                >
+                ["at0010"] = <
+                    description = <"Kein Bestreben zu atmen">
+                    text = <"Kein Bestreben">
+                >
+                ["at0011"] = <
+                    description = <"Etwas bestrebt zu atmen, bewegter Brustkorb">
+                    text = <"Geringes Bestreben">
+                >
+                ["at0012"] = <
+                    description = <"Normales Schreien oder normale Atmung">
+                    text = <"Schreien">
+                >
+                ["at0013"] = <
+                    description = <"Beurteilung des Muskeltonus des Neugeborenen">
+                    text = <"Muskeltonus">
+                >
+                ["at0014"] = <
+                    description = <"Schlaff oder schlapp und keine spontane Bewegung">
+                    text = <"Schlaff">
+                >
+                ["at0015"] = <
+                    description = <"Etwas Bewegung und Beugen der Arme oder der Beine">
+                    text = <"Beugen der Arme und Beine">
+                >
+                ["at0016"] = <
+                    description = <"Lebhaft und beweglich">
+                    text = <"Lebhafte Bewegung">
+                >
+                ["at0017"] = <
+                    description = <"Beurteilung der Reaktion des Neugeborenen auf die Absaugung der Nasenl%Gï¿½%@cher">
+                    text = <"Reflexantwort">
+                >
+                ["at0018"] = <
+                    description = <"kein W%Gï¿½%@rgen oder keine Reaktion auf das Absaugen der Atemwege">
+                    text = <"Keine Reaktion auf die Absaugung der Atemwege">
+                >
+                ["at0019"] = <
+                    description = <"Grimasse als einzige Reaktion auf das Absaugen der Atemwege">
+                    text = <"Grimasse w%Gï¿½%@hrend der Absaugung der Atemwege">
+                >
+                ["at0020"] = <
+                    description = <"Grimasse und husten, niesen oder w%Gï¿½%@rgen als Reaktion auf die Absaugung der Atemwege">
+                    text = <"Grimasse und Husten/Niesen w%Gï¿½%@hrend der Absaugung der Atemwege ">
+                >
+                ["at0021"] = <
+                    description = <"Die Farbe der Haut am K%Gï¿½%@rper, am Rumpf und an den Gliedern">
+                    text = <"Hautfarbe">
+                >
+                ["at0022"] = <
+                    description = <"Der K%Gï¿½%@rper ist blass oder blau gef%Gï¿½%@rbt">
+                    text = <"Gesamter K%Gï¿½%@rper ist blau oder blass">
+                >
+                ["at0023"] = <
+                    description = <"Der K%Gï¿½%@rper ist rosig, H%Gï¿½%@nde und F%Gï¿½ï¿½%@e sind blass oder blau">
+                    text = <"Gesunde K%Gï¿½%@rperfarbe, blaue H%Gï¿½%@nde oder F%Gï¿½ï¿½%@e">
+                >
+                ["at0024"] = <
+                    description = <"Rosige oder gesunde F%Gï¿½%@rbung des gesamten K%Gï¿½%@rpers">
+                    text = <"Vollst%Gï¿½%@ndig gesunde oder rosige Farbe">
+                >
+                ["at0025"] = <
+                    description = <"Die Summe der Zahlenwerte aller Parameter">
+                    text = <"Summe">
+                >
+                ["at0026"] = <
+                    description = <"Apgar Wert 2 Minuten nach der Geburt">
+                    text = <"2 Minuten">
+                >
+                ["at0027"] = <
+                    description = <"Apgar Wert 5 Minuten nach der Geburt">
+                    text = <"5 Minuten">
+                >
+                ["at0028"] = <
+                    description = <"Apgar Wert 10 Minuten nach der Geburt">
+                    text = <"10 Minuten">
+                >
+                ["at0029"] = <
+                    description = <"@ internal @">
+                    text = <"List">
+                >
+                ["at0030"] = <
+                    description = <"Anmerkungen zur Messung des Apgar Wertes">
+                    text = <"Anmerkungen zur Messung">
+                >
+            >
+        >
+    >
+    term_binding = <
+        ["LNC205"] = <
+            items = <
+                ["/data[at0002]/events[at0003]/data[at0001]/items[at0025]"] = <[LNC205::9272-6]>
+                ["/data[at0002]/events[at0028]/data/items[at0025]"] = <[LNC205::9271-8]>
+            >
+        >
+    >
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-SECTION.findings.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-SECTION.findings.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-SECTION.findings.v1.adl	(revision 39)
@@ -0,0 +1,47 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-SECTION.findings.v1
+
+concept
+	[at0000]	-- Clinical findings
+language
+	original_language = <[ISO_639-1::en]>
+description
+	original_author = <
+		["name"] = <"Sam Heard">
+		["organisation"] = <"Ocean Informatics">
+		["date"] = <"9/01/2007">
+		["email"] = <"sam.heard@oceaninformatics.biz">
+	>
+	details = <
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"A heading to contain clinical findings">
+			use = <"A section which only contains observations">
+			keywords = <"findings", ...>
+			misuse = <"">
+		>
+	>
+	lifecycle_state = <"Initial">
+	other_contributors = <>
+
+definition
+	SECTION[at0000] matches {	-- Clinical findings
+		items cardinality matches {0..*; unordered} matches {
+			allow_archetype OBSERVATION occurrences matches {0..1} matches {
+				include
+					archetype_id/value matches {/.*/}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["en"] = <
+			items = <
+				["at0000"] = <
+					description = <"The findings at this contact">
+					text = <"Clinical findings">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-SECTION.reason_for_encounter.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-SECTION.reason_for_encounter.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-SECTION.reason_for_encounter.v1.adl	(revision 39)
@@ -0,0 +1,51 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-SECTION.reason_for_encounter.v1
+
+concept
+	[at0000]	-- Reason for encounter
+language
+	original_language = <[ISO_639-1::en]>
+description
+	original_author = <
+		["name"] = <"Sam Heard">
+		["organisation"] = <"Ocean Informatics">
+		["date"] = <"9/01/2007">
+		["email"] = <"sam.heard@oceaninformatics.biz">
+	>
+	details = <
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"A heading to display the reason for encounter">
+			use = <"To record a symptom, problem or other reason for encounter">
+			keywords = <"rfe", "reason">
+			misuse = <"">
+		>
+	>
+	lifecycle_state = <"Initial">
+	other_contributors = <>
+
+definition
+	SECTION[at0000] matches {	-- Reason for encounter
+		items cardinality matches {0..*; unordered} matches {
+			allow_archetype OBSERVATION occurrences matches {1..*} matches {
+				include
+					archetype_id/value matches {/.*/}
+			}
+			allow_archetype EVALUATION occurrences matches {0..1} matches {
+				include
+					archetype_id/value matches {/.*/}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["en"] = <
+			items = <
+				["at0000"] = <
+					description = <"The reason(s) for this particular encounter">
+					text = <"Reason for encounter">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-SECTION.summary.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-SECTION.summary.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-SECTION.summary.v1.adl	(revision 39)
@@ -0,0 +1,52 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-SECTION.summary.v1
+
+concept
+	[at0000]	-- Summary
+language
+	original_language = <[ISO_639-1::en]>
+description
+	original_author = <
+		["name"] = <"Sam Heard">
+		["organisation"] = <"Ocean Informatics">
+		["date"] = <"9/01/2007">
+		["email"] = <"sam.heard@oceaninformatics.biz">
+	>
+	details = <
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"A heading containing summary information based on particular evaluation entries">
+			use = <"A heading for organising clinical data under a heading of summary">
+			keywords = <"review", "conclusions", "risk">
+			misuse = <"">
+		>
+	>
+	lifecycle_state = <"Initial">
+	other_contributors = <>
+
+definition
+	SECTION[at0000] matches {	-- Summary
+		items cardinality matches {0..*; unordered} matches {
+			allow_archetype EVALUATION occurrences matches {0..1} matches {
+				include
+					archetype_id/value matches {/clinical_synopsis\.v1/}
+					archetype_id/value matches {/problem\.v1/}
+					archetype_id/value matches {/problem-diagnosis\.v1/}
+					archetype_id/value matches {/problem-diagnosis-histological\.v1/}
+					archetype_id/value matches {/problem-genetic\.v1/}
+					archetype_id/value matches {/risk\.v1/}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["en"] = <
+			items = <
+				["at0000"] = <
+					description = <"A heading for conclusions and other evaluations">
+					text = <"Summary">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-SECTION.vital_signs.v1.adl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-SECTION.vital_signs.v1.adl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/openEHR-EHR-SECTION.vital_signs.v1.adl	(revision 39)
@@ -0,0 +1,54 @@
+archetype (adl_version=1.4)
+	openEHR-EHR-SECTION.vital_signs.v1
+
+concept
+	[at0000]	-- Vital signs
+language
+	original_language = <[ISO_639-1::en]>
+description
+	original_author = <
+		["name"] = <"Sam Heard">
+		["organisation"] = <"Ocean Informatics">
+		["date"] = <"14/03/2006">
+		["email"] = <"sam.heard@oceaninformatics.biz">
+	>
+	details = <
+		["en"] = <
+			language = <[ISO_639-1::en]>
+			purpose = <"A heading or section which can only contain observations considered to be vital signs. This group of observations is a common set in medicine, and while these often occur separately in health records, when they are measured together this is a significant assessment of wellbeing.">
+			use = <"An organisational heading for vital signs">
+			keywords = <"blood pressure", "temperature", "pulse", "oxygen saturation", "respirations", "observations", "vital", "signs">
+			misuse = <"Does not need to be used to record these entries separately">
+		>
+	>
+	lifecycle_state = <"AuthorDraft">
+	other_contributors = <>
+
+definition
+	SECTION[at0000] matches {	-- Vital signs
+		items cardinality matches {0..*; unordered} matches {
+			allow_archetype OBSERVATION occurrences matches {1..5} matches {
+				include
+					archetype_id/value matches {/blood_pressure\.v1/}
+					archetype_id/value matches {/heart_rate-pulse\.v1/}
+					archetype_id/value matches {/respiration\.v1/}
+					archetype_id/value matches {/body_temperature\.v1/}
+					archetype_id/value matches {/oximetry\.v1/}
+					archetype_id/value matches {/heart_rate\.v1/}
+				exclude
+					archetype_id/value matches {/.*/}
+			}
+		}
+	}
+
+ontology
+	term_definitions = <
+		["en"] = <
+			items = <
+				["at0000"] = <
+					description = <"A group of observations that are recorded at the same time and record the blood pressure, pulse, temperature and other readings">
+					text = <"Vital signs">
+				>
+			>
+		>
+	>
Index: /ruby/tags/0.0.2/adl_parser/tests/parser_test.rb
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/parser_test.rb	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/parser_test.rb	(revision 39)
@@ -0,0 +1,151 @@
+require 'lib/parser.rb'
+require 'test/unit'
+
+class ADLParserTest < Test::Unit::TestCase
+  def setup
+    @parser = ::OpenEHR::ADL::Parser.new
+  end
+
+  def test_init
+    assert_instance_of ::OpenEHR::ADL::Parser,@parser
+  end
+
+  def test_parse
+    laboratory_request = File.read('tests/openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl')
+    assert_nothing_raised do
+      result = @parser.parse(laboratory_request, 'openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl')
+      assert_instance_of OpenEHR::AM::Archetype::ARCHETYPE, result
+      assert_instance_of OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION, result.description
+      assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT, result.definition
+#      assert_equal '', result.definition
+    end
+
+    apgar = File.read('tests/openEHR-EHR-OBSERVATION.apgar.v1.adl')
+    assert_nothing_raised do
+      result = @parser.parse(apgar, 'openEHR-EHR-OBSERVATION.apgar.v1.adl')
+      assert_instance_of OpenEHR::AM::Archetype::ARCHETYPE, result
+      assert_instance_of OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION, result.description
+      assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT, result.definition
+    end
+
+    evaluation = File.read('tests/openEHR-EHR-EVALUATION.adverse.v1.adl')
+    assert_nothing_raised do
+      @parser.parse(evaluation, 'openEHR-EHR-EVALUATION.adverse.v1.adl')
+    end
+
+
+
+    referral = File.read('tests/openEHR-EHR-ITEM_TREE.referral.v1.adl')
+    assert_nothing_raised do
+      @parser.parse(referral, 'openEHR-EHR-ITEM_TREE.referral.v1.adl')
+    end
+
+    exam_fetus = File.read('tests/openEHR-EHR-CLUSTER.exam-fetus.v1.adl')
+    assert_nothing_raised do
+      @parser.parse(exam_fetus, 'openEHR-EHR-CLUSTER.exam-fetus.v1.adl')
+    end
+
+    exam_uterine_cervix = File.read('tests/openEHR-EHR-CLUSTER.exam-uterine_cervix.v1.adl')
+    assert_nothing_raised do
+      @parser.parse(exam_uterine_cervix, 'openEHR-EHR-CLUSTER.exam-uterine_cervix.v1.adl')
+    end
+
+    imaging = File.read('tests/openEHR-EHR-ACTION.imaging.v1.adl')
+    assert_nothing_raised do
+      @parser.parse(imaging, 'openEHR-EHR-ACTION.imaging.v1.adl')
+    end
+
+    exam_nervous_system = File.read('tests/openEHR-EHR-CLUSTER.exam-nervous_system.v1.adl')
+    assert_nothing_raised do
+      @parser.parse(exam_nervous_system, 'openEHR-EHR-CLUSTER.exam-nervous_system.v1.adl')
+    end
+    exam_generic = File.read('tests/openEHR-EHR-CLUSTER.exam-generic.v1.adl')
+    assert_nothing_raised do
+      @parser.parse(exam_generic, 'openEHR-EHR-CLUSTER.exam-generic.v1.adl')
+    end
+    exam_generic_mass = File.read('tests/openEHR-EHR-CLUSTER.exam-generic-mass.v1.adl')
+    assert_nothing_raised do
+      @parser.parse(exam_generic_mass, 'openEHR-EHR-CLUSTER.exam-generic-mass.v1.adl')
+    end
+    exam_generic_lymphnode = File.read('tests/openEHR-EHR-CLUSTER.exam-generic-lymphnode.v1.adl')
+    assert_nothing_raised do
+      @parser.parse(exam_generic_lymphnode, 'openEHR-EHR-CLUSTER.exam-generic-lymphnode.v1.adl')
+    end
+    exam_generic_joint = File.read('tests/openEHR-EHR-CLUSTER.exam-generic-joint.v1.adl')
+    assert_nothing_raised do
+      @parser.parse(exam_generic_joint, 'openEHR-EHR-CLUSTER.exam-generic-joint.v1.adl')
+    end
+    exam_chest = File.read('tests/openEHR-EHR-CLUSTER.exam-chest.v1.adl')
+    assert_nothing_raised do
+      @parser.parse(exam_chest, 'openEHR-EHR-CLUSTER.exam-chest.v1.adl')
+    end
+    exam_abdomen = File.read('tests/openEHR-EHR-CLUSTER.exam-abdomen.v1.adl')
+    assert_nothing_raised do
+      @parser.parse(exam_abdomen, 'openEHR-EHR-CLUSTER.exam-abdomen.v1.adl')
+    end
+    cluster_auscultation = File.read('tests/openEHR-EHR-CLUSTER.auscultation.v1.adl')
+    assert_nothing_raised do
+      @parser.parse(cluster_auscultation, 'openEHR-EHR-CLUSTER.auscultation.v1.adl')
+    end
+    cluster_auscultation_chest = File.read('tests/openEHR-EHR-CLUSTER.auscultation-chest.v1.adl')
+    assert_nothing_raised do
+      @parser.parse(cluster_auscultation_chest, 'openEHR-EHR-CLUSTER.auscultation-chest.v1.adl')
+    end
+    vital_signs = File.read('tests/openEHR-EHR-SECTION.vital_signs.v1.adl')
+    assert_nothing_raised do
+      @parser.parse(vital_signs, 'openEHR-EHR-SECTION.vital_signs.v1')
+    end
+    summary = File.read('tests/openEHR-EHR-SECTION.summary.v1.adl')
+    assert_nothing_raised do
+      @parser.parse(summary, 'openEHR-EHR-SECTION.summary.v1.adl')
+    end
+
+    findings = File.read('tests/openEHR-EHR-SECTION.findings.v1.adl')
+    assert_nothing_raised do
+      @parser.parse(findings, 'openEHR-EHR-SECTION.findings.v1.adl')
+    end
+
+    reason_for_encounter = File.read('tests/openEHR-EHR-SECTION.reason_for_encounter.v1.adl')
+    assert_nothing_raised do
+      @parser.parse(reason_for_encounter, 'openEHR-EHR-SECTION.reason_for_encounter.v1.adl')
+    end
+
+    imaging = File.read('tests/openEHR-EHR-ITEM_TREE.imaging.v1.adl')
+    assert_nothing_raised do
+      @parser.parse(imaging, 'openEHR-EHR-ITEM_TREE.imaging.v1.adl')
+    end
+    instruction_referral = File.read('tests/openEHR-EHR-INSTRUCTION.referral.v1.adl')
+    assert_nothing_raised do
+      @parser.parse(instruction_referral, 'openEHR-EHR-INSTRUCTION.referral.v1.adl')
+    end
+    instruction_medication = File.read('tests/openEHR-EHR-INSTRUCTION.medication.v1.adl')
+    assert_nothing_raised do
+      @parser.parse(instruction_medication, 'openEHR-EHR-INSTRUCTION.medication.v1.adl')
+    end
+    action_referral = File.read('tests/openEHR-EHR-ACTION.referral.v1.adl')
+    assert_nothing_raised do
+      @parser.parse(action_referral, 'openEHR-EHR-ACTION.referral.v1.adl')
+    end
+
+    dimensions_circumference = File.read('tests/openEHR-EHR-CLUSTER.dimensions.v1.adl')
+    assert_nothing_raised do
+      @parser.parse(dimensions_circumference, 'openEHR-EHR-CLUSTER.dimensions.v1.adl')
+    end
+
+    discharge = File.read('tests/openEHR-EHR-COMPOSITION.discharge.v1draft.adl')
+    assert_nothing_raised do
+      @parser.parse(discharge, 'openEHR-EHR-COMPOSITION.discharge.v1draft.adl')
+    end
+
+    encounter = File.read('tests/openEHR-EHR-COMPOSITION.encounter.v1draft.adl')
+    assert_nothing_raised do
+      @parser.parse(encounter, 'openEHR-EHR-COMPOSITION.encounter.v1draft.adl')
+    end
+
+
+#     medication = File.read('tests/openEHR-EHR-ITEM_TREE.medication.v1.adl')
+#     assert_nothing_raised do
+#       @parser.parse(medication, 'openEHR-EHR-ITEM_TREE.medication.v1.adl')
+#     end
+  end
+end
Index: /ruby/tags/0.0.2/adl_parser/tests/scanner_test.rb
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/scanner_test.rb	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/scanner_test.rb	(revision 39)
@@ -0,0 +1,112 @@
+require 'lib/scanner.rb'
+require 'test/unit'
+
+class YaparcParserTest < Test::Unit::TestCase
+  def test_RootScanner
+    parser = OpenEHR::ADL::Scanner::DADL::RootScanner.new
+    assert_instance_of OpenEHR::ADL::Scanner::DADL::RootScanner,parser
+    result = parser.parse('')
+  end
+
+  def test_V_LOCAL_TERM_CODE_REF
+    parser = OpenEHR::ADL::Scanner::Common::V_LOCAL_TERM_CODE_REF.new
+    assert_instance_of OpenEHR::ADL::Scanner::Common::V_LOCAL_TERM_CODE_REF,parser
+    result = parser.parse('[en-us]')
+    assert_instance_of Yaparc::Result::OK, result
+  end
+
+  def test_V_QUALIFIED_TERM_CODE_REF
+    parser = OpenEHR::ADL::Scanner::Common::V_QUALIFIED_TERM_CODE_REF.new
+    assert_instance_of OpenEHR::ADL::Scanner::Common::V_QUALIFIED_TERM_CODE_REF,parser
+    result = parser.parse('[ISO_639::en]')
+    assert_instance_of Yaparc::Result::OK, result
+    result = parser.parse('[ISO_639::en-us]')
+    assert_instance_of Yaparc::Result::OK, result
+  end
+
+  def test_V_STRING
+    parser = OpenEHR::ADL::Scanner::Common::V_STRING.new
+    assert_instance_of OpenEHR::ADL::Scanner::Common::V_STRING,parser
+    result = parser.parse('"this is a string"')
+    assert_instance_of Yaparc::Result::OK, result
+    result = parser.parse('"en-us"')
+    assert_instance_of Yaparc::Result::OK, result
+  end
+
+  def test_V_REAL
+    parser = OpenEHR::ADL::Scanner::Common::V_REAL.new
+    assert_instance_of OpenEHR::ADL::Scanner::Common::V_REAL,parser
+    result = parser.parse('0.1')
+    assert_instance_of Yaparc::Result::OK, result
+    result = parser.parse('0.0..20000.0')
+    assert_instance_of Yaparc::Result::OK, result
+    assert_equal [:V_REAL, "0.0"], result.value
+    assert_equal "..20000.0", result.input
+  end
+
+  def test_V_ISO8601_DURATION
+    parser = OpenEHR::ADL::Scanner::Common::V_ISO8601_DURATION.new
+    assert_instance_of OpenEHR::ADL::Scanner::Common::V_ISO8601_DURATION,parser
+    result = parser.parse('PT1M')
+    assert_instance_of Yaparc::Result::OK, result
+    result = parser.parse('PYMWDTHMS')
+    assert_instance_of Yaparc::Result::OK, result
+    assert_equal [:V_ISO8601_DURATION, "PYMWDTHMS"], result.value
+  end
+
+  def test_V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN
+    parser = OpenEHR::ADL::Scanner::CADL::V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN.new
+    assert_instance_of OpenEHR::ADL::Scanner::CADL::V_ISO8601_DATE_TIME_CONSTRAINT_PATTERN,parser
+    result = parser.parse('yyyy-??-??T??:??:??')
+    assert_instance_of Yaparc::Result::OK, result
+  end
+
+  def test_V_ISO8601_DATE_CONSTRAINT_PATTERN
+    parser = OpenEHR::ADL::Scanner::CADL::V_ISO8601_DATE_CONSTRAINT_PATTERN.new
+    assert_instance_of OpenEHR::ADL::Scanner::CADL::V_ISO8601_DATE_CONSTRAINT_PATTERN,parser
+    result = parser.parse('yyyy-mm-XX-dd')
+    assert_instance_of Yaparc::Result::OK, result
+  end
+
+  def test_V_ISO8601_TIME_CONSTRAINT_PATTERN
+    parser = OpenEHR::ADL::Scanner::CADL::V_ISO8601_TIME_CONSTRAINT_PATTERN.new
+    assert_instance_of OpenEHR::ADL::Scanner::CADL::V_ISO8601_TIME_CONSTRAINT_PATTERN,parser
+    result = parser.parse('hh:mm:ss:??')
+    assert_instance_of Yaparc::Result::OK, result
+  end
+
+  def test_dadl_reserved
+    parser = OpenEHR::ADL::Scanner::DADL::RootScanner.new
+    result = parser.parse('then')
+    assert_instance_of Yaparc::Result::OK, result
+    result = parser.parse('infinity')
+    assert_instance_of Yaparc::Result::OK, result
+    assert_equal [:SYM_INFINITY, :SYM_INFINITY], result.value
+  end
+
+  def test_cadl
+    parser = OpenEHR::ADL::Scanner::CADL::RootScanner.new
+    assert_instance_of OpenEHR::ADL::Scanner::CADL::RootScanner,parser
+    result = parser.parse('PT1M')
+    assert_instance_of Yaparc::Result::OK, result
+    assert_equal [:V_ISO8601_DURATION, "PT1M"], result.value
+    result = parser.parse('PYMWDTHMS')
+    assert_instance_of Yaparc::Result::OK, result
+    assert_equal [:V_ISO8601_DURATION, "PYMWDTHMS"], result.value
+  end
+
+  def test_cadl_reserved
+    parser = OpenEHR::ADL::Scanner::CADL::RootScanner.new
+    result = parser.parse('then')
+    assert_instance_of Yaparc::Result::OK, result
+    result = parser.parse('cardinality')
+    assert_instance_of Yaparc::Result::OK, result
+    assert_equal [:SYM_CARDINALITY, :SYM_CARDINALITY], result.value
+    result = parser.parse('ordered')
+    assert_instance_of Yaparc::Result::OK, result
+    assert_equal "", result.input
+    assert_equal [:SYM_ORDERED, :SYM_ORDERED], result.value
+  end
+
+  
+end
Index: /ruby/tags/0.0.2/adl_parser/tests/semantic_test.rb
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/semantic_test.rb	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/semantic_test.rb	(revision 39)
@@ -0,0 +1,12 @@
+require 'lib/parser.rb'
+require 'test/unit'
+
+class ADLSemanticTest < Test::Unit::TestCase
+  def setup
+    @parser = ::OpenEHR::ADL::Parser.new
+  end
+
+  def test_init
+    assert_instance_of ::OpenEHR::ADL::Parser,@parser
+  end
+end
Index: /ruby/tags/0.0.2/adl_parser/tests/shell_test.rb
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/shell_test.rb	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/shell_test.rb	(revision 39)
@@ -0,0 +1,27 @@
+require 'lib/shell.rb'
+require 'test/unit'
+
+class ShellADLValidatorTest < Test::Unit::TestCase
+  def setup
+    @adl_validator = ::OpenEHR::Application::ADLValidator.new(::OpenEHR::ADL::Validator.new(::OpenEHR::ADL::Parser.new))
+    @file = File.open('tests/openEHR-EHR-CLUSTER.exam-nervous_system.v1.adl')
+    @string = File.read('tests/openEHR-EHR-CLUSTER.exam-nervous_system.v1.adl')
+    @stringio = StringIO.new(@string)
+  end
+
+  def test_init
+    assert_instance_of ::OpenEHR::Application::ADLValidator,@adl_validator
+  end
+
+  def test_run
+    assert_nothing_raised do
+      @adl_validator.run(@file)
+    end
+    assert_nothing_raised do
+      @adl_validator.run(@string)
+    end
+    assert_nothing_raised do
+      @adl_validator.run(@stringio)
+    end
+  end
+end
Index: /ruby/tags/0.0.2/adl_parser/tests/validator_test.rb
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/validator_test.rb	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/validator_test.rb	(revision 39)
@@ -0,0 +1,25 @@
+require 'lib/validator.rb'
+require 'test/unit'
+
+class ADLValidatorTest < Test::Unit::TestCase
+  def setup
+    @validator = ::OpenEHR::ADL::Validator.new(::OpenEHR::ADL::Parser.new)
+  end
+
+  def test_init
+    assert_instance_of ::OpenEHR::ADL::Validator,@validator
+  end
+
+  def test_validate
+    exam_nervous_system = File.read('tests/openEHR-EHR-CLUSTER.exam-nervous_system.v1.adl')
+    assert_nothing_raised do
+      @validator.validate(exam_nervous_system, 'openEHR-EHR-CLUSTER.exam-nervous_system.v1.adl')
+    end
+
+#     exam_uterine_cervix = File.read('tests/openEHR-EHR-CLUSTER.exam-uterine_cervix.v1.adl')
+# #    assert_raise(Racc::ParseError) do
+#    @validator.validate(exam_uterine_cervix, 'openEHR-EHR-CLUSTER.exam-uterine_cervix.v1.adl')
+# #    end
+
+  end
+end
Index: /ruby/tags/0.0.2/adl_parser/tests/vital_signs.cadl
===================================================================
--- /ruby/tags/0.0.2/adl_parser/tests/vital_signs.cadl	(revision 39)
+++ /ruby/tags/0.0.2/adl_parser/tests/vital_signs.cadl	(revision 39)
@@ -0,0 +1,14 @@
+	SECTION[at0000] matches {	-- Vital signs or clinical 'observations'
+		items cardinality matches {0..*; unordered} matches {
+			allow_archetype OBSERVATION occurrences matches {1..5} matches {
+				include
+					domain_concept matches {/blood_pressure.v1/}
+					domain_concept matches {/heart_rate-pulse.v1/}
+					domain_concept matches {/temperature.v1/}
+					domain_concept matches {/blood_gases.v1/}
+					domain_concept matches {/respirations.v1/}
+				exclude
+					domain_concept matches {/.*/}
+			}
+		}
+	}
Index: /ruby/tags/0.0.2/archetype.rb
===================================================================
--- /ruby/tags/0.0.2/archetype.rb	(revision 39)
+++ /ruby/tags/0.0.2/archetype.rb	(revision 39)
@@ -0,0 +1,146 @@
+#! /usr/bin/env ruby
+# component: openEHR Ruby reference implementation
+# description: This file includes Archetype 
+#      class that contains Archetype values.
+#      Main concept is based on Java ref impl.
+#      We should make refactoring to suit for Ruby way.
+# keywords: archetype
+# author: Shinji KOBAYASHI
+# support: openEHR.jp
+# license: openEHR open source license
+#
+require 'set'
+class Archetype < AuthordResource
+  attr_reader :adlVersion, :id, :parentId
+  attr_reader :concept, :definition, :ontology
+  attr_accessor :description, :isControled, :originalLanguage
+  attr_accessor :revisionHistory, :translation
+  def initialize(adlVersion, id = nil , parentId, concept
+                 originalLanguage = nil, translation = nil
+                 description, revisionHistory, isControled
+                 defitnition, ontology)
+    if id == nil
+      raise Exception.new("illegal argument error, id == nil")
+    end
+    if originalLanguage == nil
+      raise Exception.new("illegal argument error, originalLanguage == nil")
+    end
+    if translation == nil
+      raise Exception.new("illegal argument error, translation == nil")
+    end
+    @adlVersion = adlVersion
+    @id = id
+    @parentId = parentId
+    @concept = concept
+    @originalLanguage = originalLanguage
+    @translation = translation
+    @description = description
+    @revisionHistory = revisionHistory
+    @isControled = isControled
+    @defitnition = defitnition
+    @ontology = ontology
+    loadMaps(definition)
+  end
+  
+end
+class AuthoredResource
+  attr_reader :is_controled
+  attr_reader :revision_history, :translations
+  attr_accessor :description, :original_language
+  def initialize(original_language, translations, 
+                 description, revision_history = nil)
+    if original_language == nil
+      raise Exception.new("original language nil")
+    end
+    if translations == nil
+      raise Exception.new("translation empty")
+    end
+    if revision_history == nil
+      is_controled = false
+    else
+      is_controled = true
+    end
+    @original_language = original_language
+    @translations = translations
+    @description = description
+    @revision_history = revision_history
+  end
+  def current_version
+    @revision_history.most_recent_revision
+  end
+  def language_available
+    languages = Set.new
+    if translations != nil
+      languages << translations.keys
+    end
+    languages << original_language.code_string
+  end
+end
+class RevisionHistory
+end
+class CodePhrase
+  attr_reader :terminology_id, :code_string
+  def initialize(terminology_id, codeString)
+    if terminlogyID == nil
+      raise Exception.new("nil terminology")
+    end
+    if codeString == nil
+      raise Exception.new("empty codeString")
+    end
+    if terminology_id.instance_of?(TerminologyID)
+      @terminology_id = terminology_id
+    else
+      @terminologyID = TerminologyID.new(terminology_id)
+    end
+    @code_string = code_string
+  end
+end
+
+class TerminologyID < ObjectID
+  attr_reader :name
+  def initialize(arg0, arg1=nil)
+    if arg1 == nil
+      super(arg0)
+    else
+      super(toValue(arg0, arg1))
+      @name = arg0
+      @version = arg1      
+    end
+  end
+  def setValue(value)
+    loadValue(value)
+    super.value = value
+  end
+  def version_id
+    @version
+  end
+  private
+  def loadValue(value)
+    if /\(.*\)$/ =~ value
+      @name, @version = value.split(\())
+      @version.chop!
+    else
+      @name = value
+      @version = nil
+    end
+  end
+
+  def toValue(name, version)
+    if name == ""
+      raise Exception.new("empty name")
+    end
+    name + (version == nil ? "" : "(" + version + ")")
+  end
+end
+
+# Ancestor class of identification class
+#
+class ObjectID
+  attr_accessor :value
+  def initiallize(value)
+    if value == nil
+      raise Exception.new("empty value")
+    end
+    @value = value
+  end
+end
Index: /ruby/tags/0.0.2/models/COPYING
===================================================================
--- /ruby/tags/0.0.2/models/COPYING	(revision 39)
+++ /ruby/tags/0.0.2/models/COPYING	(revision 39)
@@ -0,0 +1,3 @@
+openEHR Open Source Software License
+
+The openEHR Foundation uses the Mozilla Tri-license 1.1 on all software copyrighted to the Foundation. This licence essentially provides the user a choice of licence conditions under which to operate with any given piece of software, being: the Mozilla Public licence (MPL), and the Free Software Foundation GNU General Public Licence (GPL) and Lesser GNU Public Licence (LGPL). See the Mozilla relicensing FAQ for details of this license. This in no way constrains the way in which software created by other organisations is licenced. 
Index: /ruby/tags/0.0.2/models/Rakefile
===================================================================
--- /ruby/tags/0.0.2/models/Rakefile	(revision 39)
+++ /ruby/tags/0.0.2/models/Rakefile	(revision 39)
@@ -0,0 +1,74 @@
+require 'rubygems'
+Gem::manage_gems
+require 'rake'
+require 'rake/testtask'
+require 'rake/rdoctask'
+require 'rake/clean'
+require 'rake/gempackagetask'
+require 'yaml'
+
+task :default => [:test]
+
+desc "Whole Unit tests"
+task 'test' => ['test:am', 'test:rm', 'test:assumed_library_types']
+Rake::TestTask.new('test:am') do |t|
+  t.libs = ["lib"]
+  t.pattern = ['tests/test_archetype_model.rb']
+  t.warning = true
+  t.verbose = true
+end
+
+Rake::TestTask.new('test:rm') do |t|
+  t.libs = ["lib"]
+  t.pattern = ['tests/test_reference_model.rb']
+  t.warning = true
+  t.verbose = true
+end
+
+Rake::TestTask.new('test:assumed_library_types') do |t|
+  t.libs = ["lib"]
+  t.pattern = ['tests/test_assumed_library_types.rb']
+  t.warning = true
+  t.verbose = true
+end
+
+
+gem_spec = Gem::Specification.new do |s|
+  s.name = 'openehr_models'
+  s.author = 'Shinji KOBAYASHI, Akimichi TATSUKAWA'
+  s.version = '0.0.1'
+  s.summary = 'OpenEHR models'
+  s.email = 'openehr-jp@openehr.jp'
+  s.test_files = FileList['tests/test_*.rb', '*.adl']
+  candidates = Dir.glob("{am,rm,docs,tests}/**/*") + FileList['COPYING', 'Rakefile','am.rb','assumed_library_types.rb','rm.rb']
+  s.files = candidates.delete_if do |item|
+    item.include?(".svn") || item.include?("rdoc")
+  end
+#  s.files << FileList['COPYING', 'Rakefile','am.rb','assumed_library_types.rb','rm.rb']
+#  s.require_paths += [".","am","rm"]
+  s.require_path = "."
+  s.has_rdoc = true
+#  s.extra_rdoc_files = ["README"]
+end
+
+
+Rake::GemPackageTask.new(gem_spec) do |pkg|
+  pkg.need_zip = false
+  pkg.need_tar = false
+end
+
+#CLOBBER.include('rdoc')
+#CLEAN.include('lib/*.output', 'log/*.log')
+
+
+
+
+### Local Variables:
+### mode:ruby
+### mode:font-lock
+### comment-column:0
+### comment-start: "### "
+### comment-end:"" 
+### End:
+
+
Index: /ruby/tags/0.0.2/models/am.rb
===================================================================
--- /ruby/tags/0.0.2/models/am.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/am.rb	(revision 39)
@@ -0,0 +1,56 @@
+$:.unshift File.join(File.dirname(__FILE__))
+#! /usr/bin/env ruby
+# component: openEHR Ruby reference implementation
+# description: This file includes Archetype 
+#      class that contains Archetype values.
+#      Main concept is based on Java ref impl.
+#      We should make refactoring to suit for Ruby way.
+# keywords: archetype
+# author: Akimichi TATSUKAWA, Shinji KOBAYASHI
+# support: openEHR.jp
+# license: openEHR open source license
+#
+
+require 'rm/common/resource.rb'
+#require 'rm/support/terminology/openehr_code_set_identifier.rb'
+module OpenEHR
+  module AM
+    module Archetype
+      autoload :ARCHETYPE, "am/archetype/archetype.rb"
+      autoload :Constraint_Model, "am/archetype/constraint_model/archetype_constraint.rb"
+      autoload :Ontology, "am/archetype/ontology.rb"
+      
+      module Archetype_Description
+        autoload :ARCHETYPE_DESCRIPTION, "am/archetype/archetype_description/archetype_description.rb"
+      end
+
+      module Constraint_Model
+        autoload :ARCHETYPE_CONSTRAINT, "am/archetype/constraint_model/archetype_constraint.rb"
+        autoload :Primitive, "am/archetype/constraint_model/primitive.rb"
+      end #end of ConstraintModel
+
+      module Assertion
+        autoload :ASSERTION, "am/archetype/constraint_model/assertion.rb"
+      end
+
+    end # of Archetype
+
+    module OpenEHR_Profile
+      module Data_Types
+        module Basic
+          autoload :C_DV_STATE, "am/openehr_profile/data_types/basic.rb"
+        end
+
+        module Text
+          autoload :C_CODE_PHASE, "am/openehr_profile/data_types/text.rb"
+        end
+
+        module Quantity
+          autoload :C_DV_QUANTITY, "am/openehr_profile/data_types/quantity.rb"
+          autoload :C_DV_ORDINAL, "am/openehr_profile/data_types/quantity.rb"
+          autoload :C_QUANTITY_ITEM, "am/openehr_profile/data_types/quantity.rb"
+        end
+      end
+    end
+  end # of AM
+end # of OpenEHR
Index: /ruby/tags/0.0.2/models/am/archetype/archetype.rb
===================================================================
--- /ruby/tags/0.0.2/models/am/archetype/archetype.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/am/archetype/archetype.rb	(revision 39)
@@ -0,0 +1,85 @@
+require 'rm/support/terminology.rb'
+
+module OpenEHR
+  module AM
+    module Archetype
+      module ADL_Definition
+#        include OpenEHR::RM::Support::Terminology::OpenEHR_Code_Set_Identifier
+        include OpenEHR::RM::Support::Terminology
+        CURRENT_ADL_VERSION = "1.4"
+      end
+
+      class ARCHETYPE < OpenEHR::RM::Common::Resource::AUTHORED_RESOURCE
+        include ADL_Definition
+        attr_accessor :archetype_id, :concept_code, :is_controlled, :original_language, :parent_archtype_id, :uid
+
+        attr_reader :parent_id,:concept, :definition, :ontology
+        attr_accessor :adl_version,:description,:original_language
+        attr_accessor :revision_history, :translation
+
+        def initialize(args = {})
+          @adl_version = args[:adl_version] if args[:adl_version]
+          @archetype_id = args[:archetype_id] ? args[:archetype_id] : nil
+          @parent_id = args[:parent_id] if args[:parent_id]
+          @concept = args[:concept] if args[:concept]
+          @is_controled = args[:is_controled] if args[:is_controled]
+          @definition = args[:definition] if args[:definition]
+          @ontology = args[:ontology] if args[:ontology]
+ #         loadMaps(definition)
+          super
+        end
+
+        def self.create(args ={}, &block)
+          archetype = new(args)
+          if block_given?
+            yield archetype
+          end
+          return archetype
+        end
+
+        def concept_name(a_lang)
+        end
+
+        def constraint_references_valid?
+        end
+
+        def internal_references_valid?
+        end
+
+        def is_specialised?
+        end
+
+        def is_valid?
+        end
+
+        def logical_paths(a_lang)          
+        end
+
+        def node_ids_vaild?
+        end
+
+        def physical_paths
+        end
+
+        def previous_version
+        end
+
+        def short_concept_name
+        end
+
+        def specialisation_depth
+        end
+        
+        def version
+        end
+      end # end of ARCHETYPE
+      # original file:
+      # ref_imple_eiffel/components/adl_parser/src/interface/adl_definition.e
+
+      class VALIDITY_KIND
+      end
+    end
+
+
+  end # end of AM
+end # end of OpenEHR
Index: /ruby/tags/0.0.2/models/am/archetype/archetype_description/archetype_description.rb
===================================================================
--- /ruby/tags/0.0.2/models/am/archetype/archetype_description/archetype_description.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/am/archetype/archetype_description/archetype_description.rb	(revision 39)
@@ -0,0 +1,21 @@
+
+module OpenEHR
+  module AM
+    module Archetype
+      module Archetype_Description
+        class ARCHETYPE_DESCRIPTION
+          attr_accessor :archetype_package_uri, :lifecycle_state, :original_author, :other_contributors, :other_details, :details
+          def initialize(args ={ })
+            @details = args[:details] ? args[:details] : []
+          end
+        end
+
+        class ARCHETYPE_DESCRIPTION_ITEM
+          attr_accessor :archetype_package_uri, :lifecycle_state, :original_author, :other_contributors, :other_details
+        end
+      end
+    end
+  end
+end
+
+
Index: /ruby/tags/0.0.2/models/am/archetype/constraint_model/archetype_constraint.rb
===================================================================
--- /ruby/tags/0.0.2/models/am/archetype/constraint_model/archetype_constraint.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/am/archetype/constraint_model/archetype_constraint.rb	(revision 39)
@@ -0,0 +1,112 @@
+
+module OpenEHR
+  module AM
+    module Archetype
+      module Constraint_Model
+        class ARCHETYPE_CONSTRAINT
+          
+        end
+
+        class CARDINALITY
+          
+        end
+
+        class C_OBJECT < ARCHETYPE_CONSTRAINT
+          attr_accessor :node_id, :occurrences, :rm_type_name
+
+          def initialize(args = { })
+            @node_id = args[:node_id] if args[:node_id]
+            @occurrences = args[:occurrences] if args[:occurrences]
+            @rm_type_name = args[:rm_type_name] if args[:rm_type_name]
+          end
+        end
+
+        class C_ATTRIBUTE < ARCHETYPE_CONSTRAINT
+          attr_accessor :rm_attribute_name, :existence, :children
+
+          def initialize(args = { })
+            @rm_attribute_name = args[:rm_attribute_name] if args[:rm_attribute_name]
+            @existence = args[:existence] if args[:existence]
+            @children = args[:children] ? args[:children] : []
+            
+          end
+        end
+
+        class C_DEFINED_OBJECT < C_OBJECT
+          attr_accessor :assumed_value
+          
+          def initialize(args = { })
+            @assumed_value = args[:assumed_value] if args[:assumed_value]
+            super
+          end
+        end
+
+        class C_PRIMITIVE_OBJECT < C_DEFINED_OBJECT
+          attr_accessor :item
+          
+          def initialize(args = { })
+            @attributes = args[:item] if args[:item]
+            super
+          end
+        end
+
+        class C_COMPLEX_OBJECT < C_DEFINED_OBJECT
+          attr_accessor :attributes, :attributes_valid
+          
+          def initialize(args = { })
+            @attributes = args[:attributes] ? args[:attributes] : []
+            super
+          end
+
+          def self.create(args = { }, &block)
+            c_complex_object = new(args)
+            if block_given?
+              yield c_complex_object
+            end
+            return c_complex_object
+          end
+        end
+
+        class C_DOMAIN_TYPE < C_DEFINED_OBJECT
+          
+        end
+
+        class C_REFERENCE_OBJECT < C_OBJECT
+          
+        end
+
+        class ARCHETYPE_INTERNAL_REF < C_REFERENCE_OBJECT
+          
+        end
+
+        class ARCHETYPE_SLOT < C_REFERENCE_OBJECT
+          
+        end
+
+        class CONSTRAINT_REF < C_REFERENCE_OBJECT
+          
+        end
+
+        class C_SINGLE_ATTRIBUTE < C_ATTRIBUTE
+          attr_accessor :alternatives
+
+          def initialize(args = { })
+            @alternatives = args[:alternatives] ? args[:alternatives] : []
+            super
+          end
+        end
+
+        class C_MULTIPLE_ATTRIBUTE < C_ATTRIBUTE
+          attr_accessor :members, :cardinality
+          
+          def initialize(args = { })
+            @members = args[:members] ? args[:members] : []
+            @cardinality = args[:cardinality] if args[:cardinality]
+            super
+          end
+        end
+      end
+    end
+  end
+end
+  
Index: /ruby/tags/0.0.2/models/am/archetype/constraint_model/assertion.rb
===================================================================
--- /ruby/tags/0.0.2/models/am/archetype/constraint_model/assertion.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/am/archetype/constraint_model/assertion.rb	(revision 39)
@@ -0,0 +1,31 @@
+module OpenEHR
+  module AM
+    module Archetype
+      module Assertion
+        class ASSERTION
+        end
+
+        class ASSERTION_VARIABLE
+        end
+
+        class OPERATOR_KIND
+        end
+
+        class EXPR_ITEM
+        end
+
+        class EXPR_LEAF < EXPR_ITEM
+        end
+
+        class EXPR_OPERATOR < EXPR_ITEM
+        end
+
+        class EXPR_UNARY_OPERATOR < EXPR_OPERATOR
+        end
+
+        class EXPR_BINARY_OPERATOR < EXPR_OPERATOR
+        end
+      end
+    end
+  end
+end
Index: /ruby/tags/0.0.2/models/am/archetype/constraint_model/primitive.rb
===================================================================
--- /ruby/tags/0.0.2/models/am/archetype/constraint_model/primitive.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/am/archetype/constraint_model/primitive.rb	(revision 39)
@@ -0,0 +1,98 @@
+module OpenEHR
+  module AM
+    module Archetype
+      module Constraint_Model
+
+        module Primitive
+
+          class C_PRIMITIVE
+            def assumed_value
+              raise NotImplementedError, "assumed_value should be implemented"
+            end
+            def default_value
+              raise NotImplementedError, "assumed_value should be implemented"
+            end
+            def has_assumed_value?
+              assumed_value != nil
+            end
+            def valid_value?
+              raise NotImplementedError, "valid_value? should be implemented"
+            end
+          end
+
+          class C_BOOLEAN < C_PRIMITIVE
+            attr_reader :true_valid, :false_valid, :assumed_value
+
+            def initialize(args = { })
+              @true_valid = args[:true_valid] ? args[:true_valid] : false
+              @false_valid = args[:false_valid] ? args[:false_valid] : false
+              @assumed_value = args[:assumed_value] ? args[:assumed_value] : false
+              binary_consistency(@true_valid, @false_valid)
+            end
+
+            def true_valid=(true_valid)
+              binary_consistency(true_valid, @false_valid)
+              @true_valid = true_valid
+            end
+
+            def false_valid=(false_valid)
+              binary_consistency(@true_valid,false_valid)
+              @false_valid = false_valid 
+            end
+
+            def valid_value?
+              
+            end
+
+            def default_value(a_value = nil)
+              if a_value == nil
+                @true_valid
+              else
+                (a_value && @true_valid) || (!a_value && @false_valid) 
+              end              
+            end
+
+            private 
+
+            def binary_consistency(true_valid, false_valid)
+              if !true_valid && !false_valid
+                raise ArgumentError, "Either true_valid or false_valid must be true"
+              end              
+            end
+          end # of C_Boolean
+
+          class C_STRING < C_PRIMITIVE
+            
+          end
+
+          class C_INTEGER < C_PRIMITIVE
+            
+          end
+
+          class C_REAL < C_PRIMITIVE
+            
+          end
+
+          class C_TIME < C_PRIMITIVE
+            
+          end
+
+          class C_DATE < C_PRIMITIVE
+            
+          end
+
+          class C_DATE_TIME < C_PRIMITIVE
+            
+          end
+
+          class C_DURATION < C_PRIMITIVE
+            attr_accessor :years_allowed, :months_allowed, :weeks_allowed, :days_allowed, :hours_allowed, :minutes_allowed, :seconds_allowed, :fractional_seconds_allowed, :range, :assumed_value
+          end
+
+
+
+        end # of Primitive
+      end # of Constraint_Model
+    end # of Archetype
+  end # of AM
+end # of OpenEHR
Index: /ruby/tags/0.0.2/models/am/archetype/ontology.rb
===================================================================
--- /ruby/tags/0.0.2/models/am/archetype/ontology.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/am/archetype/ontology.rb	(revision 39)
@@ -0,0 +1,54 @@
+module OpenEHR
+  module AM
+    module Archetype
+      module Ontology
+        class ARCHETYPE_ONTOLOGY
+          attr_accessor :constraint_codes, :specialisation_depth
+          attr_accessor :term_attribute_names, :term_codes
+          attr_accessor :terminologies_available
+
+          def constraint_binding(a_terminology, a_code)
+          end
+
+          def constraint_definition(a_lang, a_code)
+          end
+
+          def has_language?(a_lang)
+          end
+
+          def has_terminology?(a_terminology)
+          end
+
+          def term_binding(a_terminology, a_code)
+          end
+
+          def term_definition(a_lang, a_code)
+          end
+        end
+
+        class ARCHETYPE_TERM
+          attr_accessor :code, :items
+
+          def initialize(args = { })
+                         
+            @code = if args[:code]
+                      args[:code]
+                    else
+                      raise ArgumentError, "Code is empty"
+                    end
+            @items = if args[:items]
+                       args[:items]
+                     else
+                       raise ArgumentError, "Items is empty"
+                     end
+          end
+
+          def keys
+            @items.keys
+          end
+        end
+      end # end of Ontology
+    end # end of Archetype
+  end # end of AM
+end # end of OpenEHR
+
Index: /ruby/tags/0.0.2/models/am/openehr_profile/data_types/basic.rb
===================================================================
--- /ruby/tags/0.0.2/models/am/openehr_profile/data_types/basic.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/am/openehr_profile/data_types/basic.rb	(revision 39)
@@ -0,0 +1,29 @@
+module OpenEHR
+  module AM
+    module OpenEHR_Profile
+      module Data_Types
+        module Basic
+          class C_DV_STATE
+          end
+
+          class STATE_MACHINE
+          end
+
+          class STATE
+          end
+
+          class TERMINAL_STATE < STATE
+          end
+
+          class NON_TERMINAL_STATE < STATE
+          end
+
+          class TRANSITION
+          end
+        end
+
+        
+      end # of Data_Types
+    end # of OpenEHR Profile
+  end # of RM
+end # of OpenEHR
Index: /ruby/tags/0.0.2/models/am/openehr_profile/data_types/quantity.rb
===================================================================
--- /ruby/tags/0.0.2/models/am/openehr_profile/data_types/quantity.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/am/openehr_profile/data_types/quantity.rb	(revision 39)
@@ -0,0 +1,19 @@
+module OpenEHR
+  module AM
+    module OpenEHR_Profile
+      module Data_Types
+
+        module Quantity
+          class C_DV_QUANTITY < OpenEHR::AM::Archetype::Constraint_Model::C_DOMAIN_TYPE
+          end
+          
+          class C_DV_ORDINAL < OpenEHR::AM::Archetype::Constraint_Model::C_DOMAIN_TYPE
+          end
+
+          class C_QUANTITY_ITEM
+          end
+        end
+      end # of Data_Types
+    end # of OpenEHR Profile
+  end # of RM
+end # of OpenEHR
Index: /ruby/tags/0.0.2/models/am/openehr_profile/data_types/text.rb
===================================================================
--- /ruby/tags/0.0.2/models/am/openehr_profile/data_types/text.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/am/openehr_profile/data_types/text.rb	(revision 39)
@@ -0,0 +1,12 @@
+module OpenEHR
+  module AM
+    module OpenEHR_Profile
+      module Data_Types
+        module Text
+          class C_CODE_PHASE < OpenEHR::AM::Archetype::Constraint_Model::C_DOMAIN_TYPE
+          end
+        end
+      end # of Data_Types
+    end # of OpenEHR Profile
+  end # of RM
+end # of OpenEHR
Index: /ruby/tags/0.0.2/models/assumed_library_types.rb
===================================================================
--- /ruby/tags/0.0.2/models/assumed_library_types.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/assumed_library_types.rb	(revision 39)
@@ -0,0 +1,63 @@
+module OpenEHR
+  module Assumed_Library_Types
+    class Interval
+      attr_reader :lower, :lower_included, :lower_unbounded
+      attr_reader :upper, :upper_included, :upper_unbounded
+      def initialize(lower, upper, 
+                     lower_included = nil, upper_included = nil)
+        check_lower_upper(lower, upper)
+        set_lower_included(lower_included)
+        set_upper_included(upper_included)
+      end
+
+      def set_lower(lower)
+        check_lower_upper(lower, @upper)
+      end
+
+      def set_upper(upper)
+        check_lower_upper(@lower, upper)
+      end
+
+      def set_lower_included(lower_included)
+        if (lower == nil) && (lower_included != nil)
+          raise ArgumentError, "lower is not set"
+        end
+        @lower_included = lower_included
+      end
+
+      def set_upper_included(upper_included)
+        @upper_included = upper_included
+        if (upper == nil) && (upper_included != nil)
+          raise ArgumentError, "upper is not set"
+        end
+      end
+
+      def has?(value)
+        if ((@lower < value) && (value < @upper) ||
+            (@lower_included == true) && (@lower == value) ||
+            (@upper_included == true) && (@upper == value))
+          true
+        else
+          false
+        end
+      end
+
+      private
+
+      def check_lower_upper(lower, upper)
+        if (lower == nil) && (upper == nil)
+          raise ArgumentError, "Either lower or upper must be assigned"
+        end
+        if (lower == nil) && (upper != nil)
+          @lower_unbounded = true          
+        elsif (lower != nil) && (upper == nil)
+          @upper_unbounded = true
+        elsif lower > upper
+          raise ArgumentError, "Upper must be larger than lower."
+        end
+        @lower = lower
+        @upper = upper
+      end
+    end
+  end
+end
Index: /ruby/tags/0.0.2/models/rm.rb
===================================================================
--- /ruby/tags/0.0.2/models/rm.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/rm.rb	(revision 39)
@@ -0,0 +1,39 @@
+$:.unshift File.join(File.dirname(__FILE__))
+
+# component: openEHR Ruby reference implementation
+# description: This file contains rm.packages.domain classes
+# keywords: archetype
+# author: Shinji KOBAYASHI, Akimichi TATSUKAWA
+# support: openEHR.jp
+# license: openEHR open source license
+#
+
+# OpenEHR::RM
+module OpenEHR
+  module RM
+    autoload :Demographic, "rm/demographic.rb"
+
+    module Common
+      autoload :Resource, "rm/common/resource.rb"
+    end
+
+    module Support
+      autoload :Definition, "rm/support/definition.rb"
+
+      module Identification
+        autoload :OBJECT_ID, "rm/support/identification.rb"
+      end
+
+      module Terminology
+        autoload :Terminology, "rm/support/terminology.rb"
+      end
+    end
+
+    module Data_Types
+      autoload :Basic, "rm/data_types/basic.rb"
+      autoload :Text, "rm/data_types/text.rb"
+      autoload :URI, "rm/data_types/uri.rb"
+      autoload :Quantity, "rm/data_types/quantity.rb"
+    end
+  end
+end
Index: /ruby/tags/0.0.2/models/rm/common/archetyped.rb
===================================================================
--- /ruby/tags/0.0.2/models/rm/common/archetyped.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/rm/common/archetyped.rb	(revision 39)
@@ -0,0 +1,81 @@
+module OpenEHR
+  module RM
+    module Common
+      module Archetyped
+        module Locater_Constants
+          CURRENT_TRANSACTION_ID = "current"
+          FRAGMENT_SEPARATOR = "#"
+          CONTENT_PATH_SEPARATOR = "|"
+          ORGANIZER_PATH_SEPARATOR = "/"
+          MULTIPART_ID_DELIMITER = "::"
+        end
+        class Pathable
+          attr_reader :parent
+          def initialize(parent)
+            @parent = parent
+          end
+          def item_at_path(path)
+            raise NotImplementError, "item_at_path must be implemented"
+          end
+          def items_at_path(path)
+            raise NotImplementError, "items_at_path must be implemented"
+          end
+          def path_exists?(path)
+            raise NotImplementError, "path_exists? must be implemented"
+          end
+          def path_of_item(item)
+            raise NotImplementError, "path_of_item must be implemented"
+          end
+          def path_unique(path)
+            raise NotImplementError, "path_unique must be implemented"
+          end
+        end
+        class Locatable < Pathable
+          include Locater_Constants
+          attr_accessor :uid, :archetype_node_id, :archetype_details
+          attr_accessor :feeder_audit, :links, :parent
+          def initialize(uid, archetype_node_id, name, archetype_details,
+                         feeder_audit, links, parent)
+            super(parent)
+            if archetype_node_id.nil?
+              raise ArgumentError, "null archetype_node_id"
+            end
+            if name.nil?
+              raise ArgumentError, "name is empty"
+            end
+            if links.nil?
+              raise ArgumentError, "links is empty"
+            end
+            @uid = uid
+            @archetype_node_id = archetype_node_id
+            @archetype_details = archetype_details
+            @feeder_audit = feeder_audit
+            @links = links
+            @parent = parent
+          end
+          def item_at_path(path)
+            if !@path.nil?
+              if @path == ""
+                raise ArgumentError, "path is not valid"
+              end
+            end
+          end
+          def items_at_path(path)
+            raise NotImplementError, "items_at_path must be implemented"
+          end
+          def path_exists?
+            raise NotImplementError, "path_exists? must be implemented"
+          end
+          def path_unique
+            raise NotImplementError, "path_unique must be implemented"
+          end
+          def concept
+          end
+          def is_archetype_root?
+            !archetype_details.nil?
+          end
+        end
+      end # end of Archetyped
+    end # end of Common
+  end # end of RM
+end # end of OpenEHR
Index: /ruby/tags/0.0.2/models/rm/common/generic.rb
===================================================================
--- /ruby/tags/0.0.2/models/rm/common/generic.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/rm/common/generic.rb	(revision 39)
@@ -0,0 +1,10 @@
+module OpenEHR
+  module RM
+    module Common
+      module Generic
+        class Revision_History
+        end # of Revision_History
+      end # of Generic
+    end # of Common
+  end # of RM
+end # of OpenEHR
Index: /ruby/tags/0.0.2/models/rm/common/resource.rb
===================================================================
--- /ruby/tags/0.0.2/models/rm/common/resource.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/rm/common/resource.rb	(revision 39)
@@ -0,0 +1,55 @@
+require 'set'
+module OpenEHR
+  module RM
+    module Common
+      module Resource
+        class AUTHORED_RESOURCE
+          attr_reader :is_controled,:revision_history, :translations
+          attr_accessor :description, :original_language
+
+          def initialize(args = { })
+            @original_language = args[:original_language] if args[:original_language]
+            @translations = args[:translations] if args[:translations]
+            @revision_history = args[:revision_history] ? args[:revision_history] : nil
+
+            unless @revision_history
+              @is_controled = false
+            else
+              @is_controled = true
+            end
+
+            @original_language = args[:original_language] if args[:original_language]
+            @translations = args[:translations] if args[:translations]
+            @description = args[:description] if args[:description]
+          end
+
+          def current_version
+            @revision_history.most_recent_revision
+          end
+
+          def language_available
+            languages = Set.new
+            if @translations != nil
+              languages << @translations.keys
+            end
+            languages << @original_language.code_string
+          end
+        end
+
+        class TRANSLATION_DETAILS
+          attr_accessor :language, :author, :accreditation
+          attr_accessor :other_details, :terminology_service
+
+          def initialize(language, author, accreditation, other_details,
+                         terminology_service)
+            @language = language
+            @author = author
+            @accreditation = accreditation
+            @other_details = other_details
+            @terminology_service = terminology_service
+          end
+        end
+      end
+    end # end of module Common
+  end # end of module RM
+end # end of module OpenEHR
Index: /ruby/tags/0.0.2/models/rm/composition/content/entry.rb
===================================================================
--- /ruby/tags/0.0.2/models/rm/composition/content/entry.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/rm/composition/content/entry.rb	(revision 39)
@@ -0,0 +1,23 @@
+module OpenEHR
+  module RM
+    module Content
+      module Entry
+        class Entry < Content_Item
+        end
+        class Care_Entry < Entry
+        end
+        class Action < Care_Entry
+          attr_accessor :description, :time
+          attr_accessor :ism_transition, :instruction_details
+          def initialize(description, time, ism_transition, instruction_details)
+            raise Exception.new("invalid argument") if description == nil || time == nil || ism_transition == nil
+            @description = description
+            @time = time
+            @ism_transition = ism_transition
+            @instruction_details = instruction_details if instruction_details != nil
+          end
+        end # end of Action
+      end # end of Entry
+    end # end of Content
+  end # end of RM
+end # end of OpenEHR
Index: /ruby/tags/0.0.2/models/rm/data_structures/data_structure.rb
===================================================================
--- /ruby/tags/0.0.2/models/rm/data_structures/data_structure.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/rm/data_structures/data_structure.rb	(revision 39)
@@ -0,0 +1,9 @@
+# rm::data_structures
+# class DATA_STRUCTURE
+module DataStructures
+  class DataStructure
+    def as_hierarchy
+      raise NotImplementError, "as_hirarchy must be implemented"
+    end
+  end
+end
Index: /ruby/tags/0.0.2/models/rm/data_types/basic.rb
===================================================================
--- /ruby/tags/0.0.2/models/rm/data_types/basic.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/rm/data_types/basic.rb	(revision 39)
@@ -0,0 +1,66 @@
+module OpenEHR
+  module RM
+    module Data_Types
+      module Basic
+        module Canonical_Fragment
+        end
+
+        class Data_Value
+          include OpenEHR::RM::Support::Definition::Basic_Definition
+        end
+
+        class DV_Boolean < Data_Value
+          def initialize(value)
+            check_not_nil(value)
+            if value == "TRUE" or value == true
+              @value = true
+            else
+              @value = false
+            end
+          end
+          def value=(value)
+            check_not_nil(value)
+            @value = value
+          end
+          def value?
+            @value == true
+          end
+          private
+          def check_not_nil(value)
+            if value == nil
+              raise ArgumentError, "value must not be empty"
+            end
+          end
+        end  # end of DV_Boolean
+
+        class DV_State < Data_Value
+          attr_accessor :value
+          attr_writer :terminal
+          def initialize(value, terminal)
+            if value == nil or terminal == nil
+              raise ArgumentError, "argument mandatory"
+            end
+            @value = value
+            @terminal = terminal
+          end
+          def is_terminal?
+            @terminal == true
+          end
+        end # end of DV_State
+
+        class DV_Identifier
+          attr_accessor :issuer, :assigner, :id, :type
+          def initialize(assigner, id, issuer, type)
+            if assigner == nil or id == nil or issuer == nil or type == nil
+              raise ArgumentError, "invalid argument"
+            end
+            @issuer = issuer
+            @assigner = assigner
+            @id = id
+            @type = type
+          end
+        end #end of DV_Identifier
+      end # end of Basic
+    end # end of Data_types
+  end # end of RM
+end # end of OpenEHR
Index: /ruby/tags/0.0.2/models/rm/data_types/encapslated.rb
===================================================================
--- /ruby/tags/0.0.2/models/rm/data_types/encapslated.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/rm/data_types/encapslated.rb	(revision 39)
@@ -0,0 +1,42 @@
+module OpenEHR
+  module RM
+    module Data_Types
+      module Encapsulated
+        class DV_Encapsulated  < OpenEHR::RM::Data_Types::Basic::Data_Value
+          attr_accessor :charset, :language
+          def size
+            raise NotImplementedError, "size method not implemented"
+          end
+          private
+          def size_positive
+            raise ArgumentError, "size must be positive" if size < 0
+          end
+        end
+        class DV_Multimedia < DV_Encapsulated
+          
+        end
+        class DV_Parsable < DV_Encapsulated
+          attr_reader :value, :formalism
+          def initialize(value, formalism, charset = nil, language = nil)
+            @value = value
+            size_positive
+            formalism_validity(formalism)
+            @formalism = formalism
+            @charset, @language = charset, language
+          end
+          def size
+            value.size
+          end
+          private
+          def formalism_validity(formalism)
+            if formalism.nil
+              raise ArgumentError, "formalism must not be nil"
+            elsif formalism.empty?
+              raise ArgumentError, "formalism must nto be empty"
+            end
+          end
+        end
+      end # of Encapsulated
+    end # of Data_Types
+  end # of RM
+end # of OpenEHR
Index: /ruby/tags/0.0.2/models/rm/data_types/quantity.rb
===================================================================
--- /ruby/tags/0.0.2/models/rm/data_types/quantity.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/rm/data_types/quantity.rb	(revision 39)
@@ -0,0 +1,39 @@
+module OpenEHR
+  module RM
+    module Data_Types
+      module Quantity
+        module DV_Ordered < OpenEHR::RM::Data_Types::Basic::Data_Value
+          include Comparable
+          attr_accessor :other_refference_ranges, :normal_range
+          attr_accessor :normal_status
+          def initialize(normal_range, other_reference_ranges,
+                         normal_status = nil)
+            other_reference_ranges_validity(other_reference_ranges)
+            @normal_range = normal_range
+            @other_reference_ranges = other_reference_ranges
+            @normal_status = normal_status
+          end          
+          def is_normal?
+            normal_range != nil or normal_status != nil
+          end
+          def is_simple?
+            normal_status == nil and other_refference_ranges == nil
+          end
+          private
+          def other_reference_ranges_validity(other_reference_ranges)
+            if other_reference_ranges != null or other_reference_ranges.is_empty?
+              raise ArgumentError, "Other reference ranges validity error"
+            end
+          end
+        end
+        module DV_Quantified
+          include DV_Ordered
+          def magnitude
+          end
+          def valid_magnitude_status(s)
+          end
+        end
+      end # of Quantity
+    end # of Data_Types
+  end # of RM
+end # of OpenEHR
Index: /ruby/tags/0.0.2/models/rm/data_types/quantity/data_time.rb
===================================================================
--- /ruby/tags/0.0.2/models/rm/data_types/quantity/data_time.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/rm/data_types/quantity/data_time.rb	(revision 39)
@@ -0,0 +1,9 @@
+module OpenEHR
+  module RM
+    module Data_Types
+      module Quantity
+        module Date_
+      end # of Quantity
+    end # of Data_Types
+  end # of RM
+end # of OpenEHR
Index: /ruby/tags/0.0.2/models/rm/data_types/text.rb
===================================================================
--- /ruby/tags/0.0.2/models/rm/data_types/text.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/rm/data_types/text.rb	(revision 39)
@@ -0,0 +1,169 @@
+module OpenEHR
+  module RM
+    module Data_Types
+      module Text
+        class Term_Mapping
+          attr_reader :match, :purpose, :target
+          def initialize(match, purpose, target)
+            match_valid(match)
+            purpose_valid(purpose)
+            target_valid(target)
+            @match, @purpose, @target = match, purpose, target
+          end
+          def broader?
+            match == '>'
+          end
+          def equivalent?
+            match == '='
+          end
+          def narrower?
+            match == '<'
+          end
+          def unknown?
+            match == '?'
+          end
+          def Term_Mapping.is_valid_mach_code?(c)
+            c == '>' or c == '=' or c == '<' or c == '?'
+          end
+          private
+          def match_valid(mach)
+            raise ArgumentError, "match is not valid" if self.is_valid_mach_code? match
+          end
+          def purpose_valid(purpose)
+            if !purpose.nil? and !purpose.instance_of? DV_Coded_Text
+              raise ArgumentError, "purpose is not valid"
+            end
+            # should be settled after terminology service implemented
+          end
+          def target_valid(target)
+            raise ArgumentError, "target must not be nil" if target.nil?
+          end
+        end
+
+        class Code_Phrase
+          attr_reader :terminology_id, :code_string
+          def initialize(terminology_id, code_string)
+            if terminlogyID == nil
+              raise Exception.new("nil terminology")
+            end
+            if code_string == nil
+              raise Exception.new("empty codeString")
+            end
+            if terminology_id.instance_of?(Terminology_ID)
+              @terminology_id = terminology_id
+            else
+              @terminologyID = Terminology_ID.new(terminology_id)
+            end
+            @code_string = code_string
+          end
+        end # of Code_Phrase
+
+        class DV_Text < OpenEHR::RM::Data_Types::Basic::Data_Value
+          attr_reader :value, :formatting, :hyperlink, :mappings
+          attr_reader :language, :encoding
+          def initialize(value, formatting = nil, hyperlink = nil,
+                         mappings = nil, language = nil, encoding = nil)
+            value_valid(value)
+            DV_Text.formatting_valid(formatting)
+            DV_Text.encoding_valid(encoding)
+            DV_Text.mapping_valid(mappings)
+            DV_Text.language_valid(language)
+            @value, @formatting, @encoding = value, formatting, encoding
+            @mappings, @language = mappings, language
+          end
+          def value=(value)
+            value_valid(value)
+            @value = value
+          end
+          def formatting=(formatting)
+            DV_Text.formatting_valid(formatting)
+            @formatting = formatting
+          end
+          def encoding=(encoding)
+            DV_Text.encoding_valid(encoding)
+            @encoding = encoding
+          end
+          def mappings=(mappings)
+            DV_Text.mapping_valid(mappings)
+            @mappings = mappings
+          end
+          def language=(language)
+            DV_Text.language_valid(language)
+            @language = language
+          end
+          private
+          def value_valid(value)
+            if value.nil? or value.empty? or value.include? CR or value.include? LF
+              raise ArgumentError, "value is not valid"
+              # CR and LF are defined in Basic_Definition inherited Data_Value.
+            end
+          end
+
+          class << self
+
+            def formatting_valid(formatting)
+              raise ArgumentError, "formatting is not valid" if formatting != nil and formatting.empty?
+            end
+
+            def encoding_valid(encoding)
+              raise ArgumentError, "encoding is not valid" if encoding != nil and encoding.empty?
+            end
+
+            def mapping_valid(mapping)
+              if !mapping.nil? and !mapping.instance_of? Set
+                raise ArgumentError, "mapping(s) is(are) not valid"
+              elsif !mapping.nil? and mapping.instance_of? Set
+                raise ArgumentError, "mapping(s) is(are) not valid" if mapping.empty? 
+              end
+            end
+
+            def language_valid(language)
+              raise ArgumentError, "langage is not valid" if language != nil and language.empty?
+            end
+          end
+
+        end
+
+        class DV_Coded_Text < DV_Text
+          attr_reader :defining_code
+          def initialize(value, defining_code, formatting = nil, 
+                         hyperlink = nil, mappings = nil, language = nil, 
+                         encoding = nil)
+            super(value, formatting, hyperlink, mappings, language, encoding)
+            definition_exists(defining_code)
+            @defining_code = defining_code
+          end
+          def defining_code=(defining_code)
+            definition_exists(defining_code)
+            @defining_code = defining_code
+          end
+          private
+          def definition_exists(defining_code)
+            raise ArgumentError, "Defiinition must be exist" if defining_code.nil?
+          end
+        end
+
+        class DV_Paragraph < OpenEHR::RM::Data_Types::Basic::Data_Value
+          attr_reader :items
+          def initialize(items)
+            items_exists(items)
+            @items = items
+          end
+          def items=(items)
+            items_exists(items)
+            @items = items
+          end
+          private
+          def items_exists(items)
+            if !items.nil? and !items.instance_of? Set
+              raise ArgumentError, "Items are not valid"
+            elsif !items.nil? and items.instance_of? Set
+              raise ArgumentError, "Items must be exist" if items.empty?
+            end
+          end
+        end
+
+      end # of Text
+    end # of Data_Type
+  end # of RM
+end # of OpenEHR
Index: /ruby/tags/0.0.2/models/rm/data_types/time_specification.rb
===================================================================
--- /ruby/tags/0.0.2/models/rm/data_types/time_specification.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/rm/data_types/time_specification.rb	(revision 39)
@@ -0,0 +1,60 @@
+module OpenEHR
+  module RM
+    module Data_Types
+      module Time_Specification
+        class DV_Time_Specification < OpenEHR::RM::Data_Types::Basic::Data_Value
+          def initialize(value)
+            @value = value
+          end
+          def calender_alignment
+            raise NotImlementedError, "calender_alignment must be implemented"
+          end
+          def event_alignment
+            raise NotImlementedError, "event_alignment must be implemented"
+          end
+          def institution_specified
+            raise NotImlementedError, "institution_specified must be implemented"
+          end
+        end
+        
+        class DV_General_Time_Specification < DV_Time_Specification
+          attr_reader :value
+          def initialize(value)
+            value_valid(value)
+            super(value)
+          end
+          def value=(value)
+            value_valid(value)
+            @value = value
+          end
+          private
+          def value_valid(value)
+            raise ArgumentError, "value is not valied" if !value.formalism.is_equal?('HL7:GTS')
+          end
+        end
+
+        class DV_Periodic_Time_Specification < DV_Time_Specification
+          attr_reader :value
+          def initialize(value)
+            value_valid(value)
+            super(value)
+          end
+          def calender_alignment
+          end
+          def event_alignment
+          end
+          def institution_specified?
+          end
+          def period
+          end
+          private
+          def value_valid(value)
+            if !value.formalism.is_equal('HL7:PIVL') && value.formalism.is_equal('HL7:EIVL')
+              raise ArgumentError, "value is not valid"
+            end
+          end
+        end
+      end
+    end # of Data_Type
+  end # of RM
+end # of OpenEHR
Index: /ruby/tags/0.0.2/models/rm/data_types/uri.rb
===================================================================
--- /ruby/tags/0.0.2/models/rm/data_types/uri.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/rm/data_types/uri.rb	(revision 39)
@@ -0,0 +1,72 @@
+require 'uri'
+#require 'uri/generic'
+module URI
+  class EHR < ::URI::Generic
+    COMPONENT = [
+      :scheme, :path, :fragment, :query
+    ].freeze
+    def self.build(args)
+      tmp = Util::make_components_hash(self, args)
+      super(tmp)
+    end
+    def initialize(*arg)
+      super(*arg)
+    end
+    def self.use_registry
+      true
+    end
+  end
+  @@schemes['EHR'] = EHR
+end
+module OpenEHR
+  module RM
+    module Data_Types
+      module URI
+        class DV_URI < OpenEHR::RM::Data_Types::Basic::Data_Value
+          def initialize(value)
+            raise ArgumentError, "value is empty" if value.nil?
+            parse(value)
+          end
+          def fragment_id
+            @value.fragment
+          end
+          def path
+            @value.path
+          end
+          def query
+            @value.query
+          end
+          def scheme
+            @value.scheme
+          end
+          def value=(value)
+            parse(value)
+          end
+          def value
+            @value.to_s
+          end
+          private
+          def parse(value)
+            @value = ::URI.parse(value)
+          end
+        end
+        class DV_EHR_URI < DV_URI
+          def initialize(value)
+            check_value(value)
+            super(value)
+          end
+          def value=(value)
+            check_value(value)
+            parse(value)
+          end
+          private
+          def check_value(value)
+            if !(value =~ /^ehr/i)
+              raise ArgumentError, "scheme must be ehr"
+            end
+          end
+        end # of DV_EHR_URI
+      end # of URI
+    end # of Data_Type
+  end # of RM
+end # of OpenEHR
Index: /ruby/tags/0.0.2/models/rm/demographic.rb
===================================================================
--- /ruby/tags/0.0.2/models/rm/demographic.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/rm/demographic.rb	(revision 39)
@@ -0,0 +1,61 @@
+module OpenEHR
+  module RM
+    module Demogrphic
+      class Party < OpenEHR::RM::Common::Archetyped::Locatable
+        attr_reader :details, :reverse_relationships, :uid
+        attr_reader :idetities, :contacts, :relationships
+        def initialize(uid, archetype_node_id, name, archetype_details,
+                       feeder_audit, links, identities, contacts,
+                       relationships, reverse_relationships, details)
+          super(uid, archetype_node_id, name, archetype_details,
+                feeder_audit, links, nil)
+          uid_valid(uid)
+          @uid = uid
+          identities_vaild(identities)
+          @identities = identities
+          contacts_valid(contacts)
+          @contacts = contacts
+          relationships_valid(relationships)
+        end
+        def type
+          
+        end
+        def uid=(uid)
+          uid_valid(uid)
+          @uid = uid
+        end
+        def identities=(identities)
+          identities_vaild(identities)
+          @identities = identities
+        def contacts=(contacts)
+          contacts_valid(contacts)
+          @contacts = contacts
+        end
+        def parent=(parent)
+          @parent = nil
+        end
+        private
+        def uid_valid(uid)
+          raise ArgumentError, "uid is not valid" if uid.nil?
+        end
+        def identities_vaild(identities)
+          if identities.nil?
+            raise ArgumentError, "identities must not be nil"
+          elsif identities.empty?
+            raise ArgumentError, "identities must not be empty"
+          end
+        end
+        def contacts_valid(contacts)
+          if contacs.nil?
+            raise ArgumentError, "contacts must not be nil"
+          elsif contacts.empty?
+            raise ArgumentError, "contacts must not be empty"
+          end          
+        end
+      end
+      class Actor < Party
+        
+      end
+    end # of Demographic
+  end # of RM
+end # of OpenEHR
Index: /ruby/tags/0.0.2/models/rm/support/assumed_types.rb
===================================================================
--- /ruby/tags/0.0.2/models/rm/support/assumed_types.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/rm/support/assumed_types.rb	(revision 39)
@@ -0,0 +1,21 @@
+module OpenEHR
+  module RM
+    module Support
+      module Assumed_Types
+        class Interval
+          attr_accessor :lower, :upper
+#          attr_accessor :lower_included, :lower_unbounded
+#          attr_accessor :upper_included, :upper_unbounded
+          def initialize(lower, upper,
+                         lower_included = nil, upper_included = nil)
+            if ((lower !=nil) && (upper !=nil)) && lower>upper
+              raise ArgumentError, "upper < lower"
+            end
+            @lower = lower
+            @upper = upper
+          end
+        end
+      end
+    end
+  end
+end
Index: /ruby/tags/0.0.2/models/rm/support/definition.rb
===================================================================
--- /ruby/tags/0.0.2/models/rm/support/definition.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/rm/support/definition.rb	(revision 39)
@@ -0,0 +1,15 @@
+module OpenEHR
+  module RM
+    module Support
+      module Definition
+        module Basic_Definition
+          CR = "\015"
+          LF = "\012"
+        end
+        class OpenEHR_Definitions
+          include Basic_Definition          
+        end
+      end
+    end
+  end
+end
Index: /ruby/tags/0.0.2/models/rm/support/identification.rb
===================================================================
--- /ruby/tags/0.0.2/models/rm/support/identification.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/rm/support/identification.rb	(revision 39)
@@ -0,0 +1,63 @@
+module OpenEHR
+  module RM
+    module Support
+      module Identification
+
+        class OBJECT_ID
+          attr_accessor :value
+
+          def initiallize(value)
+            raise "empty value" unless value
+            @value = value
+          end
+        end # of ObjectID
+
+        class ARCHETYPE_ID < OBJECT_ID
+        end
+
+        class TERMINOLOGY_ID < OBJECT_ID
+          attr_reader :name
+
+          def initialize(name , version_id)
+            @name , @version_id = name , version_id
+#             if arg1 == nil
+#               super(arg0)
+#             else
+#               super(toValue(arg0, arg1))
+#               @name = arg0
+#               @version = arg1      
+#             end
+          end
+
+          def setValue(value)
+            loadValue(value)
+            super.value = value
+          end
+
+          def version_id
+            @version
+          end
+
+          private
+
+          def loadValue(value)
+            if /\(.*\)$/ =~ value
+#              @name, @version = value.split(\())
+              @version.chop!
+            else
+              @name = value
+              @version = nil
+            end
+          end
+
+          def toValue(name, version)
+            if name == ""
+              raise Exception.new("empty name")
+            end
+            name + (version == nil ? "" : "(" + version + ")")
+          end
+        end # of TerminologyID
+      end # of Definition
+    end # of Support
+  end # of RM
+end # of OpenEHR
Index: /ruby/tags/0.0.2/models/rm/support/terminology.rb
===================================================================
--- /ruby/tags/0.0.2/models/rm/support/terminology.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/rm/support/terminology.rb	(revision 39)
@@ -0,0 +1,106 @@
+
+module OpenEHR
+  module RM
+    module Support
+      module Terminology
+        class Code_Set_Access
+          def all_codes
+            raise NotImplementedError, "all_codes must be implemented"
+          end
+          def has_code(a_code)
+            raise NotImplementedError, "has_code must be implemented"
+          end
+          def has_lang(a_lang)
+            raise NotImplementedError, "has_lang must be implemented"
+          end
+          def id
+            raise NotImplementedError, "id must be returned"
+          end
+        end
+        module OpenEHR_Code_Set_Identifier
+          CODE_SET_ID_CHARACER_SETS = "character sets".freeze
+          CODE_SET_ID_COMPRESSION_ALGORITHMS = "compression algorithms".freeze
+          CODE_SET_ID_COUNTRIES = "countries".freeze
+          CODE_SET_ID_INTEGRITY_CHECK_ALGORITHMS = "integrity check algorithms".freeze
+          CODE_SET_ID_LANGUAGES = "languages".freeze
+          CODE_SET_ID_MEDIA_TYPES = "media types".freeze
+          def valid_code_set_id(an_id)
+            !@an_id.nil?
+          end
+        end
+        module OpenEHR_Terminology_Group_Identifiers
+          GROUP_ID_ATTESTATION_REASON = "attestation reason".freeze
+          GROUP_ID_AUDIT_CHANGE_TYPE = "audit change type".freeze
+          GROUP_ID_COMPOSITION_CATEGORY = "composition category".freeze
+          GROUP_ID_MATH_FUNCTION = "event math function".freeze
+          GROUP_ID_INSTRUCTION_STATES = "instruction states".freeze
+          GROUP_ID_INSTRUCTION_TRANSITIONS = "instruction transitions".freeze
+          GROUP_ID_NULL_FLAVOURS = "null flavours".freeze
+          GROUP_ID_PARTICIPATION_FUNCTION = "participation function".freeze
+          GROUP_ID_PARTICIPATION_MODE = "participation mode".freeze
+          GROUP_ID_PROPERTY = "property".freeze
+          GROUP_ID_SETTING = "setting".freeze.freeze
+          GROUP_ID_SUBJECT_RELATIONSHIP = "subject relationship".freeze
+          GROUP_ID_TERM_MAPPING_PURPOSE = "term mapping purpose".freeze
+          GROUP_ID_VERSION_LIFECYCLE_STATE = "version lifecycle state".freeze
+          TERMINOLOGY_ID = "openehr".freeze
+        end
+        class Terminology_Access
+          def all_codes
+            raise NotImplementedError, "all_codes is not implemented"
+          end
+          def codes_for_group_id(group_id)
+            raise NotImplementedError, "codes_for_group_id is not implemented"
+          end
+          def codes_for_group_name(name, lang)
+            raise NotImplementedError, "codes_for_group_name is not implemented"
+          end
+          def has_code_for_group_id(group_id, a_code)
+            raise NotImplementedError, "has_code_for_group_id is not implemented"
+          end
+          def id
+            raise NotImplementedError, "id is not implemented"
+          end
+          def rubric_for_code(code, lang)
+            raise NotImplementedError, "rubic_for_code is not implemented"
+          end
+          private
+          def id_exists
+            if id.nil?
+              raise ArgumentError, "id must not be nil"
+            elsif id.empty?
+              raise ArgumentError, "id must not be empty"
+            end
+          end
+        end
+        class Terminology_Service
+          include OpenEHR_Code_Set_Identifier, OpenEHR_Terminology_Group_Identifiers
+          def code_set(name)
+            raise NotImplementedError, "code_set is not implemented"
+          end
+          def code_set_for_id(id)
+            raise NotImplementedError, "code_set_for_id is not implemented"
+          end
+          def code_set_identifiers
+            raise NotImplementedError, "code_set_for_identifiers is not implemented"
+          end
+          def has_code_set(name)
+            raise NotImplementedError, "has_code_set is not implemented"
+          end
+          def has_terminology?(name)
+            raise NotImplementedError, "has_terminology is not implemented"
+          end
+          def openehr_code_sets
+            raise NotImplementedError, "openehr_code_set is not implemented"
+          end
+          def terminology(name)
+            raise NotImplementedError, "terminology is not implemented"
+          end
+          def terminology_identifiers
+            raise NotImplementedError, "terminology_identiferes is not implemented"
+          end
+        end 
+      end # of Terminology
+    end # of Support
+  end # of RM
+end # of OpenEHR
Index: /ruby/tags/0.0.2/models/tests/test_archetype_model.rb
===================================================================
--- /ruby/tags/0.0.2/models/tests/test_archetype_model.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/tests/test_archetype_model.rb	(revision 39)
@@ -0,0 +1,193 @@
+require 'test/unit'
+require 'am.rb'
+require 'rm.rb'
+
+class ArchetypeModelTest < Test::Unit::TestCase
+  def setup
+    @archetype = OpenEHR::AM::Archetype::ARCHETYPE.new
+    @validity_kind = OpenEHR::AM::Archetype::VALIDITY_KIND.new
+
+    @archetype_description = OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION.new
+    @archetype_description_item = OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION_ITEM.new
+  end
+  
+  def test_init
+    assert_instance_of OpenEHR::AM::Archetype::ARCHETYPE, @archetype
+    assert_instance_of OpenEHR::AM::Archetype::VALIDITY_KIND, @validity_kind
+    assert_instance_of OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION, @archetype_description
+    assert_instance_of OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION_ITEM, @archetype_description_item
+    assert_instance_of OpenEHR::AM::Archetype::ARCHETYPE, @archetype
+  end
+
+  def test_create
+    archetype_instance = OpenEHR::AM::Archetype::ARCHETYPE.create() do |archetype|
+      archetype.adl_version = '1.4'
+    end
+
+    assert_instance_of OpenEHR::AM::Archetype::ARCHETYPE, archetype_instance
+  end
+end
+
+class ArchetypeModelConstraintTest < Test::Unit::TestCase
+  def setup
+    @archetype_constraint = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_CONSTRAINT.new
+    @cardinality = OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY.new    
+    
+    @archetype_constraint = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_CONSTRAINT.new
+    @c_object = OpenEHR::AM::Archetype::Constraint_Model::C_OBJECT.new
+    @c_defined_object = OpenEHR::AM::Archetype::Constraint_Model::C_DEFINED_OBJECT.new
+    @c_attribute = OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE.new
+    @c_single_attribute = OpenEHR::AM::Archetype::Constraint_Model::C_SINGLE_ATTRIBUTE.new
+    @c_multiple_attribute = OpenEHR::AM::Archetype::Constraint_Model::C_MULTIPLE_ATTRIBUTE.new(:rm_attribute_name => 'attribute_name', :cardinality => @cardinality)
+    @c_primitive_object = OpenEHR::AM::Archetype::Constraint_Model::C_PRIMITIVE_OBJECT.new
+    @c_reference_object =  OpenEHR::AM::Archetype::Constraint_Model::C_REFERENCE_OBJECT.new
+    @archetype_internal_ref =  OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_INTERNAL_REF.new
+    @archetype_slot = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_SLOT.new
+    @constraint_ref = OpenEHR::AM::Archetype::Constraint_Model::CONSTRAINT_REF.new
+    @c_domain_type = OpenEHR::AM::Archetype::Constraint_Model::C_DOMAIN_TYPE.new
+    @c_complex_object = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new(:attributes => [@c_single_attribute])
+  end
+
+  def test_init
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_CONSTRAINT, @archetype_constraint
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::C_OBJECT, @c_object
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::C_DEFINED_OBJECT, @c_defined_object
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE, @c_attribute
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::C_SINGLE_ATTRIBUTE, @c_single_attribute
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::C_MULTIPLE_ATTRIBUTE, @c_multiple_attribute
+    assert_equal 'attribute_name', @c_multiple_attribute.rm_attribute_name
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY, @c_multiple_attribute.cardinality
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::C_PRIMITIVE_OBJECT, @c_primitive_object
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::C_REFERENCE_OBJECT, @c_reference_object
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_INTERNAL_REF, @archetype_internal_ref
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_SLOT, @archetype_slot
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::CONSTRAINT_REF, @constraint_ref
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::C_DOMAIN_TYPE, @c_domain_type
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT, @c_complex_object
+    assert_instance_of Array, @c_complex_object.attributes
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_CONSTRAINT, @archetype_constraint
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY, @cardinality
+  end
+
+  def test_create
+    c_complex_object = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:node_id => 'test_node',
+                                                                                         :attributes => [1,2],
+                                                                                         :assumed_value => Array
+                                                                                         )
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT, c_complex_object
+    assert_equal 'test_node', c_complex_object.node_id
+  end
+end
+
+class ArchetypeModelPrimitiveTest < Test::Unit::TestCase
+  def setup
+    @c_primitive = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_PRIMITIVE.new
+    @c_boolean = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true,
+                                                                                    :false_valid => true,
+                                                                                    :assumed_value => true)
+    @c_string = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_STRING.new
+    @c_integer = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_INTEGER.new
+    @c_real = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_REAL.new
+    @c_time = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_TIME.new
+    @c_date = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE.new
+    @c_date_time = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE_TIME.new
+    @c_duration = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DURATION.new
+  end
+
+  def test_init
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_PRIMITIVE, @c_primitive
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN, @c_boolean
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_STRING, @c_string
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_INTEGER, @c_integer
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_REAL, @c_real
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_TIME, @c_time
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE, @c_date
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE_TIME, @c_date_time
+    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DURATION, @c_duration
+  end
+
+  def test_primitive
+    assert @c_boolean.true_valid
+    assert @c_boolean.false_valid
+    assert @c_boolean.assumed_value
+    assert @c_boolean.has_assumed_value?
+    assert @c_boolean.default_value
+    assert @c_boolean.default_value(true)
+    assert_raise(ArgumentError) do
+      @c_boolean.true_valid = false
+      @c_boolean.false_valid = false
+    end
+    assert_raise(ArgumentError) do 
+      OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid =>false,
+                                                                         :false_valid => false,
+                                                                         :assumed_value => false)
+    end
+  end
+  
+end
+
+class ArchetypeModelOntologyTest < Test::Unit::TestCase
+  def setup
+    @archetype_ontology = OpenEHR::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new
+    @archetype_term = OpenEHR::AM::Archetype::Ontology::ARCHETYPE_TERM.new(:code => '', :items => '')
+  end
+
+  def test_init
+    assert_instance_of OpenEHR::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY, @archetype_ontology
+    assert_instance_of OpenEHR::AM::Archetype::Ontology::ARCHETYPE_TERM, @archetype_term
+  end
+end
+    
+class ArchetypeModelAssertionTest < Test::Unit::TestCase
+  def setup
+    @assertion = OpenEHR::AM::Archetype::Assertion::ASSERTION.new
+    @assertion_variable = OpenEHR::AM::Archetype::Assertion::ASSERTION_VARIABLE.new
+    @operator_kind = OpenEHR::AM::Archetype::Assertion::OPERATOR_KIND.new
+    @expr_item = OpenEHR::AM::Archetype::Assertion::EXPR_ITEM.new
+    @expr_leaf = OpenEHR::AM::Archetype::Assertion::EXPR_LEAF.new
+    @expr_operator = OpenEHR::AM::Archetype::Assertion::EXPR_OPERATOR.new
+    @expr_unary_operator = OpenEHR::AM::Archetype::Assertion::EXPR_UNARY_OPERATOR.new
+    @expr_binary_operator = OpenEHR::AM::Archetype::Assertion::EXPR_BINARY_OPERATOR.new
+  end
+
+  def test_init
+    assert_instance_of OpenEHR::AM::Archetype::Assertion::ASSERTION, @assertion
+    assert_instance_of OpenEHR::AM::Archetype::Assertion::ASSERTION_VARIABLE, @assertion_variable
+    assert_instance_of OpenEHR::AM::Archetype::Assertion::OPERATOR_KIND, @operator_kind
+    assert_instance_of OpenEHR::AM::Archetype::Assertion::EXPR_ITEM, @expr_item
+    assert_instance_of OpenEHR::AM::Archetype::Assertion::EXPR_LEAF, @expr_leaf
+    assert_instance_of OpenEHR::AM::Archetype::Assertion::EXPR_OPERATOR, @expr_operator
+    assert_instance_of OpenEHR::AM::Archetype::Assertion::EXPR_UNARY_OPERATOR, @expr_unary_operator
+    assert_instance_of OpenEHR::AM::Archetype::Assertion::EXPR_BINARY_OPERATOR, @expr_binary_operator
+  end
+end
+
+class ArchetypeModelProfileTest < Test::Unit::TestCase
+  def setup
+    @c_dv_state = OpenEHR::AM::OpenEHR_Profile::Data_Types::Basic::C_DV_STATE.new
+    @state_machine = OpenEHR::AM::OpenEHR_Profile::Data_Types::Basic::STATE_MACHINE.new
+    @state = OpenEHR::AM::OpenEHR_Profile::Data_Types::Basic::STATE.new
+    @terminal_state = OpenEHR::AM::OpenEHR_Profile::Data_Types::Basic::TERMINAL_STATE.new
+    @non_terminal_state = OpenEHR::AM::OpenEHR_Profile::Data_Types::Basic::NON_TERMINAL_STATE.new
+    @transition = OpenEHR::AM::OpenEHR_Profile::Data_Types::Basic::TRANSITION.new
+
+    @c_code_phase = OpenEHR::AM::OpenEHR_Profile::Data_Types::Text::C_CODE_PHASE.new
+
+    @c_dv_quantity = OpenEHR::AM::OpenEHR_Profile::Data_Types::Quantity::C_DV_QUANTITY.new
+    @c_dv_ordinal = OpenEHR::AM::OpenEHR_Profile::Data_Types::Quantity::C_DV_ORDINAL.new
+    @c_quantity_item = OpenEHR::AM::OpenEHR_Profile::Data_Types::Quantity::C_QUANTITY_ITEM.new
+  end
+
+  def test_init
+    assert_instance_of OpenEHR::AM::OpenEHR_Profile::Data_Types::Basic::C_DV_STATE, @c_dv_state
+    assert_instance_of OpenEHR::AM::OpenEHR_Profile::Data_Types::Basic::STATE_MACHINE, @state_machine
+    assert_instance_of OpenEHR::AM::OpenEHR_Profile::Data_Types::Basic::STATE, @state
+    assert_instance_of OpenEHR::AM::OpenEHR_Profile::Data_Types::Basic::TERMINAL_STATE, @terminal_state
+    assert_instance_of OpenEHR::AM::OpenEHR_Profile::Data_Types::Basic::NON_TERMINAL_STATE, @non_terminal_state
+    assert_instance_of OpenEHR::AM::OpenEHR_Profile::Data_Types::Basic::TRANSITION, @transition
+    assert_instance_of OpenEHR::AM::OpenEHR_Profile::Data_Types::Text::C_CODE_PHASE, @c_code_phase
+    assert_instance_of OpenEHR::AM::OpenEHR_Profile::Data_Types::Quantity::C_DV_QUANTITY, @c_dv_quantity
+    assert_instance_of OpenEHR::AM::OpenEHR_Profile::Data_Types::Quantity::C_DV_ORDINAL, @c_dv_ordinal
+    assert_instance_of OpenEHR::AM::OpenEHR_Profile::Data_Types::Quantity::C_QUANTITY_ITEM, @c_quantity_item
+  end
+end
Index: /ruby/tags/0.0.2/models/tests/test_assumed_library_types.rb
===================================================================
--- /ruby/tags/0.0.2/models/tests/test_assumed_library_types.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/tests/test_assumed_library_types.rb	(revision 39)
@@ -0,0 +1,41 @@
+require 'test/unit'
+require 'assumed_library_types.rb'
+
+class Assumed_Library_Test < Test::Unit::TestCase
+  def setup
+    @interval = OpenEHR::Assumed_Library_Types::Interval.new(1,2)
+  end
+  def test_initialize
+    assert_instance_of OpenEHR::Assumed_Library_Types::Interval, @interval
+  end
+  def test_limits_comparable
+    assert @interval.lower < @interval.upper
+    @interval.set_lower(1.0)
+    @interval.set_upper(2.0)
+    assert @interval.lower < @interval.upper
+  end
+  def test_limits_consistent
+    assert @interval.has?(1.5)
+    assert !@interval.has?(3.0)
+    assert !@interval.has?(0.5)
+    @interval.set_lower_included(true)
+    assert @interval.has?(1.0)
+    @interval.set_lower_included(false)
+    assert !@interval.has?(1.0)
+    @interval.set_upper_included(true)
+    assert @interval.has?(2.0)
+    @interval.set_upper_included(false)
+    assert !@interval.has?(2.0)
+  end
+  def test_lower_included_valid
+    @interval.set_lower(nil)
+    assert @interval.lower_unbounded
+    assert !@interval.lower_included
+    @interval.set_lower(1.0)
+  end
+  def test_upper_included_valid
+    @interval.set_upper(nil)
+    assert @interval.upper_unbounded
+    assert !@interval.upper_included
+  end
+end
Index: /ruby/tags/0.0.2/models/tests/test_reference_model.rb
===================================================================
--- /ruby/tags/0.0.2/models/tests/test_reference_model.rb	(revision 39)
+++ /ruby/tags/0.0.2/models/tests/test_reference_model.rb	(revision 39)
@@ -0,0 +1,136 @@
+require 'test/unit'
+require 'set'
+require 'rm'
+
+class ReferenceModelTest < Test::Unit::TestCase
+  def setup
+    @authored_resource = OpenEHR::RM::Common::Resource::AUTHORED_RESOURCE.new(:original_language => "ja",
+                                                                              :translations => "en",
+                                                                              :description => "test")
+    @translation_details = OpenEHR::RM::Common::Resource::TRANSLATION_DETAILS.new(nil,nil,nil,nil,nil)
+#    @openehr_definitions = OpenEHR::RM::Support::Definition::OpenEHR_Definitions.new
+    @dv_boolean = OpenEHR::RM::Data_Types::Basic::DV_Boolean.new("TRUE")
+    @dv_state = OpenEHR::RM::Data_Types::Basic::DV_State.new("code1",true)
+    @dv_identifier = OpenEHR::RM::Data_Types::Basic::DV_Identifier.new("Ruby Hospital","0123456-0", "Information office", "personal id")
+    @dv_uri = OpenEHR::RM::Data_Types::URI::DV_URI.new("http://www.openehr.jp/changeset/test?cmd=93#file0")
+    @dv_ehr_uri = OpenEHR::RM::Data_Types::URI::DV_EHR_URI.new("ehr://1234567/87284370-2D4B-4e3d-A3F3-F303D2F4F34B@2005-08-02T04:30:00")
+    @dv_text = OpenEHR::RM::Data_Types::Text::DV_Text.new("valid value")
+    @dv_coded_text = OpenEHR::RM::Data_Types::Text::DV_Coded_Text.new("valid value", "AT1000")
+    @dv_paragraph = OpenEHR::RM::Data_Types::Text::DV_Paragraph.new(Set.new(["test1", "test2"]))
+  end
+  
+  def test_init
+    assert_instance_of OpenEHR::RM::Common::Resource::AUTHORED_RESOURCE, @authored_resource
+    assert_instance_of OpenEHR::RM::Common::Resource::TRANSLATION_DETAILS, @translation_details
+    assert_instance_of OpenEHR::RM::Data_Types::Basic::DV_Boolean, @dv_boolean
+    assert_instance_of OpenEHR::RM::Data_Types::Basic::DV_State, @dv_state
+    assert_instance_of OpenEHR::RM::Data_Types::Basic::DV_Identifier, @dv_identifier
+    assert_instance_of OpenEHR::RM::Data_Types::URI::DV_URI, @dv_uri
+    assert_instance_of OpenEHR::RM::Data_Types::URI::DV_EHR_URI, @dv_ehr_uri
+    assert_instance_of OpenEHR::RM::Data_Types::Text::DV_Text, @dv_text
+    assert_instance_of OpenEHR::RM::Data_Types::Text::DV_Coded_Text, @dv_coded_text
+  end
+
+  def test_constant
+    assert_equal("\r", OpenEHR::RM::Support::Definition::OpenEHR_Definitions::CR)
+    assert_equal("\n", OpenEHR::RM::Support::Definition::OpenEHR_Definitions::LF)
+    assert_equal("\r", OpenEHR::RM::Data_Types::Basic::Data_Value::CR)
+    assert_equal("\n", OpenEHR::RM::Data_Types::Basic::Data_Value::LF)
+  end
+
+  def test_dv_boolean
+    assert @dv_boolean.value?
+    @dv_boolean.value = false
+    assert !@dv_boolean.value?
+    # Constraints Value_exists
+    assert_raise(ArgumentError){@dv_boolean.value=nil}
+    assert_raise(ArgumentError){OpenEHR::RM::Data_Types::Basic::DV_Boolean.new(nil)}
+  end
+
+  def test_dv_state
+    assert_equal("code1", @dv_state.value)
+    @dv_state.value = "code2"
+    assert_equal("code2", @dv_state.value)
+    assert @dv_state.is_terminal?
+    @dv_state.terminal = false
+    assert !@dv_state.is_terminal?
+    assert_raise(ArgumentError) {OpenEHR::RM::Data_Types::Basic::DV_State.new(nil,nil)}
+  end
+
+  def test_dv_identifier
+    assert_equal("Ruby Hospital", @dv_identifier.assigner)
+    assert_equal("0123456-0", @dv_identifier.id)
+    assert_equal("Information office", @dv_identifier.issuer)
+    assert_equal("personal id", @dv_identifier.type)
+    @dv_identifier.assigner = "Test Hospital"
+    assert_equal("Test Hospital", @dv_identifier.assigner)
+    @dv_identifier.id = "TEST-0987"
+    assert_equal("TEST-0987", @dv_identifier.id)
+    @dv_identifier.issuer = "Security office"
+    assert_equal("Security office", @dv_identifier.issuer)
+    @dv_identifier.type = "test id"
+    assert_equal("test id", @dv_identifier.type)
+    assert_raise(ArgumentError) {OpenEHR::RM::Data_Types::Basic::DV_Identifier.new(nil, nil, nil, nil)}
+  end
+
+  def test_dv_uri
+    assert_equal("file0", @dv_uri.fragment_id)
+    assert_equal("/changeset/test", @dv_uri.path)
+    assert_equal("cmd=93", @dv_uri.query)
+    assert_equal("http", @dv_uri.scheme)
+    assert_equal("http://www.openehr.jp/changeset/test?cmd=93#file0", @dv_uri.value)
+    @dv_uri.value="svn://www.openehr.jp/openehr-jp/"
+    assert_equal("svn://www.openehr.jp/openehr-jp/", @dv_uri.value)
+    assert_equal("/openehr-jp/", @dv_uri.path)
+  end
+
+  def test_dv_ehr_uri
+    assert_equal("ehr", @dv_ehr_uri.scheme)
+    assert_raise(ArgumentError){
+      @dv_ehr_uri.value="svn://www.openehr.jp/openehr-jp/" }
+  end
+
+  def test_dv_text
+    assert_equal("valid value", @dv_text.value)
+    assert_raise(ArgumentError){@dv_text.value = "not valid value\n"}
+    assert_raise(ArgumentError){@dv_text.value = nil }
+    assert_raise(ArgumentError){@dv_text.value = "" }
+    assert_raise(ArgumentError){@dv_text.formatting = "" }
+    assert_raise(ArgumentError){@dv_text.encoding = ""}
+    assert_raise(ArgumentError){@dv_text.language = ""}
+    assert_raise(ArgumentError){@dv_text.mappings = Set.new}
+    assert_raise(ArgumentError){@dv_text.mappings = ""}
+    assert_raise(ArgumentError){@dv_text.language = ""}
+  end
+
+  def test_dv_coded_text
+    assert_equal("valid value", @dv_coded_text.value)
+    assert_equal("AT1000", @dv_coded_text.defining_code)
+    assert_raise(ArgumentError){@dv_coded_text.defining_code=nil}
+  end
+
+  def test_dv_paragraph
+    assert_equal((Set.new ["test1", "test2"]), @dv_paragraph.items)
+    assert_raise(ArgumentError){@dv_paragraph.items=Set.new}
+  end
+
+  def test_terminology_mapping
+    
+  end
+end
+
+
+class ReferenceModelSupportIdentificationTest < Test::Unit::TestCase
+  def setup
+    @object_id = OpenEHR::RM::Support::Identification::OBJECT_ID.new
+    @terminology_id = OpenEHR::RM::Support::Identification::TERMINOLOGY_ID.new('terminology','version')
+    @archetype_id = OpenEHR::RM::Support::Identification::ARCHETYPE_ID.new
+  end
+  
+  def test_init
+    assert_instance_of OpenEHR::RM::Support::Identification::OBJECT_ID, @object_id
+    assert_instance_of OpenEHR::RM::Support::Identification::TERMINOLOGY_ID, @terminology_id
+    assert_instance_of OpenEHR::RM::Support::Identification::ARCHETYPE_ID, @archetype_id
+
+  end
+end
Index: /ruby/tags/0.0.2/rails/cancerehr/README
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/README	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/README	(revision 39)
@@ -0,0 +1,203 @@
+== Welcome to Rails
+
+Rails is a web-application and persistence framework that includes everything
+needed to create database-backed web-applications according to the
+Model-View-Control pattern of separation. This pattern splits the view (also
+called the presentation) into "dumb" templates that are primarily responsible
+for inserting pre-built data in between HTML tags. The model contains the
+"smart" domain objects (such as Account, Product, Person, Post) that holds all
+the business logic and knows how to persist themselves to a database. The
+controller handles the incoming requests (such as Save New Account, Update
+Product, Show Post) by manipulating the model and directing data to the view.
+
+In Rails, the model is handled by what's called an object-relational mapping
+layer entitled Active Record. This layer allows you to present the data from
+database rows as objects and embellish these data objects with business logic
+methods. You can read more about Active Record in
+link:files/vendor/rails/activerecord/README.html.
+
+The controller and view are handled by the Action Pack, which handles both
+layers by its two parts: Action View and Action Controller. These two layers
+are bundled in a single package due to their heavy interdependence. This is
+unlike the relationship between the Active Record and Action Pack that is much
+more separate. Each of these packages can be used independently outside of
+Rails.  You can read more about Action Pack in
+link:files/vendor/rails/actionpack/README.html.
+
+
+== Getting Started
+
+1. At the command prompt, start a new Rails application using the <tt>rails</tt> command
+   and your application name. Ex: rails myapp
+   (If you've downloaded Rails in a complete tgz or zip, this step is already done)
+2. Change directory into myapp and start the web server: <tt>script/server</tt> (run with --help for options)
+3. Go to http://localhost:3000/ and get "Welcome aboard: You’re riding the Rails!"
+4. Follow the guidelines to start developing your application
+
+
+== Web Servers
+
+By default, Rails will try to use Mongrel and lighttpd if they are installed, otherwise
+Rails will use WEBrick, the webserver that ships with Ruby. When you run script/server,
+Rails will check if Mongrel exists, then lighttpd and finally fall back to WEBrick. This ensures
+that you can always get up and running quickly.
+
+Mongrel is a Ruby-based webserver with a C component (which requires compilation) that is
+suitable for development and deployment of Rails applications. If you have Ruby Gems installed,
+getting up and running with mongrel is as easy as: <tt>gem install mongrel</tt>.
+More info at: http://mongrel.rubyforge.org
+
+If Mongrel is not installed, Rails will look for lighttpd. It's considerably faster than
+Mongrel and WEBrick and also suited for production use, but requires additional
+installation and currently only works well on OS X/Unix (Windows users are encouraged
+to start with Mongrel). We recommend version 1.4.11 and higher. You can download it from
+http://www.lighttpd.net.
+
+And finally, if neither Mongrel or lighttpd are installed, Rails will use the built-in Ruby
+web server, WEBrick. WEBrick is a small Ruby web server suitable for development, but not
+for production.
+
+But of course its also possible to run Rails on any platform that supports FCGI.
+Apache, LiteSpeed, IIS are just a few. For more information on FCGI,
+please visit: http://wiki.rubyonrails.com/rails/pages/FastCGI
+
+
+== Debugging Rails
+
+Sometimes your application goes wrong.  Fortunately there are a lot of tools that
+will help you debug it and get it back on the rails.
+
+First area to check is the application log files.  Have "tail -f" commands running
+on the server.log and development.log. Rails will automatically display debugging
+and runtime information to these files. Debugging info will also be shown in the
+browser on requests from 127.0.0.1.
+
+You can also log your own messages directly into the log file from your code using
+the Ruby logger class from inside your controllers. Example:
+
+  class WeblogController < ActionController::Base
+    def destroy
+      @weblog = Weblog.find(params[:id])
+      @weblog.destroy
+      logger.info("#{Time.now} Destroyed Weblog ID ##{@weblog.id}!")
+    end
+  end
+
+The result will be a message in your log file along the lines of:
+
+  Mon Oct 08 14:22:29 +1000 2007 Destroyed Weblog ID #1
+
+More information on how to use the logger is at http://www.ruby-doc.org/core/
+
+Also, Ruby documentation can be found at http://www.ruby-lang.org/ including:
+
+* The Learning Ruby (Pickaxe) Book: http://www.ruby-doc.org/docs/ProgrammingRuby/
+* Learn to Program: http://pine.fm/LearnToProgram/  (a beginners guide)
+
+These two online (and free) books will bring you up to speed on the Ruby language
+and also on programming in general.
+
+
+== Debugger
+
+Debugger support is available through the debugger command when you start your Mongrel or
+Webrick server with --debugger. This means that you can break out of execution at any point
+in the code, investigate and change the model, AND then resume execution! Example:
+
+  class WeblogController < ActionController::Base
+    def index
+      @posts = Post.find(:all)
+      debugger
+    end
+  end
+
+So the controller will accept the action, run the first line, then present you
+with a IRB prompt in the server window. Here you can do things like:
+
+  >> @posts.inspect
+  => "[#<Post:0x14a6be8 @attributes={\"title\"=>nil, \"body\"=>nil, \"id\"=>\"1\"}>,
+       #<Post:0x14a6620 @attributes={\"title\"=>\"Rails you know!\", \"body\"=>\"Only ten..\", \"id\"=>\"2\"}>]"
+  >> @posts.first.title = "hello from a debugger"
+  => "hello from a debugger"
+
+...and even better is that you can examine how your runtime objects actually work:
+
+  >> f = @posts.first
+  => #<Post:0x13630c4 @attributes={"title"=>nil, "body"=>nil, "id"=>"1"}>
+  >> f.
+  Display all 152 possibilities? (y or n)
+
+Finally, when you're ready to resume execution, you enter "cont"
+
+
+== Console
+
+You can interact with the domain model by starting the console through <tt>script/console</tt>.
+Here you'll have all parts of the application configured, just like it is when the
+application is running. You can inspect domain models, change values, and save to the
+database. Starting the script without arguments will launch it in the development environment.
+Passing an argument will specify a different environment, like <tt>script/console production</tt>.
+
+To reload your controllers and models after launching the console run <tt>reload!</tt>
+
+
+== Description of Contents
+
+app
+  Holds all the code that's specific to this particular application.
+
+app/controllers
+  Holds controllers that should be named like weblogs_controller.rb for
+  automated URL mapping. All controllers should descend from ApplicationController
+  which itself descends from ActionController::Base.
+
+app/models
+  Holds models that should be named like post.rb.
+  Most models will descend from ActiveRecord::Base.
+
+app/views
+  Holds the template files for the view that should be named like
+  weblogs/index.erb for the WeblogsController#index action. All views use eRuby
+  syntax.
+
+app/views/layouts
+  Holds the template files for layouts to be used with views. This models the common
+  header/footer method of wrapping views. In your views, define a layout using the
+  <tt>layout :default</tt> and create a file named default.erb. Inside default.erb,
+  call <% yield %> to render the view using this layout.
+
+app/helpers
+  Holds view helpers that should be named like weblogs_helper.rb. These are generated
+  for you automatically when using script/generate for controllers. Helpers can be used to
+  wrap functionality for your views into methods.
+
+config
+  Configuration files for the Rails environment, the routing map, the database, and other dependencies.
+
+db
+  Contains the database schema in schema.rb.  db/migrate contains all
+  the sequence of Migrations for your schema.
+
+doc
+  This directory is where your application documentation will be stored when generated
+  using <tt>rake doc:app</tt>
+
+lib
+  Application specific libraries. Basically, any kind of custom code that doesn't
+  belong under controllers, models, or helpers. This directory is in the load path.
+
+public
+  The directory available for the web server. Contains subdirectories for images, stylesheets,
+  and javascripts. Also contains the dispatchers and the default HTML files. This should be
+  set as the DOCUMENT_ROOT of your web server.
+
+script
+  Helper scripts for automation and generation.
+
+test
+  Unit and functional tests along with fixtures. When using the script/generate scripts, template
+  test files will be generated for you and placed in this directory.
+
+vendor
+  External libraries that the application depends on. Also includes the plugins subdirectory.
+  This directory is in the load path.
Index: /ruby/tags/0.0.2/rails/cancerehr/Rakefile
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/Rakefile	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/Rakefile	(revision 39)
@@ -0,0 +1,10 @@
+# Add your own tasks in files placed in lib/tasks ending in .rake,
+# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
+
+require(File.join(File.dirname(__FILE__), 'config', 'boot'))
+
+require 'rake'
+require 'rake/testtask'
+require 'rake/rdoctask'
+
+require 'tasks/rails'
Index: /ruby/tags/0.0.2/rails/cancerehr/app/controllers/application.rb
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/app/controllers/application.rb	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/app/controllers/application.rb	(revision 39)
@@ -0,0 +1,10 @@
+# Filters added to this controller apply to all controllers in the application.
+# Likewise, all the methods added will be available for all controllers.
+
+class ApplicationController < ActionController::Base
+  helper :all # include all helpers, all the time
+
+  # See ActionController::RequestForgeryProtection for details
+  # Uncomment the :secret if you're not using the cookie session store
+  protect_from_forgery # :secret => 'c3e807951661961322016dc6ca949e09'
+end
Index: /ruby/tags/0.0.2/rails/cancerehr/app/helpers/application_helper.rb
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/app/helpers/application_helper.rb	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/app/helpers/application_helper.rb	(revision 39)
@@ -0,0 +1,3 @@
+# Methods added to this helper will be available to all templates in the application.
+module ApplicationHelper
+end
Index: /ruby/tags/0.0.2/rails/cancerehr/config/boot.rb
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/config/boot.rb	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/config/boot.rb	(revision 39)
@@ -0,0 +1,109 @@
+# Don't change this file!
+# Configure your app in config/environment.rb and config/environments/*.rb
+
+RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT)
+
+module Rails
+  class << self
+    def boot!
+      unless booted?
+        preinitialize
+        pick_boot.run
+      end
+    end
+
+    def booted?
+      defined? Rails::Initializer
+    end
+
+    def pick_boot
+      (vendor_rails? ? VendorBoot : GemBoot).new
+    end
+
+    def vendor_rails?
+      File.exist?("#{RAILS_ROOT}/vendor/rails")
+    end
+
+    # FIXME : Ruby 1.9
+    def preinitialize
+      load(preinitializer_path) if File.exists?(preinitializer_path)
+    end
+
+    def preinitializer_path
+      "#{RAILS_ROOT}/config/preinitializer.rb"
+    end
+  end
+
+  class Boot
+    def run
+      load_initializer
+      Rails::Initializer.run(:set_load_path)
+    end
+  end
+
+  class VendorBoot < Boot
+    def load_initializer
+      require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer"
+    end
+  end
+
+  class GemBoot < Boot
+    def load_initializer
+      self.class.load_rubygems
+      load_rails_gem
+      require 'initializer'
+    end
+
+    def load_rails_gem
+      if version = self.class.gem_version
+        gem 'rails', version
+      else
+        gem 'rails'
+      end
+    rescue Gem::LoadError => load_error
+      $stderr.puts %(Missing the Rails #{version} gem. Please `gem install -v=#{version} rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.)
+      exit 1
+    end
+
+    class << self
+      def rubygems_version
+        Gem::RubyGemsVersion if defined? Gem::RubyGemsVersion
+      end
+
+      def gem_version
+        if defined? RAILS_GEM_VERSION
+          RAILS_GEM_VERSION
+        elsif ENV.include?('RAILS_GEM_VERSION')
+          ENV['RAILS_GEM_VERSION']
+        else
+          parse_gem_version(read_environment_rb)
+        end
+      end
+
+      def load_rubygems
+        require 'rubygems'
+
+        unless rubygems_version >= '0.9.4'
+          $stderr.puts %(Rails requires RubyGems >= 0.9.4 (you have #{rubygems_version}). Please `gem update --system` and try again.)
+          exit 1
+        end
+
+      rescue LoadError
+        $stderr.puts %(Rails requires RubyGems >= 0.9.4. Please install RubyGems and try again: http://rubygems.rubyforge.org)
+        exit 1
+      end
+
+      def parse_gem_version(text)
+        $1 if text =~ /^[^#]*RAILS_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/
+      end
+
+      private
+        def read_environment_rb
+          File.read("#{RAILS_ROOT}/config/environment.rb")
+        end
+    end
+  end
+end
+
+# All that for this:
+Rails.boot!
Index: /ruby/tags/0.0.2/rails/cancerehr/config/database.yml
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/config/database.yml	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/config/database.yml	(revision 39)
@@ -0,0 +1,19 @@
+# SQLite version 3.x
+#   gem install sqlite3-ruby (not necessary on OS X Leopard)
+development:
+  adapter: sqlite3
+  database: db/development.sqlite3
+  timeout: 5000
+
+# Warning: The database defined as 'test' will be erased and
+# re-generated from your development database when you run 'rake'.
+# Do not set this db to the same as development or production.
+test:
+  adapter: sqlite3
+  database: db/test.sqlite3
+  timeout: 5000
+
+production:
+  adapter: sqlite3
+  database: db/production.sqlite3
+  timeout: 5000
Index: /ruby/tags/0.0.2/rails/cancerehr/config/environment.rb
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/config/environment.rb	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/config/environment.rb	(revision 39)
@@ -0,0 +1,59 @@
+# Be sure to restart your server when you modify this file
+
+# Uncomment below to force Rails into production mode when
+# you don't control web/app server and can't set it the proper way
+# ENV['RAILS_ENV'] ||= 'production'
+
+# Specifies gem version of Rails to use when vendor/rails is not present
+RAILS_GEM_VERSION = '2.0.2' unless defined? RAILS_GEM_VERSION
+
+# Bootstrap the Rails environment, frameworks, and default configuration
+require File.join(File.dirname(__FILE__), 'boot')
+
+Rails::Initializer.run do |config|
+  # Settings in config/environments/* take precedence over those specified here.
+  # Application configuration should go into files in config/initializers
+  # -- all .rb files in that directory are automatically loaded.
+  # See Rails::Configuration for more options.
+
+  # Skip frameworks you're not going to use (only works if using vendor/rails).
+  # To use Rails without a database, you must remove the Active Record framework
+  # config.frameworks -= [ :active_record, :active_resource, :action_mailer ]
+
+  # Only load the plugins named here, in the order given. By default, all plugins 
+  # in vendor/plugins are loaded in alphabetical order.
+  # :all can be used as a placeholder for all plugins not explicitly named
+  # config.plugins = [ :exception_notification, :ssl_requirement, :all ]
+
+  # Add additional load paths for your own custom dirs
+  # config.load_paths += %W( #{RAILS_ROOT}/extras )
+
+  # Force all environments to use the same logger level
+  # (by default production uses :info, the others :debug)
+  # config.log_level = :debug
+
+  # Your secret key for verifying cookie session data integrity.
+  # If you change this key, all old sessions will become invalid!
+  # Make sure the secret is at least 30 characters and all random, 
+  # no regular words or you'll be exposed to dictionary attacks.
+  config.action_controller.session = {
+    :session_key => '_cancerehr_session',
+    :secret      => '3cd1334af88a1a708db3c5640ef8daa2fca9a93dd73b8a64e728ec7cfff672b6acc5f0fa7a9459f6cf42223465e4b87c5455d9517ebf6983208970db379effa3'
+  }
+
+  # Use the database for sessions instead of the cookie-based default,
+  # which shouldn't be used to store highly confidential information
+  # (create the session table with 'rake db:sessions:create')
+  # config.action_controller.session_store = :active_record_store
+
+  # Use SQL instead of Active Record's schema dumper when creating the test database.
+  # This is necessary if your schema can't be completely dumped by the schema dumper,
+  # like if you have constraints or database-specific column types
+  # config.active_record.schema_format = :sql
+
+  # Activate observers that should always be running
+  # config.active_record.observers = :cacher, :garbage_collector
+
+  # Make Active Record use UTC-base instead of local time
+  # config.active_record.default_timezone = :utc
+end
Index: /ruby/tags/0.0.2/rails/cancerehr/config/environments/development.rb
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/config/environments/development.rb	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/config/environments/development.rb	(revision 39)
@@ -0,0 +1,18 @@
+# Settings specified here will take precedence over those in config/environment.rb
+
+# In the development environment your application's code is reloaded on
+# every request.  This slows down response time but is perfect for development
+# since you don't have to restart the webserver when you make code changes.
+config.cache_classes = false
+
+# Log error messages when you accidentally call methods on nil.
+config.whiny_nils = true
+
+# Show full error reports and disable caching
+config.action_controller.consider_all_requests_local = true
+config.action_view.debug_rjs                         = true
+config.action_controller.perform_caching             = false
+config.action_view.cache_template_extensions         = false
+
+# Don't care if the mailer can't send
+config.action_mailer.raise_delivery_errors = false
Index: /ruby/tags/0.0.2/rails/cancerehr/config/environments/production.rb
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/config/environments/production.rb	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/config/environments/production.rb	(revision 39)
@@ -0,0 +1,19 @@
+# Settings specified here will take precedence over those in config/environment.rb
+
+# The production environment is meant for finished, "live" apps.
+# Code is not reloaded between requests
+config.cache_classes = true
+
+# Use a different logger for distributed setups
+# config.logger = SyslogLogger.new
+
+# Full error reports are disabled and caching is turned on
+config.action_controller.consider_all_requests_local = false
+config.action_controller.perform_caching             = true
+config.action_view.cache_template_loading            = true
+
+# Enable serving of images, stylesheets, and javascripts from an asset server
+# config.action_controller.asset_host                  = "http://assets.example.com"
+
+# Disable delivery errors, bad email addresses will be ignored
+# config.action_mailer.raise_delivery_errors = false
Index: /ruby/tags/0.0.2/rails/cancerehr/config/environments/test.rb
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/config/environments/test.rb	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/config/environments/test.rb	(revision 39)
@@ -0,0 +1,22 @@
+# Settings specified here will take precedence over those in config/environment.rb
+
+# The test environment is used exclusively to run your application's
+# test suite.  You never need to work with it otherwise.  Remember that
+# your test database is "scratch space" for the test suite and is wiped
+# and recreated between test runs.  Don't rely on the data there!
+config.cache_classes = true
+
+# Log error messages when you accidentally call methods on nil.
+config.whiny_nils = true
+
+# Show full error reports and disable caching
+config.action_controller.consider_all_requests_local = true
+config.action_controller.perform_caching             = false
+
+# Disable request forgery protection in test environment
+config.action_controller.allow_forgery_protection    = false
+
+# Tell ActionMailer not to deliver emails to the real world.
+# The :test delivery method accumulates sent emails in the
+# ActionMailer::Base.deliveries array.
+config.action_mailer.delivery_method = :test
Index: /ruby/tags/0.0.2/rails/cancerehr/config/initializers/inflections.rb
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/config/initializers/inflections.rb	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/config/initializers/inflections.rb	(revision 39)
@@ -0,0 +1,10 @@
+# Be sure to restart your server when you modify this file.
+
+# Add new inflection rules using the following format 
+# (all these examples are active by default):
+# Inflector.inflections do |inflect|
+#   inflect.plural /^(ox)$/i, '\1en'
+#   inflect.singular /^(ox)en/i, '\1'
+#   inflect.irregular 'person', 'people'
+#   inflect.uncountable %w( fish sheep )
+# end
Index: /ruby/tags/0.0.2/rails/cancerehr/config/initializers/mime_types.rb
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/config/initializers/mime_types.rb	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/config/initializers/mime_types.rb	(revision 39)
@@ -0,0 +1,5 @@
+# Be sure to restart your server when you modify this file.
+
+# Add new mime types for use in respond_to blocks:
+# Mime::Type.register "text/richtext", :rtf
+# Mime::Type.register_alias "text/html", :iphone
Index: /ruby/tags/0.0.2/rails/cancerehr/config/routes.rb
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/config/routes.rb	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/config/routes.rb	(revision 39)
@@ -0,0 +1,35 @@
+ActionController::Routing::Routes.draw do |map|
+  # The priority is based upon order of creation: first created -> highest priority.
+
+  # Sample of regular route:
+  #   map.connect 'products/:id', :controller => 'catalog', :action => 'view'
+  # Keep in mind you can assign values other than :controller and :action
+
+  # Sample of named route:
+  #   map.purchase 'products/:id/purchase', :controller => 'catalog', :action => 'purchase'
+  # This route can be invoked with purchase_url(:id => product.id)
+
+  # Sample resource route (maps HTTP verbs to controller actions automatically):
+  #   map.resources :products
+
+  # Sample resource route with options:
+  #   map.resources :products, :member => { :short => :get, :toggle => :post }, :collection => { :sold => :get }
+
+  # Sample resource route with sub-resources:
+  #   map.resources :products, :has_many => [ :comments, :sales ], :has_one => :seller
+
+  # Sample resource route within a namespace:
+  #   map.namespace :admin do |admin|
+  #     # Directs /admin/products/* to Admin::ProductsController (app/controllers/admin/products_controller.rb)
+  #     admin.resources :products
+  #   end
+
+  # You can have the root of your site routed with map.root -- just remember to delete public/index.html.
+  # map.root :controller => "welcome"
+
+  # See how all your routes lay out with "rake routes"
+
+  # Install the default routes as the lowest priority.
+  map.connect ':controller/:action/:id'
+  map.connect ':controller/:action/:id.:format'
+end
Index: /ruby/tags/0.0.2/rails/cancerehr/doc/README_FOR_APP
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/doc/README_FOR_APP	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/doc/README_FOR_APP	(revision 39)
@@ -0,0 +1,2 @@
+Use this README file to introduce your application and point to useful places in the API for learning more.
+Run "rake doc:app" to generate API documentation for your models, controllers, helpers, and libraries.
Index: /ruby/tags/0.0.2/rails/cancerehr/public/.htaccess
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/public/.htaccess	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/public/.htaccess	(revision 39)
@@ -0,0 +1,40 @@
+# General Apache options
+AddHandler fastcgi-script .fcgi
+AddHandler cgi-script .cgi
+Options +FollowSymLinks +ExecCGI
+
+# If you don't want Rails to look in certain directories,
+# use the following rewrite rules so that Apache won't rewrite certain requests
+# 
+# Example:
+#   RewriteCond %{REQUEST_URI} ^/notrails.*
+#   RewriteRule .* - [L]
+
+# Redirect all requests not available on the filesystem to Rails
+# By default the cgi dispatcher is used which is very slow
+# 
+# For better performance replace the dispatcher with the fastcgi one
+#
+# Example:
+#   RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
+RewriteEngine On
+
+# If your Rails application is accessed via an Alias directive,
+# then you MUST also set the RewriteBase in this htaccess file.
+#
+# Example:
+#   Alias /myrailsapp /path/to/myrailsapp/public
+#   RewriteBase /myrailsapp
+
+RewriteRule ^$ index.html [QSA]
+RewriteRule ^([^.]+)$ $1.html [QSA]
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
+
+# In case Rails experiences terminal errors
+# Instead of displaying this message you can supply a file here which will be rendered instead
+# 
+# Example:
+#   ErrorDocument 500 /500.html
+
+ErrorDocument 500 "<h2>Application error</h2>Rails application failed to start properly"
Index: /ruby/tags/0.0.2/rails/cancerehr/public/404.html
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/public/404.html	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/public/404.html	(revision 39)
@@ -0,0 +1,30 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+  <title>The page you were looking for doesn't exist (404)</title>
+	<style type="text/css">
+		body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
+		div.dialog {
+			width: 25em;
+			padding: 0 4em;
+			margin: 4em auto 0 auto;
+			border: 1px solid #ccc;
+			border-right-color: #999;
+			border-bottom-color: #999;
+		}
+		h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
+	</style>
+</head>
+
+<body>
+  <!-- This file lives in public/404.html -->
+  <div class="dialog">
+    <h1>The page you were looking for doesn't exist.</h1>
+    <p>You may have mistyped the address or the page may have moved.</p>
+  </div>
+</body>
+</html>
Index: /ruby/tags/0.0.2/rails/cancerehr/public/422.html
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/public/422.html	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/public/422.html	(revision 39)
@@ -0,0 +1,30 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+  <title>The change you wanted was rejected (422)</title>
+	<style type="text/css">
+		body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
+		div.dialog {
+			width: 25em;
+			padding: 0 4em;
+			margin: 4em auto 0 auto;
+			border: 1px solid #ccc;
+			border-right-color: #999;
+			border-bottom-color: #999;
+		}
+		h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
+	</style>
+</head>
+
+<body>
+  <!-- This file lives in public/422.html -->
+  <div class="dialog">
+    <h1>The change you wanted was rejected.</h1>
+    <p>Maybe you tried to change something you didn't have access to.</p>
+  </div>
+</body>
+</html>
Index: /ruby/tags/0.0.2/rails/cancerehr/public/500.html
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/public/500.html	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/public/500.html	(revision 39)
@@ -0,0 +1,30 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+
+<head>
+  <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+  <title>We're sorry, but something went wrong (500)</title>
+	<style type="text/css">
+		body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
+		div.dialog {
+			width: 25em;
+			padding: 0 4em;
+			margin: 4em auto 0 auto;
+			border: 1px solid #ccc;
+			border-right-color: #999;
+			border-bottom-color: #999;
+		}
+		h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
+	</style>
+</head>
+
+<body>
+  <!-- This file lives in public/500.html -->
+  <div class="dialog">
+    <h1>We're sorry, but something went wrong.</h1>
+    <p>We've been notified about this issue and we'll take a look at it shortly.</p>
+  </div>
+</body>
+</html>
Index: /ruby/tags/0.0.2/rails/cancerehr/public/dispatch.cgi
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/public/dispatch.cgi	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/public/dispatch.cgi	(revision 39)
@@ -0,0 +1,10 @@
+#!/usr/local/bin/ruby18
+
+require File.dirname(__FILE__) + "/../config/environment" unless defined?(RAILS_ROOT)
+
+# If you're using RubyGems and mod_ruby, this require should be changed to an absolute path one, like:
+# "/usr/local/lib/ruby/gems/1.8/gems/rails-0.8.0/lib/dispatcher" -- otherwise performance is severely impaired
+require "dispatcher"
+
+ADDITIONAL_LOAD_PATHS.reverse.each { |dir| $:.unshift(dir) if File.directory?(dir) } if defined?(Apache::RubyRun)
+Dispatcher.dispatch
Index: /ruby/tags/0.0.2/rails/cancerehr/public/dispatch.fcgi
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/public/dispatch.fcgi	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/public/dispatch.fcgi	(revision 39)
@@ -0,0 +1,24 @@
+#!/usr/local/bin/ruby18
+#
+# You may specify the path to the FastCGI crash log (a log of unhandled
+# exceptions which forced the FastCGI instance to exit, great for debugging)
+# and the number of requests to process before running garbage collection.
+#
+# By default, the FastCGI crash log is RAILS_ROOT/log/fastcgi.crash.log
+# and the GC period is nil (turned off).  A reasonable number of requests
+# could range from 10-100 depending on the memory footprint of your app.
+#
+# Example:
+#   # Default log path, normal GC behavior.
+#   RailsFCGIHandler.process!
+#
+#   # Default log path, 50 requests between GC.
+#   RailsFCGIHandler.process! nil, 50
+#
+#   # Custom log path, normal GC behavior.
+#   RailsFCGIHandler.process! '/var/log/myapp_fcgi_crash.log'
+#
+require File.dirname(__FILE__) + "/../config/environment"
+require 'fcgi_handler'
+
+RailsFCGIHandler.process!
Index: /ruby/tags/0.0.2/rails/cancerehr/public/dispatch.rb
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/public/dispatch.rb	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/public/dispatch.rb	(revision 39)
@@ -0,0 +1,10 @@
+#!/usr/local/bin/ruby18
+
+require File.dirname(__FILE__) + "/../config/environment" unless defined?(RAILS_ROOT)
+
+# If you're using RubyGems and mod_ruby, this require should be changed to an absolute path one, like:
+# "/usr/local/lib/ruby/gems/1.8/gems/rails-0.8.0/lib/dispatcher" -- otherwise performance is severely impaired
+require "dispatcher"
+
+ADDITIONAL_LOAD_PATHS.reverse.each { |dir| $:.unshift(dir) if File.directory?(dir) } if defined?(Apache::RubyRun)
+Dispatcher.dispatch
Index: /ruby/tags/0.0.2/rails/cancerehr/public/index.html
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/public/index.html	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/public/index.html	(revision 39)
@@ -0,0 +1,265 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+  <head>
+    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
+    <title>Cancer EHR</title>
+    <style type="text/css" media="screen">
+      body {
+        margin: 0;
+        margin-bottom: 25px;
+        padding: 0;
+        background-color: #f0f0f0;
+        font-family: "Lucida Grande", "Bitstream Vera Sans", "Verdana";
+        font-size: 13px;
+        color: #333;
+      }
+      
+      h1 {
+        font-size: 28px;
+        color: #000;
+      }
+      
+      a  {color: #03c}
+      a:hover {
+        background-color: #03c;
+        color: white;
+        text-decoration: none;
+      }
+      
+      
+      #page {
+        background-color: #f0f0f0;
+        width: 750px;
+        margin: 0;
+        margin-left: auto;
+        margin-right: auto;
+      }
+      
+      #content {
+        float: left;
+        background-color: white;
+        border: 3px solid #aaa;
+        border-top: none;
+        padding: 25px;
+        width: 500px;
+      }
+      
+      #sidebar {
+        float: right;
+        width: 175px;
+      }
+
+      #footer {
+        clear: both;
+      }
+      
+
+      #header, #about, #getting-started {
+        padding-left: 75px;
+        padding-right: 30px;
+      }
+
+
+      #header {
+        background-image: url("images/rails.png");
+        background-repeat: no-repeat;
+        background-position: top left;
+        height: 64px;
+      }
+      #header h1, #header h2 {margin: 0}
+      #header h2 {
+        color: #888;
+        font-weight: normal;
+        font-size: 16px;
+      }
+      
+      
+      #about h3 {
+        margin: 0;
+        margin-bottom: 10px;
+        font-size: 14px;
+      }
+      
+      #about-content {
+        background-color: #ffd;
+        border: 1px solid #fc0;
+        margin-left: -11px;
+      }
+      #about-content table {
+        margin-top: 10px;
+        margin-bottom: 10px;
+        font-size: 11px;
+        border-collapse: collapse;
+      }
+      #about-content td {
+        padding: 10px;
+        padding-top: 3px;
+        padding-bottom: 3px;
+      }
+      #about-content td.name  {color: #555}
+      #about-content td.value {color: #000}
+      
+      #about-content.failure {
+        background-color: #fcc;
+        border: 1px solid #f00;
+      }
+      #about-content.failure p {
+        margin: 0;
+        padding: 10px;
+      }
+      
+      
+      #getting-started {
+        border-top: 1px solid #ccc;
+        margin-top: 25px;
+        padding-top: 15px;
+      }
+      #getting-started h1 {
+        margin: 0;
+        font-size: 20px;
+      }
+      #getting-started h2 {
+        margin: 0;
+        font-size: 14px;
+        font-weight: normal;
+        color: #333;
+        margin-bottom: 25px;
+      }
+      #getting-started ol {
+        margin-left: 0;
+        padding-left: 0;
+      }
+      #getting-started li {
+        font-size: 18px;
+        color: #888;
+        margin-bottom: 25px;
+      }
+      #getting-started li h2 {
+        margin: 0;
+        font-weight: normal;
+        font-size: 18px;
+        color: #333;
+      }
+      #getting-started li p {
+        color: #555;
+        font-size: 13px;
+      }
+      
+      
+      #search {
+        margin: 0;
+        padding-top: 10px;
+        padding-bottom: 10px;
+        font-size: 11px;
+      }
+      #search input {
+        font-size: 11px;
+        margin: 2px;
+      }
+      #search-text {width: 170px}
+      
+      
+      #sidebar ul {
+        margin-left: 0;
+        padding-left: 0;
+      }
+      #sidebar ul h3 {
+        margin-top: 25px;
+        font-size: 16px;
+        padding-bottom: 10px;
+        border-bottom: 1px solid #ccc;
+      }
+      #sidebar li {
+        list-style-type: none;
+      }
+      #sidebar ul.links li {
+        margin-bottom: 5px;
+      }
+      
+    </style>
+    <script type="text/javascript" src="javascripts/prototype.js"></script>
+    <script type="text/javascript" src="javascripts/effects.js"></script>
+    <script type="text/javascript">
+      function about() {
+        if (Element.empty('about-content')) {
+          new Ajax.Updater('about-content', 'rails/info/properties', {
+            method:     'get',
+            onFailure:  function() {Element.classNames('about-content').add('failure')},
+            onComplete: function() {new Effect.BlindDown('about-content', {duration: 0.25})}
+          });
+        } else {
+          new Effect[Element.visible('about-content') ? 
+            'BlindUp' : 'BlindDown']('about-content', {duration: 0.25});
+        }
+      }
+      
+      window.onload = function() {
+        $('search-text').value = '';
+        $('search').onsubmit = function() {
+          $('search-text').value = 'site:rubyonrails.org ' + $F('search-text');
+        }
+      }
+    </script>
+  </head>
+  <body>
+    <div id="page">
+      <div id="sidebar">
+        <ul id="sidebar-items">
+          <li>
+            <form id="search" action="http://www.google.com/search" method="get">
+              <input type="hidden" name="hl" value="en" />
+              <input type="text" id="search-text" name="q" value="site:rubyonrails.org " />
+              <input type="submit" value="Search" /> the Rails site
+            </form>
+          </li>
+        
+          <li>
+            <h3>Join the community</h3>
+            <ul class="links">
+              <li><a href="http://openehr.org/">The openEHR Project</a></li>
+              <li><a href="http://openehr.jp/">openEHR.jp</a></li>
+              <li><a href="http://www.rubyonrails.org/">Ruby on Rails</a></li>
+              <li><a href="http://weblog.rubyonrails.org/">Official weblog</a></li>
+              <li><a href="http://lists.rubyonrails.org/">Mailing lists</a></li>
+              <li><a href="http://wiki.rubyonrails.org/rails/pages/IRC">IRC channel</a></li>
+              <li><a href="http://wiki.rubyonrails.org/">Wiki</a></li>
+              <li><a href="http://dev.rubyonrails.org/">Bug tracker</a></li>
+            </ul>
+          </li>
+          
+          <li>
+            <h3>Browse the documentation</h3>
+            <ul class="links">
+              <li><a href="http://api.rubyonrails.org/">Rails API</a></li>
+              <li><a href="http://stdlib.rubyonrails.org/">Ruby standard library</a></li>
+              <li><a href="http://corelib.rubyonrails.org/">Ruby core</a></li>
+            </ul>
+          </li>
+        </ul>
+      </div>
+
+      <div id="content">
+        <div id="header">
+          <h1>Cancer EHR</h1>
+          <h2>This is a development environment for cancer patients' EHR for sample application of ruby implementation of openEHR.</h2>
+        </div>
+      </div>
+      <div id="getting-stated">
+        <h1>To do list</h1>
+        <ol>
+          <li>
+            <h2>Create login environment</h2>
+          </li>            
+          <li>
+            <h2>Create patient database</h2>
+          </li>            
+          <li>
+            <h2>Make archetype model of the cancer infomation</h2>
+          </li>
+        </ol>
+      </div>
+      <div id="footer">&nbsp;</div>
+    </div>
+  </body>
+</html>
Index: /ruby/tags/0.0.2/rails/cancerehr/public/javascripts/application.js
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/public/javascripts/application.js	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/public/javascripts/application.js	(revision 39)
@@ -0,0 +1,2 @@
+// Place your application-specific JavaScript functions and classes here
+// This file is automatically included by javascript_include_tag :defaults
Index: /ruby/tags/0.0.2/rails/cancerehr/public/javascripts/controls.js
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/public/javascripts/controls.js	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/public/javascripts/controls.js	(revision 39)
@@ -0,0 +1,963 @@
+// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
+//           (c) 2005-2007 Ivan Krstic (http://blogs.law.harvard.edu/ivan)
+//           (c) 2005-2007 Jon Tirsen (http://www.tirsen.com)
+// Contributors:
+//  Richard Livsey
+//  Rahul Bhargava
+//  Rob Wills
+// 
+// script.aculo.us is freely distributable under the terms of an MIT-style license.
+// For details, see the script.aculo.us web site: http://script.aculo.us/
+
+// Autocompleter.Base handles all the autocompletion functionality 
+// that's independent of the data source for autocompletion. This
+// includes drawing the autocompletion menu, observing keyboard
+// and mouse events, and similar.
+//
+// Specific autocompleters need to provide, at the very least, 
+// a getUpdatedChoices function that will be invoked every time
+// the text inside the monitored textbox changes. This method 
+// should get the text for which to provide autocompletion by
+// invoking this.getToken(), NOT by directly accessing
+// this.element.value. This is to allow incremental tokenized
+// autocompletion. Specific auto-completion logic (AJAX, etc)
+// belongs in getUpdatedChoices.
+//
+// Tokenized incremental autocompletion is enabled automatically
+// when an autocompleter is instantiated with the 'tokens' option
+// in the options parameter, e.g.:
+// new Ajax.Autocompleter('id','upd', '/url/', { tokens: ',' });
+// will incrementally autocomplete with a comma as the token.
+// Additionally, ',' in the above example can be replaced with
+// a token array, e.g. { tokens: [',', '\n'] } which
+// enables autocompletion on multiple tokens. This is most 
+// useful when one of the tokens is \n (a newline), as it 
+// allows smart autocompletion after linebreaks.
+
+if(typeof Effect == 'undefined')
+  throw("controls.js requires including script.aculo.us' effects.js library");
+
+var Autocompleter = { }
+Autocompleter.Base = Class.create({
+  baseInitialize: function(element, update, options) {
+    element          = $(element)
+    this.element     = element; 
+    this.update      = $(update);  
+    this.hasFocus    = false; 
+    this.changed     = false; 
+    this.active      = false; 
+    this.index       = 0;     
+    this.entryCount  = 0;
+    this.oldElementValue = this.element.value;
+
+    if(this.setOptions)
+      this.setOptions(options);
+    else
+      this.options = options || { };
+
+    this.options.paramName    = this.options.paramName || this.element.name;
+    this.options.tokens       = this.options.tokens || [];
+    this.options.frequency    = this.options.frequency || 0.4;
+    this.options.minChars     = this.options.minChars || 1;
+    this.options.onShow       = this.options.onShow || 
+      function(element, update){ 
+        if(!update.style.position || update.style.position=='absolute') {
+          update.style.position = 'absolute';
+          Position.clone(element, update, {
+            setHeight: false, 
+            offsetTop: element.offsetHeight
+          });
+        }
+        Effect.Appear(update,{duration:0.15});
+      };
+    this.options.onHide = this.options.onHide || 
+      function(element, update){ new Effect.Fade(update,{duration:0.15}) };
+
+    if(typeof(this.options.tokens) == 'string') 
+      this.options.tokens = new Array(this.options.tokens);
+    // Force carriage returns as token delimiters anyway
+    if (!this.options.tokens.include('\n'))
+      this.options.tokens.push('\n');
+
+    this.observer = null;
+    
+    this.element.setAttribute('autocomplete','off');
+
+    Element.hide(this.update);
+
+    Event.observe(this.element, 'blur', this.onBlur.bindAsEventListener(this));
+    Event.observe(this.element, 'keydown', this.onKeyPress.bindAsEventListener(this));
+  },
+
+  show: function() {
+    if(Element.getStyle(this.update, 'display')=='none') this.options.onShow(this.element, this.update);
+    if(!this.iefix && 
+      (Prototype.Browser.IE) &&
+      (Element.getStyle(this.update, 'position')=='absolute')) {
+      new Insertion.After(this.update, 
+       '<iframe id="' + this.update.id + '_iefix" '+
+       'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" ' +
+       'src="javascript:false;" frameborder="0" scrolling="no"></iframe>');
+      this.iefix = $(this.update.id+'_iefix');
+    }
+    if(this.iefix) setTimeout(this.fixIEOverlapping.bind(this), 50);
+  },
+  
+  fixIEOverlapping: function() {
+    Position.clone(this.update, this.iefix, {setTop:(!this.update.style.height)});
+    this.iefix.style.zIndex = 1;
+    this.update.style.zIndex = 2;
+    Element.show(this.iefix);
+  },
+
+  hide: function() {
+    this.stopIndicator();
+    if(Element.getStyle(this.update, 'display')!='none') this.options.onHide(this.element, this.update);
+    if(this.iefix) Element.hide(this.iefix);
+  },
+
+  startIndicator: function() {
+    if(this.options.indicator) Element.show(this.options.indicator);
+  },
+
+  stopIndicator: function() {
+    if(this.options.indicator) Element.hide(this.options.indicator);
+  },
+
+  onKeyPress: function(event) {
+    if(this.active)
+      switch(event.keyCode) {
+       case Event.KEY_TAB:
+       case Event.KEY_RETURN:
+         this.selectEntry();
+         Event.stop(event);
+       case Event.KEY_ESC:
+         this.hide();
+         this.active = false;
+         Event.stop(event);
+         return;
+       case Event.KEY_LEFT:
+       case Event.KEY_RIGHT:
+         return;
+       case Event.KEY_UP:
+         this.markPrevious();
+         this.render();
+         Event.stop(event);
+         return;
+       case Event.KEY_DOWN:
+         this.markNext();
+         this.render();
+         Event.stop(event);
+         return;
+      }
+     else 
+       if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN || 
+         (Prototype.Browser.WebKit > 0 && event.keyCode == 0)) return;
+
+    this.changed = true;
+    this.hasFocus = true;
+
+    if(this.observer) clearTimeout(this.observer);
+      this.observer = 
+        setTimeout(this.onObserverEvent.bind(this), this.options.frequency*1000);
+  },
+
+  activate: function() {
+    this.changed = false;
+    this.hasFocus = true;
+    this.getUpdatedChoices();
+  },
+
+  onHover: function(event) {
+    var element = Event.findElement(event, 'LI');
+    if(this.index != element.autocompleteIndex) 
+    {
+        this.index = element.autocompleteIndex;
+        this.render();
+    }
+    Event.stop(event);
+  },
+  
+  onClick: function(event) {
+    var element = Event.findElement(event, 'LI');
+    this.index = element.autocompleteIndex;
+    this.selectEntry();
+    this.hide();
+  },
+  
+  onBlur: function(event) {
+    // needed to make click events working
+    setTimeout(this.hide.bind(this), 250);
+    this.hasFocus = false;
+    this.active = false;     
+  }, 
+  
+  render: function() {
+    if(this.entryCount > 0) {
+      for (var i = 0; i < this.entryCount; i++)
+        this.index==i ? 
+          Element.addClassName(this.getEntry(i),"selected") : 
+          Element.removeClassName(this.getEntry(i),"selected");
+      if(this.hasFocus) { 
+        this.show();
+        this.active = true;
+      }
+    } else {
+      this.active = false;
+      this.hide();
+    }
+  },
+  
+  markPrevious: function() {
+    if(this.index > 0) this.index--
+      else this.index = this.entryCount-1;
+    this.getEntry(this.index).scrollIntoView(true);
+  },
+  
+  markNext: function() {
+    if(this.index < this.entryCount-1) this.index++
+      else this.index = 0;
+    this.getEntry(this.index).scrollIntoView(false);
+  },
+  
+  getEntry: function(index) {
+    return this.update.firstChild.childNodes[index];
+  },
+  
+  getCurrentEntry: function() {
+    return this.getEntry(this.index);
+  },
+  
+  selectEntry: function() {
+    this.active = false;
+    this.updateElement(this.getCurrentEntry());
+  },
+
+  updateElement: function(selectedElement) {
+    if (this.options.updateElement) {
+      this.options.updateElement(selectedElement);
+      return;
+    }
+    var value = '';
+    if (this.options.select) {
+      var nodes = $(selectedElement).select('.' + this.options.select) || [];
+      if(nodes.length>0) value = Element.collectTextNodes(nodes[0], this.options.select);
+    } else
+      value = Element.collectTextNodesIgnoreClass(selectedElement, 'informal');
+    
+    var bounds = this.getTokenBounds();
+    if (bounds[0] != -1) {
+      var newValue = this.element.value.substr(0, bounds[0]);
+      var whitespace = this.element.value.substr(bounds[0]).match(/^\s+/);
+      if (whitespace)
+        newValue += whitespace[0];
+      this.element.value = newValue + value + this.element.value.substr(bounds[1]);
+    } else {
+      this.element.value = value;
+    }
+    this.oldElementValue = this.element.value;
+    this.element.focus();
+    
+    if (this.options.afterUpdateElement)
+      this.options.afterUpdateElement(this.element, selectedElement);
+  },
+
+  updateChoices: function(choices) {
+    if(!this.changed && this.hasFocus) {
+      this.update.innerHTML = choices;
+      Element.cleanWhitespace(this.update);
+      Element.cleanWhitespace(this.update.down());
+
+      if(this.update.firstChild && this.update.down().childNodes) {
+        this.entryCount = 
+          this.update.down().childNodes.length;
+        for (var i = 0; i < this.entryCount; i++) {
+          var entry = this.getEntry(i);
+          entry.autocompleteIndex = i;
+          this.addObservers(entry);
+        }
+      } else { 
+        this.entryCount = 0;
+      }
+
+      this.stopIndicator();
+      this.index = 0;
+      
+      if(this.entryCount==1 && this.options.autoSelect) {
+        this.selectEntry();
+        this.hide();
+      } else {
+        this.render();
+      }
+    }
+  },
+
+  addObservers: function(element) {
+    Event.observe(element, "mouseover", this.onHover.bindAsEventListener(this));
+    Event.observe(element, "click", this.onClick.bindAsEventListener(this));
+  },
+
+  onObserverEvent: function() {
+    this.changed = false;   
+    this.tokenBounds = null;
+    if(this.getToken().length>=this.options.minChars) {
+      this.getUpdatedChoices();
+    } else {
+      this.active = false;
+      this.hide();
+    }
+    this.oldElementValue = this.element.value;
+  },
+
+  getToken: function() {
+    var bounds = this.getTokenBounds();
+    return this.element.value.substring(bounds[0], bounds[1]).strip();
+  },
+
+  getTokenBounds: function() {
+    if (null != this.tokenBounds) return this.tokenBounds;
+    var value = this.element.value;
+    if (value.strip().empty()) return [-1, 0];
+    var diff = arguments.callee.getFirstDifferencePos(value, this.oldElementValue);
+    var offset = (diff == this.oldElementValue.length ? 1 : 0);
+    var prevTokenPos = -1, nextTokenPos = value.length;
+    var tp;
+    for (var index = 0, l = this.options.tokens.length; index < l; ++index) {
+      tp = value.lastIndexOf(this.options.tokens[index], diff + offset - 1);
+      if (tp > prevTokenPos) prevTokenPos = tp;
+      tp = value.indexOf(this.options.tokens[index], diff + offset);
+      if (-1 != tp && tp < nextTokenPos) nextTokenPos = tp;
+    }
+    return (this.tokenBounds = [prevTokenPos + 1, nextTokenPos]);
+  }
+});
+
+Autocompleter.Base.prototype.getTokenBounds.getFirstDifferencePos = function(newS, oldS) {
+  var boundary = Math.min(newS.length, oldS.length);
+  for (var index = 0; index < boundary; ++index)
+    if (newS[index] != oldS[index])
+      return index;
+  return boundary;
+};
+
+Ajax.Autocompleter = Class.create(Autocompleter.Base, {
+  initialize: function(element, update, url, options) {
+    this.baseInitialize(element, update, options);
+    this.options.asynchronous  = true;
+    this.options.onComplete    = this.onComplete.bind(this);
+    this.options.defaultParams = this.options.parameters || null;
+    this.url                   = url;
+  },
+
+  getUpdatedChoices: function() {
+    this.startIndicator();
+    
+    var entry = encodeURIComponent(this.options.paramName) + '=' + 
+      encodeURIComponent(this.getToken());
+
+    this.options.parameters = this.options.callback ?
+      this.options.callback(this.element, entry) : entry;
+
+    if(this.options.defaultParams) 
+      this.options.parameters += '&' + this.options.defaultParams;
+    
+    new Ajax.Request(this.url, this.options);
+  },
+
+  onComplete: function(request) {
+    this.updateChoices(request.responseText);
+  }
+});
+
+// The local array autocompleter. Used when you'd prefer to
+// inject an array of autocompletion options into the page, rather
+// than sending out Ajax queries, which can be quite slow sometimes.
+//
+// The constructor takes four parameters. The first two are, as usual,
+// the id of the monitored textbox, and id of the autocompletion menu.
+// The third is the array you want to autocomplete from, and the fourth
+// is the options block.
+//
+// Extra local autocompletion options:
+// - choices - How many autocompletion choices to offer
+//
+// - partialSearch - If false, the autocompleter will match entered
+//                    text only at the beginning of strings in the 
+//                    autocomplete array. Defaults to true, which will
+//                    match text at the beginning of any *word* in the
+//                    strings in the autocomplete array. If you want to
+//                    search anywhere in the string, additionally set
+//                    the option fullSearch to true (default: off).
+//
+// - fullSsearch - Search anywhere in autocomplete array strings.
+//
+// - partialChars - How many characters to enter before triggering
+//                   a partial match (unlike minChars, which defines
+//                   how many characters are required to do any match
+//                   at all). Defaults to 2.
+//
+// - ignoreCase - Whether to ignore case when autocompleting.
+//                 Defaults to true.
+//
+// It's possible to pass in a custom function as the 'selector' 
+// option, if you prefer to write your own autocompletion logic.
+// In that case, the other options above will not apply unless
+// you support them.
+
+Autocompleter.Local = Class.create(Autocompleter.Base, {
+  initialize: function(element, update, array, options) {
+    this.baseInitialize(element, update, options);
+    this.options.array = array;
+  },
+
+  getUpdatedChoices: function() {
+    this.updateChoices(this.options.selector(this));
+  },
+
+  setOptions: function(options) {
+    this.options = Object.extend({
+      choices: 10,
+      partialSearch: true,
+      partialChars: 2,
+      ignoreCase: true,
+      fullSearch: false,
+      selector: function(instance) {
+        var ret       = []; // Beginning matches
+        var partial   = []; // Inside matches
+        var entry     = instance.getToken();
+        var count     = 0;
+
+        for (var i = 0; i < instance.options.array.length &&  
+          ret.length < instance.options.choices ; i++) { 
+
+          var elem = instance.options.array[i];
+          var foundPos = instance.options.ignoreCase ? 
+            elem.toLowerCase().indexOf(entry.toLowerCase()) : 
+            elem.indexOf(entry);
+
+          while (foundPos != -1) {
+            if (foundPos == 0 && elem.length != entry.length) { 
+              ret.push("<li><strong>" + elem.substr(0, entry.length) + "</strong>" + 
+                elem.substr(entry.length) + "</li>");
+              break;
+            } else if (entry.length >= instance.options.partialChars && 
+              instance.options.partialSearch && foundPos != -1) {
+              if (instance.options.fullSearch || /\s/.test(elem.substr(foundPos-1,1))) {
+                partial.push("<li>" + elem.substr(0, foundPos) + "<strong>" +
+                  elem.substr(foundPos, entry.length) + "</strong>" + elem.substr(
+                  foundPos + entry.length) + "</li>");
+                break;
+              }
+            }
+
+            foundPos = instance.options.ignoreCase ? 
+              elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) : 
+              elem.indexOf(entry, foundPos + 1);
+
+          }
+        }
+        if (partial.length)
+          ret = ret.concat(partial.slice(0, instance.options.choices - ret.length))
+        return "<ul>" + ret.join('') + "</ul>";
+      }
+    }, options || { });
+  }
+});
+
+// AJAX in-place editor and collection editor
+// Full rewrite by Christophe Porteneuve <tdd@tddsworld.com> (April 2007).
+
+// Use this if you notice weird scrolling problems on some browsers,
+// the DOM might be a bit confused when this gets called so do this
+// waits 1 ms (with setTimeout) until it does the activation
+Field.scrollFreeActivate = function(field) {
+  setTimeout(function() {
+    Field.activate(field);
+  }, 1);
+}
+
+Ajax.InPlaceEditor = Class.create({
+  initialize: function(element, url, options) {
+    this.url = url;
+    this.element = element = $(element);
+    this.prepareOptions();
+    this._controls = { };
+    arguments.callee.dealWithDeprecatedOptions(options); // DEPRECATION LAYER!!!
+    Object.extend(this.options, options || { });
+    if (!this.options.formId && this.element.id) {
+      this.options.formId = this.element.id + '-inplaceeditor';
+      if ($(this.options.formId))
+        this.options.formId = '';
+    }
+    if (this.options.externalControl)
+      this.options.externalControl = $(this.options.externalControl);
+    if (!this.options.externalControl)
+      this.options.externalControlOnly = false;
+    this._originalBackground = this.element.getStyle('background-color') || 'transparent';
+    this.element.title = this.options.clickToEditText;
+    this._boundCancelHandler = this.handleFormCancellation.bind(this);
+    this._boundComplete = (this.options.onComplete || Prototype.emptyFunction).bind(this);
+    this._boundFailureHandler = this.handleAJAXFailure.bind(this);
+    this._boundSubmitHandler = this.handleFormSubmission.bind(this);
+    this._boundWrapperHandler = this.wrapUp.bind(this);
+    this.registerListeners();
+  },
+  checkForEscapeOrReturn: function(e) {
+    if (!this._editing || e.ctrlKey || e.altKey || e.shiftKey) return;
+    if (Event.KEY_ESC == e.keyCode)
+      this.handleFormCancellation(e);
+    else if (Event.KEY_RETURN == e.keyCode)
+      this.handleFormSubmission(e);
+  },
+  createControl: function(mode, handler, extraClasses) {
+    var control = this.options[mode + 'Control'];
+    var text = this.options[mode + 'Text'];
+    if ('button' == control) {
+      var btn = document.createElement('input');
+      btn.type = 'submit';
+      btn.value = text;
+      btn.className = 'editor_' + mode + '_button';
+      if ('cancel' == mode)
+        btn.onclick = this._boundCancelHandler;
+      this._form.appendChild(btn);
+      this._controls[mode] = btn;
+    } else if ('link' == control) {
+      var link = document.createElement('a');
+      link.href = '#';
+      link.appendChild(document.createTextNode(text));
+      link.onclick = 'cancel' == mode ? this._boundCancelHandler : this._boundSubmitHandler;
+      link.className = 'editor_' + mode + '_link';
+      if (extraClasses)
+        link.className += ' ' + extraClasses;
+      this._form.appendChild(link);
+      this._controls[mode] = link;
+    }
+  },
+  createEditField: function() {
+    var text = (this.options.loadTextURL ? this.options.loadingText : this.getText());
+    var fld;
+    if (1 >= this.options.rows && !/\r|\n/.test(this.getText())) {
+      fld = document.createElement('input');
+      fld.type = 'text';
+      var size = this.options.size || this.options.cols || 0;
+      if (0 < size) fld.size = size;
+    } else {
+      fld = document.createElement('textarea');
+      fld.rows = (1 >= this.options.rows ? this.options.autoRows : this.options.rows);
+      fld.cols = this.options.cols || 40;
+    }
+    fld.name = this.options.paramName;
+    fld.value = text; // No HTML breaks conversion anymore
+    fld.className = 'editor_field';
+    if (this.options.submitOnBlur)
+      fld.onblur = this._boundSubmitHandler;
+    this._controls.editor = fld;
+    if (this.options.loadTextURL)
+      this.loadExternalText();
+    this._form.appendChild(this._controls.editor);
+  },
+  createForm: function() {
+    var ipe = this;
+    function addText(mode, condition) {
+      var text = ipe.options['text' + mode + 'Controls'];
+      if (!text || condition === false) return;
+      ipe._form.appendChild(document.createTextNode(text));
+    };
+    this._form = $(document.createElement('form'));
+    this._form.id = this.options.formId;
+    this._form.addClassName(this.options.formClassName);
+    this._form.onsubmit = this._boundSubmitHandler;
+    this.createEditField();
+    if ('textarea' == this._controls.editor.tagName.toLowerCase())
+      this._form.appendChild(document.createElement('br'));
+    if (this.options.onFormCustomization)
+      this.options.onFormCustomization(this, this._form);
+    addText('Before', this.options.okControl || this.options.cancelControl);
+    this.createControl('ok', this._boundSubmitHandler);
+    addText('Between', this.options.okControl && this.options.cancelControl);
+    this.createControl('cancel', this._boundCancelHandler, 'editor_cancel');
+    addText('After', this.options.okControl || this.options.cancelControl);
+  },
+  destroy: function() {
+    if (this._oldInnerHTML)
+      this.element.innerHTML = this._oldInnerHTML;
+    this.leaveEditMode();
+    this.unregisterListeners();
+  },
+  enterEditMode: function(e) {
+    if (this._saving || this._editing) return;
+    this._editing = true;
+    this.triggerCallback('onEnterEditMode');
+    if (this.options.externalControl)
+      this.options.externalControl.hide();
+    this.element.hide();
+    this.createForm();
+    this.element.parentNode.insertBefore(this._form, this.element);
+    if (!this.options.loadTextURL)
+      this.postProcessEditField();
+    if (e) Event.stop(e);
+  },
+  enterHover: function(e) {
+    if (this.options.hoverClassName)
+      this.element.addClassName(this.options.hoverClassName);
+    if (this._saving) return;
+    this.triggerCallback('onEnterHover');
+  },
+  getText: function() {
+    return this.element.innerHTML;
+  },
+  handleAJAXFailure: function(transport) {
+    this.triggerCallback('onFailure', transport);
+    if (this._oldInnerHTML) {
+      this.element.innerHTML = this._oldInnerHTML;
+      this._oldInnerHTML = null;
+    }
+  },
+  handleFormCancellation: function(e) {
+    this.wrapUp();
+    if (e) Event.stop(e);
+  },
+  handleFormSubmission: function(e) {
+    var form = this._form;
+    var value = $F(this._controls.editor);
+    this.prepareSubmission();
+    var params = this.options.callback(form, value) || '';
+    if (Object.isString(params))
+      params = params.toQueryParams();
+    params.editorId = this.element.id;
+    if (this.options.htmlResponse) {
+      var options = Object.extend({ evalScripts: true }, this.options.ajaxOptions);
+      Object.extend(options, {
+        parameters: params,
+        onComplete: this._boundWrapperHandler,
+        onFailure: this._boundFailureHandler
+      });
+      new Ajax.Updater({ success: this.element }, this.url, options);
+    } else {
+      var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);
+      Object.extend(options, {
+        parameters: params,
+        onComplete: this._boundWrapperHandler,
+        onFailure: this._boundFailureHandler
+      });
+      new Ajax.Request(this.url, options);
+    }
+    if (e) Event.stop(e);
+  },
+  leaveEditMode: function() {
+    this.element.removeClassName(this.options.savingClassName);
+    this.removeForm();
+    this.leaveHover();
+    this.element.style.backgroundColor = this._originalBackground;
+    this.element.show();
+    if (this.options.externalControl)
+      this.options.externalControl.show();
+    this._saving = false;
+    this._editing = false;
+    this._oldInnerHTML = null;
+    this.triggerCallback('onLeaveEditMode');
+  },
+  leaveHover: function(e) {
+    if (this.options.hoverClassName)
+      this.element.removeClassName(this.options.hoverClassName);
+    if (this._saving) return;
+    this.triggerCallback('onLeaveHover');
+  },
+  loadExternalText: function() {
+    this._form.addClassName(this.options.loadingClassName);
+    this._controls.editor.disabled = true;
+    var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);
+    Object.extend(options, {
+      parameters: 'editorId=' + encodeURIComponent(this.element.id),
+      onComplete: Prototype.emptyFunction,
+      onSuccess: function(transport) {
+        this._form.removeClassName(this.options.loadingClassName);
+        var text = transport.responseText;
+        if (this.options.stripLoadedTextTags)
+          text = text.stripTags();
+        this._controls.editor.value = text;
+        this._controls.editor.disabled = false;
+        this.postProcessEditField();
+      }.bind(this),
+      onFailure: this._boundFailureHandler
+    });
+    new Ajax.Request(this.options.loadTextURL, options);
+  },
+  postProcessEditField: function() {
+    var fpc = this.options.fieldPostCreation;
+    if (fpc)
+      $(this._controls.editor)['focus' == fpc ? 'focus' : 'activate']();
+  },
+  prepareOptions: function() {
+    this.options = Object.clone(Ajax.InPlaceEditor.DefaultOptions);
+    Object.extend(this.options, Ajax.InPlaceEditor.DefaultCallbacks);
+    [this._extraDefaultOptions].flatten().compact().each(function(defs) {
+      Object.extend(this.options, defs);
+    }.bind(this));
+  },
+  prepareSubmission: function() {
+    this._saving = true;
+    this.removeForm();
+    this.leaveHover();
+    this.showSaving();
+  },
+  registerListeners: function() {
+    this._listeners = { };
+    var listener;
+    $H(Ajax.InPlaceEditor.Listeners).each(function(pair) {
+      listener = this[pair.value].bind(this);
+      this._listeners[pair.key] = listener;
+      if (!this.options.externalControlOnly)
+        this.element.observe(pair.key, listener);
+      if (this.options.externalControl)
+        this.options.externalControl.observe(pair.key, listener);
+    }.bind(this));
+  },
+  removeForm: function() {
+    if (!this._form) return;
+    this._form.remove();
+    this._form = null;
+    this._controls = { };
+  },
+  showSaving: function() {
+    this._oldInnerHTML = this.element.innerHTML;
+    this.element.innerHTML = this.options.savingText;
+    this.element.addClassName(this.options.savingClassName);
+    this.element.style.backgroundColor = this._originalBackground;
+    this.element.show();
+  },
+  triggerCallback: function(cbName, arg) {
+    if ('function' == typeof this.options[cbName]) {
+      this.options[cbName](this, arg);
+    }
+  },
+  unregisterListeners: function() {
+    $H(this._listeners).each(function(pair) {
+      if (!this.options.externalControlOnly)
+        this.element.stopObserving(pair.key, pair.value);
+      if (this.options.externalControl)
+        this.options.externalControl.stopObserving(pair.key, pair.value);
+    }.bind(this));
+  },
+  wrapUp: function(transport) {
+    this.leaveEditMode();
+    // Can't use triggerCallback due to backward compatibility: requires
+    // binding + direct element
+    this._boundComplete(transport, this.element);
+  }
+});
+
+Object.extend(Ajax.InPlaceEditor.prototype, {
+  dispose: Ajax.InPlaceEditor.prototype.destroy
+});
+
+Ajax.InPlaceCollectionEditor = Class.create(Ajax.InPlaceEditor, {
+  initialize: function($super, element, url, options) {
+    this._extraDefaultOptions = Ajax.InPlaceCollectionEditor.DefaultOptions;
+    $super(element, url, options);
+  },
+
+  createEditField: function() {
+    var list = document.createElement('select');
+    list.name = this.options.paramName;
+    list.size = 1;
+    this._controls.editor = list;
+    this._collection = this.options.collection || [];
+    if (this.options.loadCollectionURL)
+      this.loadCollection();
+    else
+      this.checkForExternalText();
+    this._form.appendChild(this._controls.editor);
+  },
+
+  loadCollection: function() {
+    this._form.addClassName(this.options.loadingClassName);
+    this.showLoadingText(this.options.loadingCollectionText);
+    var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);
+    Object.extend(options, {
+      parameters: 'editorId=' + encodeURIComponent(this.element.id),
+      onComplete: Prototype.emptyFunction,
+      onSuccess: function(transport) {
+        var js = transport.responseText.strip();
+        if (!/^\[.*\]$/.test(js)) // TODO: improve sanity check
+          throw 'Server returned an invalid collection representation.';
+        this._collection = eval(js);
+        this.checkForExternalText();
+      }.bind(this),
+      onFailure: this.onFailure
+    });
+    new Ajax.Request(this.options.loadCollectionURL, options);
+  },
+
+  showLoadingText: function(text) {
+    this._controls.editor.disabled = true;
+    var tempOption = this._controls.editor.firstChild;
+    if (!tempOption) {
+      tempOption = document.createElement('option');
+      tempOption.value = '';
+      this._controls.editor.appendChild(tempOption);
+      tempOption.selected = true;
+    }
+    tempOption.update((text || '').stripScripts().stripTags());
+  },
+
+  checkForExternalText: function() {
+    this._text = this.getText();
+    if (this.options.loadTextURL)
+      this.loadExternalText();
+    else
+      this.buildOptionList();
+  },
+
+  loadExternalText: function() {
+    this.showLoadingText(this.options.loadingText);
+    var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);
+    Object.extend(options, {
+      parameters: 'editorId=' + encodeURIComponent(this.element.id),
+      onComplete: Prototype.emptyFunction,
+      onSuccess: function(transport) {
+        this._text = transport.responseText.strip();
+        this.buildOptionList();
+      }.bind(this),
+      onFailure: this.onFailure
+    });
+    new Ajax.Request(this.options.loadTextURL, options);
+  },
+
+  buildOptionList: function() {
+    this._form.removeClassName(this.options.loadingClassName);
+    this._collection = this._collection.map(function(entry) {
+      return 2 === entry.length ? entry : [entry, entry].flatten();
+    });
+    var marker = ('value' in this.options) ? this.options.value : this._text;
+    var textFound = this._collection.any(function(entry) {
+      return entry[0] == marker;
+    }.bind(this));
+    this._controls.editor.update('');
+    var option;
+    this._collection.each(function(entry, index) {
+      option = document.createElement('option');
+      option.value = entry[0];
+      option.selected = textFound ? entry[0] == marker : 0 == index;
+      option.appendChild(document.createTextNode(entry[1]));
+      this._controls.editor.appendChild(option);
+    }.bind(this));
+    this._controls.editor.disabled = false;
+    Field.scrollFreeActivate(this._controls.editor);
+  }
+});
+
+//**** DEPRECATION LAYER FOR InPlace[Collection]Editor! ****
+//**** This only  exists for a while,  in order to  let ****
+//**** users adapt to  the new API.  Read up on the new ****
+//**** API and convert your code to it ASAP!            ****
+
+Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions = function(options) {
+  if (!options) return;
+  function fallback(name, expr) {
+    if (name in options || expr === undefined) return;
+    options[name] = expr;
+  };
+  fallback('cancelControl', (options.cancelLink ? 'link' : (options.cancelButton ? 'button' :
+    options.cancelLink == options.cancelButton == false ? false : undefined)));
+  fallback('okControl', (options.okLink ? 'link' : (options.okButton ? 'button' :
+    options.okLink == options.okButton == false ? false : undefined)));
+  fallback('highlightColor', options.highlightcolor);
+  fallback('highlightEndColor', options.highlightendcolor);
+};
+
+Object.extend(Ajax.InPlaceEditor, {
+  DefaultOptions: {
+    ajaxOptions: { },
+    autoRows: 3,                                // Use when multi-line w/ rows == 1
+    cancelControl: 'link',                      // 'link'|'button'|false
+    cancelText: 'cancel',
+    clickToEditText: 'Click to edit',
+    externalControl: null,                      // id|elt
+    externalControlOnly: false,
+    fieldPostCreation: 'activate',              // 'activate'|'focus'|false
+    formClassName: 'inplaceeditor-form',
+    formId: null,                               // id|elt
+    highlightColor: '#ffff99',
+    highlightEndColor: '#ffffff',
+    hoverClassName: '',
+    htmlResponse: true,
+    loadingClassName: 'inplaceeditor-loading',
+    loadingText: 'Loading...',
+    okControl: 'button',                        // 'link'|'button'|false
+    okText: 'ok',
+    paramName: 'value',
+    rows: 1,                                    // If 1 and multi-line, uses autoRows
+    savingClassName: 'inplaceeditor-saving',
+    savingText: 'Saving...',
+    size: 0,
+    stripLoadedTextTags: false,
+    submitOnBlur: false,
+    textAfterControls: '',
+    textBeforeControls: '',
+    textBetweenControls: ''
+  },
+  DefaultCallbacks: {
+    callback: function(form) {
+      return Form.serialize(form);
+    },
+    onComplete: function(transport, element) {
+      // For backward compatibility, this one is bound to the IPE, and passes
+      // the element directly.  It was too often customized, so we don't break it.
+      new Effect.Highlight(element, {
+        startcolor: this.options.highlightColor, keepBackgroundImage: true });
+    },
+    onEnterEditMode: null,
+    onEnterHover: function(ipe) {
+      ipe.element.style.backgroundColor = ipe.options.highlightColor;
+      if (ipe._effect)
+        ipe._effect.cancel();
+    },
+    onFailure: function(transport, ipe) {
+      alert('Error communication with the server: ' + transport.responseText.stripTags());
+    },
+    onFormCustomization: null, // Takes the IPE and its generated form, after editor, before controls.
+    onLeaveEditMode: null,
+    onLeaveHover: function(ipe) {
+      ipe._effect = new Effect.Highlight(ipe.element, {
+        startcolor: ipe.options.highlightColor, endcolor: ipe.options.highlightEndColor,
+        restorecolor: ipe._originalBackground, keepBackgroundImage: true
+      });
+    }
+  },
+  Listeners: {
+    click: 'enterEditMode',
+    keydown: 'checkForEscapeOrReturn',
+    mouseover: 'enterHover',
+    mouseout: 'leaveHover'
+  }
+});
+
+Ajax.InPlaceCollectionEditor.DefaultOptions = {
+  loadingCollectionText: 'Loading options...'
+};
+
+// Delayed observer, like Form.Element.Observer, 
+// but waits for delay after last key input
+// Ideal for live-search fields
+
+Form.Element.DelayedObserver = Class.create({
+  initialize: function(element, delay, callback) {
+    this.delay     = delay || 0.5;
+    this.element   = $(element);
+    this.callback  = callback;
+    this.timer     = null;
+    this.lastValue = $F(this.element); 
+    Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this));
+  },
+  delayedListener: function(event) {
+    if(this.lastValue == $F(this.element)) return;
+    if(this.timer) clearTimeout(this.timer);
+    this.timer = setTimeout(this.onTimerEvent.bind(this), this.delay * 1000);
+    this.lastValue = $F(this.element);
+  },
+  onTimerEvent: function() {
+    this.timer = null;
+    this.callback(this.element, $F(this.element));
+  }
+});
Index: /ruby/tags/0.0.2/rails/cancerehr/public/javascripts/dragdrop.js
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/public/javascripts/dragdrop.js	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/public/javascripts/dragdrop.js	(revision 39)
@@ -0,0 +1,972 @@
+// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
+//           (c) 2005-2007 Sammi Williams (http://www.oriontransfer.co.nz, sammi@oriontransfer.co.nz)
+// 
+// script.aculo.us is freely distributable under the terms of an MIT-style license.
+// For details, see the script.aculo.us web site: http://script.aculo.us/
+
+if(Object.isUndefined(Effect))
+  throw("dragdrop.js requires including script.aculo.us' effects.js library");
+
+var Droppables = {
+  drops: [],
+
+  remove: function(element) {
+    this.drops = this.drops.reject(function(d) { return d.element==$(element) });
+  },
+
+  add: function(element) {
+    element = $(element);
+    var options = Object.extend({
+      greedy:     true,
+      hoverclass: null,
+      tree:       false
+    }, arguments[1] || { });
+
+    // cache containers
+    if(options.containment) {
+      options._containers = [];
+      var containment = options.containment;
+      if(Object.isArray(containment)) {
+        containment.each( function(c) { options._containers.push($(c)) });
+      } else {
+        options._containers.push($(containment));
+      }
+    }
+    
+    if(options.accept) options.accept = [options.accept].flatten();
+
+    Element.makePositioned(element); // fix IE
+    options.element = element;
+
+    this.drops.push(options);
+  },
+  
+  findDeepestChild: function(drops) {
+    deepest = drops[0];
+      
+    for (i = 1; i < drops.length; ++i)
+      if (Element.isParent(drops[i].element, deepest.element))
+        deepest = drops[i];
+    
+    return deepest;
+  },
+
+  isContained: function(element, drop) {
+    var containmentNode;
+    if(drop.tree) {
+      containmentNode = element.treeNode; 
+    } else {
+      containmentNode = element.parentNode;
+    }
+    return drop._containers.detect(function(c) { return containmentNode == c });
+  },
+  
+  isAffected: function(point, element, drop) {
+    return (
+      (drop.element!=element) &&
+      ((!drop._containers) ||
+        this.isContained(element, drop)) &&
+      ((!drop.accept) ||
+        (Element.classNames(element).detect( 
+          function(v) { return drop.accept.include(v) } ) )) &&
+      Position.within(drop.element, point[0], point[1]) );
+  },
+
+  deactivate: function(drop) {
+    if(drop.hoverclass)
+      Element.removeClassName(drop.element, drop.hoverclass);
+    this.last_active = null;
+  },
+
+  activate: function(drop) {
+    if(drop.hoverclass)
+      Element.addClassName(drop.element, drop.hoverclass);
+    this.last_active = drop;
+  },
+
+  show: function(point, element) {
+    if(!this.drops.length) return;
+    var drop, affected = [];
+    
+    this.drops.each( function(drop) {
+      if(Droppables.isAffected(point, element, drop))
+        affected.push(drop);
+    });
+        
+    if(affected.length>0)
+      drop = Droppables.findDeepestChild(affected);
+
+    if(this.last_active && this.last_active != drop) this.deactivate(this.last_active);
+    if (drop) {
+      Position.within(drop.element, point[0], point[1]);
+      if(drop.onHover)
+        drop.onHover(element, drop.element, Position.overlap(drop.overlap, drop.element));
+      
+      if (drop != this.last_active) Droppables.activate(drop);
+    }
+  },
+
+  fire: function(event, element) {
+    if(!this.last_active) return;
+    Position.prepare();
+
+    if (this.isAffected([Event.pointerX(event), Event.pointerY(event)], element, this.last_active))
+      if (this.last_active.onDrop) {
+        this.last_active.onDrop(element, this.last_active.element, event); 
+        return true; 
+      }
+  },
+
+  reset: function() {
+    if(this.last_active)
+      this.deactivate(this.last_active);
+  }
+}
+
+var Draggables = {
+  drags: [],
+  observers: [],
+  
+  register: function(draggable) {
+    if(this.drags.length == 0) {
+      this.eventMouseUp   = this.endDrag.bindAsEventListener(this);
+      this.eventMouseMove = this.updateDrag.bindAsEventListener(this);
+      this.eventKeypress  = this.keyPress.bindAsEventListener(this);
+      
+      Event.observe(document, "mouseup", this.eventMouseUp);
+      Event.observe(document, "mousemove", this.eventMouseMove);
+      Event.observe(document, "keypress", this.eventKeypress);
+    }
+    this.drags.push(draggable);
+  },
+  
+  unregister: function(draggable) {
+    this.drags = this.drags.reject(function(d) { return d==draggable });
+    if(this.drags.length == 0) {
+      Event.stopObserving(document, "mouseup", this.eventMouseUp);
+      Event.stopObserving(document, "mousemove", this.eventMouseMove);
+      Event.stopObserving(document, "keypress", this.eventKeypress);
+    }
+  },
+  
+  activate: function(draggable) {
+    if(draggable.options.delay) { 
+      this._timeout = setTimeout(function() { 
+        Draggables._timeout = null; 
+        window.focus(); 
+        Draggables.activeDraggable = draggable; 
+      }.bind(this), draggable.options.delay); 
+    } else {
+      window.focus(); // allows keypress events if window isn't currently focused, fails for Safari
+      this.activeDraggable = draggable;
+    }
+  },
+  
+  deactivate: function() {
+    this.activeDraggable = null;
+  },
+  
+  updateDrag: function(event) {
+    if(!this.activeDraggable) return;
+    var pointer = [Event.pointerX(event), Event.pointerY(event)];
+    // Mozilla-based browsers fire successive mousemove events with
+    // the same coordinates, prevent needless redrawing (moz bug?)
+    if(this._lastPointer && (this._lastPointer.inspect() == pointer.inspect())) return;
+    this._lastPointer = pointer;
+    
+    this.activeDraggable.updateDrag(event, pointer);
+  },
+  
+  endDrag: function(event) {
+    if(this._timeout) { 
+      clearTimeout(this._timeout); 
+      this._timeout = null; 
+    }
+    if(!this.activeDraggable) return;
+    this._lastPointer = null;
+    this.activeDraggable.endDrag(event);
+    this.activeDraggable = null;
+  },
+  
+  keyPress: function(event) {
+    if(this.activeDraggable)
+      this.activeDraggable.keyPress(event);
+  },
+  
+  addObserver: function(observer) {
+    this.observers.push(observer);
+    this._cacheObserverCallbacks();
+  },
+  
+  removeObserver: function(element) {  // element instead of observer fixes mem leaks
+    this.observers = this.observers.reject( function(o) { return o.element==element });
+    this._cacheObserverCallbacks();
+  },
+  
+  notify: function(eventName, draggable, event) {  // 'onStart', 'onEnd', 'onDrag'
+    if(this[eventName+'Count'] > 0)
+      this.observers.each( function(o) {
+        if(o[eventName]) o[eventName](eventName, draggable, event);
+      });
+    if(draggable.options[eventName]) draggable.options[eventName](draggable, event);
+  },
+  
+  _cacheObserverCallbacks: function() {
+    ['onStart','onEnd','onDrag'].each( function(eventName) {
+      Draggables[eventName+'Count'] = Draggables.observers.select(
+        function(o) { return o[eventName]; }
+      ).length;
+    });
+  }
+}
+
+/*--------------------------------------------------------------------------*/
+
+var Draggable = Class.create({
+  initialize: function(element) {
+    var defaults = {
+      handle: false,
+      reverteffect: function(element, top_offset, left_offset) {
+        var dur = Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02;
+        new Effect.Move(element, { x: -left_offset, y: -top_offset, duration: dur,
+          queue: {scope:'_draggable', position:'end'}
+        });
+      },
+      endeffect: function(element) {
+        var toOpacity = Object.isNumber(element._opacity) ? element._opacity : 1.0;
+        new Effect.Opacity(element, {duration:0.2, from:0.7, to:toOpacity, 
+          queue: {scope:'_draggable', position:'end'},
+          afterFinish: function(){ 
+            Draggable._dragging[element] = false 
+          }
+        }); 
+      },
+      zindex: 1000,
+      revert: false,
+      quiet: false,
+      scroll: false,
+      scrollSensitivity: 20,
+      scrollSpeed: 15,
+      snap: false,  // false, or xy or [x,y] or function(x,y){ return [x,y] }
+      delay: 0
+    };
+    
+    if(!arguments[1] || Object.isUndefined(arguments[1].endeffect))
+      Object.extend(defaults, {
+        starteffect: function(element) {
+          element._opacity = Element.getOpacity(element);
+          Draggable._dragging[element] = true;
+          new Effect.Opacity(element, {duration:0.2, from:element._opacity, to:0.7}); 
+        }
+      });
+    
+    var options = Object.extend(defaults, arguments[1] || { });
+
+    this.element = $(element);
+    
+    if(options.handle && Object.isString(options.handle))
+      this.handle = this.element.down('.'+options.handle, 0);
+    
+    if(!this.handle) this.handle = $(options.handle);
+    if(!this.handle) this.handle = this.element;
+    
+    if(options.scroll && !options.scroll.scrollTo && !options.scroll.outerHTML) {
+      options.scroll = $(options.scroll);
+      this._isScrollChild = Element.childOf(this.element, options.scroll);
+    }
+
+    Element.makePositioned(this.element); // fix IE    
+
+    this.options  = options;
+    this.dragging = false;   
+
+    this.eventMouseDown = this.initDrag.bindAsEventListener(this);
+    Event.observe(this.handle, "mousedown", this.eventMouseDown);
+    
+    Draggables.register(this);
+  },
+  
+  destroy: function() {
+    Event.stopObserving(this.handle, "mousedown", this.eventMouseDown);
+    Draggables.unregister(this);
+  },
+  
+  currentDelta: function() {
+    return([
+      parseInt(Element.getStyle(this.element,'left') || '0'),
+      parseInt(Element.getStyle(this.element,'top') || '0')]);
+  },
+  
+  initDrag: function(event) {
+    if(!Object.isUndefined(Draggable._dragging[this.element]) &&
+      Draggable._dragging[this.element]) return;
+    if(Event.isLeftClick(event)) {    
+      // abort on form elements, fixes a Firefox issue
+      var src = Event.element(event);
+      if((tag_name = src.tagName.toUpperCase()) && (
+        tag_name=='INPUT' ||
+        tag_name=='SELECT' ||
+        tag_name=='OPTION' ||
+        tag_name=='BUTTON' ||
+        tag_name=='TEXTAREA')) return;
+        
+      var pointer = [Event.pointerX(event), Event.pointerY(event)];
+      var pos     = Position.cumulativeOffset(this.element);
+      this.offset = [0,1].map( function(i) { return (pointer[i] - pos[i]) });
+      
+      Draggables.activate(this);
+      Event.stop(event);
+    }
+  },
+  
+  startDrag: function(event) {
+    this.dragging = true;
+    if(!this.delta)
+      this.delta = this.currentDelta();
+    
+    if(this.options.zindex) {
+      this.originalZ = parseInt(Element.getStyle(this.element,'z-index') || 0);
+      this.element.style.zIndex = this.options.zindex;
+    }
+    
+    if(this.options.ghosting) {
+      this._clone = this.element.cloneNode(true);
+      this.element._originallyAbsolute = (this.element.getStyle('position') == 'absolute');
+      if (!this.element._originallyAbsolute)
+        Position.absolutize(this.element);
+      this.element.parentNode.insertBefore(this._clone, this.element);
+    }
+    
+    if(this.options.scroll) {
+      if (this.options.scroll == window) {
+        var where = this._getWindowScroll(this.options.scroll);
+        this.originalScrollLeft = where.left;
+        this.originalScrollTop = where.top;
+      } else {
+        this.originalScrollLeft = this.options.scroll.scrollLeft;
+        this.originalScrollTop = this.options.scroll.scrollTop;
+      }
+    }
+    
+    Draggables.notify('onStart', this, event);
+        
+    if(this.options.starteffect) this.options.starteffect(this.element);
+  },
+  
+  updateDrag: function(event, pointer) {
+    if(!this.dragging) this.startDrag(event);
+    
+    if(!this.options.quiet){
+      Position.prepare();
+      Droppables.show(pointer, this.element);
+    }
+    
+    Draggables.notify('onDrag', this, event);
+    
+    this.draw(pointer);
+    if(this.options.change) this.options.change(this);
+    
+    if(this.options.scroll) {
+      this.stopScrolling();
+      
+      var p;
+      if (this.options.scroll == window) {
+        with(this._getWindowScroll(this.options.scroll)) { p = [ left, top, left+width, top+height ]; }
+      } else {
+        p = Position.page(this.options.scroll);
+        p[0] += this.options.scroll.scrollLeft + Position.deltaX;
+        p[1] += this.options.scroll.scrollTop + Position.deltaY;
+        p.push(p[0]+this.options.scroll.offsetWidth);
+        p.push(p[1]+this.options.scroll.offsetHeight);
+      }
+      var speed = [0,0];
+      if(pointer[0] < (p[0]+this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[0]+this.options.scrollSensitivity);
+      if(pointer[1] < (p[1]+this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[1]+this.options.scrollSensitivity);
+      if(pointer[0] > (p[2]-this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[2]-this.options.scrollSensitivity);
+      if(pointer[1] > (p[3]-this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[3]-this.options.scrollSensitivity);
+      this.startScrolling(speed);
+    }
+    
+    // fix AppleWebKit rendering
+    if(Prototype.Browser.WebKit) window.scrollBy(0,0);
+    
+    Event.stop(event);
+  },
+  
+  finishDrag: function(event, success) {
+    this.dragging = false;
+    
+    if(this.options.quiet){
+      Position.prepare();
+      var pointer = [Event.pointerX(event), Event.pointerY(event)];
+      Droppables.show(pointer, this.element);
+    }
+
+    if(this.options.ghosting) {
+      if (!this.element._originallyAbsolute)
+        Position.relativize(this.element);
+      delete this.element._originallyAbsolute;
+      Element.remove(this._clone);
+      this._clone = null;
+    }
+
+    var dropped = false; 
+    if(success) { 
+      dropped = Droppables.fire(event, this.element); 
+      if (!dropped) dropped = false; 
+    }
+    if(dropped && this.options.onDropped) this.options.onDropped(this.element);
+    Draggables.notify('onEnd', this, event);
+
+    var revert = this.options.revert;
+    if(revert && Object.isFunction(revert)) revert = revert(this.element);
+    
+    var d = this.currentDelta();
+    if(revert && this.options.reverteffect) {
+      if (dropped == 0 || revert != 'failure')
+        this.options.reverteffect(this.element,
+          d[1]-this.delta[1], d[0]-this.delta[0]);
+    } else {
+      this.delta = d;
+    }
+
+    if(this.options.zindex)
+      this.element.style.zIndex = this.originalZ;
+
+    if(this.options.endeffect) 
+      this.options.endeffect(this.element);
+      
+    Draggables.deactivate(this);
+    Droppables.reset();
+  },
+  
+  keyPress: function(event) {
+    if(event.keyCode!=Event.KEY_ESC) return;
+    this.finishDrag(event, false);
+    Event.stop(event);
+  },
+  
+  endDrag: function(event) {
+    if(!this.dragging) return;
+    this.stopScrolling();
+    this.finishDrag(event, true);
+    Event.stop(event);
+  },
+  
+  draw: function(point) {
+    var pos = Position.cumulativeOffset(this.element);
+    if(this.options.ghosting) {
+      var r   = Position.realOffset(this.element);
+      pos[0] += r[0] - Position.deltaX; pos[1] += r[1] - Position.deltaY;
+    }
+    
+    var d = this.currentDelta();
+    pos[0] -= d[0]; pos[1] -= d[1];
+    
+    if(this.options.scroll && (this.options.scroll != window && this._isScrollChild)) {
+      pos[0] -= this.options.scroll.scrollLeft-this.originalScrollLeft;
+      pos[1] -= this.options.scroll.scrollTop-this.originalScrollTop;
+    }
+    
+    var p = [0,1].map(function(i){ 
+      return (point[i]-pos[i]-this.offset[i]) 
+    }.bind(this));
+    
+    if(this.options.snap) {
+      if(Object.isFunction(this.options.snap)) {
+        p = this.options.snap(p[0],p[1],this);
+      } else {
+      if(Object.isArray(this.options.snap)) {
+        p = p.map( function(v, i) {
+          return (v/this.options.snap[i]).round()*this.options.snap[i] }.bind(this))
+      } else {
+        p = p.map( function(v) {
+          return (v/this.options.snap).round()*this.options.snap }.bind(this))
+      }
+    }}
+    
+    var style = this.element.style;
+    if((!this.options.constraint) || (this.options.constraint=='horizontal'))
+      style.left = p[0] + "px";
+    if((!this.options.constraint) || (this.options.constraint=='vertical'))
+      style.top  = p[1] + "px";
+    
+    if(style.visibility=="hidden") style.visibility = ""; // fix gecko rendering
+  },
+  
+  stopScrolling: function() {
+    if(this.scrollInterval) {
+      clearInterval(this.scrollInterval);
+      this.scrollInterval = null;
+      Draggables._lastScrollPointer = null;
+    }
+  },
+  
+  startScrolling: function(speed) {
+    if(!(speed[0] || speed[1])) return;
+    this.scrollSpeed = [speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed];
+    this.lastScrolled = new Date();
+    this.scrollInterval = setInterval(this.scroll.bind(this), 10);
+  },
+  
+  scroll: function() {
+    var current = new Date();
+    var delta = current - this.lastScrolled;
+    this.lastScrolled = current;
+    if(this.options.scroll == window) {
+      with (this._getWindowScroll(this.options.scroll)) {
+        if (this.scrollSpeed[0] || this.scrollSpeed[1]) {
+          var d = delta / 1000;
+          this.options.scroll.scrollTo( left + d*this.scrollSpeed[0], top + d*this.scrollSpeed[1] );
+        }
+      }
+    } else {
+      this.options.scroll.scrollLeft += this.scrollSpeed[0] * delta / 1000;
+      this.options.scroll.scrollTop  += this.scrollSpeed[1] * delta / 1000;
+    }
+    
+    Position.prepare();
+    Droppables.show(Draggables._lastPointer, this.element);
+    Draggables.notify('onDrag', this);
+    if (this._isScrollChild) {
+      Draggables._lastScrollPointer = Draggables._lastScrollPointer || $A(Draggables._lastPointer);
+      Draggables._lastScrollPointer[0] += this.scrollSpeed[0] * delta / 1000;
+      Draggables._lastScrollPointer[1] += this.scrollSpeed[1] * delta / 1000;
+      if (Draggables._lastScrollPointer[0] < 0)
+        Draggables._lastScrollPointer[0] = 0;
+      if (Draggables._lastScrollPointer[1] < 0)
+        Draggables._lastScrollPointer[1] = 0;
+      this.draw(Draggables._lastScrollPointer);
+    }
+    
+    if(this.options.change) this.options.change(this);
+  },
+  
+  _getWindowScroll: function(w) {
+    var T, L, W, H;
+    with (w.document) {
+      if (w.document.documentElement && documentElement.scrollTop) {
+        T = documentElement.scrollTop;
+        L = documentElement.scrollLeft;
+      } else if (w.document.body) {
+        T = body.scrollTop;
+        L = body.scrollLeft;
+      }
+      if (w.innerWidth) {
+        W = w.innerWidth;
+        H = w.innerHeight;
+      } else if (w.document.documentElement && documentElement.clientWidth) {
+        W = documentElement.clientWidth;
+        H = documentElement.clientHeight;
+      } else {
+        W = body.offsetWidth;
+        H = body.offsetHeight
+      }
+    }
+    return { top: T, left: L, width: W, height: H };
+  }
+});
+
+Draggable._dragging = { };
+
+/*--------------------------------------------------------------------------*/
+
+var SortableObserver = Class.create({
+  initialize: function(element, observer) {
+    this.element   = $(element);
+    this.observer  = observer;
+    this.lastValue = Sortable.serialize(this.element);
+  },
+  
+  onStart: function() {
+    this.lastValue = Sortable.serialize(this.element);
+  },
+  
+  onEnd: function() {
+    Sortable.unmark();
+    if(this.lastValue != Sortable.serialize(this.element))
+      this.observer(this.element)
+  }
+});
+
+var Sortable = {
+  SERIALIZE_RULE: /^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/,
+  
+  sortables: { },
+  
+  _findRootElement: function(element) {
+    while (element.tagName.toUpperCase() != "BODY") {  
+      if(element.id && Sortable.sortables[element.id]) return element;
+      element = element.parentNode;
+    }
+  },
+
+  options: function(element) {
+    element = Sortable._findRootElement($(element));
+    if(!element) return;
+    return Sortable.sortables[element.id];
+  },
+  
+  destroy: function(element){
+    var s = Sortable.options(element);
+    
+    if(s) {
+      Draggables.removeObserver(s.element);
+      s.droppables.each(function(d){ Droppables.remove(d) });
+      s.draggables.invoke('destroy');
+      
+      delete Sortable.sortables[s.element.id];
+    }
+  },
+
+  create: function(element) {
+    element = $(element);
+    var options = Object.extend({ 
+      element:     element,
+      tag:         'li',       // assumes li children, override with tag: 'tagname'
+      dropOnEmpty: false,
+      tree:        false,
+      treeTag:     'ul',
+      overlap:     'vertical', // one of 'vertical', 'horizontal'
+      constraint:  'vertical', // one of 'vertical', 'horizontal', false
+      containment: element,    // also takes array of elements (or id's); or false
+      handle:      false,      // or a CSS class
+      only:        false,
+      delay:       0,
+      hoverclass:  null,
+      ghosting:    false,
+      quiet:       false, 
+      scroll:      false,
+      scrollSensitivity: 20,
+      scrollSpeed: 15,
+      format:      this.SERIALIZE_RULE,
+      
+      // these take arrays of elements or ids and can be 
+      // used for better initialization performance
+      elements:    false,
+      handles:     false,
+      
+      onChange:    Prototype.emptyFunction,
+      onUpdate:    Prototype.emptyFunction
+    }, arguments[1] || { });
+
+    // clear any old sortable with same element
+    this.destroy(element);
+
+    // build options for the draggables
+    var options_for_draggable = {
+      revert:      true,
+      quiet:       options.quiet,
+      scroll:      options.scroll,
+      scrollSpeed: options.scrollSpeed,
+      scrollSensitivity: options.scrollSensitivity,
+      delay:       options.delay,
+      ghosting:    options.ghosting,
+      constraint:  options.constraint,
+      handle:      options.handle };
+
+    if(options.starteffect)
+      options_for_draggable.starteffect = options.starteffect;
+
+    if(options.reverteffect)
+      options_for_draggable.reverteffect = options.reverteffect;
+    else
+      if(options.ghosting) options_for_draggable.reverteffect = function(element) {
+        element.style.top  = 0;
+        element.style.left = 0;
+      };
+
+    if(options.endeffect)
+      options_for_draggable.endeffect = options.endeffect;
+
+    if(options.zindex)
+      options_for_draggable.zindex = options.zindex;
+
+    // build options for the droppables  
+    var options_for_droppable = {
+      overlap:     options.overlap,
+      containment: options.containment,
+      tree:        options.tree,
+      hoverclass:  options.hoverclass,
+      onHover:     Sortable.onHover
+    }
+    
+    var options_for_tree = {
+      onHover:      Sortable.onEmptyHover,
+      overlap:      options.overlap,
+      containment:  options.containment,
+      hoverclass:   options.hoverclass
+    }
+
+    // fix for gecko engine
+    Element.cleanWhitespace(element); 
+
+    options.draggables = [];
+    options.droppables = [];
+
+    // drop on empty handling
+    if(options.dropOnEmpty || options.tree) {
+      Droppables.add(element, options_for_tree);
+      options.droppables.push(element);
+    }
+
+    (options.elements || this.findElements(element, options) || []).each( function(e,i) {
+      var handle = options.handles ? $(options.handles[i]) :
+        (options.handle ? $(e).select('.' + options.handle)[0] : e); 
+      options.draggables.push(
+        new Draggable(e, Object.extend(options_for_draggable, { handle: handle })));
+      Droppables.add(e, options_for_droppable);
+      if(options.tree) e.treeNode = element;
+      options.droppables.push(e);      
+    });
+    
+    if(options.tree) {
+      (Sortable.findTreeElements(element, options) || []).each( function(e) {
+        Droppables.add(e, options_for_tree);
+        e.treeNode = element;
+        options.droppables.push(e);
+      });
+    }
+
+    // keep reference
+    this.sortables[element.id] = options;
+
+    // for onupdate
+    Draggables.addObserver(new SortableObserver(element, options.onUpdate));
+
+  },
+
+  // return all suitable-for-sortable elements in a guaranteed order
+  findElements: function(element, options) {
+    return Element.findChildren(
+      element, options.only, options.tree ? true : false, options.tag);
+  },
+  
+  findTreeElements: function(element, options) {
+    return Element.findChildren(
+      element, options.only, options.tree ? true : false, options.treeTag);
+  },
+
+  onHover: function(element, dropon, overlap) {
+    if(Element.isParent(dropon, element)) return;
+
+    if(overlap > .33 && overlap < .66 && Sortable.options(dropon).tree) {
+      return;
+    } else if(overlap>0.5) {
+      Sortable.mark(dropon, 'before');
+      if(dropon.previousSibling != element) {
+        var oldParentNode = element.parentNode;
+        element.style.visibility = "hidden"; // fix gecko rendering
+        dropon.parentNode.insertBefore(element, dropon);
+        if(dropon.parentNode!=oldParentNode) 
+          Sortable.options(oldParentNode).onChange(element);
+        Sortable.options(dropon.parentNode).onChange(element);
+      }
+    } else {
+      Sortable.mark(dropon, 'after');
+      var nextElement = dropon.nextSibling || null;
+      if(nextElement != element) {
+        var oldParentNode = element.parentNode;
+        element.style.visibility = "hidden"; // fix gecko rendering
+        dropon.parentNode.insertBefore(element, nextElement);
+        if(dropon.parentNode!=oldParentNode) 
+          Sortable.options(oldParentNode).onChange(element);
+        Sortable.options(dropon.parentNode).onChange(element);
+      }
+    }
+  },
+  
+  onEmptyHover: function(element, dropon, overlap) {
+    var oldParentNode = element.parentNode;
+    var droponOptions = Sortable.options(dropon);
+        
+    if(!Element.isParent(dropon, element)) {
+      var index;
+      
+      var children = Sortable.findElements(dropon, {tag: droponOptions.tag, only: droponOptions.only});
+      var child = null;
+            
+      if(children) {
+        var offset = Element.offsetSize(dropon, droponOptions.overlap) * (1.0 - overlap);
+        
+        for (index = 0; index < children.length; index += 1) {
+          if (offset - Element.offsetSize (children[index], droponOptions.overlap) >= 0) {
+            offset -= Element.offsetSize (children[index], droponOptions.overlap);
+          } else if (offset - (Element.offsetSize (children[index], droponOptions.overlap) / 2) >= 0) {
+            child = index + 1 < children.length ? children[index + 1] : null;
+            break;
+          } else {
+            child = children[index];
+            break;
+          }
+        }
+      }
+      
+      dropon.insertBefore(element, child);
+      
+      Sortable.options(oldParentNode).onChange(element);
+      droponOptions.onChange(element);
+    }
+  },
+
+  unmark: function() {
+    if(Sortable._marker) Sortable._marker.hide();
+  },
+
+  mark: function(dropon, position) {
+    // mark on ghosting only
+    var sortable = Sortable.options(dropon.parentNode);
+    if(sortable && !sortable.ghosting) return; 
+
+    if(!Sortable._marker) {
+      Sortable._marker = 
+        ($('dropmarker') || Element.extend(document.createElement('DIV'))).
+          hide().addClassName('dropmarker').setStyle({position:'absolute'});
+      document.getElementsByTagName("body").item(0).appendChild(Sortable._marker);
+    }    
+    var offsets = Position.cumulativeOffset(dropon);
+    Sortable._marker.setStyle({left: offsets[0]+'px', top: offsets[1] + 'px'});
+    
+    if(position=='after')
+      if(sortable.overlap == 'horizontal') 
+        Sortable._marker.setStyle({left: (offsets[0]+dropon.clientWidth) + 'px'});
+      else
+        Sortable._marker.setStyle({top: (offsets[1]+dropon.clientHeight) + 'px'});
+    
+    Sortable._marker.show();
+  },
+  
+  _tree: function(element, options, parent) {
+    var children = Sortable.findElements(element, options) || [];
+  
+    for (var i = 0; i < children.length; ++i) {
+      var match = children[i].id.match(options.format);
+
+      if (!match) continue;
+      
+      var child = {
+        id: encodeURIComponent(match ? match[1] : null),
+        element: element,
+        parent: parent,
+        children: [],
+        position: parent.children.length,
+        container: $(children[i]).down(options.treeTag)
+      }
+      
+      /* Get the element containing the children and recurse over it */
+      if (child.container)
+        this._tree(child.container, options, child)
+      
+      parent.children.push (child);
+    }
+
+    return parent; 
+  },
+
+  tree: function(element) {
+    element = $(element);
+    var sortableOptions = this.options(element);
+    var options = Object.extend({
+      tag: sortableOptions.tag,
+      treeTag: sortableOptions.treeTag,
+      only: sortableOptions.only,
+      name: element.id,
+      format: sortableOptions.format
+    }, arguments[1] || { });
+    
+    var root = {
+      id: null,
+      parent: null,
+      children: [],
+      container: element,
+      position: 0
+    }
+    
+    return Sortable._tree(element, options, root);
+  },
+
+  /* Construct a [i] index for a particular node */
+  _constructIndex: function(node) {
+    var index = '';
+    do {
+      if (node.id) index = '[' + node.position + ']' + index;
+    } while ((node = node.parent) != null);
+    return index;
+  },
+
+  sequence: function(element) {
+    element = $(element);
+    var options = Object.extend(this.options(element), arguments[1] || { });
+    
+    return $(this.findElements(element, options) || []).map( function(item) {
+      return item.id.match(options.format) ? item.id.match(options.format)[1] : '';
+    });
+  },
+
+  setSequence: function(element, new_sequence) {
+    element = $(element);
+    var options = Object.extend(this.options(element), arguments[2] || { });
+    
+    var nodeMap = { };
+    this.findElements(element, options).each( function(n) {
+        if (n.id.match(options.format))
+            nodeMap[n.id.match(options.format)[1]] = [n, n.parentNode];
+        n.parentNode.removeChild(n);
+    });
+   
+    new_sequence.each(function(ident) {
+      var n = nodeMap[ident];
+      if (n) {
+        n[1].appendChild(n[0]);
+        delete nodeMap[ident];
+      }
+    });
+  },
+  
+  serialize: function(element) {
+    element = $(element);
+    var options = Object.extend(Sortable.options(element), arguments[1] || { });
+    var name = encodeURIComponent(
+      (arguments[1] && arguments[1].name) ? arguments[1].name : element.id);
+    
+    if (options.tree) {
+      return Sortable.tree(element, arguments[1]).children.map( function (item) {
+        return [name + Sortable._constructIndex(item) + "[id]=" + 
+                encodeURIComponent(item.id)].concat(item.children.map(arguments.callee));
+      }).flatten().join('&');
+    } else {
+      return Sortable.sequence(element, arguments[1]).map( function(item) {
+        return name + "[]=" + encodeURIComponent(item);
+      }).join('&');
+    }
+  }
+}
+
+// Returns true if child is contained within element
+Element.isParent = function(child, element) {
+  if (!child.parentNode || child == element) return false;
+  if (child.parentNode == element) return true;
+  return Element.isParent(child.parentNode, element);
+}
+
+Element.findChildren = function(element, only, recursive, tagName) {   
+  if(!element.hasChildNodes()) return null;
+  tagName = tagName.toUpperCase();
+  if(only) only = [only].flatten();
+  var elements = [];
+  $A(element.childNodes).each( function(e) {
+    if(e.tagName && e.tagName.toUpperCase()==tagName &&
+      (!only || (Element.classNames(e).detect(function(v) { return only.include(v) }))))
+        elements.push(e);
+    if(recursive) {
+      var grandchildren = Element.findChildren(e, only, recursive, tagName);
+      if(grandchildren) elements.push(grandchildren);
+    }
+  });
+
+  return (elements.length>0 ? elements.flatten() : []);
+}
+
+Element.offsetSize = function (element, type) {
+  return element['offset' + ((type=='vertical' || type=='height') ? 'Height' : 'Width')];
+}
Index: /ruby/tags/0.0.2/rails/cancerehr/public/javascripts/effects.js
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/public/javascripts/effects.js	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/public/javascripts/effects.js	(revision 39)
@@ -0,0 +1,1120 @@
+// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
+// Contributors:
+//  Justin Palmer (http://encytemedia.com/)
+//  Mark Pilgrim (http://diveintomark.org/)
+//  Martin Bialasinki
+// 
+// script.aculo.us is freely distributable under the terms of an MIT-style license.
+// For details, see the script.aculo.us web site: http://script.aculo.us/ 
+
+// converts rgb() and #xxx to #xxxxxx format,  
+// returns self (or first argument) if not convertable  
+String.prototype.parseColor = function() {  
+  var color = '#';
+  if (this.slice(0,4) == 'rgb(') {  
+    var cols = this.slice(4,this.length-1).split(',');  
+    var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3);  
+  } else {  
+    if (this.slice(0,1) == '#') {  
+      if (this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase();  
+      if (this.length==7) color = this.toLowerCase();  
+    }  
+  }  
+  return (color.length==7 ? color : (arguments[0] || this));  
+};
+
+/*--------------------------------------------------------------------------*/
+
+Element.collectTextNodes = function(element) {  
+  return $A($(element).childNodes).collect( function(node) {
+    return (node.nodeType==3 ? node.nodeValue : 
+      (node.hasChildNodes() ? Element.collectTextNodes(node) : ''));
+  }).flatten().join('');
+};
+
+Element.collectTextNodesIgnoreClass = function(element, className) {  
+  return $A($(element).childNodes).collect( function(node) {
+    return (node.nodeType==3 ? node.nodeValue : 
+      ((node.hasChildNodes() && !Element.hasClassName(node,className)) ? 
+        Element.collectTextNodesIgnoreClass(node, className) : ''));
+  }).flatten().join('');
+};
+
+Element.setContentZoom = function(element, percent) {
+  element = $(element);  
+  element.setStyle({fontSize: (percent/100) + 'em'});   
+  if (Prototype.Browser.WebKit) window.scrollBy(0,0);
+  return element;
+};
+
+Element.getInlineOpacity = function(element){
+  return $(element).style.opacity || '';
+};
+
+Element.forceRerendering = function(element) {
+  try {
+    element = $(element);
+    var n = document.createTextNode(' ');
+    element.appendChild(n);
+    element.removeChild(n);
+  } catch(e) { }
+};
+
+/*--------------------------------------------------------------------------*/
+
+var Effect = {
+  _elementDoesNotExistError: {
+    name: 'ElementDoesNotExistError',
+    message: 'The specified DOM element does not exist, but is required for this effect to operate'
+  },
+  Transitions: {
+    linear: Prototype.K,
+    sinoidal: function(pos) {
+      return (-Math.cos(pos*Math.PI)/2) + 0.5;
+    },
+    reverse: function(pos) {
+      return 1-pos;
+    },
+    flicker: function(pos) {
+      var pos = ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random()/4;
+      return pos > 1 ? 1 : pos;
+    },
+    wobble: function(pos) {
+      return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5;
+    },
+    pulse: function(pos, pulses) { 
+      pulses = pulses || 5; 
+      return (
+        ((pos % (1/pulses)) * pulses).round() == 0 ? 
+              ((pos * pulses * 2) - (pos * pulses * 2).floor()) : 
+          1 - ((pos * pulses * 2) - (pos * pulses * 2).floor())
+        );
+    },
+    spring: function(pos) { 
+      return 1 - (Math.cos(pos * 4.5 * Math.PI) * Math.exp(-pos * 6)); 
+    },
+    none: function(pos) {
+      return 0;
+    },
+    full: function(pos) {
+      return 1;
+    }
+  },
+  DefaultOptions: {
+    duration:   1.0,   // seconds
+    fps:        100,   // 100= assume 66fps max.
+    sync:       false, // true for combining
+    from:       0.0,
+    to:         1.0,
+    delay:      0.0,
+    queue:      'parallel'
+  },
+  tagifyText: function(element) {
+    var tagifyStyle = 'position:relative';
+    if (Prototype.Browser.IE) tagifyStyle += ';zoom:1';
+    
+    element = $(element);
+    $A(element.childNodes).each( function(child) {
+      if (child.nodeType==3) {
+        child.nodeValue.toArray().each( function(character) {
+          element.insertBefore(
+            new Element('span', {style: tagifyStyle}).update(
+              character == ' ' ? String.fromCharCode(160) : character), 
+              child);
+        });
+        Element.remove(child);
+      }
+    });
+  },
+  multiple: function(element, effect) {
+    var elements;
+    if (((typeof element == 'object') || 
+        Object.isFunction(element)) && 
+       (element.length))
+      elements = element;
+    else
+      elements = $(element).childNodes;
+      
+    var options = Object.extend({
+      speed: 0.1,
+      delay: 0.0
+    }, arguments[2] || { });
+    var masterDelay = options.delay;
+
+    $A(elements).each( function(element, index) {
+      new effect(element, Object.extend(options, { delay: index * options.speed + masterDelay }));
+    });
+  },
+  PAIRS: {
+    'slide':  ['SlideDown','SlideUp'],
+    'blind':  ['BlindDown','BlindUp'],
+    'appear': ['Appear','Fade']
+  },
+  toggle: function(element, effect) {
+    element = $(element);
+    effect = (effect || 'appear').toLowerCase();
+    var options = Object.extend({
+      queue: { position:'end', scope:(element.id || 'global'), limit: 1 }
+    }, arguments[2] || { });
+    Effect[element.visible() ? 
+      Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, options);
+  }
+};
+
+Effect.DefaultOptions.transition = Effect.Transitions.sinoidal;
+
+/* ------------- core effects ------------- */
+
+Effect.ScopedQueue = Class.create(Enumerable, {
+  initialize: function() {
+    this.effects  = [];
+    this.interval = null;    
+  },
+  _each: function(iterator) {
+    this.effects._each(iterator);
+  },
+  add: function(effect) {
+    var timestamp = new Date().getTime();
+    
+    var position = Object.isString(effect.options.queue) ? 
+      effect.options.queue : effect.options.queue.position;
+    
+    switch(position) {
+      case 'front':
+        // move unstarted effects after this effect  
+        this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) {
+            e.startOn  += effect.finishOn;
+            e.finishOn += effect.finishOn;
+          });
+        break;
+      case 'with-last':
+        timestamp = this.effects.pluck('startOn').max() || timestamp;
+        break;
+      case 'end':
+        // start effect after last queued effect has finished
+        timestamp = this.effects.pluck('finishOn').max() || timestamp;
+        break;
+    }
+    
+    effect.startOn  += timestamp;
+    effect.finishOn += timestamp;
+
+    if (!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit))
+      this.effects.push(effect);
+    
+    if (!this.interval)
+      this.interval = setInterval(this.loop.bind(this), 15);
+  },
+  remove: function(effect) {
+    this.effects = this.effects.reject(function(e) { return e==effect });
+    if (this.effects.length == 0) {
+      clearInterval(this.interval);
+      this.interval = null;
+    }
+  },
+  loop: function() {
+    var timePos = new Date().getTime();
+    for(var i=0, len=this.effects.length;i<len;i++) 
+      this.effects[i] && this.effects[i].loop(timePos);
+  }
+});
+
+Effect.Queues = {
+  instances: $H(),
+  get: function(queueName) {
+    if (!Object.isString(queueName)) return queueName;
+    
+    return this.instances.get(queueName) ||
+      this.instances.set(queueName, new Effect.ScopedQueue());
+  }
+};
+Effect.Queue = Effect.Queues.get('global');
+
+Effect.Base = Class.create({
+  position: null,
+  start: function(options) {
+    function codeForEvent(options,eventName){
+      return (
+        (options[eventName+'Internal'] ? 'this.options.'+eventName+'Internal(this);' : '') +
+        (options[eventName] ? 'this.options.'+eventName+'(this);' : '')
+      );
+    }
+    if (options && options.transition === false) options.transition = Effect.Transitions.linear;
+    this.options      = Object.extend(Object.extend({ },Effect.DefaultOptions), options || { });
+    this.currentFrame = 0;
+    this.state        = 'idle';
+    this.startOn      = this.options.delay*1000;
+    this.finishOn     = this.startOn+(this.options.duration*1000);
+    this.fromToDelta  = this.options.to-this.options.from;
+    this.totalTime    = this.finishOn-this.startOn;
+    this.totalFrames  = this.options.fps*this.options.duration;
+    
+    eval('this.render = function(pos){ '+
+      'if (this.state=="idle"){this.state="running";'+
+      codeForEvent(this.options,'beforeSetup')+
+      (this.setup ? 'this.setup();':'')+ 
+      codeForEvent(this.options,'afterSetup')+
+      '};if (this.state=="running"){'+
+      'pos=this.options.transition(pos)*'+this.fromToDelta+'+'+this.options.from+';'+
+      'this.position=pos;'+
+      codeForEvent(this.options,'beforeUpdate')+
+      (this.update ? 'this.update(pos);':'')+
+      codeForEvent(this.options,'afterUpdate')+
+      '}}');
+    
+    this.event('beforeStart');
+    if (!this.options.sync)
+      Effect.Queues.get(Object.isString(this.options.queue) ? 
+        'global' : this.options.queue.scope).add(this);
+  },
+  loop: function(timePos) {
+    if (timePos >= this.startOn) {
+      if (timePos >= this.finishOn) {
+        this.render(1.0);
+        this.cancel();
+        this.event('beforeFinish');
+        if (this.finish) this.finish(); 
+        this.event('afterFinish');
+        return;  
+      }
+      var pos   = (timePos - this.startOn) / this.totalTime,
+          frame = (pos * this.totalFrames).round();
+      if (frame > this.currentFrame) {
+        this.render(pos);
+        this.currentFrame = frame;
+      }
+    }
+  },
+  cancel: function() {
+    if (!this.options.sync)
+      Effect.Queues.get(Object.isString(this.options.queue) ? 
+        'global' : this.options.queue.scope).remove(this);
+    this.state = 'finished';
+  },
+  event: function(eventName) {
+    if (this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this);
+    if (this.options[eventName]) this.options[eventName](this);
+  },
+  inspect: function() {
+    var data = $H();
+    for(property in this)
+      if (!Object.isFunction(this[property])) data.set(property, this[property]);
+    return '#<Effect:' + data.inspect() + ',options:' + $H(this.options).inspect() + '>';
+  }
+});
+
+Effect.Parallel = Class.create(Effect.Base, {
+  initialize: function(effects) {
+    this.effects = effects || [];
+    this.start(arguments[1]);
+  },
+  update: function(position) {
+    this.effects.invoke('render', position);
+  },
+  finish: function(position) {
+    this.effects.each( function(effect) {
+      effect.render(1.0);
+      effect.cancel();
+      effect.event('beforeFinish');
+      if (effect.finish) effect.finish(position);
+      effect.event('afterFinish');
+    });
+  }
+});
+
+Effect.Tween = Class.create(Effect.Base, {
+  initialize: function(object, from, to) {
+    object = Object.isString(object) ? $(object) : object;
+    var args = $A(arguments), method = args.last(), 
+      options = args.length == 5 ? args[3] : null;
+    this.method = Object.isFunction(method) ? method.bind(object) :
+      Object.isFunction(object[method]) ? object[method].bind(object) : 
+      function(value) { object[method] = value };
+    this.start(Object.extend({ from: from, to: to }, options || { }));
+  },
+  update: function(position) {
+    this.method(position);
+  }
+});
+
+Effect.Event = Class.create(Effect.Base, {
+  initialize: function() {
+    this.start(Object.extend({ duration: 0 }, arguments[0] || { }));
+  },
+  update: Prototype.emptyFunction
+});
+
+Effect.Opacity = Class.create(Effect.Base, {
+  initialize: function(element) {
+    this.element = $(element);
+    if (!this.element) throw(Effect._elementDoesNotExistError);
+    // make this work on IE on elements without 'layout'
+    if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))
+      this.element.setStyle({zoom: 1});
+    var options = Object.extend({
+      from: this.element.getOpacity() || 0.0,
+      to:   1.0
+    }, arguments[1] || { });
+    this.start(options);
+  },
+  update: function(position) {
+    this.element.setOpacity(position);
+  }
+});
+
+Effect.Move = Class.create(Effect.Base, {
+  initialize: function(element) {
+    this.element = $(element);
+    if (!this.element) throw(Effect._elementDoesNotExistError);
+    var options = Object.extend({
+      x:    0,
+      y:    0,
+      mode: 'relative'
+    }, arguments[1] || { });
+    this.start(options);
+  },
+  setup: function() {
+    this.element.makePositioned();
+    this.originalLeft = parseFloat(this.element.getStyle('left') || '0');
+    this.originalTop  = parseFloat(this.element.getStyle('top')  || '0');
+    if (this.options.mode == 'absolute') {
+      this.options.x = this.options.x - this.originalLeft;
+      this.options.y = this.options.y - this.originalTop;
+    }
+  },
+  update: function(position) {
+    this.element.setStyle({
+      left: (this.options.x  * position + this.originalLeft).round() + 'px',
+      top:  (this.options.y  * position + this.originalTop).round()  + 'px'
+    });
+  }
+});
+
+// for backwards compatibility
+Effect.MoveBy = function(element, toTop, toLeft) {
+  return new Effect.Move(element, 
+    Object.extend({ x: toLeft, y: toTop }, arguments[3] || { }));
+};
+
+Effect.Scale = Class.create(Effect.Base, {
+  initialize: function(element, percent) {
+    this.element = $(element);
+    if (!this.element) throw(Effect._elementDoesNotExistError);
+    var options = Object.extend({
+      scaleX: true,
+      scaleY: true,
+      scaleContent: true,
+      scaleFromCenter: false,
+      scaleMode: 'box',        // 'box' or 'contents' or { } with provided values
+      scaleFrom: 100.0,
+      scaleTo:   percent
+    }, arguments[2] || { });
+    this.start(options);
+  },
+  setup: function() {
+    this.restoreAfterFinish = this.options.restoreAfterFinish || false;
+    this.elementPositioning = this.element.getStyle('position');
+    
+    this.originalStyle = { };
+    ['top','left','width','height','fontSize'].each( function(k) {
+      this.originalStyle[k] = this.element.style[k];
+    }.bind(this));
+      
+    this.originalTop  = this.element.offsetTop;
+    this.originalLeft = this.element.offsetLeft;
+    
+    var fontSize = this.element.getStyle('font-size') || '100%';
+    ['em','px','%','pt'].each( function(fontSizeType) {
+      if (fontSize.indexOf(fontSizeType)>0) {
+        this.fontSize     = parseFloat(fontSize);
+        this.fontSizeType = fontSizeType;
+      }
+    }.bind(this));
+    
+    this.factor = (this.options.scaleTo - this.options.scaleFrom)/100;
+    
+    this.dims = null;
+    if (this.options.scaleMode=='box')
+      this.dims = [this.element.offsetHeight, this.element.offsetWidth];
+    if (/^content/.test(this.options.scaleMode))
+      this.dims = [this.element.scrollHeight, this.element.scrollWidth];
+    if (!this.dims)
+      this.dims = [this.options.scaleMode.originalHeight,
+                   this.options.scaleMode.originalWidth];
+  },
+  update: function(position) {
+    var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position);
+    if (this.options.scaleContent && this.fontSize)
+      this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType });
+    this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale);
+  },
+  finish: function(position) {
+    if (this.restoreAfterFinish) this.element.setStyle(this.originalStyle);
+  },
+  setDimensions: function(height, width) {
+    var d = { };
+    if (this.options.scaleX) d.width = width.round() + 'px';
+    if (this.options.scaleY) d.height = height.round() + 'px';
+    if (this.options.scaleFromCenter) {
+      var topd  = (height - this.dims[0])/2;
+      var leftd = (width  - this.dims[1])/2;
+      if (this.elementPositioning == 'absolute') {
+        if (this.options.scaleY) d.top = this.originalTop-topd + 'px';
+        if (this.options.scaleX) d.left = this.originalLeft-leftd + 'px';
+      } else {
+        if (this.options.scaleY) d.top = -topd + 'px';
+        if (this.options.scaleX) d.left = -leftd + 'px';
+      }
+    }
+    this.element.setStyle(d);
+  }
+});
+
+Effect.Highlight = Class.create(Effect.Base, {
+  initialize: function(element) {
+    this.element = $(element);
+    if (!this.element) throw(Effect._elementDoesNotExistError);
+    var options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || { });
+    this.start(options);
+  },
+  setup: function() {
+    // Prevent executing on elements not in the layout flow
+    if (this.element.getStyle('display')=='none') { this.cancel(); return; }
+    // Disable background image during the effect
+    this.oldStyle = { };
+    if (!this.options.keepBackgroundImage) {
+      this.oldStyle.backgroundImage = this.element.getStyle('background-image');
+      this.element.setStyle({backgroundImage: 'none'});
+    }
+    if (!this.options.endcolor)
+      this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff');
+    if (!this.options.restorecolor)
+      this.options.restorecolor = this.element.getStyle('background-color');
+    // init color calculations
+    this._base  = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this));
+    this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] }.bind(this));
+  },
+  update: function(position) {
+    this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){
+      return m+((this._base[i]+(this._delta[i]*position)).round().toColorPart()); }.bind(this)) });
+  },
+  finish: function() {
+    this.element.setStyle(Object.extend(this.oldStyle, {
+      backgroundColor: this.options.restorecolor
+    }));
+  }
+});
+
+Effect.ScrollTo = function(element) {
+  var options = arguments[1] || { },
+    scrollOffsets = document.viewport.getScrollOffsets(),
+    elementOffsets = $(element).cumulativeOffset(),
+    max = (window.height || document.body.scrollHeight) - document.viewport.getHeight();  
+
+  if (options.offset) elementOffsets[1] += options.offset;
+
+  return new Effect.Tween(null,
+    scrollOffsets.top,
+    elementOffsets[1] > max ? max : elementOffsets[1],
+    options,
+    function(p){ scrollTo(scrollOffsets.left, p.round()) }
+  );
+};
+
+/* ------------- combination effects ------------- */
+
+Effect.Fade = function(element) {
+  element = $(element);
+  var oldOpacity = element.getInlineOpacity();
+  var options = Object.extend({
+    from: element.getOpacity() || 1.0,
+    to:   0.0,
+    afterFinishInternal: function(effect) { 
+      if (effect.options.to!=0) return;
+      effect.element.hide().setStyle({opacity: oldOpacity}); 
+    }
+  }, arguments[1] || { });
+  return new Effect.Opacity(element,options);
+};
+
+Effect.Appear = function(element) {
+  element = $(element);
+  var options = Object.extend({
+  from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0),
+  to:   1.0,
+  // force Safari to render floated elements properly
+  afterFinishInternal: function(effect) {
+    effect.element.forceRerendering();
+  },
+  beforeSetup: function(effect) {
+    effect.element.setOpacity(effect.options.from).show(); 
+  }}, arguments[1] || { });
+  return new Effect.Opacity(element,options);
+};
+
+Effect.Puff = function(element) {
+  element = $(element);
+  var oldStyle = { 
+    opacity: element.getInlineOpacity(), 
+    position: element.getStyle('position'),
+    top:  element.style.top,
+    left: element.style.left,
+    width: element.style.width,
+    height: element.style.height
+  };
+  return new Effect.Parallel(
+   [ new Effect.Scale(element, 200, 
+      { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }), 
+     new Effect.Opacity(element, { sync: true, to: 0.0 } ) ], 
+     Object.extend({ duration: 1.0, 
+      beforeSetupInternal: function(effect) {
+        Position.absolutize(effect.effects[0].element)
+      },
+      afterFinishInternal: function(effect) {
+         effect.effects[0].element.hide().setStyle(oldStyle); }
+     }, arguments[1] || { })
+   );
+};
+
+Effect.BlindUp = function(element) {
+  element = $(element);
+  element.makeClipping();
+  return new Effect.Scale(element, 0,
+    Object.extend({ scaleContent: false, 
+      scaleX: false, 
+      restoreAfterFinish: true,
+      afterFinishInternal: function(effect) {
+        effect.element.hide().undoClipping();
+      } 
+    }, arguments[1] || { })
+  );
+};
+
+Effect.BlindDown = function(element) {
+  element = $(element);
+  var elementDimensions = element.getDimensions();
+  return new Effect.Scale(element, 100, Object.extend({ 
+    scaleContent: false, 
+    scaleX: false,
+    scaleFrom: 0,
+    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
+    restoreAfterFinish: true,
+    afterSetup: function(effect) {
+      effect.element.makeClipping().setStyle({height: '0px'}).show(); 
+    },  
+    afterFinishInternal: function(effect) {
+      effect.element.undoClipping();
+    }
+  }, arguments[1] || { }));
+};
+
+Effect.SwitchOff = function(element) {
+  element = $(element);
+  var oldOpacity = element.getInlineOpacity();
+  return new Effect.Appear(element, Object.extend({
+    duration: 0.4,
+    from: 0,
+    transition: Effect.Transitions.flicker,
+    afterFinishInternal: function(effect) {
+      new Effect.Scale(effect.element, 1, { 
+        duration: 0.3, scaleFromCenter: true,
+        scaleX: false, scaleContent: false, restoreAfterFinish: true,
+        beforeSetup: function(effect) { 
+          effect.element.makePositioned().makeClipping();
+        },
+        afterFinishInternal: function(effect) {
+          effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity});
+        }
+      })
+    }
+  }, arguments[1] || { }));
+};
+
+Effect.DropOut = function(element) {
+  element = $(element);
+  var oldStyle = {
+    top: element.getStyle('top'),
+    left: element.getStyle('left'),
+    opacity: element.getInlineOpacity() };
+  return new Effect.Parallel(
+    [ new Effect.Move(element, {x: 0, y: 100, sync: true }), 
+      new Effect.Opacity(element, { sync: true, to: 0.0 }) ],
+    Object.extend(
+      { duration: 0.5,
+        beforeSetup: function(effect) {
+          effect.effects[0].element.makePositioned(); 
+        },
+        afterFinishInternal: function(effect) {
+          effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);
+        } 
+      }, arguments[1] || { }));
+};
+
+Effect.Shake = function(element) {
+  element = $(element);
+  var options = Object.extend({
+    distance: 20,
+    duration: 0.5
+  }, arguments[1] || {});
+  var distance = parseFloat(options.distance);
+  var split = parseFloat(options.duration) / 10.0;
+  var oldStyle = {
+    top: element.getStyle('top'),
+    left: element.getStyle('left') };
+    return new Effect.Move(element,
+      { x:  distance, y: 0, duration: split, afterFinishInternal: function(effect) {
+    new Effect.Move(effect.element,
+      { x: -distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {
+    new Effect.Move(effect.element,
+      { x:  distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {
+    new Effect.Move(effect.element,
+      { x: -distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {
+    new Effect.Move(effect.element,
+      { x:  distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {
+    new Effect.Move(effect.element,
+      { x: -distance, y: 0, duration: split, afterFinishInternal: function(effect) {
+        effect.element.undoPositioned().setStyle(oldStyle);
+  }}) }}) }}) }}) }}) }});
+};
+
+Effect.SlideDown = function(element) {
+  element = $(element).cleanWhitespace();
+  // SlideDown need to have the content of the element wrapped in a container element with fixed height!
+  var oldInnerBottom = element.down().getStyle('bottom');
+  var elementDimensions = element.getDimensions();
+  return new Effect.Scale(element, 100, Object.extend({ 
+    scaleContent: false, 
+    scaleX: false, 
+    scaleFrom: window.opera ? 0 : 1,
+    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
+    restoreAfterFinish: true,
+    afterSetup: function(effect) {
+      effect.element.makePositioned();
+      effect.element.down().makePositioned();
+      if (window.opera) effect.element.setStyle({top: ''});
+      effect.element.makeClipping().setStyle({height: '0px'}).show(); 
+    },
+    afterUpdateInternal: function(effect) {
+      effect.element.down().setStyle({bottom:
+        (effect.dims[0] - effect.element.clientHeight) + 'px' }); 
+    },
+    afterFinishInternal: function(effect) {
+      effect.element.undoClipping().undoPositioned();
+      effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); }
+    }, arguments[1] || { })
+  );
+};
+
+Effect.SlideUp = function(element) {
+  element = $(element).cleanWhitespace();
+  var oldInnerBottom = element.down().getStyle('bottom');
+  var elementDimensions = element.getDimensions();
+  return new Effect.Scale(element, window.opera ? 0 : 1,
+   Object.extend({ scaleContent: false, 
+    scaleX: false, 
+    scaleMode: 'box',
+    scaleFrom: 100,
+    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
+    restoreAfterFinish: true,
+    afterSetup: function(effect) {
+      effect.element.makePositioned();
+      effect.element.down().makePositioned();
+      if (window.opera) effect.element.setStyle({top: ''});
+      effect.element.makeClipping().show();
+    },  
+    afterUpdateInternal: function(effect) {
+      effect.element.down().setStyle({bottom:
+        (effect.dims[0] - effect.element.clientHeight) + 'px' });
+    },
+    afterFinishInternal: function(effect) {
+      effect.element.hide().undoClipping().undoPositioned();
+      effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom});
+    }
+   }, arguments[1] || { })
+  );
+};
+
+// Bug in opera makes the TD containing this element expand for a instance after finish 
+Effect.Squish = function(element) {
+  return new Effect.Scale(element, window.opera ? 1 : 0, { 
+    restoreAfterFinish: true,
+    beforeSetup: function(effect) {
+      effect.element.makeClipping(); 
+    },  
+    afterFinishInternal: function(effect) {
+      effect.element.hide().undoClipping(); 
+    }
+  });
+};
+
+Effect.Grow = function(element) {
+  element = $(element);
+  var options = Object.extend({
+    direction: 'center',
+    moveTransition: Effect.Transitions.sinoidal,
+    scaleTransition: Effect.Transitions.sinoidal,
+    opacityTransition: Effect.Transitions.full
+  }, arguments[1] || { });
+  var oldStyle = {
+    top: element.style.top,
+    left: element.style.left,
+    height: element.style.height,
+    width: element.style.width,
+    opacity: element.getInlineOpacity() };
+
+  var dims = element.getDimensions();    
+  var initialMoveX, initialMoveY;
+  var moveX, moveY;
+  
+  switch (options.direction) {
+    case 'top-left':
+      initialMoveX = initialMoveY = moveX = moveY = 0; 
+      break;
+    case 'top-right':
+      initialMoveX = dims.width;
+      initialMoveY = moveY = 0;
+      moveX = -dims.width;
+      break;
+    case 'bottom-left':
+      initialMoveX = moveX = 0;
+      initialMoveY = dims.height;
+      moveY = -dims.height;
+      break;
+    case 'bottom-right':
+      initialMoveX = dims.width;
+      initialMoveY = dims.height;
+      moveX = -dims.width;
+      moveY = -dims.height;
+      break;
+    case 'center':
+      initialMoveX = dims.width / 2;
+      initialMoveY = dims.height / 2;
+      moveX = -dims.width / 2;
+      moveY = -dims.height / 2;
+      break;
+  }
+  
+  return new Effect.Move(element, {
+    x: initialMoveX,
+    y: initialMoveY,
+    duration: 0.01, 
+    beforeSetup: function(effect) {
+      effect.element.hide().makeClipping().makePositioned();
+    },
+    afterFinishInternal: function(effect) {
+      new Effect.Parallel(
+        [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }),
+          new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }),
+          new Effect.Scale(effect.element, 100, {
+            scaleMode: { originalHeight: dims.height, originalWidth: dims.width }, 
+            sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true})
+        ], Object.extend({
+             beforeSetup: function(effect) {
+               effect.effects[0].element.setStyle({height: '0px'}).show(); 
+             },
+             afterFinishInternal: function(effect) {
+               effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle); 
+             }
+           }, options)
+      )
+    }
+  });
+};
+
+Effect.Shrink = function(element) {
+  element = $(element);
+  var options = Object.extend({
+    direction: 'center',
+    moveTransition: Effect.Transitions.sinoidal,
+    scaleTransition: Effect.Transitions.sinoidal,
+    opacityTransition: Effect.Transitions.none
+  }, arguments[1] || { });
+  var oldStyle = {
+    top: element.style.top,
+    left: element.style.left,
+    height: element.style.height,
+    width: element.style.width,
+    opacity: element.getInlineOpacity() };
+
+  var dims = element.getDimensions();
+  var moveX, moveY;
+  
+  switch (options.direction) {
+    case 'top-left':
+      moveX = moveY = 0;
+      break;
+    case 'top-right':
+      moveX = dims.width;
+      moveY = 0;
+      break;
+    case 'bottom-left':
+      moveX = 0;
+      moveY = dims.height;
+      break;
+    case 'bottom-right':
+      moveX = dims.width;
+      moveY = dims.height;
+      break;
+    case 'center':  
+      moveX = dims.width / 2;
+      moveY = dims.height / 2;
+      break;
+  }
+  
+  return new Effect.Parallel(
+    [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }),
+      new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}),
+      new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition })
+    ], Object.extend({            
+         beforeStartInternal: function(effect) {
+           effect.effects[0].element.makePositioned().makeClipping(); 
+         },
+         afterFinishInternal: function(effect) {
+           effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); }
+       }, options)
+  );
+};
+
+Effect.Pulsate = function(element) {
+  element = $(element);
+  var options    = arguments[1] || { };
+  var oldOpacity = element.getInlineOpacity();
+  var transition = options.transition || Effect.Transitions.sinoidal;
+  var reverser   = function(pos){ return transition(1-Effect.Transitions.pulse(pos, options.pulses)) };
+  reverser.bind(transition);
+  return new Effect.Opacity(element, 
+    Object.extend(Object.extend({  duration: 2.0, from: 0,
+      afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); }
+    }, options), {transition: reverser}));
+};
+
+Effect.Fold = function(element) {
+  element = $(element);
+  var oldStyle = {
+    top: element.style.top,
+    left: element.style.left,
+    width: element.style.width,
+    height: element.style.height };
+  element.makeClipping();
+  return new Effect.Scale(element, 5, Object.extend({   
+    scaleContent: false,
+    scaleX: false,
+    afterFinishInternal: function(effect) {
+    new Effect.Scale(element, 1, { 
+      scaleContent: false, 
+      scaleY: false,
+      afterFinishInternal: function(effect) {
+        effect.element.hide().undoClipping().setStyle(oldStyle);
+      } });
+  }}, arguments[1] || { }));
+};
+
+Effect.Morph = Class.create(Effect.Base, {
+  initialize: function(element) {
+    this.element = $(element);
+    if (!this.element) throw(Effect._elementDoesNotExistError);
+    var options = Object.extend({
+      style: { }
+    }, arguments[1] || { });
+    
+    if (!Object.isString(options.style)) this.style = $H(options.style);
+    else {
+      if (options.style.include(':'))
+        this.style = options.style.parseStyle();
+      else {
+        this.element.addClassName(options.style);
+        this.style = $H(this.element.getStyles());
+        this.element.removeClassName(options.style);
+        var css = this.element.getStyles();
+        this.style = this.style.reject(function(style) {
+          return style.value == css[style.key];
+        });
+        options.afterFinishInternal = function(effect) {
+          effect.element.addClassName(effect.options.style);
+          effect.transforms.each(function(transform) {
+            effect.element.style[transform.style] = '';
+          });
+        }
+      }
+    }
+    this.start(options);
+  },
+  
+  setup: function(){
+    function parseColor(color){
+      if (!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) color = '#ffffff';
+      color = color.parseColor();
+      return $R(0,2).map(function(i){
+        return parseInt( color.slice(i*2+1,i*2+3), 16 ) 
+      });
+    }
+    this.transforms = this.style.map(function(pair){
+      var property = pair[0], value = pair[1], unit = null;
+
+      if (value.parseColor('#zzzzzz') != '#zzzzzz') {
+        value = value.parseColor();
+        unit  = 'color';
+      } else if (property == 'opacity') {
+        value = parseFloat(value);
+        if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))
+          this.element.setStyle({zoom: 1});
+      } else if (Element.CSS_LENGTH.test(value)) {
+          var components = value.match(/^([\+\-]?[0-9\.]+)(.*)$/);
+          value = parseFloat(components[1]);
+          unit = (components.length == 3) ? components[2] : null;
+      }
+
+      var originalValue = this.element.getStyle(property);
+      return { 
+        style: property.camelize(), 
+        originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0), 
+        targetValue: unit=='color' ? parseColor(value) : value,
+        unit: unit
+      };
+    }.bind(this)).reject(function(transform){
+      return (
+        (transform.originalValue == transform.targetValue) ||
+        (
+          transform.unit != 'color' &&
+          (isNaN(transform.originalValue) || isNaN(transform.targetValue))
+        )
+      )
+    });
+  },
+  update: function(position) {
+    var style = { }, transform, i = this.transforms.length;
+    while(i--)
+      style[(transform = this.transforms[i]).style] = 
+        transform.unit=='color' ? '#'+
+          (Math.round(transform.originalValue[0]+
+            (transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart() +
+          (Math.round(transform.originalValue[1]+
+            (transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart() +
+          (Math.round(transform.originalValue[2]+
+            (transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart() :
+        (transform.originalValue +
+          (transform.targetValue - transform.originalValue) * position).toFixed(3) + 
+            (transform.unit === null ? '' : transform.unit);
+    this.element.setStyle(style, true);
+  }
+});
+
+Effect.Transform = Class.create({
+  initialize: function(tracks){
+    this.tracks  = [];
+    this.options = arguments[1] || { };
+    this.addTracks(tracks);
+  },
+  addTracks: function(tracks){
+    tracks.each(function(track){
+      track = $H(track);
+      var data = track.values().first();
+      this.tracks.push($H({
+        ids:     track.keys().first(),
+        effect:  Effect.Morph,
+        options: { style: data }
+      }));
+    }.bind(this));
+    return this;
+  },
+  play: function(){
+    return new Effect.Parallel(
+      this.tracks.map(function(track){
+        var ids = track.get('ids'), effect = track.get('effect'), options = track.get('options');
+        var elements = [$(ids) || $$(ids)].flatten();
+        return elements.map(function(e){ return new effect(e, Object.extend({ sync:true }, options)) });
+      }).flatten(),
+      this.options
+    );
+  }
+});
+
+Element.CSS_PROPERTIES = $w(
+  'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' + 
+  'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' +
+  'borderRightColor borderRightStyle borderRightWidth borderSpacing ' +
+  'borderTopColor borderTopStyle borderTopWidth bottom clip color ' +
+  'fontSize fontWeight height left letterSpacing lineHeight ' +
+  'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+
+  'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' +
+  'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' +
+  'right textIndent top width wordSpacing zIndex');
+  
+Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;
+
+String.__parseStyleElement = document.createElement('div');
+String.prototype.parseStyle = function(){
+  var style, styleRules = $H();
+  if (Prototype.Browser.WebKit)
+    style = new Element('div',{style:this}).style;
+  else {
+    String.__parseStyleElement.innerHTML = '<div style="' + this + '"></div>';
+    style = String.__parseStyleElement.childNodes[0].style;
+  }
+  
+  Element.CSS_PROPERTIES.each(function(property){
+    if (style[property]) styleRules.set(property, style[property]); 
+  });
+  
+  if (Prototype.Browser.IE && this.include('opacity'))
+    styleRules.set('opacity', this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]);
+
+  return styleRules;
+};
+
+if (document.defaultView && document.defaultView.getComputedStyle) {
+  Element.getStyles = function(element) {
+    var css = document.defaultView.getComputedStyle($(element), null);
+    return Element.CSS_PROPERTIES.inject({ }, function(styles, property) {
+      styles[property] = css[property];
+      return styles;
+    });
+  };
+} else {
+  Element.getStyles = function(element) {
+    element = $(element);
+    var css = element.currentStyle, styles;
+    styles = Element.CSS_PROPERTIES.inject({ }, function(hash, property) {
+      hash.set(property, css[property]);
+      return hash;
+    });
+    if (!styles.opacity) styles.set('opacity', element.getOpacity());
+    return styles;
+  };
+};
+
+Effect.Methods = {
+  morph: function(element, style) {
+    element = $(element);
+    new Effect.Morph(element, Object.extend({ style: style }, arguments[2] || { }));
+    return element;
+  },
+  visualEffect: function(element, effect, options) {
+    element = $(element)
+    var s = effect.dasherize().camelize(), klass = s.charAt(0).toUpperCase() + s.substring(1);
+    new Effect[klass](element, options);
+    return element;
+  },
+  highlight: function(element, options) {
+    element = $(element);
+    new Effect.Highlight(element, options);
+    return element;
+  }
+};
+
+$w('fade appear grow shrink fold blindUp blindDown slideUp slideDown '+
+  'pulsate shake puff squish switchOff dropOut').each(
+  function(effect) { 
+    Effect.Methods[effect] = function(element, options){
+      element = $(element);
+      Effect[effect.charAt(0).toUpperCase() + effect.substring(1)](element, options);
+      return element;
+    }
+  }
+);
+
+$w('getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles').each( 
+  function(f) { Effect.Methods[f] = Element[f]; }
+);
+
+Element.addMethods(Effect.Methods);
Index: /ruby/tags/0.0.2/rails/cancerehr/public/javascripts/prototype.js
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/public/javascripts/prototype.js	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/public/javascripts/prototype.js	(revision 39)
@@ -0,0 +1,4225 @@
+/*  Prototype JavaScript framework, version 1.6.0.1
+ *  (c) 2005-2007 Sam Stephenson
+ *
+ *  Prototype is freely distributable under the terms of an MIT-style license.
+ *  For details, see the Prototype web site: http://www.prototypejs.org/
+ *
+ *--------------------------------------------------------------------------*/
+
+var Prototype = {
+  Version: '1.6.0.1',
+
+  Browser: {
+    IE:     !!(window.attachEvent && !window.opera),
+    Opera:  !!window.opera,
+    WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,
+    Gecko:  navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1,
+    MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)
+  },
+
+  BrowserFeatures: {
+    XPath: !!document.evaluate,
+    ElementExtensions: !!window.HTMLElement,
+    SpecificElementExtensions:
+      document.createElement('div').__proto__ &&
+      document.createElement('div').__proto__ !==
+        document.createElement('form').__proto__
+  },
+
+  ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>',
+  JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,
+
+  emptyFunction: function() { },
+  K: function(x) { return x }
+};
+
+if (Prototype.Browser.MobileSafari)
+  Prototype.BrowserFeatures.SpecificElementExtensions = false;
+
+
+/* Based on Alex Arnell's inheritance implementation. */
+var Class = {
+  create: function() {
+    var parent = null, properties = $A(arguments);
+    if (Object.isFunction(properties[0]))
+      parent = properties.shift();
+
+    function klass() {
+      this.initialize.apply(this, arguments);
+    }
+
+    Object.extend(klass, Class.Methods);
+    klass.superclass = parent;
+    klass.subclasses = [];
+
+    if (parent) {
+      var subclass = function() { };
+      subclass.prototype = parent.prototype;
+      klass.prototype = new subclass;
+      parent.subclasses.push(klass);
+    }
+
+    for (var i = 0; i < properties.length; i++)
+      klass.addMethods(properties[i]);
+
+    if (!klass.prototype.initialize)
+      klass.prototype.initialize = Prototype.emptyFunction;
+
+    klass.prototype.constructor = klass;
+
+    return klass;
+  }
+};
+
+Class.Methods = {
+  addMethods: function(source) {
+    var ancestor   = this.superclass && this.superclass.prototype;
+    var properties = Object.keys(source);
+
+    if (!Object.keys({ toString: true }).length)
+      properties.push("toString", "valueOf");
+
+    for (var i = 0, length = properties.length; i < length; i++) {
+      var property = properties[i], value = source[property];
+      if (ancestor && Object.isFunction(value) &&
+          value.argumentNames().first() == "$super") {
+        var method = value, value = Object.extend((function(m) {
+          return function() { return ancestor[m].apply(this, arguments) };
+        })(property).wrap(method), {
+          valueOf:  function() { return method },
+          toString: function() { return method.toString() }
+        });
+      }
+      this.prototype[property] = value;
+    }
+
+    return this;
+  }
+};
+
+var Abstract = { };
+
+Object.extend = function(destination, source) {
+  for (var property in source)
+    destination[property] = source[property];
+  return destination;
+};
+
+Object.extend(Object, {
+  inspect: function(object) {
+    try {
+      if (Object.isUndefined(object)) return 'undefined';
+      if (object === null) return 'null';
+      return object.inspect ? object.inspect() : object.toString();
+    } catch (e) {
+      if (e instanceof RangeError) return '...';
+      throw e;
+    }
+  },
+
+  toJSON: function(object) {
+    var type = typeof object;
+    switch (type) {
+      case 'undefined':
+      case 'function':
+      case 'unknown': return;
+      case 'boolean': return object.toString();
+    }
+
+    if (object === null) return 'null';
+    if (object.toJSON) return object.toJSON();
+    if (Object.isElement(object)) return;
+
+    var results = [];
+    for (var property in object) {
+      var value = Object.toJSON(object[property]);
+      if (!Object.isUndefined(value))
+        results.push(property.toJSON() + ': ' + value);
+    }
+
+    return '{' + results.join(', ') + '}';
+  },
+
+  toQueryString: function(object) {
+    return $H(object).toQueryString();
+  },
+
+  toHTML: function(object) {
+    return object && object.toHTML ? object.toHTML() : String.interpret(object);
+  },
+
+  keys: function(object) {
+    var keys = [];
+    for (var property in object)
+      keys.push(property);
+    return keys;
+  },
+
+  values: function(object) {
+    var values = [];
+    for (var property in object)
+      values.push(object[property]);
+    return values;
+  },
+
+  clone: function(object) {
+    return Object.extend({ }, object);
+  },
+
+  isElement: function(object) {
+    return object && object.nodeType == 1;
+  },
+
+  isArray: function(object) {
+    return object && object.constructor === Array;
+  },
+
+  isHash: function(object) {
+    return object instanceof Hash;
+  },
+
+  isFunction: function(object) {
+    return typeof object == "function";
+  },
+
+  isString: function(object) {
+    return typeof object == "string";
+  },
+
+  isNumber: function(object) {
+    return typeof object == "number";
+  },
+
+  isUndefined: function(object) {
+    return typeof object == "undefined";
+  }
+});
+
+Object.extend(Function.prototype, {
+  argumentNames: function() {
+    var names = this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").invoke("strip");
+    return names.length == 1 && !names[0] ? [] : names;
+  },
+
+  bind: function() {
+    if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this;
+    var __method = this, args = $A(arguments), object = args.shift();
+    return function() {
+      return __method.apply(object, args.concat($A(arguments)));
+    }
+  },
+
+  bindAsEventListener: function() {
+    var __method = this, args = $A(arguments), object = args.shift();
+    return function(event) {
+      return __method.apply(object, [event || window.event].concat(args));
+    }
+  },
+
+  curry: function() {
+    if (!arguments.length) return this;
+    var __method = this, args = $A(arguments);
+    return function() {
+      return __method.apply(this, args.concat($A(arguments)));
+    }
+  },
+
+  delay: function() {
+    var __method = this, args = $A(arguments), timeout = args.shift() * 1000;
+    return window.setTimeout(function() {
+      return __method.apply(__method, args);
+    }, timeout);
+  },
+
+  wrap: function(wrapper) {
+    var __method = this;
+    return function() {
+      return wrapper.apply(this, [__method.bind(this)].concat($A(arguments)));
+    }
+  },
+
+  methodize: function() {
+    if (this._methodized) return this._methodized;
+    var __method = this;
+    return this._methodized = function() {
+      return __method.apply(null, [this].concat($A(arguments)));
+    };
+  }
+});
+
+Function.prototype.defer = Function.prototype.delay.curry(0.01);
+
+Date.prototype.toJSON = function() {
+  return '"' + this.getUTCFullYear() + '-' +
+    (this.getUTCMonth() + 1).toPaddedString(2) + '-' +
+    this.getUTCDate().toPaddedString(2) + 'T' +
+    this.getUTCHours().toPaddedString(2) + ':' +
+    this.getUTCMinutes().toPaddedString(2) + ':' +
+    this.getUTCSeconds().toPaddedString(2) + 'Z"';
+};
+
+var Try = {
+  these: function() {
+    var returnValue;
+
+    for (var i = 0, length = arguments.length; i < length; i++) {
+      var lambda = arguments[i];
+      try {
+        returnValue = lambda();
+        break;
+      } catch (e) { }
+    }
+
+    return returnValue;
+  }
+};
+
+RegExp.prototype.match = RegExp.prototype.test;
+
+RegExp.escape = function(str) {
+  return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');
+};
+
+/*--------------------------------------------------------------------------*/
+
+var PeriodicalExecuter = Class.create({
+  initialize: function(callback, frequency) {
+    this.callback = callback;
+    this.frequency = frequency;
+    this.currentlyExecuting = false;
+
+    this.registerCallback();
+  },
+
+  registerCallback: function() {
+    this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
+  },
+
+  execute: function() {
+    this.callback(this);
+  },
+
+  stop: function() {
+    if (!this.timer) return;
+    clearInterval(this.timer);
+    this.timer = null;
+  },
+
+  onTimerEvent: function() {
+    if (!this.currentlyExecuting) {
+      try {
+        this.currentlyExecuting = true;
+        this.execute();
+      } finally {
+        this.currentlyExecuting = false;
+      }
+    }
+  }
+});
+Object.extend(String, {
+  interpret: function(value) {
+    return value == null ? '' : String(value);
+  },
+  specialChar: {
+    '\b': '\\b',
+    '\t': '\\t',
+    '\n': '\\n',
+    '\f': '\\f',
+    '\r': '\\r',
+    '\\': '\\\\'
+  }
+});
+
+Object.extend(String.prototype, {
+  gsub: function(pattern, replacement) {
+    var result = '', source = this, match;
+    replacement = arguments.callee.prepareReplacement(replacement);
+
+    while (source.length > 0) {
+      if (match = source.match(pattern)) {
+        result += source.slice(0, match.index);
+        result += String.interpret(replacement(match));
+        source  = source.slice(match.index + match[0].length);
+      } else {
+        result += source, source = '';
+      }
+    }
+    return result;
+  },
+
+  sub: function(pattern, replacement, count) {
+    replacement = this.gsub.prepareReplacement(replacement);
+    count = Object.isUndefined(count) ? 1 : count;
+
+    return this.gsub(pattern, function(match) {
+      if (--count < 0) return match[0];
+      return replacement(match);
+    });
+  },
+
+  scan: function(pattern, iterator) {
+    this.gsub(pattern, iterator);
+    return String(this);
+  },
+
+  truncate: function(length, truncation) {
+    length = length || 30;
+    truncation = Object.isUndefined(truncation) ? '...' : truncation;
+    return this.length > length ?
+      this.slice(0, length - truncation.length) + truncation : String(this);
+  },
+
+  strip: function() {
+    return this.replace(/^\s+/, '').replace(/\s+$/, '');
+  },
+
+  stripTags: function() {
+    return this.replace(/<\/?[^>]+>/gi, '');
+  },
+
+  stripScripts: function() {
+    return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');
+  },
+
+  extractScripts: function() {
+    var matchAll = new RegExp(Prototype.ScriptFragment, 'img');
+    var matchOne = new RegExp(Prototype.ScriptFragment, 'im');
+    return (this.match(matchAll) || []).map(function(scriptTag) {
+      return (scriptTag.match(matchOne) || ['', ''])[1];
+    });
+  },
+
+  evalScripts: function() {
+    return this.extractScripts().map(function(script) { return eval(script) });
+  },
+
+  escapeHTML: function() {
+    var self = arguments.callee;
+    self.text.data = this;
+    return self.div.innerHTML;
+  },
+
+  unescapeHTML: function() {
+    var div = new Element('div');
+    div.innerHTML = this.stripTags();
+    return div.childNodes[0] ? (div.childNodes.length > 1 ?
+      $A(div.childNodes).inject('', function(memo, node) { return memo+node.nodeValue }) :
+      div.childNodes[0].nodeValue) : '';
+  },
+
+  toQueryParams: function(separator) {
+    var match = this.strip().match(/([^?#]*)(#.*)?$/);
+    if (!match) return { };
+
+    return match[1].split(separator || '&').inject({ }, function(hash, pair) {
+      if ((pair = pair.split('='))[0]) {
+        var key = decodeURIComponent(pair.shift());
+        var value = pair.length > 1 ? pair.join('=') : pair[0];
+        if (value != undefined) value = decodeURIComponent(value);
+
+        if (key in hash) {
+          if (!Object.isArray(hash[key])) hash[key] = [hash[key]];
+          hash[key].push(value);
+        }
+        else hash[key] = value;
+      }
+      return hash;
+    });
+  },
+
+  toArray: function() {
+    return this.split('');
+  },
+
+  succ: function() {
+    return this.slice(0, this.length - 1) +
+      String.fromCharCode(this.charCodeAt(this.length - 1) + 1);
+  },
+
+  times: function(count) {
+    return count < 1 ? '' : new Array(count + 1).join(this);
+  },
+
+  camelize: function() {
+    var parts = this.split('-'), len = parts.length;
+    if (len == 1) return parts[0];
+
+    var camelized = this.charAt(0) == '-'
+      ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)
+      : parts[0];
+
+    for (var i = 1; i < len; i++)
+      camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1);
+
+    return camelized;
+  },
+
+  capitalize: function() {
+    return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();
+  },
+
+  underscore: function() {
+    return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase();
+  },
+
+  dasherize: function() {
+    return this.gsub(/_/,'-');
+  },
+
+  inspect: function(useDoubleQuotes) {
+    var escapedString = this.gsub(/[\x00-\x1f\\]/, function(match) {
+      var character = String.specialChar[match[0]];
+      return character ? character : '\\u00' + match[0].charCodeAt().toPaddedString(2, 16);
+    });
+    if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"';
+    return "'" + escapedString.replace(/'/g, '\\\'') + "'";
+  },
+
+  toJSON: function() {
+    return this.inspect(true);
+  },
+
+  unfilterJSON: function(filter) {
+    return this.sub(filter || Prototype.JSONFilter, '#{1}');
+  },
+
+  isJSON: function() {
+    var str = this;
+    if (str.blank()) return false;
+    str = this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');
+    return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);
+  },
+
+  evalJSON: function(sanitize) {
+    var json = this.unfilterJSON();
+    try {
+      if (!sanitize || json.isJSON()) return eval('(' + json + ')');
+    } catch (e) { }
+    throw new SyntaxError('Badly formed JSON string: ' + this.inspect());
+  },
+
+  include: function(pattern) {
+    return this.indexOf(pattern) > -1;
+  },
+
+  startsWith: function(pattern) {
+    return this.indexOf(pattern) === 0;
+  },
+
+  endsWith: function(pattern) {
+    var d = this.length - pattern.length;
+    return d >= 0 && this.lastIndexOf(pattern) === d;
+  },
+
+  empty: function() {
+    return this == '';
+  },
+
+  blank: function() {
+    return /^\s*$/.test(this);
+  },
+
+  interpolate: function(object, pattern) {
+    return new Template(this, pattern).evaluate(object);
+  }
+});
+
+if (Prototype.Browser.WebKit || Prototype.Browser.IE) Object.extend(String.prototype, {
+  escapeHTML: function() {
+    return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
+  },
+  unescapeHTML: function() {
+    return this.replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>');
+  }
+});
+
+String.prototype.gsub.prepareReplacement = function(replacement) {
+  if (Object.isFunction(replacement)) return replacement;
+  var template = new Template(replacement);
+  return function(match) { return template.evaluate(match) };
+};
+
+String.prototype.parseQuery = String.prototype.toQueryParams;
+
+Object.extend(String.prototype.escapeHTML, {
+  div:  document.createElement('div'),
+  text: document.createTextNode('')
+});
+
+with (String.prototype.escapeHTML) div.appendChild(text);
+
+var Template = Class.create({
+  initialize: function(template, pattern) {
+    this.template = template.toString();
+    this.pattern = pattern || Template.Pattern;
+  },
+
+  evaluate: function(object) {
+    if (Object.isFunction(object.toTemplateReplacements))
+      object = object.toTemplateReplacements();
+
+    return this.template.gsub(this.pattern, function(match) {
+      if (object == null) return '';
+
+      var before = match[1] || '';
+      if (before == '\\') return match[2];
+
+      var ctx = object, expr = match[3];
+      var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;
+      match = pattern.exec(expr);
+      if (match == null) return before;
+
+      while (match != null) {
+        var comp = match[1].startsWith('[') ? match[2].gsub('\\\\]', ']') : match[1];
+        ctx = ctx[comp];
+        if (null == ctx || '' == match[3]) break;
+        expr = expr.substring('[' == match[3] ? match[1].length : match[0].length);
+        match = pattern.exec(expr);
+      }
+
+      return before + String.interpret(ctx);
+    }.bind(this));
+  }
+});
+Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;
+
+var $break = { };
+
+var Enumerable = {
+  each: function(iterator, context) {
+    var index = 0;
+    iterator = iterator.bind(context);
+    try {
+      this._each(function(value) {
+        iterator(value, index++);
+      });
+    } catch (e) {
+      if (e != $break) throw e;
+    }
+    return this;
+  },
+
+  eachSlice: function(number, iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var index = -number, slices = [], array = this.toArray();
+    while ((index += number) < array.length)
+      slices.push(array.slice(index, index+number));
+    return slices.collect(iterator, context);
+  },
+
+  all: function(iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var result = true;
+    this.each(function(value, index) {
+      result = result && !!iterator(value, index);
+      if (!result) throw $break;
+    });
+    return result;
+  },
+
+  any: function(iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var result = false;
+    this.each(function(value, index) {
+      if (result = !!iterator(value, index))
+        throw $break;
+    });
+    return result;
+  },
+
+  collect: function(iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var results = [];
+    this.each(function(value, index) {
+      results.push(iterator(value, index));
+    });
+    return results;
+  },
+
+  detect: function(iterator, context) {
+    iterator = iterator.bind(context);
+    var result;
+    this.each(function(value, index) {
+      if (iterator(value, index)) {
+        result = value;
+        throw $break;
+      }
+    });
+    return result;
+  },
+
+  findAll: function(iterator, context) {
+    iterator = iterator.bind(context);
+    var results = [];
+    this.each(function(value, index) {
+      if (iterator(value, index))
+        results.push(value);
+    });
+    return results;
+  },
+
+  grep: function(filter, iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var results = [];
+
+    if (Object.isString(filter))
+      filter = new RegExp(filter);
+
+    this.each(function(value, index) {
+      if (filter.match(value))
+        results.push(iterator(value, index));
+    });
+    return results;
+  },
+
+  include: function(object) {
+    if (Object.isFunction(this.indexOf))
+      if (this.indexOf(object) != -1) return true;
+
+    var found = false;
+    this.each(function(value) {
+      if (value == object) {
+        found = true;
+        throw $break;
+      }
+    });
+    return found;
+  },
+
+  inGroupsOf: function(number, fillWith) {
+    fillWith = Object.isUndefined(fillWith) ? null : fillWith;
+    return this.eachSlice(number, function(slice) {
+      while(slice.length < number) slice.push(fillWith);
+      return slice;
+    });
+  },
+
+  inject: function(memo, iterator, context) {
+    iterator = iterator.bind(context);
+    this.each(function(value, index) {
+      memo = iterator(memo, value, index);
+    });
+    return memo;
+  },
+
+  invoke: function(method) {
+    var args = $A(arguments).slice(1);
+    return this.map(function(value) {
+      return value[method].apply(value, args);
+    });
+  },
+
+  max: function(iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var result;
+    this.each(function(value, index) {
+      value = iterator(value, index);
+      if (result == null || value >= result)
+        result = value;
+    });
+    return result;
+  },
+
+  min: function(iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var result;
+    this.each(function(value, index) {
+      value = iterator(value, index);
+      if (result == null || value < result)
+        result = value;
+    });
+    return result;
+  },
+
+  partition: function(iterator, context) {
+    iterator = iterator ? iterator.bind(context) : Prototype.K;
+    var trues = [], falses = [];
+    this.each(function(value, index) {
+      (iterator(value, index) ?
+        trues : falses).push(value);
+    });
+    return [trues, falses];
+  },
+
+  pluck: function(property) {
+    var results = [];
+    this.each(function(value) {
+      results.push(value[property]);
+    });
+    return results;
+  },
+
+  reject: function(iterator, context) {
+    iterator = iterator.bind(context);
+    var results = [];
+    this.each(function(value, index) {
+      if (!iterator(value, index))
+        results.push(value);
+    });
+    return results;
+  },
+
+  sortBy: function(iterator, context) {
+    iterator = iterator.bind(context);
+    return this.map(function(value, index) {
+      return {value: value, criteria: iterator(value, index)};
+    }).sort(function(left, right) {
+      var a = left.criteria, b = right.criteria;
+      return a < b ? -1 : a > b ? 1 : 0;
+    }).pluck('value');
+  },
+
+  toArray: function() {
+    return this.map();
+  },
+
+  zip: function() {
+    var iterator = Prototype.K, args = $A(arguments);
+    if (Object.isFunction(args.last()))
+      iterator = args.pop();
+
+    var collections = [this].concat(args).map($A);
+    return this.map(function(value, index) {
+      return iterator(collections.pluck(index));
+    });
+  },
+
+  size: function() {
+    return this.toArray().length;
+  },
+
+  inspect: function() {
+    return '#<Enumerable:' + this.toArray().inspect() + '>';
+  }
+};
+
+Object.extend(Enumerable, {
+  map:     Enumerable.collect,
+  find:    Enumerable.detect,
+  select:  Enumerable.findAll,
+  filter:  Enumerable.findAll,
+  member:  Enumerable.include,
+  entries: Enumerable.toArray,
+  every:   Enumerable.all,
+  some:    Enumerable.any
+});
+function $A(iterable) {
+  if (!iterable) return [];
+  if (iterable.toArray) return iterable.toArray();
+  var length = iterable.length, results = new Array(length);
+  while (length--) results[length] = iterable[length];
+  return results;
+}
+
+if (Prototype.Browser.WebKit) {
+  function $A(iterable) {
+    if (!iterable) return [];
+    if (!(Object.isFunction(iterable) && iterable == '[object NodeList]') &&
+        iterable.toArray) return iterable.toArray();
+    var length = iterable.length, results = new Array(length);
+    while (length--) results[length] = iterable[length];
+    return results;
+  }
+}
+
+Array.from = $A;
+
+Object.extend(Array.prototype, Enumerable);
+
+if (!Array.prototype._reverse) Array.prototype._reverse = Array.prototype.reverse;
+
+Object.extend(Array.prototype, {
+  _each: function(iterator) {
+    for (var i = 0, length = this.length; i < length; i++)
+      iterator(this[i]);
+  },
+
+  clear: function() {
+    this.length = 0;
+    return this;
+  },
+
+  first: function() {
+    return this[0];
+  },
+
+  last: function() {
+    return this[this.length - 1];
+  },
+
+  compact: function() {
+    return this.select(function(value) {
+      return value != null;
+    });
+  },
+
+  flatten: function() {
+    return this.inject([], function(array, value) {
+      return array.concat(Object.isArray(value) ?
+        value.flatten() : [value]);
+    });
+  },
+
+  without: function() {
+    var values = $A(arguments);
+    return this.select(function(value) {
+      return !values.include(value);
+    });
+  },
+
+  reverse: function(inline) {
+    return (inline !== false ? this : this.toArray())._reverse();
+  },
+
+  reduce: function() {
+    return this.length > 1 ? this : this[0];
+  },
+
+  uniq: function(sorted) {
+    return this.inject([], function(array, value, index) {
+      if (0 == index || (sorted ? array.last() != value : !array.include(value)))
+        array.push(value);
+      return array;
+    });
+  },
+
+  intersect: function(array) {
+    return this.uniq().findAll(function(item) {
+      return array.detect(function(value) { return item === value });
+    });
+  },
+
+  clone: function() {
+    return [].concat(this);
+  },
+
+  size: function() {
+    return this.length;
+  },
+
+  inspect: function() {
+    return '[' + this.map(Object.inspect).join(', ') + ']';
+  },
+
+  toJSON: function() {
+    var results = [];
+    this.each(function(object) {
+      var value = Object.toJSON(object);
+      if (!Object.isUndefined(value)) results.push(value);
+    });
+    return '[' + results.join(', ') + ']';
+  }
+});
+
+// use native browser JS 1.6 implementation if available
+if (Object.isFunction(Array.prototype.forEach))
+  Array.prototype._each = Array.prototype.forEach;
+
+if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) {
+  i || (i = 0);
+  var length = this.length;
+  if (i < 0) i = length + i;
+  for (; i < length; i++)
+    if (this[i] === item) return i;
+  return -1;
+};
+
+if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf = function(item, i) {
+  i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;
+  var n = this.slice(0, i).reverse().indexOf(item);
+  return (n < 0) ? n : i - n - 1;
+};
+
+Array.prototype.toArray = Array.prototype.clone;
+
+function $w(string) {
+  if (!Object.isString(string)) return [];
+  string = string.strip();
+  return string ? string.split(/\s+/) : [];
+}
+
+if (Prototype.Browser.Opera){
+  Array.prototype.concat = function() {
+    var array = [];
+    for (var i = 0, length = this.length; i < length; i++) array.push(this[i]);
+    for (var i = 0, length = arguments.length; i < length; i++) {
+      if (Object.isArray(arguments[i])) {
+        for (var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++)
+          array.push(arguments[i][j]);
+      } else {
+        array.push(arguments[i]);
+      }
+    }
+    return array;
+  };
+}
+Object.extend(Number.prototype, {
+  toColorPart: function() {
+    return this.toPaddedString(2, 16);
+  },
+
+  succ: function() {
+    return this + 1;
+  },
+
+  times: function(iterator) {
+    $R(0, this, true).each(iterator);
+    return this;
+  },
+
+  toPaddedString: function(length, radix) {
+    var string = this.toString(radix || 10);
+    return '0'.times(length - string.length) + string;
+  },
+
+  toJSON: function() {
+    return isFinite(this) ? this.toString() : 'null';
+  }
+});
+
+$w('abs round ceil floor').each(function(method){
+  Number.prototype[method] = Math[method].methodize();
+});
+function $H(object) {
+  return new Hash(object);
+};
+
+var Hash = Class.create(Enumerable, (function() {
+
+  function toQueryPair(key, value) {
+    if (Object.isUndefined(value)) return key;
+    return key + '=' + encodeURIComponent(String.interpret(value));
+  }
+
+  return {
+    initialize: function(object) {
+      this._object = Object.isHash(object) ? object.toObject() : Object.clone(object);
+    },
+
+    _each: function(iterator) {
+      for (var key in this._object) {
+        var value = this._object[key], pair = [key, value];
+        pair.key = key;
+        pair.value = value;
+        iterator(pair);
+      }
+    },
+
+    set: function(key, value) {
+      return this._object[key] = value;
+    },
+
+    get: function(key) {
+      return this._object[key];
+    },
+
+    unset: function(key) {
+      var value = this._object[key];
+      delete this._object[key];
+      return value;
+    },
+
+    toObject: function() {
+      return Object.clone(this._object);
+    },
+
+    keys: function() {
+      return this.pluck('key');
+    },
+
+    values: function() {
+      return this.pluck('value');
+    },
+
+    index: function(value) {
+      var match = this.detect(function(pair) {
+        return pair.value === value;
+      });
+      return match && match.key;
+    },
+
+    merge: function(object) {
+      return this.clone().update(object);
+    },
+
+    update: function(object) {
+      return new Hash(object).inject(this, function(result, pair) {
+        result.set(pair.key, pair.value);
+        return result;
+      });
+    },
+
+    toQueryString: function() {
+      return this.map(function(pair) {
+        var key = encodeURIComponent(pair.key), values = pair.value;
+
+        if (values && typeof values == 'object') {
+          if (Object.isArray(values))
+            return values.map(toQueryPair.curry(key)).join('&');
+        }
+        return toQueryPair(key, values);
+      }).join('&');
+    },
+
+    inspect: function() {
+      return '#<Hash:{' + this.map(function(pair) {
+        return pair.map(Object.inspect).join(': ');
+      }).join(', ') + '}>';
+    },
+
+    toJSON: function() {
+      return Object.toJSON(this.toObject());
+    },
+
+    clone: function() {
+      return new Hash(this);
+    }
+  }
+})());
+
+Hash.prototype.toTemplateReplacements = Hash.prototype.toObject;
+Hash.from = $H;
+var ObjectRange = Class.create(Enumerable, {
+  initialize: function(start, end, exclusive) {
+    this.start = start;
+    this.end = end;
+    this.exclusive = exclusive;
+  },
+
+  _each: function(iterator) {
+    var value = this.start;
+    while (this.include(value)) {
+      iterator(value);
+      value = value.succ();
+    }
+  },
+
+  include: function(value) {
+    if (value < this.start)
+      return false;
+    if (this.exclusive)
+      return value < this.end;
+    return value <= this.end;
+  }
+});
+
+var $R = function(start, end, exclusive) {
+  return new ObjectRange(start, end, exclusive);
+};
+
+var Ajax = {
+  getTransport: function() {
+    return Try.these(
+      function() {return new XMLHttpRequest()},
+      function() {return new ActiveXObject('Msxml2.XMLHTTP')},
+      function() {return new ActiveXObject('Microsoft.XMLHTTP')}
+    ) || false;
+  },
+
+  activeRequestCount: 0
+};
+
+Ajax.Responders = {
+  responders: [],
+
+  _each: function(iterator) {
+    this.responders._each(iterator);
+  },
+
+  register: function(responder) {
+    if (!this.include(responder))
+      this.responders.push(responder);
+  },
+
+  unregister: function(responder) {
+    this.responders = this.responders.without(responder);
+  },
+
+  dispatch: function(callback, request, transport, json) {
+    this.each(function(responder) {
+      if (Object.isFunction(responder[callback])) {
+        try {
+          responder[callback].apply(responder, [request, transport, json]);
+        } catch (e) { }
+      }
+    });
+  }
+};
+
+Object.extend(Ajax.Responders, Enumerable);
+
+Ajax.Responders.register({
+  onCreate:   function() { Ajax.activeRequestCount++ },
+  onComplete: function() { Ajax.activeRequestCount-- }
+});
+
+Ajax.Base = Class.create({
+  initialize: function(options) {
+    this.options = {
+      method:       'post',
+      asynchronous: true,
+      contentType:  'application/x-www-form-urlencoded',
+      encoding:     'UTF-8',
+      parameters:   '',
+      evalJSON:     true,
+      evalJS:       true
+    };
+    Object.extend(this.options, options || { });
+
+    this.options.method = this.options.method.toLowerCase();
+
+    if (Object.isString(this.options.parameters))
+      this.options.parameters = this.options.parameters.toQueryParams();
+    else if (Object.isHash(this.options.parameters))
+      this.options.parameters = this.options.parameters.toObject();
+  }
+});
+
+Ajax.Request = Class.create(Ajax.Base, {
+  _complete: false,
+
+  initialize: function($super, url, options) {
+    $super(options);
+    this.transport = Ajax.getTransport();
+    this.request(url);
+  },
+
+  request: function(url) {
+    this.url = url;
+    this.method = this.options.method;
+    var params = Object.clone(this.options.parameters);
+
+    if (!['get', 'post'].include(this.method)) {
+      // simulate other verbs over post
+      params['_method'] = this.method;
+      this.method = 'post';
+    }
+
+    this.parameters = params;
+
+    if (params = Object.toQueryString(params)) {
+      // when GET, append parameters to URL
+      if (this.method == 'get')
+        this.url += (this.url.include('?') ? '&' : '?') + params;
+      else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))
+        params += '&_=';
+    }
+
+    try {
+      var response = new Ajax.Response(this);
+      if (this.options.onCreate) this.options.onCreate(response);
+      Ajax.Responders.dispatch('onCreate', this, response);
+
+      this.transport.open(this.method.toUpperCase(), this.url,
+        this.options.asynchronous);
+
+      if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1);
+
+      this.transport.onreadystatechange = this.onStateChange.bind(this);
+      this.setRequestHeaders();
+
+      this.body = this.method == 'post' ? (this.options.postBody || params) : null;
+      this.transport.send(this.body);
+
+      /* Force Firefox to handle ready state 4 for synchronous requests */
+      if (!this.options.asynchronous && this.transport.overrideMimeType)
+        this.onStateChange();
+
+    }
+    catch (e) {
+      this.dispatchException(e);
+    }
+  },
+
+  onStateChange: function() {
+    var readyState = this.transport.readyState;
+    if (readyState > 1 && !((readyState == 4) && this._complete))
+      this.respondToReadyState(this.transport.readyState);
+  },
+
+  setRequestHeaders: function() {
+    var headers = {
+      'X-Requested-With': 'XMLHttpRequest',
+      'X-Prototype-Version': Prototype.Version,
+      'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
+    };
+
+    if (this.method == 'post') {
+      headers['Content-type'] = this.options.contentType +
+        (this.options.encoding ? '; charset=' + this.options.encoding : '');
+
+      /* Force "Connection: close" for older Mozilla browsers to work
+       * around a bug where XMLHttpRequest sends an incorrect
+       * Content-length header. See Mozilla Bugzilla #246651.
+       */
+      if (this.transport.overrideMimeType &&
+          (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)
+            headers['Connection'] = 'close';
+    }
+
+    // user-defined headers
+    if (typeof this.options.requestHeaders == 'object') {
+      var extras = this.options.requestHeaders;
+
+      if (Object.isFunction(extras.push))
+        for (var i = 0, length = extras.length; i < length; i += 2)
+          headers[extras[i]] = extras[i+1];
+      else
+        $H(extras).each(function(pair) { headers[pair.key] = pair.value });
+    }
+
+    for (var name in headers)
+      this.transport.setRequestHeader(name, headers[name]);
+  },
+
+  success: function() {
+    var status = this.getStatus();
+    return !status || (status >= 200 && status < 300);
+  },
+
+  getStatus: function() {
+    try {
+      return this.transport.status || 0;
+    } catch (e) { return 0 }
+  },
+
+  respondToReadyState: function(readyState) {
+    var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this);
+
+    if (state == 'Complete') {
+      try {
+        this._complete = true;
+        (this.options['on' + response.status]
+         || this.options['on' + (this.success() ? 'Success' : 'Failure')]
+         || Prototype.emptyFunction)(response, response.headerJSON);
+      } catch (e) {
+        this.dispatchException(e);
+      }
+
+      var contentType = response.getHeader('Content-type');
+      if (this.options.evalJS == 'force'
+          || (this.options.evalJS && contentType
+          && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i)))
+        this.evalResponse();
+    }
+
+    try {
+      (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON);
+      Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON);
+    } catch (e) {
+      this.dispatchException(e);
+    }
+
+    if (state == 'Complete') {
+      // avoid memory leak in MSIE: clean up
+      this.transport.onreadystatechange = Prototype.emptyFunction;
+    }
+  },
+
+  getHeader: function(name) {
+    try {
+      return this.transport.getResponseHeader(name);
+    } catch (e) { return null }
+  },
+
+  evalResponse: function() {
+    try {
+      return eval((this.transport.responseText || '').unfilterJSON());
+    } catch (e) {
+      this.dispatchException(e);
+    }
+  },
+
+  dispatchException: function(exception) {
+    (this.options.onException || Prototype.emptyFunction)(this, exception);
+    Ajax.Responders.dispatch('onException', this, exception);
+  }
+});
+
+Ajax.Request.Events =
+  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
+
+Ajax.Response = Class.create({
+  initialize: function(request){
+    this.request = request;
+    var transport  = this.transport  = request.transport,
+        readyState = this.readyState = transport.readyState;
+
+    if((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) {
+      this.status       = this.getStatus();
+      this.statusText   = this.getStatusText();
+      this.responseText = String.interpret(transport.responseText);
+      this.headerJSON   = this._getHeaderJSON();
+    }
+
+    if(readyState == 4) {
+      var xml = transport.responseXML;
+      this.responseXML  = Object.isUndefined(xml) ? null : xml;
+      this.responseJSON = this._getResponseJSON();
+    }
+  },
+
+  status:      0,
+  statusText: '',
+
+  getStatus: Ajax.Request.prototype.getStatus,
+
+  getStatusText: function() {
+    try {
+      return this.transport.statusText || '';
+    } catch (e) { return '' }
+  },
+
+  getHeader: Ajax.Request.prototype.getHeader,
+
+  getAllHeaders: function() {
+    try {
+      return this.getAllResponseHeaders();
+    } catch (e) { return null }
+  },
+
+  getResponseHeader: function(name) {
+    return this.transport.getResponseHeader(name);
+  },
+
+  getAllResponseHeaders: function() {
+    return this.transport.getAllResponseHeaders();
+  },
+
+  _getHeaderJSON: function() {
+    var json = this.getHeader('X-JSON');
+    if (!json) return null;
+    json = decodeURIComponent(escape(json));
+    try {
+      return json.evalJSON(this.request.options.sanitizeJSON);
+    } catch (e) {
+      this.request.dispatchException(e);
+    }
+  },
+
+  _getResponseJSON: function() {
+    var options = this.request.options;
+    if (!options.evalJSON || (options.evalJSON != 'force' &&
+      !(this.getHeader('Content-type') || '').include('application/json')) ||
+        this.responseText.blank())
+          return null;
+    try {
+      return this.responseText.evalJSON(options.sanitizeJSON);
+    } catch (e) {
+      this.request.dispatchException(e);
+    }
+  }
+});
+
+Ajax.Updater = Class.create(Ajax.Request, {
+  initialize: function($super, container, url, options) {
+    this.container = {
+      success: (container.success || container),
+      failure: (container.failure || (container.success ? null : container))
+    };
+
+    options = Object.clone(options);
+    var onComplete = options.onComplete;
+    options.onComplete = (function(response, json) {
+      this.updateContent(response.responseText);
+      if (Object.isFunction(onComplete)) onComplete(response, json);
+    }).bind(this);
+
+    $super(url, options);
+  },
+
+  updateContent: function(responseText) {
+    var receiver = this.container[this.success() ? 'success' : 'failure'],
+        options = this.options;
+
+    if (!options.evalScripts) responseText = responseText.stripScripts();
+
+    if (receiver = $(receiver)) {
+      if (options.insertion) {
+        if (Object.isString(options.insertion)) {
+          var insertion = { }; insertion[options.insertion] = responseText;
+          receiver.insert(insertion);
+        }
+        else options.insertion(receiver, responseText);
+      }
+      else receiver.update(responseText);
+    }
+  }
+});
+
+Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
+  initialize: function($super, container, url, options) {
+    $super(options);
+    this.onComplete = this.options.onComplete;
+
+    this.frequency = (this.options.frequency || 2);
+    this.decay = (this.options.decay || 1);
+
+    this.updater = { };
+    this.container = container;
+    this.url = url;
+
+    this.start();
+  },
+
+  start: function() {
+    this.options.onComplete = this.updateComplete.bind(this);
+    this.onTimerEvent();
+  },
+
+  stop: function() {
+    this.updater.options.onComplete = undefined;
+    clearTimeout(this.timer);
+    (this.onComplete || Prototype.emptyFunction).apply(this, arguments);
+  },
+
+  updateComplete: function(response) {
+    if (this.options.decay) {
+      this.decay = (response.responseText == this.lastText ?
+        this.decay * this.options.decay : 1);
+
+      this.lastText = response.responseText;
+    }
+    this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency);
+  },
+
+  onTimerEvent: function() {
+    this.updater = new Ajax.Updater(this.container, this.url, this.options);
+  }
+});
+function $(element) {
+  if (arguments.length > 1) {
+    for (var i = 0, elements = [], length = arguments.length; i < length; i++)
+      elements.push($(arguments[i]));
+    return elements;
+  }
+  if (Object.isString(element))
+    element = document.getElementById(element);
+  return Element.extend(element);
+}
+
+if (Prototype.BrowserFeatures.XPath) {
+  document._getElementsByXPath = function(expression, parentElement) {
+    var results = [];
+    var query = document.evaluate(expression, $(parentElement) || document,
+      null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
+    for (var i = 0, length = query.snapshotLength; i < length; i++)
+      results.push(Element.extend(query.snapshotItem(i)));
+    return results;
+  };
+}
+
+/*--------------------------------------------------------------------------*/
+
+if (!window.Node) var Node = { };
+
+if (!Node.ELEMENT_NODE) {
+  // DOM level 2 ECMAScript Language Binding
+  Object.extend(Node, {
+    ELEMENT_NODE: 1,
+    ATTRIBUTE_NODE: 2,
+    TEXT_NODE: 3,
+    CDATA_SECTION_NODE: 4,
+    ENTITY_REFERENCE_NODE: 5,
+    ENTITY_NODE: 6,
+    PROCESSING_INSTRUCTION_NODE: 7,
+    COMMENT_NODE: 8,
+    DOCUMENT_NODE: 9,
+    DOCUMENT_TYPE_NODE: 10,
+    DOCUMENT_FRAGMENT_NODE: 11,
+    NOTATION_NODE: 12
+  });
+}
+
+(function() {
+  var element = this.Element;
+  this.Element = function(tagName, attributes) {
+    attributes = attributes || { };
+    tagName = tagName.toLowerCase();
+    var cache = Element.cache;
+    if (Prototype.Browser.IE && attributes.name) {
+      tagName = '<' + tagName + ' name="' + attributes.name + '">';
+      delete attributes.name;
+      return Element.writeAttribute(document.createElement(tagName), attributes);
+    }
+    if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName));
+    return Element.writeAttribute(cache[tagName].cloneNode(false), attributes);
+  };
+  Object.extend(this.Element, element || { });
+}).call(window);
+
+Element.cache = { };
+
+Element.Methods = {
+  visible: function(element) {
+    return $(element).style.display != 'none';
+  },
+
+  toggle: function(element) {
+    element = $(element);
+    Element[Element.visible(element) ? 'hide' : 'show'](element);
+    return element;
+  },
+
+  hide: function(element) {
+    $(element).style.display = 'none';
+    return element;
+  },
+
+  show: function(element) {
+    $(element).style.display = '';
+    return element;
+  },
+
+  remove: function(element) {
+    element = $(element);
+    element.parentNode.removeChild(element);
+    return element;
+  },
+
+  update: function(element, content) {
+    element = $(element);
+    if (content && content.toElement) content = content.toElement();
+    if (Object.isElement(content)) return element.update().insert(content);
+    content = Object.toHTML(content);
+    element.innerHTML = content.stripScripts();
+    content.evalScripts.bind(content).defer();
+    return element;
+  },
+
+  replace: function(element, content) {
+    element = $(element);
+    if (content && content.toElement) content = content.toElement();
+    else if (!Object.isElement(content)) {
+      content = Object.toHTML(content);
+      var range = element.ownerDocument.createRange();
+      range.selectNode(element);
+      content.evalScripts.bind(content).defer();
+      content = range.createContextualFragment(content.stripScripts());
+    }
+    element.parentNode.replaceChild(content, element);
+    return element;
+  },
+
+  insert: function(element, insertions) {
+    element = $(element);
+
+    if (Object.isString(insertions) || Object.isNumber(insertions) ||
+        Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML)))
+          insertions = {bottom:insertions};
+
+    var content, t, range;
+
+    for (position in insertions) {
+      content  = insertions[position];
+      position = position.toLowerCase();
+      t = Element._insertionTranslations[position];
+
+      if (content && content.toElement) content = content.toElement();
+      if (Object.isElement(content)) {
+        t.insert(element, content);
+        continue;
+      }
+
+      content = Object.toHTML(content);
+
+      range = element.ownerDocument.createRange();
+      t.initializeRange(element, range);
+      t.insert(element, range.createContextualFragment(content.stripScripts()));
+
+      content.evalScripts.bind(content).defer();
+    }
+
+    return element;
+  },
+
+  wrap: function(element, wrapper, attributes) {
+    element = $(element);
+    if (Object.isElement(wrapper))
+      $(wrapper).writeAttribute(attributes || { });
+    else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes);
+    else wrapper = new Element('div', wrapper);
+    if (element.parentNode)
+      element.parentNode.replaceChild(wrapper, element);
+    wrapper.appendChild(element);
+    return wrapper;
+  },
+
+  inspect: function(element) {
+    element = $(element);
+    var result = '<' + element.tagName.toLowerCase();
+    $H({'id': 'id', 'className': 'class'}).each(function(pair) {
+      var property = pair.first(), attribute = pair.last();
+      var value = (element[property] || '').toString();
+      if (value) result += ' ' + attribute + '=' + value.inspect(true);
+    });
+    return result + '>';
+  },
+
+  recursivelyCollect: function(element, property) {
+    element = $(element);
+    var elements = [];
+    while (element = element[property])
+      if (element.nodeType == 1)
+        elements.push(Element.extend(element));
+    return elements;
+  },
+
+  ancestors: function(element) {
+    return $(element).recursivelyCollect('parentNode');
+  },
+
+  descendants: function(element) {
+    return $(element).getElementsBySelector("*");
+  },
+
+  firstDescendant: function(element) {
+    element = $(element).firstChild;
+    while (element && element.nodeType != 1) element = element.nextSibling;
+    return $(element);
+  },
+
+  immediateDescendants: function(element) {
+    if (!(element = $(element).firstChild)) return [];
+    while (element && element.nodeType != 1) element = element.nextSibling;
+    if (element) return [element].concat($(element).nextSiblings());
+    return [];
+  },
+
+  previousSiblings: function(element) {
+    return $(element).recursivelyCollect('previousSibling');
+  },
+
+  nextSiblings: function(element) {
+    return $(element).recursivelyCollect('nextSibling');
+  },
+
+  siblings: function(element) {
+    element = $(element);
+    return element.previousSiblings().reverse().concat(element.nextSiblings());
+  },
+
+  match: function(element, selector) {
+    if (Object.isString(selector))
+      selector = new Selector(selector);
+    return selector.match($(element));
+  },
+
+  up: function(element, expression, index) {
+    element = $(element);
+    if (arguments.length == 1) return $(element.parentNode);
+    var ancestors = element.ancestors();
+    return expression ? Selector.findElement(ancestors, expression, index) :
+      ancestors[index || 0];
+  },
+
+  down: function(element, expression, index) {
+    element = $(element);
+    if (arguments.length == 1) return element.firstDescendant();
+    var descendants = element.descendants();
+    return expression ? Selector.findElement(descendants, expression, index) :
+      descendants[index || 0];
+  },
+
+  previous: function(element, expression, index) {
+    element = $(element);
+    if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element));
+    var previousSiblings = element.previousSiblings();
+    return expression ? Selector.findElement(previousSiblings, expression, index) :
+      previousSiblings[index || 0];
+  },
+
+  next: function(element, expression, index) {
+    element = $(element);
+    if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element));
+    var nextSiblings = element.nextSiblings();
+    return expression ? Selector.findElement(nextSiblings, expression, index) :
+      nextSiblings[index || 0];
+  },
+
+  select: function() {
+    var args = $A(arguments), element = $(args.shift());
+    return Selector.findChildElements(element, args);
+  },
+
+  adjacent: function() {
+    var args = $A(arguments), element = $(args.shift());
+    return Selector.findChildElements(element.parentNode, args).without(element);
+  },
+
+  identify: function(element) {
+    element = $(element);
+    var id = element.readAttribute('id'), self = arguments.callee;
+    if (id) return id;
+    do { id = 'anonymous_element_' + self.counter++ } while ($(id));
+    element.writeAttribute('id', id);
+    return id;
+  },
+
+  readAttribute: function(element, name) {
+    element = $(element);
+    if (Prototype.Browser.IE) {
+      var t = Element._attributeTranslations.read;
+      if (t.values[name]) return t.values[name](element, name);
+      if (t.names[name]) name = t.names[name];
+      if (name.include(':')) {
+        return (!element.attributes || !element.attributes[name]) ? null :
+         element.attributes[name].value;
+      }
+    }
+    return element.getAttribute(name);
+  },
+
+  writeAttribute: function(element, name, value) {
+    element = $(element);
+    var attributes = { }, t = Element._attributeTranslations.write;
+
+    if (typeof name == 'object') attributes = name;
+    else attributes[name] = Object.isUndefined(value) ? true : value;
+
+    for (var attr in attributes) {
+      name = t.names[attr] || attr;
+      value = attributes[attr];
+      if (t.values[attr]) name = t.values[attr](element, value);
+      if (value === false || value === null)
+        element.removeAttribute(name);
+      else if (value === true)
+        element.setAttribute(name, name);
+      else element.setAttribute(name, value);
+    }
+    return element;
+  },
+
+  getHeight: function(element) {
+    return $(element).getDimensions().height;
+  },
+
+  getWidth: function(element) {
+    return $(element).getDimensions().width;
+  },
+
+  classNames: function(element) {
+    return new Element.ClassNames(element);
+  },
+
+  hasClassName: function(element, className) {
+    if (!(element = $(element))) return;
+    var elementClassName = element.className;
+    return (elementClassName.length > 0 && (elementClassName == className ||
+      new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));
+  },
+
+  addClassName: function(element, className) {
+    if (!(element = $(element))) return;
+    if (!element.hasClassName(className))
+      element.className += (element.className ? ' ' : '') + className;
+    return element;
+  },
+
+  removeClassName: function(element, className) {
+    if (!(element = $(element))) return;
+    element.className = element.className.replace(
+      new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();
+    return element;
+  },
+
+  toggleClassName: function(element, className) {
+    if (!(element = $(element))) return;
+    return element[element.hasClassName(className) ?
+      'removeClassName' : 'addClassName'](className);
+  },
+
+  // removes whitespace-only text node children
+  cleanWhitespace: function(element) {
+    element = $(element);
+    var node = element.firstChild;
+    while (node) {
+      var nextNode = node.nextSibling;
+      if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
+        element.removeChild(node);
+      node = nextNode;
+    }
+    return element;
+  },
+
+  empty: function(element) {
+    return $(element).innerHTML.blank();
+  },
+
+  descendantOf: function(element, ancestor) {
+    element = $(element), ancestor = $(ancestor);
+    var originalAncestor = ancestor;
+
+    if (element.compareDocumentPosition)
+      return (element.compareDocumentPosition(ancestor) & 8) === 8;
+
+    if (element.sourceIndex && !Prototype.Browser.Opera) {
+      var e = element.sourceIndex, a = ancestor.sourceIndex,
+       nextAncestor = ancestor.nextSibling;
+      if (!nextAncestor) {
+        do { ancestor = ancestor.parentNode; }
+        while (!(nextAncestor = ancestor.nextSibling) && ancestor.parentNode);
+      }
+      if (nextAncestor) return (e > a && e < nextAncestor.sourceIndex);
+    }
+
+    while (element = element.parentNode)
+      if (element == originalAncestor) return true;
+    return false;
+  },
+
+  scrollTo: function(element) {
+    element = $(element);
+    var pos = element.cumulativeOffset();
+    window.scrollTo(pos[0], pos[1]);
+    return element;
+  },
+
+  getStyle: function(element, style) {
+    element = $(element);
+    style = style == 'float' ? 'cssFloat' : style.camelize();
+    var value = element.style[style];
+    if (!value) {
+      var css = document.defaultView.getComputedStyle(element, null);
+      value = css ? css[style] : null;
+    }
+    if (style == 'opacity') return value ? parseFloat(value) : 1.0;
+    return value == 'auto' ? null : value;
+  },
+
+  getOpacity: function(element) {
+    return $(element).getStyle('opacity');
+  },
+
+  setStyle: function(element, styles) {
+    element = $(element);
+    var elementStyle = element.style, match;
+    if (Object.isString(styles)) {
+      element.style.cssText += ';' + styles;
+      return styles.include('opacity') ?
+        element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element;
+    }
+    for (var property in styles)
+      if (property == 'opacity') element.setOpacity(styles[property]);
+      else
+        elementStyle[(property == 'float' || property == 'cssFloat') ?
+          (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') :
+            property] = styles[property];
+
+    return element;
+  },
+
+  setOpacity: function(element, value) {
+    element = $(element);
+    element.style.opacity = (value == 1 || value === '') ? '' :
+      (value < 0.00001) ? 0 : value;
+    return element;
+  },
+
+  getDimensions: function(element) {
+    element = $(element);
+    var display = $(element).getStyle('display');
+    if (display != 'none' && display != null) // Safari bug
+      return {width: element.offsetWidth, height: element.offsetHeight};
+
+    // All *Width and *Height properties give 0 on elements with display none,
+    // so enable the element temporarily
+    var els = element.style;
+    var originalVisibility = els.visibility;
+    var originalPosition = els.position;
+    var originalDisplay = els.display;
+    els.visibility = 'hidden';
+    els.position = 'absolute';
+    els.display = 'block';
+    var originalWidth = element.clientWidth;
+    var originalHeight = element.clientHeight;
+    els.display = originalDisplay;
+    els.position = originalPosition;
+    els.visibility = originalVisibility;
+    return {width: originalWidth, height: originalHeight};
+  },
+
+  makePositioned: function(element) {
+    element = $(element);
+    var pos = Element.getStyle(element, 'position');
+    if (pos == 'static' || !pos) {
+      element._madePositioned = true;
+      element.style.position = 'relative';
+      // Opera returns the offset relative to the positioning context, when an
+      // element is position relative but top and left have not been defined
+      if (window.opera) {
+        element.style.top = 0;
+        element.style.left = 0;
+      }
+    }
+    return element;
+  },
+
+  undoPositioned: function(element) {
+    element = $(element);
+    if (element._madePositioned) {
+      element._madePositioned = undefined;
+      element.style.position =
+        element.style.top =
+        element.style.left =
+        element.style.bottom =
+        element.style.right = '';
+    }
+    return element;
+  },
+
+  makeClipping: function(element) {
+    element = $(element);
+    if (element._overflow) return element;
+    element._overflow = Element.getStyle(element, 'overflow') || 'auto';
+    if (element._overflow !== 'hidden')
+      element.style.overflow = 'hidden';
+    return element;
+  },
+
+  undoClipping: function(element) {
+    element = $(element);
+    if (!element._overflow) return element;
+    element.style.overflow = element._overflow == 'auto' ? '' : element._overflow;
+    element._overflow = null;
+    return element;
+  },
+
+  cumulativeOffset: function(element) {
+    var valueT = 0, valueL = 0;
+    do {
+      valueT += element.offsetTop  || 0;
+      valueL += element.offsetLeft || 0;
+      element = element.offsetParent;
+    } while (element);
+    return Element._returnOffset(valueL, valueT);
+  },
+
+  positionedOffset: function(element) {
+    var valueT = 0, valueL = 0;
+    do {
+      valueT += element.offsetTop  || 0;
+      valueL += element.offsetLeft || 0;
+      element = element.offsetParent;
+      if (element) {
+        if (element.tagName == 'BODY') break;
+        var p = Element.getStyle(element, 'position');
+        if (p == 'relative' || p == 'absolute') break;
+      }
+    } while (element);
+    return Element._returnOffset(valueL, valueT);
+  },
+
+  absolutize: function(element) {
+    element = $(element);
+    if (element.getStyle('position') == 'absolute') return;
+    // Position.prepare(); // To be done manually by Scripty when it needs it.
+
+    var offsets = element.positionedOffset();
+    var top     = offsets[1];
+    var left    = offsets[0];
+    var width   = element.clientWidth;
+    var height  = element.clientHeight;
+
+    element._originalLeft   = left - parseFloat(element.style.left  || 0);
+    element._originalTop    = top  - parseFloat(element.style.top || 0);
+    element._originalWidth  = element.style.width;
+    element._originalHeight = element.style.height;
+
+    element.style.position = 'absolute';
+    element.style.top    = top + 'px';
+    element.style.left   = left + 'px';
+    element.style.width  = width + 'px';
+    element.style.height = height + 'px';
+    return element;
+  },
+
+  relativize: function(element) {
+    element = $(element);
+    if (element.getStyle('position') == 'relative') return;
+    // Position.prepare(); // To be done manually by Scripty when it needs it.
+
+    element.style.position = 'relative';
+    var top  = parseFloat(element.style.top  || 0) - (element._originalTop || 0);
+    var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);
+
+    element.style.top    = top + 'px';
+    element.style.left   = left + 'px';
+    element.style.height = element._originalHeight;
+    element.style.width  = element._originalWidth;
+    return element;
+  },
+
+  cumulativeScrollOffset: function(element) {
+    var valueT = 0, valueL = 0;
+    do {
+      valueT += element.scrollTop  || 0;
+      valueL += element.scrollLeft || 0;
+      element = element.parentNode;
+    } while (element);
+    return Element._returnOffset(valueL, valueT);
+  },
+
+  getOffsetParent: function(element) {
+    if (element.offsetParent) return $(element.offsetParent);
+    if (element == document.body) return $(element);
+
+    while ((element = element.parentNode) && element != document.body)
+      if (Element.getStyle(element, 'position') != 'static')
+        return $(element);
+
+    return $(document.body);
+  },
+
+  viewportOffset: function(forElement) {
+    var valueT = 0, valueL = 0;
+
+    var element = forElement;
+    do {
+      valueT += element.offsetTop  || 0;
+      valueL += element.offsetLeft || 0;
+
+      // Safari fix
+      if (element.offsetParent == document.body &&
+        Element.getStyle(element, 'position') == 'absolute') break;
+
+    } while (element = element.offsetParent);
+
+    element = forElement;
+    do {
+      if (!Prototype.Browser.Opera || element.tagName == 'BODY') {
+        valueT -= element.scrollTop  || 0;
+        valueL -= element.scrollLeft || 0;
+      }
+    } while (element = element.parentNode);
+
+    return Element._returnOffset(valueL, valueT);
+  },
+
+  clonePosition: function(element, source) {
+    var options = Object.extend({
+      setLeft:    true,
+      setTop:     true,
+      setWidth:   true,
+      setHeight:  true,
+      offsetTop:  0,
+      offsetLeft: 0
+    }, arguments[2] || { });
+
+    // find page position of source
+    source = $(source);
+    var p = source.viewportOffset();
+
+    // find coordinate system to use
+    element = $(element);
+    var delta = [0, 0];
+    var parent = null;
+    // delta [0,0] will do fine with position: fixed elements,
+    // position:absolute needs offsetParent deltas
+    if (Element.getStyle(element, 'position') == 'absolute') {
+      parent = element.getOffsetParent();
+      delta = parent.viewportOffset();
+    }
+
+    // correct by body offsets (fixes Safari)
+    if (parent == document.body) {
+      delta[0] -= document.body.offsetLeft;
+      delta[1] -= document.body.offsetTop;
+    }
+
+    // set position
+    if (options.setLeft)   element.style.left  = (p[0] - delta[0] + options.offsetLeft) + 'px';
+    if (options.setTop)    element.style.top   = (p[1] - delta[1] + options.offsetTop) + 'px';
+    if (options.setWidth)  element.style.width = source.offsetWidth + 'px';
+    if (options.setHeight) element.style.height = source.offsetHeight + 'px';
+    return element;
+  }
+};
+
+Element.Methods.identify.counter = 1;
+
+Object.extend(Element.Methods, {
+  getElementsBySelector: Element.Methods.select,
+  childElements: Element.Methods.immediateDescendants
+});
+
+Element._attributeTranslations = {
+  write: {
+    names: {
+      className: 'class',
+      htmlFor:   'for'
+    },
+    values: { }
+  }
+};
+
+
+if (!document.createRange || Prototype.Browser.Opera) {
+  Element.Methods.insert = function(element, insertions) {
+    element = $(element);
+
+    if (Object.isString(insertions) || Object.isNumber(insertions) ||
+        Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML)))
+          insertions = { bottom: insertions };
+
+    var t = Element._insertionTranslations, content, position, pos, tagName;
+
+    for (position in insertions) {
+      content  = insertions[position];
+      position = position.toLowerCase();
+      pos      = t[position];
+
+      if (content && content.toElement) content = content.toElement();
+      if (Object.isElement(content)) {
+        pos.insert(element, content);
+        continue;
+      }
+
+      content = Object.toHTML(content);
+      tagName = ((position == 'before' || position == 'after')
+        ? element.parentNode : element).tagName.toUpperCase();
+
+      if (t.tags[tagName]) {
+        var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts());
+        if (position == 'top' || position == 'after') fragments.reverse();
+        fragments.each(pos.insert.curry(element));
+      }
+      else element.insertAdjacentHTML(pos.adjacency, content.stripScripts());
+
+      content.evalScripts.bind(content).defer();
+    }
+
+    return element;
+  };
+}
+
+if (Prototype.Browser.Opera) {
+  Element.Methods.getStyle = Element.Methods.getStyle.wrap(
+    function(proceed, element, style) {
+      switch (style) {
+        case 'left': case 'top': case 'right': case 'bottom':
+          if (proceed(element, 'position') === 'static') return null;
+        case 'height': case 'width':
+          // returns '0px' for hidden elements; we want it to return null
+          if (!Element.visible(element)) return null;
+
+          // returns the border-box dimensions rather than the content-box
+          // dimensions, so we subtract padding and borders from the value
+          var dim = parseInt(proceed(element, style), 10);
+
+          if (dim !== element['offset' + style.capitalize()])
+            return dim + 'px';
+
+          var properties;
+          if (style === 'height') {
+            properties = ['border-top-width', 'padding-top',
+             'padding-bottom', 'border-bottom-width'];
+          }
+          else {
+            properties = ['border-left-width', 'padding-left',
+             'padding-right', 'border-right-width'];
+          }
+          return properties.inject(dim, function(memo, property) {
+            var val = proceed(element, property);
+            return val === null ? memo : memo - parseInt(val, 10);
+          }) + 'px';
+        default: return proceed(element, style);
+      }
+    }
+  );
+
+  Element.Methods.readAttribute = Element.Methods.readAttribute.wrap(
+    function(proceed, element, attribute) {
+      if (attribute === 'title') return element.title;
+      return proceed(element, attribute);
+    }
+  );
+}
+
+else if (Prototype.Browser.IE) {
+  $w('positionedOffset getOffsetParent viewportOffset').each(function(method) {
+    Element.Methods[method] = Element.Methods[method].wrap(
+      function(proceed, element) {
+        element = $(element);
+        var position = element.getStyle('position');
+        if (position != 'static') return proceed(element);
+        element.setStyle({ position: 'relative' });
+        var value = proceed(element);
+        element.setStyle({ position: position });
+        return value;
+      }
+    );
+  });
+
+  Element.Methods.getStyle = function(element, style) {
+    element = $(element);
+    style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize();
+    var value = element.style[style];
+    if (!value && element.currentStyle) value = element.currentStyle[style];
+
+    if (style == 'opacity') {
+      if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/))
+        if (value[1]) return parseFloat(value[1]) / 100;
+      return 1.0;
+    }
+
+    if (value == 'auto') {
+      if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none'))
+        return element['offset' + style.capitalize()] + 'px';
+      return null;
+    }
+    return value;
+  };
+
+  Element.Methods.setOpacity = function(element, value) {
+    function stripAlpha(filter){
+      return filter.replace(/alpha\([^\)]*\)/gi,'');
+    }
+    element = $(element);
+    var currentStyle = element.currentStyle;
+    if ((currentStyle && !currentStyle.hasLayout) ||
+      (!currentStyle && element.style.zoom == 'normal'))
+        element.style.zoom = 1;
+
+    var filter = element.getStyle('filter'), style = element.style;
+    if (value == 1 || value === '') {
+      (filter = stripAlpha(filter)) ?
+        style.filter = filter : style.removeAttribute('filter');
+      return element;
+    } else if (value < 0.00001) value = 0;
+    style.filter = stripAlpha(filter) +
+      'alpha(opacity=' + (value * 100) + ')';
+    return element;
+  };
+
+  Element._attributeTranslations = {
+    read: {
+      names: {
+        'class': 'className',
+        'for':   'htmlFor'
+      },
+      values: {
+        _getAttr: function(element, attribute) {
+          return element.getAttribute(attribute, 2);
+        },
+        _getAttrNode: function(element, attribute) {
+          var node = element.getAttributeNode(attribute);
+          return node ? node.value : "";
+        },
+        _getEv: function(element, attribute) {
+          attribute = element.getAttribute(attribute);
+          return attribute ? attribute.toString().slice(23, -2) : null;
+        },
+        _flag: function(element, attribute) {
+          return $(element).hasAttribute(attribute) ? attribute : null;
+        },
+        style: function(element) {
+          return element.style.cssText.toLowerCase();
+        },
+        title: function(element) {
+          return element.title;
+        }
+      }
+    }
+  };
+
+  Element._attributeTranslations.write = {
+    names: Object.clone(Element._attributeTranslations.read.names),
+    values: {
+      checked: function(element, value) {
+        element.checked = !!value;
+      },
+
+      style: function(element, value) {
+        element.style.cssText = value ? value : '';
+      }
+    }
+  };
+
+  Element._attributeTranslations.has = {};
+
+  $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +
+      'encType maxLength readOnly longDesc').each(function(attr) {
+    Element._attributeTranslations.write.names[attr.toLowerCase()] = attr;
+    Element._attributeTranslations.has[attr.toLowerCase()] = attr;
+  });
+
+  (function(v) {
+    Object.extend(v, {
+      href:        v._getAttr,
+      src:         v._getAttr,
+      type:        v._getAttr,
+      action:      v._getAttrNode,
+      disabled:    v._flag,
+      checked:     v._flag,
+      readonly:    v._flag,
+      multiple:    v._flag,
+      onload:      v._getEv,
+      onunload:    v._getEv,
+      onclick:     v._getEv,
+      ondblclick:  v._getEv,
+      onmousedown: v._getEv,
+      onmouseup:   v._getEv,
+      onmouseover: v._getEv,
+      onmousemove: v._getEv,
+      onmouseout:  v._getEv,
+      onfocus:     v._getEv,
+      onblur:      v._getEv,
+      onkeypress:  v._getEv,
+      onkeydown:   v._getEv,
+      onkeyup:     v._getEv,
+      onsubmit:    v._getEv,
+      onreset:     v._getEv,
+      onselect:    v._getEv,
+      onchange:    v._getEv
+    });
+  })(Element._attributeTranslations.read.values);
+}
+
+else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) {
+  Element.Methods.setOpacity = function(element, value) {
+    element = $(element);
+    element.style.opacity = (value == 1) ? 0.999999 :
+      (value === '') ? '' : (value < 0.00001) ? 0 : value;
+    return element;
+  };
+}
+
+else if (Prototype.Browser.WebKit) {
+  Element.Methods.setOpacity = function(element, value) {
+    element = $(element);
+    element.style.opacity = (value == 1 || value === '') ? '' :
+      (value < 0.00001) ? 0 : value;
+
+    if (value == 1)
+      if(element.tagName == 'IMG' && element.width) {
+        element.width++; element.width--;
+      } else try {
+        var n = document.createTextNode(' ');
+        element.appendChild(n);
+        element.removeChild(n);
+      } catch (e) { }
+
+    return element;
+  };
+
+  // Safari returns margins on body which is incorrect if the child is absolutely
+  // positioned.  For performance reasons, redefine Element#cumulativeOffset for
+  // KHTML/WebKit only.
+  Element.Methods.cumulativeOffset = function(element) {
+    var valueT = 0, valueL = 0;
+    do {
+      valueT += element.offsetTop  || 0;
+      valueL += element.offsetLeft || 0;
+      if (element.offsetParent == document.body)
+        if (Element.getStyle(element, 'position') == 'absolute') break;
+
+      element = element.offsetParent;
+    } while (element);
+
+    return Element._returnOffset(valueL, valueT);
+  };
+}
+
+if (Prototype.Browser.IE || Prototype.Browser.Opera) {
+  // IE and Opera are missing .innerHTML support for TABLE-related and SELECT elements
+  Element.Methods.update = function(element, content) {
+    element = $(element);
+
+    if (content && content.toElement) content = content.toElement();
+    if (Object.isElement(content)) return element.update().insert(content);
+
+    content = Object.toHTML(content);
+    var tagName = element.tagName.toUpperCase();
+
+    if (tagName in Element._insertionTranslations.tags) {
+      $A(element.childNodes).each(function(node) { element.removeChild(node) });
+      Element._getContentFromAnonymousElement(tagName, content.stripScripts())
+        .each(function(node) { element.appendChild(node) });
+    }
+    else element.innerHTML = content.stripScripts();
+
+    content.evalScripts.bind(content).defer();
+    return element;
+  };
+}
+
+if (document.createElement('div').outerHTML) {
+  Element.Methods.replace = function(element, content) {
+    element = $(element);
+
+    if (content && content.toElement) content = content.toElement();
+    if (Object.isElement(content)) {
+      element.parentNode.replaceChild(content, element);
+      return element;
+    }
+
+    content = Object.toHTML(content);
+    var parent = element.parentNode, tagName = parent.tagName.toUpperCase();
+
+    if (Element._insertionTranslations.tags[tagName]) {
+      var nextSibling = element.next();
+      var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts());
+      parent.removeChild(element);
+      if (nextSibling)
+        fragments.each(function(node) { parent.insertBefore(node, nextSibling) });
+      else
+        fragments.each(function(node) { parent.appendChild(node) });
+    }
+    else element.outerHTML = content.stripScripts();
+
+    content.evalScripts.bind(content).defer();
+    return element;
+  };
+}
+
+Element._returnOffset = function(l, t) {
+  var result = [l, t];
+  result.left = l;
+  result.top = t;
+  return result;
+};
+
+Element._getContentFromAnonymousElement = function(tagName, html) {
+  var div = new Element('div'), t = Element._insertionTranslations.tags[tagName];
+  div.innerHTML = t[0] + html + t[1];
+  t[2].times(function() { div = div.firstChild });
+  return $A(div.childNodes);
+};
+
+Element._insertionTranslations = {
+  before: {
+    adjacency: 'beforeBegin',
+    insert: function(element, node) {
+      element.parentNode.insertBefore(node, element);
+    },
+    initializeRange: function(element, range) {
+      range.setStartBefore(element);
+    }
+  },
+  top: {
+    adjacency: 'afterBegin',
+    insert: function(element, node) {
+      element.insertBefore(node, element.firstChild);
+    },
+    initializeRange: function(element, range) {
+      range.selectNodeContents(element);
+      range.collapse(true);
+    }
+  },
+  bottom: {
+    adjacency: 'beforeEnd',
+    insert: function(element, node) {
+      element.appendChild(node);
+    }
+  },
+  after: {
+    adjacency: 'afterEnd',
+    insert: function(element, node) {
+      element.parentNode.insertBefore(node, element.nextSibling);
+    },
+    initializeRange: function(element, range) {
+      range.setStartAfter(element);
+    }
+  },
+  tags: {
+    TABLE:  ['<table>',                '</table>',                   1],
+    TBODY:  ['<table><tbody>',         '</tbody></table>',           2],
+    TR:     ['<table><tbody><tr>',     '</tr></tbody></table>',      3],
+    TD:     ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4],
+    SELECT: ['<select>',               '</select>',                  1]
+  }
+};
+
+(function() {
+  this.bottom.initializeRange = this.top.initializeRange;
+  Object.extend(this.tags, {
+    THEAD: this.tags.TBODY,
+    TFOOT: this.tags.TBODY,
+    TH:    this.tags.TD
+  });
+}).call(Element._insertionTranslations);
+
+Element.Methods.Simulated = {
+  hasAttribute: function(element, attribute) {
+    attribute = Element._attributeTranslations.has[attribute] || attribute;
+    var node = $(element).getAttributeNode(attribute);
+    return node && node.specified;
+  }
+};
+
+Element.Methods.ByTag = { };
+
+Object.extend(Element, Element.Methods);
+
+if (!Prototype.BrowserFeatures.ElementExtensions &&
+    document.createElement('div').__proto__) {
+  window.HTMLElement = { };
+  window.HTMLElement.prototype = document.createElement('div').__proto__;
+  Prototype.BrowserFeatures.ElementExtensions = true;
+}
+
+Element.extend = (function() {
+  if (Prototype.BrowserFeatures.SpecificElementExtensions)
+    return Prototype.K;
+
+  var Methods = { }, ByTag = Element.Methods.ByTag;
+
+  var extend = Object.extend(function(element) {
+    if (!element || element._extendedByPrototype ||
+        element.nodeType != 1 || element == window) return element;
+
+    var methods = Object.clone(Methods),
+      tagName = element.tagName, property, value;
+
+    // extend methods for specific tags
+    if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);
+
+    for (property in methods) {
+      value = methods[property];
+      if (Object.isFunction(value) && !(property in element))
+        element[property] = value.methodize();
+    }
+
+    element._extendedByPrototype = Prototype.emptyFunction;
+    return element;
+
+  }, {
+    refresh: function() {
+      // extend methods for all tags (Safari doesn't need this)
+      if (!Prototype.BrowserFeatures.ElementExtensions) {
+        Object.extend(Methods, Element.Methods);
+        Object.extend(Methods, Element.Methods.Simulated);
+      }
+    }
+  });
+
+  extend.refresh();
+  return extend;
+})();
+
+Element.hasAttribute = function(element, attribute) {
+  if (element.hasAttribute) return element.hasAttribute(attribute);
+  return Element.Methods.Simulated.hasAttribute(element, attribute);
+};
+
+Element.addMethods = function(methods) {
+  var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag;
+
+  if (!methods) {
+    Object.extend(Form, Form.Methods);
+    Object.extend(Form.Element, Form.Element.Methods);
+    Object.extend(Element.Methods.ByTag, {
+      "FORM":     Object.clone(Form.Methods),
+      "INPUT":    Object.clone(Form.Element.Methods),
+      "SELECT":   Object.clone(Form.Element.Methods),
+      "TEXTAREA": Object.clone(Form.Element.Methods)
+    });
+  }
+
+  if (arguments.length == 2) {
+    var tagName = methods;
+    methods = arguments[1];
+  }
+
+  if (!tagName) Object.extend(Element.Methods, methods || { });
+  else {
+    if (Object.isArray(tagName)) tagName.each(extend);
+    else extend(tagName);
+  }
+
+  function extend(tagName) {
+    tagName = tagName.toUpperCase();
+    if (!Element.Methods.ByTag[tagName])
+      Element.Methods.ByTag[tagName] = { };
+    Object.extend(Element.Methods.ByTag[tagName], methods);
+  }
+
+  function copy(methods, destination, onlyIfAbsent) {
+    onlyIfAbsent = onlyIfAbsent || false;
+    for (var property in methods) {
+      var value = methods[property];
+      if (!Object.isFunction(value)) continue;
+      if (!onlyIfAbsent || !(property in destination))
+        destination[property] = value.methodize();
+    }
+  }
+
+  function findDOMClass(tagName) {
+    var klass;
+    var trans = {
+      "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",
+      "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList",
+      "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading",
+      "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",
+      "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION":
+      "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":
+      "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR":
+      "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":
+      "FrameSet", "IFRAME": "IFrame"
+    };
+    if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element';
+    if (window[klass]) return window[klass];
+    klass = 'HTML' + tagName + 'Element';
+    if (window[klass]) return window[klass];
+    klass = 'HTML' + tagName.capitalize() + 'Element';
+    if (window[klass]) return window[klass];
+
+    window[klass] = { };
+    window[klass].prototype = document.createElement(tagName).__proto__;
+    return window[klass];
+  }
+
+  if (F.ElementExtensions) {
+    copy(Element.Methods, HTMLElement.prototype);
+    copy(Element.Methods.Simulated, HTMLElement.prototype, true);
+  }
+
+  if (F.SpecificElementExtensions) {
+    for (var tag in Element.Methods.ByTag) {
+      var klass = findDOMClass(tag);
+      if (Object.isUndefined(klass)) continue;
+      copy(T[tag], klass.prototype);
+    }
+  }
+
+  Object.extend(Element, Element.Methods);
+  delete Element.ByTag;
+
+  if (Element.extend.refresh) Element.extend.refresh();
+  Element.cache = { };
+};
+
+document.viewport = {
+  getDimensions: function() {
+    var dimensions = { };
+    var B = Prototype.Browser;
+    $w('width height').each(function(d) {
+      var D = d.capitalize();
+      dimensions[d] = (B.WebKit && !document.evaluate) ? self['inner' + D] :
+        (B.Opera) ? document.body['client' + D] : document.documentElement['client' + D];
+    });
+    return dimensions;
+  },
+
+  getWidth: function() {
+    return this.getDimensions().width;
+  },
+
+  getHeight: function() {
+    return this.getDimensions().height;
+  },
+
+  getScrollOffsets: function() {
+    return Element._returnOffset(
+      window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft,
+      window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop);
+  }
+};
+/* Portions of the Selector class are derived from Jack Slocum’s DomQuery,
+ * part of YUI-Ext version 0.40, distributed under the terms of an MIT-style
+ * license.  Please see http://www.yui-ext.com/ for more information. */
+
+var Selector = Class.create({
+  initialize: function(expression) {
+    this.expression = expression.strip();
+    this.compileMatcher();
+  },
+
+  shouldUseXPath: function() {
+    if (!Prototype.BrowserFeatures.XPath) return false;
+
+    var e = this.expression;
+
+    // Safari 3 chokes on :*-of-type and :empty
+    if (Prototype.Browser.WebKit &&
+     (e.include("-of-type") || e.include(":empty")))
+      return false;
+
+    // XPath can't do namespaced attributes, nor can it read
+    // the "checked" property from DOM nodes
+    if ((/(\[[\w-]*?:|:checked)/).test(this.expression))
+      return false;
+
+    return true;
+  },
+
+  compileMatcher: function() {
+    if (this.shouldUseXPath())
+      return this.compileXPathMatcher();
+
+    var e = this.expression, ps = Selector.patterns, h = Selector.handlers,
+        c = Selector.criteria, le, p, m;
+
+    if (Selector._cache[e]) {
+      this.matcher = Selector._cache[e];
+      return;
+    }
+
+    this.matcher = ["this.matcher = function(root) {",
+                    "var r = root, h = Selector.handlers, c = false, n;"];
+
+    while (e && le != e && (/\S/).test(e)) {
+      le = e;
+      for (var i in ps) {
+        p = ps[i];
+        if (m = e.match(p)) {
+          this.matcher.push(Object.isFunction(c[i]) ? c[i](m) :
+    	      new Template(c[i]).evaluate(m));
+          e = e.replace(m[0], '');
+          break;
+        }
+      }
+    }
+
+    this.matcher.push("return h.unique(n);\n}");
+    eval(this.matcher.join('\n'));
+    Selector._cache[this.expression] = this.matcher;
+  },
+
+  compileXPathMatcher: function() {
+    var e = this.expression, ps = Selector.patterns,
+        x = Selector.xpath, le, m;
+
+    if (Selector._cache[e]) {
+      this.xpath = Selector._cache[e]; return;
+    }
+
+    this.matcher = ['.//*'];
+    while (e && le != e && (/\S/).test(e)) {
+      le = e;
+      for (var i in ps) {
+        if (m = e.match(ps[i])) {
+          this.matcher.push(Object.isFunction(x[i]) ? x[i](m) :
+            new Template(x[i]).evaluate(m));
+          e = e.replace(m[0], '');
+          break;
+        }
+      }
+    }
+
+    this.xpath = this.matcher.join('');
+    Selector._cache[this.expression] = this.xpath;
+  },
+
+  findElements: function(root) {
+    root = root || document;
+    if (this.xpath) return document._getElementsByXPath(this.xpath, root);
+    return this.matcher(root);
+  },
+
+  match: function(element) {
+    this.tokens = [];
+
+    var e = this.expression, ps = Selector.patterns, as = Selector.assertions;
+    var le, p, m;
+
+    while (e && le !== e && (/\S/).test(e)) {
+      le = e;
+      for (var i in ps) {
+        p = ps[i];
+        if (m = e.match(p)) {
+          // use the Selector.assertions methods unless the selector
+          // is too complex.
+          if (as[i]) {
+            this.tokens.push([i, Object.clone(m)]);
+            e = e.replace(m[0], '');
+          } else {
+            // reluctantly do a document-wide search
+            // and look for a match in the array
+            return this.findElements(document).include(element);
+          }
+        }
+      }
+    }
+
+    var match = true, name, matches;
+    for (var i = 0, token; token = this.tokens[i]; i++) {
+      name = token[0], matches = token[1];
+      if (!Selector.assertions[name](element, matches)) {
+        match = false; break;
+      }
+    }
+
+    return match;
+  },
+
+  toString: function() {
+    return this.expression;
+  },
+
+  inspect: function() {
+    return "#<Selector:" + this.expression.inspect() + ">";
+  }
+});
+
+Object.extend(Selector, {
+  _cache: { },
+
+  xpath: {
+    descendant:   "//*",
+    child:        "/*",
+    adjacent:     "/following-sibling::*[1]",
+    laterSibling: '/following-sibling::*',
+    tagName:      function(m) {
+      if (m[1] == '*') return '';
+      return "[local-name()='" + m[1].toLowerCase() +
+             "' or local-name()='" + m[1].toUpperCase() + "']";
+    },
+    className:    "[contains(concat(' ', @class, ' '), ' #{1} ')]",
+    id:           "[@id='#{1}']",
+    attrPresence: function(m) {
+      m[1] = m[1].toLowerCase();
+      return new Template("[@#{1}]").evaluate(m);
+    },
+    attr: function(m) {
+      m[1] = m[1].toLowerCase();
+      m[3] = m[5] || m[6];
+      return new Template(Selector.xpath.operators[m[2]]).evaluate(m);
+    },
+    pseudo: function(m) {
+      var h = Selector.xpath.pseudos[m[1]];
+      if (!h) return '';
+      if (Object.isFunction(h)) return h(m);
+      return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);
+    },
+    operators: {
+      '=':  "[@#{1}='#{3}']",
+      '!=': "[@#{1}!='#{3}']",
+      '^=': "[starts-with(@#{1}, '#{3}')]",
+      '$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']",
+      '*=': "[contains(@#{1}, '#{3}')]",
+      '~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",
+      '|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"
+    },
+    pseudos: {
+      'first-child': '[not(preceding-sibling::*)]',
+      'last-child':  '[not(following-sibling::*)]',
+      'only-child':  '[not(preceding-sibling::* or following-sibling::*)]',
+      'empty':       "[count(*) = 0 and (count(text()) = 0 or translate(text(), ' \t\r\n', '') = '')]",
+      'checked':     "[@checked]",
+      'disabled':    "[@disabled]",
+      'enabled':     "[not(@disabled)]",
+      'not': function(m) {
+        var e = m[6], p = Selector.patterns,
+            x = Selector.xpath, le, v;
+
+        var exclusion = [];
+        while (e && le != e && (/\S/).test(e)) {
+          le = e;
+          for (var i in p) {
+            if (m = e.match(p[i])) {
+              v = Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m);
+              exclusion.push("(" + v.substring(1, v.length - 1) + ")");
+              e = e.replace(m[0], '');
+              break;
+            }
+          }
+        }
+        return "[not(" + exclusion.join(" and ") + ")]";
+      },
+      'nth-child':      function(m) {
+        return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m);
+      },
+      'nth-last-child': function(m) {
+        return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m);
+      },
+      'nth-of-type':    function(m) {
+        return Selector.xpath.pseudos.nth("position() ", m);
+      },
+      'nth-last-of-type': function(m) {
+        return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m);
+      },
+      'first-of-type':  function(m) {
+        m[6] = "1"; return Selector.xpath.pseudos['nth-of-type'](m);
+      },
+      'last-of-type':   function(m) {
+        m[6] = "1"; return Selector.xpath.pseudos['nth-last-of-type'](m);
+      },
+      'only-of-type':   function(m) {
+        var p = Selector.xpath.pseudos; return p['first-of-type'](m) + p['last-of-type'](m);
+      },
+      nth: function(fragment, m) {
+        var mm, formula = m[6], predicate;
+        if (formula == 'even') formula = '2n+0';
+        if (formula == 'odd')  formula = '2n+1';
+        if (mm = formula.match(/^(\d+)$/)) // digit only
+          return '[' + fragment + "= " + mm[1] + ']';
+        if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
+          if (mm[1] == "-") mm[1] = -1;
+          var a = mm[1] ? Number(mm[1]) : 1;
+          var b = mm[2] ? Number(mm[2]) : 0;
+          predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and " +
+          "((#{fragment} - #{b}) div #{a} >= 0)]";
+          return new Template(predicate).evaluate({
+            fragment: fragment, a: a, b: b });
+        }
+      }
+    }
+  },
+
+  criteria: {
+    tagName:      'n = h.tagName(n, r, "#{1}", c);   c = false;',
+    className:    'n = h.className(n, r, "#{1}", c); c = false;',
+    id:           'n = h.id(n, r, "#{1}", c);        c = false;',
+    attrPresence: 'n = h.attrPresence(n, r, "#{1}"); c = false;',
+    attr: function(m) {
+      m[3] = (m[5] || m[6]);
+      return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}"); c = false;').evaluate(m);
+    },
+    pseudo: function(m) {
+      if (m[6]) m[6] = m[6].replace(/"/g, '\\"');
+      return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m);
+    },
+    descendant:   'c = "descendant";',
+    child:        'c = "child";',
+    adjacent:     'c = "adjacent";',
+    laterSibling: 'c = "laterSibling";'
+  },
+
+  patterns: {
+    // combinators must be listed first
+    // (and descendant needs to be last combinator)
+    laterSibling: /^\s*~\s*/,
+    child:        /^\s*>\s*/,
+    adjacent:     /^\s*\+\s*/,
+    descendant:   /^\s/,
+
+    // selectors follow
+    tagName:      /^\s*(\*|[\w\-]+)(\b|$)?/,
+    id:           /^#([\w\-\*]+)(\b|$)/,
+    className:    /^\.([\w\-\*]+)(\b|$)/,
+    pseudo:       /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s)|(?=:))/,
+    attrPresence: /^\[([\w]+)\]/,
+    attr:         /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/
+  },
+
+  // for Selector.match and Element#match
+  assertions: {
+    tagName: function(element, matches) {
+      return matches[1].toUpperCase() == element.tagName.toUpperCase();
+    },
+
+    className: function(element, matches) {
+      return Element.hasClassName(element, matches[1]);
+    },
+
+    id: function(element, matches) {
+      return element.id === matches[1];
+    },
+
+    attrPresence: function(element, matches) {
+      return Element.hasAttribute(element, matches[1]);
+    },
+
+    attr: function(element, matches) {
+      var nodeValue = Element.readAttribute(element, matches[1]);
+      return Selector.operators[matches[2]](nodeValue, matches[3]);
+    }
+  },
+
+  handlers: {
+    // UTILITY FUNCTIONS
+    // joins two collections
+    concat: function(a, b) {
+      for (var i = 0, node; node = b[i]; i++)
+        a.push(node);
+      return a;
+    },
+
+    // marks an array of nodes for counting
+    mark: function(nodes) {
+      for (var i = 0, node; node = nodes[i]; i++)
+        node._counted = true;
+      return nodes;
+    },
+
+    unmark: function(nodes) {
+      for (var i = 0, node; node = nodes[i]; i++)
+        node._counted = undefined;
+      return nodes;
+    },
+
+    // mark each child node with its position (for nth calls)
+    // "ofType" flag indicates whether we're indexing for nth-of-type
+    // rather than nth-child
+    index: function(parentNode, reverse, ofType) {
+      parentNode._counted = true;
+      if (reverse) {
+        for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) {
+          var node = nodes[i];
+          if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++;
+        }
+      } else {
+        for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++)
+          if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++;
+      }
+    },
+
+    // filters out duplicates and extends all nodes
+    unique: function(nodes) {
+      if (nodes.length == 0) return nodes;
+      var results = [], n;
+      for (var i = 0, l = nodes.length; i < l; i++)
+        if (!(n = nodes[i])._counted) {
+          n._counted = true;
+          results.push(Element.extend(n));
+        }
+      return Selector.handlers.unmark(results);
+    },
+
+    // COMBINATOR FUNCTIONS
+    descendant: function(nodes) {
+      var h = Selector.handlers;
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        h.concat(results, node.getElementsByTagName('*'));
+      return results;
+    },
+
+    child: function(nodes) {
+      var h = Selector.handlers;
+      for (var i = 0, results = [], node; node = nodes[i]; i++) {
+        for (var j = 0, child; child = node.childNodes[j]; j++)
+          if (child.nodeType == 1 && child.tagName != '!') results.push(child);
+      }
+      return results;
+    },
+
+    adjacent: function(nodes) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++) {
+        var next = this.nextElementSibling(node);
+        if (next) results.push(next);
+      }
+      return results;
+    },
+
+    laterSibling: function(nodes) {
+      var h = Selector.handlers;
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        h.concat(results, Element.nextSiblings(node));
+      return results;
+    },
+
+    nextElementSibling: function(node) {
+      while (node = node.nextSibling)
+	      if (node.nodeType == 1) return node;
+      return null;
+    },
+
+    previousElementSibling: function(node) {
+      while (node = node.previousSibling)
+        if (node.nodeType == 1) return node;
+      return null;
+    },
+
+    // TOKEN FUNCTIONS
+    tagName: function(nodes, root, tagName, combinator) {
+      tagName = tagName.toUpperCase();
+      var results = [], h = Selector.handlers;
+      if (nodes) {
+        if (combinator) {
+          // fastlane for ordinary descendant combinators
+          if (combinator == "descendant") {
+            for (var i = 0, node; node = nodes[i]; i++)
+              h.concat(results, node.getElementsByTagName(tagName));
+            return results;
+          } else nodes = this[combinator](nodes);
+          if (tagName == "*") return nodes;
+        }
+        for (var i = 0, node; node = nodes[i]; i++)
+          if (node.tagName.toUpperCase() == tagName) results.push(node);
+        return results;
+      } else return root.getElementsByTagName(tagName);
+    },
+
+    id: function(nodes, root, id, combinator) {
+      var targetNode = $(id), h = Selector.handlers;
+      if (!targetNode) return [];
+      if (!nodes && root == document) return [targetNode];
+      if (nodes) {
+        if (combinator) {
+          if (combinator == 'child') {
+            for (var i = 0, node; node = nodes[i]; i++)
+              if (targetNode.parentNode == node) return [targetNode];
+          } else if (combinator == 'descendant') {
+            for (var i = 0, node; node = nodes[i]; i++)
+              if (Element.descendantOf(targetNode, node)) return [targetNode];
+          } else if (combinator == 'adjacent') {
+            for (var i = 0, node; node = nodes[i]; i++)
+              if (Selector.handlers.previousElementSibling(targetNode) == node)
+                return [targetNode];
+          } else nodes = h[combinator](nodes);
+        }
+        for (var i = 0, node; node = nodes[i]; i++)
+          if (node == targetNode) return [targetNode];
+        return [];
+      }
+      return (targetNode && Element.descendantOf(targetNode, root)) ? [targetNode] : [];
+    },
+
+    className: function(nodes, root, className, combinator) {
+      if (nodes && combinator) nodes = this[combinator](nodes);
+      return Selector.handlers.byClassName(nodes, root, className);
+    },
+
+    byClassName: function(nodes, root, className) {
+      if (!nodes) nodes = Selector.handlers.descendant([root]);
+      var needle = ' ' + className + ' ';
+      for (var i = 0, results = [], node, nodeClassName; node = nodes[i]; i++) {
+        nodeClassName = node.className;
+        if (nodeClassName.length == 0) continue;
+        if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle))
+          results.push(node);
+      }
+      return results;
+    },
+
+    attrPresence: function(nodes, root, attr) {
+      if (!nodes) nodes = root.getElementsByTagName("*");
+      var results = [];
+      for (var i = 0, node; node = nodes[i]; i++)
+        if (Element.hasAttribute(node, attr)) results.push(node);
+      return results;
+    },
+
+    attr: function(nodes, root, attr, value, operator) {
+      if (!nodes) nodes = root.getElementsByTagName("*");
+      var handler = Selector.operators[operator], results = [];
+      for (var i = 0, node; node = nodes[i]; i++) {
+        var nodeValue = Element.readAttribute(node, attr);
+        if (nodeValue === null) continue;
+        if (handler(nodeValue, value)) results.push(node);
+      }
+      return results;
+    },
+
+    pseudo: function(nodes, name, value, root, combinator) {
+      if (nodes && combinator) nodes = this[combinator](nodes);
+      if (!nodes) nodes = root.getElementsByTagName("*");
+      return Selector.pseudos[name](nodes, value, root);
+    }
+  },
+
+  pseudos: {
+    'first-child': function(nodes, value, root) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++) {
+        if (Selector.handlers.previousElementSibling(node)) continue;
+          results.push(node);
+      }
+      return results;
+    },
+    'last-child': function(nodes, value, root) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++) {
+        if (Selector.handlers.nextElementSibling(node)) continue;
+          results.push(node);
+      }
+      return results;
+    },
+    'only-child': function(nodes, value, root) {
+      var h = Selector.handlers;
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        if (!h.previousElementSibling(node) && !h.nextElementSibling(node))
+          results.push(node);
+      return results;
+    },
+    'nth-child':        function(nodes, formula, root) {
+      return Selector.pseudos.nth(nodes, formula, root);
+    },
+    'nth-last-child':   function(nodes, formula, root) {
+      return Selector.pseudos.nth(nodes, formula, root, true);
+    },
+    'nth-of-type':      function(nodes, formula, root) {
+      return Selector.pseudos.nth(nodes, formula, root, false, true);
+    },
+    'nth-last-of-type': function(nodes, formula, root) {
+      return Selector.pseudos.nth(nodes, formula, root, true, true);
+    },
+    'first-of-type':    function(nodes, formula, root) {
+      return Selector.pseudos.nth(nodes, "1", root, false, true);
+    },
+    'last-of-type':     function(nodes, formula, root) {
+      return Selector.pseudos.nth(nodes, "1", root, true, true);
+    },
+    'only-of-type':     function(nodes, formula, root) {
+      var p = Selector.pseudos;
+      return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root);
+    },
+
+    // handles the an+b logic
+    getIndices: function(a, b, total) {
+      if (a == 0) return b > 0 ? [b] : [];
+      return $R(1, total).inject([], function(memo, i) {
+        if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i);
+        return memo;
+      });
+    },
+
+    // handles nth(-last)-child, nth(-last)-of-type, and (first|last)-of-type
+    nth: function(nodes, formula, root, reverse, ofType) {
+      if (nodes.length == 0) return [];
+      if (formula == 'even') formula = '2n+0';
+      if (formula == 'odd')  formula = '2n+1';
+      var h = Selector.handlers, results = [], indexed = [], m;
+      h.mark(nodes);
+      for (var i = 0, node; node = nodes[i]; i++) {
+        if (!node.parentNode._counted) {
+          h.index(node.parentNode, reverse, ofType);
+          indexed.push(node.parentNode);
+        }
+      }
+      if (formula.match(/^\d+$/)) { // just a number
+        formula = Number(formula);
+        for (var i = 0, node; node = nodes[i]; i++)
+          if (node.nodeIndex == formula) results.push(node);
+      } else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
+        if (m[1] == "-") m[1] = -1;
+        var a = m[1] ? Number(m[1]) : 1;
+        var b = m[2] ? Number(m[2]) : 0;
+        var indices = Selector.pseudos.getIndices(a, b, nodes.length);
+        for (var i = 0, node, l = indices.length; node = nodes[i]; i++) {
+          for (var j = 0; j < l; j++)
+            if (node.nodeIndex == indices[j]) results.push(node);
+        }
+      }
+      h.unmark(nodes);
+      h.unmark(indexed);
+      return results;
+    },
+
+    'empty': function(nodes, value, root) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++) {
+        // IE treats comments as element nodes
+        if (node.tagName == '!' || (node.firstChild && !node.innerHTML.match(/^\s*$/))) continue;
+        results.push(node);
+      }
+      return results;
+    },
+
+    'not': function(nodes, selector, root) {
+      var h = Selector.handlers, selectorType, m;
+      var exclusions = new Selector(selector).findElements(root);
+      h.mark(exclusions);
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        if (!node._counted) results.push(node);
+      h.unmark(exclusions);
+      return results;
+    },
+
+    'enabled': function(nodes, value, root) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        if (!node.disabled) results.push(node);
+      return results;
+    },
+
+    'disabled': function(nodes, value, root) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        if (node.disabled) results.push(node);
+      return results;
+    },
+
+    'checked': function(nodes, value, root) {
+      for (var i = 0, results = [], node; node = nodes[i]; i++)
+        if (node.checked) results.push(node);
+      return results;
+    }
+  },
+
+  operators: {
+    '=':  function(nv, v) { return nv == v; },
+    '!=': function(nv, v) { return nv != v; },
+    '^=': function(nv, v) { return nv.startsWith(v); },
+    '$=': function(nv, v) { return nv.endsWith(v); },
+    '*=': function(nv, v) { return nv.include(v); },
+    '~=': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + ' '); },
+    '|=': function(nv, v) { return ('-' + nv.toUpperCase() + '-').include('-' + v.toUpperCase() + '-'); }
+  },
+
+  matchElements: function(elements, expression) {
+    var matches = new Selector(expression).findElements(), h = Selector.handlers;
+    h.mark(matches);
+    for (var i = 0, results = [], element; element = elements[i]; i++)
+      if (element._counted) results.push(element);
+    h.unmark(matches);
+    return results;
+  },
+
+  findElement: function(elements, expression, index) {
+    if (Object.isNumber(expression)) {
+      index = expression; expression = false;
+    }
+    return Selector.matchElements(elements, expression || '*')[index || 0];
+  },
+
+  findChildElements: function(element, expressions) {
+    var exprs = expressions.join(',');
+    expressions = [];
+    exprs.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) {
+      expressions.push(m[1].strip());
+    });
+    var results = [], h = Selector.handlers;
+    for (var i = 0, l = expressions.length, selector; i < l; i++) {
+      selector = new Selector(expressions[i].strip());
+      h.concat(results, selector.findElements(element));
+    }
+    return (l > 1) ? h.unique(results) : results;
+  }
+});
+
+if (Prototype.Browser.IE) {
+  // IE returns comment nodes on getElementsByTagName("*").
+  // Filter them out.
+  Selector.handlers.concat = function(a, b) {
+    for (var i = 0, node; node = b[i]; i++)
+      if (node.tagName !== "!") a.push(node);
+    return a;
+  };
+}
+
+function $$() {
+  return Selector.findChildElements(document, $A(arguments));
+}
+var Form = {
+  reset: function(form) {
+    $(form).reset();
+    return form;
+  },
+
+  serializeElements: function(elements, options) {
+    if (typeof options != 'object') options = { hash: !!options };
+    else if (Object.isUndefined(options.hash)) options.hash = true;
+    var key, value, submitted = false, submit = options.submit;
+
+    var data = elements.inject({ }, function(result, element) {
+      if (!element.disabled && element.name) {
+        key = element.name; value = $(element).getValue();
+        if (value != null && (element.type != 'submit' || (!submitted &&
+            submit !== false && (!submit || key == submit) && (submitted = true)))) {
+          if (key in result) {
+            // a key is already present; construct an array of values
+            if (!Object.isArray(result[key])) result[key] = [result[key]];
+            result[key].push(value);
+          }
+          else result[key] = value;
+        }
+      }
+      return result;
+    });
+
+    return options.hash ? data : Object.toQueryString(data);
+  }
+};
+
+Form.Methods = {
+  serialize: function(form, options) {
+    return Form.serializeElements(Form.getElements(form), options);
+  },
+
+  getElements: function(form) {
+    return $A($(form).getElementsByTagName('*')).inject([],
+      function(elements, child) {
+        if (Form.Element.Serializers[child.tagName.toLowerCase()])
+          elements.push(Element.extend(child));
+        return elements;
+      }
+    );
+  },
+
+  getInputs: function(form, typeName, name) {
+    form = $(form);
+    var inputs = form.getElementsByTagName('input');
+
+    if (!typeName && !name) return $A(inputs).map(Element.extend);
+
+    for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) {
+      var input = inputs[i];
+      if ((typeName && input.type != typeName) || (name && input.name != name))
+        continue;
+      matchingInputs.push(Element.extend(input));
+    }
+
+    return matchingInputs;
+  },
+
+  disable: function(form) {
+    form = $(form);
+    Form.getElements(form).invoke('disable');
+    return form;
+  },
+
+  enable: function(form) {
+    form = $(form);
+    Form.getElements(form).invoke('enable');
+    return form;
+  },
+
+  findFirstElement: function(form) {
+    var elements = $(form).getElements().findAll(function(element) {
+      return 'hidden' != element.type && !element.disabled;
+    });
+    var firstByIndex = elements.findAll(function(element) {
+      return element.hasAttribute('tabIndex') && element.tabIndex >= 0;
+    }).sortBy(function(element) { return element.tabIndex }).first();
+
+    return firstByIndex ? firstByIndex : elements.find(function(element) {
+      return ['input', 'select', 'textarea'].include(element.tagName.toLowerCase());
+    });
+  },
+
+  focusFirstElement: function(form) {
+    form = $(form);
+    form.findFirstElement().activate();
+    return form;
+  },
+
+  request: function(form, options) {
+    form = $(form), options = Object.clone(options || { });
+
+    var params = options.parameters, action = form.readAttribute('action') || '';
+    if (action.blank()) action = window.location.href;
+    options.parameters = form.serialize(true);
+
+    if (params) {
+      if (Object.isString(params)) params = params.toQueryParams();
+      Object.extend(options.parameters, params);
+    }
+
+    if (form.hasAttribute('method') && !options.method)
+      options.method = form.method;
+
+    return new Ajax.Request(action, options);
+  }
+};
+
+/*--------------------------------------------------------------------------*/
+
+Form.Element = {
+  focus: function(element) {
+    $(element).focus();
+    return element;
+  },
+
+  select: function(element) {
+    $(element).select();
+    return element;
+  }
+};
+
+Form.Element.Methods = {
+  serialize: function(element) {
+    element = $(element);
+    if (!element.disabled && element.name) {
+      var value = element.getValue();
+      if (value != undefined) {
+        var pair = { };
+        pair[element.name] = value;
+        return Object.toQueryString(pair);
+      }
+    }
+    return '';
+  },
+
+  getValue: function(element) {
+    element = $(element);
+    var method = element.tagName.toLowerCase();
+    return Form.Element.Serializers[method](element);
+  },
+
+  setValue: function(element, value) {
+    element = $(element);
+    var method = element.tagName.toLowerCase();
+    Form.Element.Serializers[method](element, value);
+    return element;
+  },
+
+  clear: function(element) {
+    $(element).value = '';
+    return element;
+  },
+
+  present: function(element) {
+    return $(element).value != '';
+  },
+
+  activate: function(element) {
+    element = $(element);
+    try {
+      element.focus();
+      if (element.select && (element.tagName.toLowerCase() != 'input' ||
+          !['button', 'reset', 'submit'].include(element.type)))
+        element.select();
+    } catch (e) { }
+    return element;
+  },
+
+  disable: function(element) {
+    element = $(element);
+    element.blur();
+    element.disabled = true;
+    return element;
+  },
+
+  enable: function(element) {
+    element = $(element);
+    element.disabled = false;
+    return element;
+  }
+};
+
+/*--------------------------------------------------------------------------*/
+
+var Field = Form.Element;
+var $F = Form.Element.Methods.getValue;
+
+/*--------------------------------------------------------------------------*/
+
+Form.Element.Serializers = {
+  input: function(element, value) {
+    switch (element.type.toLowerCase()) {
+      case 'checkbox':
+      case 'radio':
+        return Form.Element.Serializers.inputSelector(element, value);
+      default:
+        return Form.Element.Serializers.textarea(element, value);
+    }
+  },
+
+  inputSelector: function(element, value) {
+    if (Object.isUndefined(value)) return element.checked ? element.value : null;
+    else element.checked = !!value;
+  },
+
+  textarea: function(element, value) {
+    if (Object.isUndefined(value)) return element.value;
+    else element.value = value;
+  },
+
+  select: function(element, index) {
+    if (Object.isUndefined(index))
+      return this[element.type == 'select-one' ?
+        'selectOne' : 'selectMany'](element);
+    else {
+      var opt, value, single = !Object.isArray(index);
+      for (var i = 0, length = element.length; i < length; i++) {
+        opt = element.options[i];
+        value = this.optionValue(opt);
+        if (single) {
+          if (value == index) {
+            opt.selected = true;
+            return;
+          }
+        }
+        else opt.selected = index.include(value);
+      }
+    }
+  },
+
+  selectOne: function(element) {
+    var index = element.selectedIndex;
+    return index >= 0 ? this.optionValue(element.options[index]) : null;
+  },
+
+  selectMany: function(element) {
+    var values, length = element.length;
+    if (!length) return null;
+
+    for (var i = 0, values = []; i < length; i++) {
+      var opt = element.options[i];
+      if (opt.selected) values.push(this.optionValue(opt));
+    }
+    return values;
+  },
+
+  optionValue: function(opt) {
+    // extend element because hasAttribute may not be native
+    return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text;
+  }
+};
+
+/*--------------------------------------------------------------------------*/
+
+Abstract.TimedObserver = Class.create(PeriodicalExecuter, {
+  initialize: function($super, element, frequency, callback) {
+    $super(callback, frequency);
+    this.element   = $(element);
+    this.lastValue = this.getValue();
+  },
+
+  execute: function() {
+    var value = this.getValue();
+    if (Object.isString(this.lastValue) && Object.isString(value) ?
+        this.lastValue != value : String(this.lastValue) != String(value)) {
+      this.callback(this.element, value);
+      this.lastValue = value;
+    }
+  }
+});
+
+Form.Element.Observer = Class.create(Abstract.TimedObserver, {
+  getValue: function() {
+    return Form.Element.getValue(this.element);
+  }
+});
+
+Form.Observer = Class.create(Abstract.TimedObserver, {
+  getValue: function() {
+    return Form.serialize(this.element);
+  }
+});
+
+/*--------------------------------------------------------------------------*/
+
+Abstract.EventObserver = Class.create({
+  initialize: function(element, callback) {
+    this.element  = $(element);
+    this.callback = callback;
+
+    this.lastValue = this.getValue();
+    if (this.element.tagName.toLowerCase() == 'form')
+      this.registerFormCallbacks();
+    else
+      this.registerCallback(this.element);
+  },
+
+  onElementEvent: function() {
+    var value = this.getValue();
+    if (this.lastValue != value) {
+      this.callback(this.element, value);
+      this.lastValue = value;
+    }
+  },
+
+  registerFormCallbacks: function() {
+    Form.getElements(this.element).each(this.registerCallback, this);
+  },
+
+  registerCallback: function(element) {
+    if (element.type) {
+      switch (element.type.toLowerCase()) {
+        case 'checkbox':
+        case 'radio':
+          Event.observe(element, 'click', this.onElementEvent.bind(this));
+          break;
+        default:
+          Event.observe(element, 'change', this.onElementEvent.bind(this));
+          break;
+      }
+    }
+  }
+});
+
+Form.Element.EventObserver = Class.create(Abstract.EventObserver, {
+  getValue: function() {
+    return Form.Element.getValue(this.element);
+  }
+});
+
+Form.EventObserver = Class.create(Abstract.EventObserver, {
+  getValue: function() {
+    return Form.serialize(this.element);
+  }
+});
+if (!window.Event) var Event = { };
+
+Object.extend(Event, {
+  KEY_BACKSPACE: 8,
+  KEY_TAB:       9,
+  KEY_RETURN:   13,
+  KEY_ESC:      27,
+  KEY_LEFT:     37,
+  KEY_UP:       38,
+  KEY_RIGHT:    39,
+  KEY_DOWN:     40,
+  KEY_DELETE:   46,
+  KEY_HOME:     36,
+  KEY_END:      35,
+  KEY_PAGEUP:   33,
+  KEY_PAGEDOWN: 34,
+  KEY_INSERT:   45,
+
+  cache: { },
+
+  relatedTarget: function(event) {
+    var element;
+    switch(event.type) {
+      case 'mouseover': element = event.fromElement; break;
+      case 'mouseout':  element = event.toElement;   break;
+      default: return null;
+    }
+    return Element.extend(element);
+  }
+});
+
+Event.Methods = (function() {
+  var isButton;
+
+  if (Prototype.Browser.IE) {
+    var buttonMap = { 0: 1, 1: 4, 2: 2 };
+    isButton = function(event, code) {
+      return event.button == buttonMap[code];
+    };
+
+  } else if (Prototype.Browser.WebKit) {
+    isButton = function(event, code) {
+      switch (code) {
+        case 0: return event.which == 1 && !event.metaKey;
+        case 1: return event.which == 1 && event.metaKey;
+        default: return false;
+      }
+    };
+
+  } else {
+    isButton = function(event, code) {
+      return event.which ? (event.which === code + 1) : (event.button === code);
+    };
+  }
+
+  return {
+    isLeftClick:   function(event) { return isButton(event, 0) },
+    isMiddleClick: function(event) { return isButton(event, 1) },
+    isRightClick:  function(event) { return isButton(event, 2) },
+
+    element: function(event) {
+      var node = Event.extend(event).target;
+      return Element.extend(node.nodeType == Node.TEXT_NODE ? node.parentNode : node);
+    },
+
+    findElement: function(event, expression) {
+      var element = Event.element(event);
+      if (!expression) return element;
+      var elements = [element].concat(element.ancestors());
+      return Selector.findElement(elements, expression, 0);
+    },
+
+    pointer: function(event) {
+      return {
+        x: event.pageX || (event.clientX +
+          (document.documentElement.scrollLeft || document.body.scrollLeft)),
+        y: event.pageY || (event.clientY +
+          (document.documentElement.scrollTop || document.body.scrollTop))
+      };
+    },
+
+    pointerX: function(event) { return Event.pointer(event).x },
+    pointerY: function(event) { return Event.pointer(event).y },
+
+    stop: function(event) {
+      Event.extend(event);
+      event.preventDefault();
+      event.stopPropagation();
+      event.stopped = true;
+    }
+  };
+})();
+
+Event.extend = (function() {
+  var methods = Object.keys(Event.Methods).inject({ }, function(m, name) {
+    m[name] = Event.Methods[name].methodize();
+    return m;
+  });
+
+  if (Prototype.Browser.IE) {
+    Object.extend(methods, {
+      stopPropagation: function() { this.cancelBubble = true },
+      preventDefault:  function() { this.returnValue = false },
+      inspect: function() { return "[object Event]" }
+    });
+
+    return function(event) {
+      if (!event) return false;
+      if (event._extendedByPrototype) return event;
+
+      event._extendedByPrototype = Prototype.emptyFunction;
+      var pointer = Event.pointer(event);
+      Object.extend(event, {
+        target: event.srcElement,
+        relatedTarget: Event.relatedTarget(event),
+        pageX:  pointer.x,
+        pageY:  pointer.y
+      });
+      return Object.extend(event, methods);
+    };
+
+  } else {
+    Event.prototype = Event.prototype || document.createEvent("HTMLEvents").__proto__;
+    Object.extend(Event.prototype, methods);
+    return Prototype.K;
+  }
+})();
+
+Object.extend(Event, (function() {
+  var cache = Event.cache;
+
+  function getEventID(element) {
+    if (element._eventID) return element._eventID;
+    arguments.callee.id = arguments.callee.id || 1;
+    return element._eventID = ++arguments.callee.id;
+  }
+
+  function getDOMEventName(eventName) {
+    if (eventName && eventName.include(':')) return "dataavailable";
+    return eventName;
+  }
+
+  function getCacheForID(id) {
+    return cache[id] = cache[id] || { };
+  }
+
+  function getWrappersForEventName(id, eventName) {
+    var c = getCacheForID(id);
+    return c[eventName] = c[eventName] || [];
+  }
+
+  function createWrapper(element, eventName, handler) {
+    var id = getEventID(element);
+    var c = getWrappersForEventName(id, eventName);
+    if (c.pluck("handler").include(handler)) return false;
+
+    var wrapper = function(event) {
+      if (!Event || !Event.extend ||
+        (event.eventName && event.eventName != eventName))
+          return false;
+
+      Event.extend(event);
+      handler.call(element, event)
+    };
+
+    wrapper.handler = handler;
+    c.push(wrapper);
+    return wrapper;
+  }
+
+  function findWrapper(id, eventName, handler) {
+    var c = getWrappersForEventName(id, eventName);
+    return c.find(function(wrapper) { return wrapper.handler == handler });
+  }
+
+  function destroyWrapper(id, eventName, handler) {
+    var c = getCacheForID(id);
+    if (!c[eventName]) return false;
+    c[eventName] = c[eventName].without(findWrapper(id, eventName, handler));
+  }
+
+  function destroyCache() {
+    for (var id in cache)
+      for (var eventName in cache[id])
+        cache[id][eventName] = null;
+  }
+
+  if (window.attachEvent) {
+    window.attachEvent("onunload", destroyCache);
+  }
+
+  return {
+    observe: function(element, eventName, handler) {
+      element = $(element);
+      var name = getDOMEventName(eventName);
+
+      var wrapper = createWrapper(element, eventName, handler);
+      if (!wrapper) return element;
+
+      if (element.addEventListener) {
+        element.addEventListener(name, wrapper, false);
+      } else {
+        element.attachEvent("on" + name, wrapper);
+      }
+
+      return element;
+    },
+
+    stopObserving: function(element, eventName, handler) {
+      element = $(element);
+      var id = getEventID(element), name = getDOMEventName(eventName);
+
+      if (!handler && eventName) {
+        getWrappersForEventName(id, eventName).each(function(wrapper) {
+          element.stopObserving(eventName, wrapper.handler);
+        });
+        return element;
+
+      } else if (!eventName) {
+        Object.keys(getCacheForID(id)).each(function(eventName) {
+          element.stopObserving(eventName);
+        });
+        return element;
+      }
+
+      var wrapper = findWrapper(id, eventName, handler);
+      if (!wrapper) return element;
+
+      if (element.removeEventListener) {
+        element.removeEventListener(name, wrapper, false);
+      } else {
+        element.detachEvent("on" + name, wrapper);
+      }
+
+      destroyWrapper(id, eventName, handler);
+
+      return element;
+    },
+
+    fire: function(element, eventName, memo) {
+      element = $(element);
+      if (element == document && document.createEvent && !element.dispatchEvent)
+        element = document.documentElement;
+
+      if (document.createEvent) {
+        var event = document.createEvent("HTMLEvents");
+        event.initEvent("dataavailable", true, true);
+      } else {
+        var event = document.createEventObject();
+        event.eventType = "ondataavailable";
+      }
+
+      event.eventName = eventName;
+      event.memo = memo || { };
+
+      if (document.createEvent) {
+        element.dispatchEvent(event);
+      } else {
+        element.fireEvent(event.eventType, event);
+      }
+
+      return Event.extend(event);
+    }
+  };
+})());
+
+Object.extend(Event, Event.Methods);
+
+Element.addMethods({
+  fire:          Event.fire,
+  observe:       Event.observe,
+  stopObserving: Event.stopObserving
+});
+
+Object.extend(document, {
+  fire:          Element.Methods.fire.methodize(),
+  observe:       Element.Methods.observe.methodize(),
+  stopObserving: Element.Methods.stopObserving.methodize()
+});
+
+(function() {
+  /* Support for the DOMContentLoaded event is based on work by Dan Webb,
+     Matthias Miller, Dean Edwards and John Resig. */
+
+  var timer, fired = false;
+
+  function fireContentLoadedEvent() {
+    if (fired) return;
+    if (timer) window.clearInterval(timer);
+    document.fire("dom:loaded");
+    fired = true;
+  }
+
+  if (document.addEventListener) {
+    if (Prototype.Browser.WebKit) {
+      timer = window.setInterval(function() {
+        if (/loaded|complete/.test(document.readyState))
+          fireContentLoadedEvent();
+      }, 0);
+
+      Event.observe(window, "load", fireContentLoadedEvent);
+
+    } else {
+      document.addEventListener("DOMContentLoaded",
+        fireContentLoadedEvent, false);
+    }
+
+  } else {
+    document.write("<script id=__onDOMContentLoaded defer src=//:><\/script>");
+    $("__onDOMContentLoaded").onreadystatechange = function() {
+      if (this.readyState == "complete") {
+        this.onreadystatechange = null;
+        fireContentLoadedEvent();
+      }
+    };
+  }
+})();
+/*------------------------------- DEPRECATED -------------------------------*/
+
+Hash.toQueryString = Object.toQueryString;
+
+var Toggle = { display: Element.toggle };
+
+Element.Methods.childOf = Element.Methods.descendantOf;
+
+var Insertion = {
+  Before: function(element, content) {
+    return Element.insert(element, {before:content});
+  },
+
+  Top: function(element, content) {
+    return Element.insert(element, {top:content});
+  },
+
+  Bottom: function(element, content) {
+    return Element.insert(element, {bottom:content});
+  },
+
+  After: function(element, content) {
+    return Element.insert(element, {after:content});
+  }
+};
+
+var $continue = new Error('"throw $continue" is deprecated, use "return" instead');
+
+// This should be moved to script.aculo.us; notice the deprecated methods
+// further below, that map to the newer Element methods.
+var Position = {
+  // set to true if needed, warning: firefox performance problems
+  // NOT neeeded for page scrolling, only if draggable contained in
+  // scrollable elements
+  includeScrollOffsets: false,
+
+  // must be called before calling withinIncludingScrolloffset, every time the
+  // page is scrolled
+  prepare: function() {
+    this.deltaX =  window.pageXOffset
+                || document.documentElement.scrollLeft
+                || document.body.scrollLeft
+                || 0;
+    this.deltaY =  window.pageYOffset
+                || document.documentElement.scrollTop
+                || document.body.scrollTop
+                || 0;
+  },
+
+  // caches x/y coordinate pair to use with overlap
+  within: function(element, x, y) {
+    if (this.includeScrollOffsets)
+      return this.withinIncludingScrolloffsets(element, x, y);
+    this.xcomp = x;
+    this.ycomp = y;
+    this.offset = Element.cumulativeOffset(element);
+
+    return (y >= this.offset[1] &&
+            y <  this.offset[1] + element.offsetHeight &&
+            x >= this.offset[0] &&
+            x <  this.offset[0] + element.offsetWidth);
+  },
+
+  withinIncludingScrolloffsets: function(element, x, y) {
+    var offsetcache = Element.cumulativeScrollOffset(element);
+
+    this.xcomp = x + offsetcache[0] - this.deltaX;
+    this.ycomp = y + offsetcache[1] - this.deltaY;
+    this.offset = Element.cumulativeOffset(element);
+
+    return (this.ycomp >= this.offset[1] &&
+            this.ycomp <  this.offset[1] + element.offsetHeight &&
+            this.xcomp >= this.offset[0] &&
+            this.xcomp <  this.offset[0] + element.offsetWidth);
+  },
+
+  // within must be called directly before
+  overlap: function(mode, element) {
+    if (!mode) return 0;
+    if (mode == 'vertical')
+      return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
+        element.offsetHeight;
+    if (mode == 'horizontal')
+      return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
+        element.offsetWidth;
+  },
+
+  // Deprecation layer -- use newer Element methods now (1.5.2).
+
+  cumulativeOffset: Element.Methods.cumulativeOffset,
+
+  positionedOffset: Element.Methods.positionedOffset,
+
+  absolutize: function(element) {
+    Position.prepare();
+    return Element.absolutize(element);
+  },
+
+  relativize: function(element) {
+    Position.prepare();
+    return Element.relativize(element);
+  },
+
+  realOffset: Element.Methods.cumulativeScrollOffset,
+
+  offsetParent: Element.Methods.getOffsetParent,
+
+  page: Element.Methods.viewportOffset,
+
+  clone: function(source, target, options) {
+    options = options || { };
+    return Element.clonePosition(target, source, options);
+  }
+};
+
+/*--------------------------------------------------------------------------*/
+
+if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){
+  function iter(name) {
+    return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]";
+  }
+
+  instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ?
+  function(element, className) {
+    className = className.toString().strip();
+    var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className);
+    return cond ? document._getElementsByXPath('.//*' + cond, element) : [];
+  } : function(element, className) {
+    className = className.toString().strip();
+    var elements = [], classNames = (/\s/.test(className) ? $w(className) : null);
+    if (!classNames && !className) return elements;
+
+    var nodes = $(element).getElementsByTagName('*');
+    className = ' ' + className + ' ';
+
+    for (var i = 0, child, cn; child = nodes[i]; i++) {
+      if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) ||
+          (classNames && classNames.all(function(name) {
+            return !name.toString().blank() && cn.include(' ' + name + ' ');
+          }))))
+        elements.push(Element.extend(child));
+    }
+    return elements;
+  };
+
+  return function(className, parentElement) {
+    return $(parentElement || document.body).getElementsByClassName(className);
+  };
+}(Element.Methods);
+
+/*--------------------------------------------------------------------------*/
+
+Element.ClassNames = Class.create();
+Element.ClassNames.prototype = {
+  initialize: function(element) {
+    this.element = $(element);
+  },
+
+  _each: function(iterator) {
+    this.element.className.split(/\s+/).select(function(name) {
+      return name.length > 0;
+    })._each(iterator);
+  },
+
+  set: function(className) {
+    this.element.className = className;
+  },
+
+  add: function(classNameToAdd) {
+    if (this.include(classNameToAdd)) return;
+    this.set($A(this).concat(classNameToAdd).join(' '));
+  },
+
+  remove: function(classNameToRemove) {
+    if (!this.include(classNameToRemove)) return;
+    this.set($A(this).without(classNameToRemove).join(' '));
+  },
+
+  toString: function() {
+    return $A(this).join(' ');
+  }
+};
+
+Object.extend(Element.ClassNames.prototype, Enumerable);
+
+/*--------------------------------------------------------------------------*/
+
+Element.addMethods();
Index: /ruby/tags/0.0.2/rails/cancerehr/public/robots.txt
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/public/robots.txt	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/public/robots.txt	(revision 39)
@@ -0,0 +1,5 @@
+# See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
+#
+# To ban all spiders from the entire site uncomment the next two lines:
+# User-Agent: *
+# Disallow: /
Index: /ruby/tags/0.0.2/rails/cancerehr/script/about
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/script/about	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/script/about	(revision 39)
@@ -0,0 +1,3 @@
+#!/usr/bin/env ruby
+require File.dirname(__FILE__) + '/../config/boot'
+require 'commands/about'
Index: /ruby/tags/0.0.2/rails/cancerehr/script/console
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/script/console	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/script/console	(revision 39)
@@ -0,0 +1,3 @@
+#!/usr/bin/env ruby
+require File.dirname(__FILE__) + '/../config/boot'
+require 'commands/console'
Index: /ruby/tags/0.0.2/rails/cancerehr/script/destroy
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/script/destroy	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/script/destroy	(revision 39)
@@ -0,0 +1,3 @@
+#!/usr/bin/env ruby
+require File.dirname(__FILE__) + '/../config/boot'
+require 'commands/destroy'
Index: /ruby/tags/0.0.2/rails/cancerehr/script/generate
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/script/generate	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/script/generate	(revision 39)
@@ -0,0 +1,3 @@
+#!/usr/bin/env ruby
+require File.dirname(__FILE__) + '/../config/boot'
+require 'commands/generate'
Index: /ruby/tags/0.0.2/rails/cancerehr/script/performance/benchmarker
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/script/performance/benchmarker	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/script/performance/benchmarker	(revision 39)
@@ -0,0 +1,3 @@
+#!/usr/bin/env ruby
+require File.dirname(__FILE__) + '/../../config/boot'
+require 'commands/performance/benchmarker'
Index: /ruby/tags/0.0.2/rails/cancerehr/script/performance/profiler
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/script/performance/profiler	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/script/performance/profiler	(revision 39)
@@ -0,0 +1,3 @@
+#!/usr/bin/env ruby
+require File.dirname(__FILE__) + '/../../config/boot'
+require 'commands/performance/profiler'
Index: /ruby/tags/0.0.2/rails/cancerehr/script/performance/request
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/script/performance/request	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/script/performance/request	(revision 39)
@@ -0,0 +1,3 @@
+#!/usr/bin/env ruby
+require File.dirname(__FILE__) + '/../../config/boot'
+require 'commands/performance/request'
Index: /ruby/tags/0.0.2/rails/cancerehr/script/plugin
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/script/plugin	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/script/plugin	(revision 39)
@@ -0,0 +1,3 @@
+#!/usr/bin/env ruby
+require File.dirname(__FILE__) + '/../config/boot'
+require 'commands/plugin'
Index: /ruby/tags/0.0.2/rails/cancerehr/script/process/inspector
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/script/process/inspector	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/script/process/inspector	(revision 39)
@@ -0,0 +1,3 @@
+#!/usr/bin/env ruby
+require File.dirname(__FILE__) + '/../../config/boot'
+require 'commands/process/inspector'
Index: /ruby/tags/0.0.2/rails/cancerehr/script/process/reaper
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/script/process/reaper	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/script/process/reaper	(revision 39)
@@ -0,0 +1,3 @@
+#!/usr/bin/env ruby
+require File.dirname(__FILE__) + '/../../config/boot'
+require 'commands/process/reaper'
Index: /ruby/tags/0.0.2/rails/cancerehr/script/process/spawner
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/script/process/spawner	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/script/process/spawner	(revision 39)
@@ -0,0 +1,3 @@
+#!/usr/bin/env ruby
+require File.dirname(__FILE__) + '/../../config/boot'
+require 'commands/process/spawner'
Index: /ruby/tags/0.0.2/rails/cancerehr/script/runner
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/script/runner	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/script/runner	(revision 39)
@@ -0,0 +1,3 @@
+#!/usr/bin/env ruby
+require File.dirname(__FILE__) + '/../config/boot'
+require 'commands/runner'
Index: /ruby/tags/0.0.2/rails/cancerehr/script/server
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/script/server	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/script/server	(revision 39)
@@ -0,0 +1,3 @@
+#!/usr/bin/env ruby
+require File.dirname(__FILE__) + '/../config/boot'
+require 'commands/server'
Index: /ruby/tags/0.0.2/rails/cancerehr/test/test_helper.rb
===================================================================
--- /ruby/tags/0.0.2/rails/cancerehr/test/test_helper.rb	(revision 39)
+++ /ruby/tags/0.0.2/rails/cancerehr/test/test_helper.rb	(revision 39)
@@ -0,0 +1,38 @@
+ENV["RAILS_ENV"] = "test"
+require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
+require 'test_help'
+
+class Test::Unit::TestCase
+  # Transactional fixtures accelerate your tests by wrapping each test method
+  # in a transaction that's rolled back on completion.  This ensures that the
+  # test database remains unchanged so your fixtures don't have to be reloaded
+  # between every test method.  Fewer database queries means faster tests.
+  #
+  # Read Mike Clark's excellent walkthrough at
+  #   http://clarkware.com/cgi/blosxom/2005/10/24#Rails10FastTesting
+  #
+  # Every Active Record database supports transactions except MyISAM tables
+  # in MySQL.  Turn off transactional fixtures in this case; however, if you
+  # don't care one way or the other, switching from MyISAM to InnoDB tables
+  # is recommended.
+  #
+  # The only drawback to using transactional fixtures is when you actually 
+  # need to test transactions.  Since your test is bracketed by a transaction,
+  # any transactions started in your code will be automatically rolled back.
+  self.use_transactional_fixtures = true
+
+  # Instantiated fixtures are slow, but give you @david where otherwise you
+  # would need people(:david).  If you don't want to migrate your existing
+  # test cases which use the @david style and don't mind the speed hit (each
+  # instantiated fixtures translates to a database query per test method),
+  # then set this back to true.
+  self.use_instantiated_fixtures  = false
+
+  # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
+  #
+  # Note: You'll currently still have to declare fixtures explicitly in integration tests
+  # -- they do not yet inherit this setting
+  fixtures :all
+
+  # Add more helper methods to be used by all tests here...
+end
