Changes in / [20:30]


Ignore:
Files:
228 added
2 deleted
21 edited

Legend:

Unmodified
Added
Removed
  • /haskell/trunk/ADLParser.hs

    r20 r30  
    2424                 return ontology
    2525
    26 
    27 adlVersion :: Parser String
     26adlVersion :: Parser Version
    2827adlVersion = do dec1 <- string "archetype (adl_version="
    2928                ver <- many anyChar
     
    5251
    5352adlLanguage :: Parser Language
     53adlLanguage = do spaces
     54                 head <- string "language"
     55                 
    5456
     57
     58parseAtoms :: Parser [Atom]
     59parseAtoms = many atom
     60    where
     61      atom :: Parser Atom
     62      atom = do spaces
     63                name <- string
     64                spaces
     65                equal <- char '='
     66                spaces
     67      <|> return []
     68
     69
     70data Language = Original_Laguage String
     71              | Translaions [Transpation]
     72                deriving Show
     73
     74data Translation = Symbol String
     75                 | Language String
     76                 | Author Author
     77
     78data Author = Name String
     79            | Organisation String
     80
     81data Atom = Name String
     82          | Description String
     83
     84type Version :: String
  • /ruby/trunk/adl_parser/Rakefile

    r20 r30  
    8383  s.email = 'akimichi_tatsukawa@nifty.com'
    8484  s.test_files = FileList['tests/*_test.rb', '*.adl']
    85   candidates = Dir.glob("{bin, docs, lib, tests, ext}/**/*")
     85  candidates = Dir.glob("{bin,docs,lib,tests,ext}/**/*")
    8686  s.files = candidates.delete_if do |item|
    8787    item.include?(".svn") || item.include?("rdoc")
    8888  end
    89   FileList['README', 'COPYING', 'Rakefile']
     89  s.files = FileList['README', 'COPYING', 'Rakefile']
    9090  s.require_path = "lib"
    9191  s.has_rdoc = true
    9292  s.extra_rdoc_files = ["README"]
    9393  s.add_dependency("yaparc", ">= 0.2.0")
     94  s.add_dependency("openehr_models", ">= 0.0.1")
    9495end
    9596
  • /ruby/trunk/adl_parser/lib/parser.rb

    r20 r30  
    1313require 'lib/util.rb'
    1414require 'lib/scanner.rb'
    15 require 'lib/model.rb'
     15require 'rubygems'
     16require 'am.rb'
    1617$DEBUG = true
    1718
     
    2526    class Parser < Racc::Parser
    2627
    27 module_eval <<'..end lib/parser.y modeval..id134a7f5a66', 'lib/parser.y', 739
     28module_eval <<'..end lib/parser.y modeval..id3b9eed63e6', 'lib/parser.y', 1127
     29
     30def assert_at(file,line, message = "")
     31  unless yield
     32    raise "Assertion failed !: #{file}, #{line}: #{message}"
     33  end
     34end
    2835
    2936@@log = Logger.new('log/parser.log','daily')
     
    812819
    813820
    814 ..end lib/parser.y modeval..id134a7f5a66
     821..end lib/parser.y modeval..id3b9eed63e6
    815822
    816823##### racc 1.4.5 generates ###
     
    818825racc_reduce_table = [
    819826 0, 0, :racc_error,
    820  2, 95, :_reduce_none,
     827 2, 95, :_reduce_1,
    821828 1, 95, :_reduce_none,
    822  8, 96, :_reduce_none,
    823  2, 97, :_reduce_none,
    824  2, 97, :_reduce_none,
    825  1, 105, :_reduce_none,
    826  2, 105, :_reduce_none,
    827  3, 106, :_reduce_none,
    828  1, 107, :_reduce_none,
    829  3, 107, :_reduce_none,
    830  3, 108, :_reduce_none,
    831  1, 108, :_reduce_none,
     829 8, 96, :_reduce_3,
     830 2, 97, :_reduce_4,
     831 2, 97, :_reduce_5,
     832 1, 105, :_reduce_6,
     833 2, 105, :_reduce_7,
     834 3, 106, :_reduce_8,
     835 1, 107, :_reduce_9,
     836 3, 107, :_reduce_10,
     837 3, 108, :_reduce_11,
     838 1, 108, :_reduce_12,
    832839 0, 98, :_reduce_none,
    833840 2, 98, :_reduce_none,
    834841 2, 98, :_reduce_none,
     842 2, 99, :_reduce_16,
    835843 2, 99, :_reduce_none,
    836  2, 99, :_reduce_none,
    837  0, 100, :_reduce_none,
     844 0, 100, :_reduce_18,
    838845 2, 100, :_reduce_19,
    839846 2, 100, :_reduce_none,
    840847 0, 101, :_reduce_none,
     848 2, 101, :_reduce_22,
    841849 2, 101, :_reduce_none,
    842  2, 101, :_reduce_none,
     850 2, 102, :_reduce_24,
    843851 2, 102, :_reduce_none,
    844  2, 102, :_reduce_none,
    845  1, 110, :_reduce_none,
    846  1, 110, :_reduce_none,
    847  5, 111, :_reduce_none,
    848  5, 111, :_reduce_none,
    849  2, 113, :_reduce_none,
     852 1, 110, :_reduce_26,
     853 1, 110, :_reduce_27,
     854 5, 111, :_reduce_28,
     855 5, 111, :_reduce_29,
     856 2, 113, :_reduce_30,
    850857 1, 115, :_reduce_31,
    851858 2, 115, :_reduce_32,
    852859 1, 114, :_reduce_none,
    853  1, 114, :_reduce_none,
     860 1, 114, :_reduce_34,
     861 1, 120, :_reduce_35,
     862 1, 120, :_reduce_36,
     863 1, 120, :_reduce_37,
     864 1, 120, :_reduce_38,
     865 1, 120, :_reduce_39,
     866 1, 120, :_reduce_40,
     867 1, 120, :_reduce_41,
     868 1, 120, :_reduce_42,
    854869 1, 120, :_reduce_none,
    855870 1, 120, :_reduce_none,
    856  1, 120, :_reduce_none,
    857  1, 120, :_reduce_none,
    858  1, 120, :_reduce_none,
    859  1, 120, :_reduce_none,
    860  1, 120, :_reduce_none,
    861  1, 120, :_reduce_none,
    862  1, 120, :_reduce_none,
    863  1, 120, :_reduce_none,
    864  3, 121, :_reduce_none,
     871 3, 121, :_reduce_45,
    865872 4, 122, :_reduce_none,
    866873 3, 122, :_reduce_none,
     
    870877 3, 132, :_reduce_none,
    871878 2, 132, :_reduce_none,
    872  1, 127, :_reduce_none,
    873  1, 133, :_reduce_none,
    874  1, 133, :_reduce_none,
    875  1, 133, :_reduce_none,
    876  1, 133, :_reduce_none,
    877  1, 133, :_reduce_none,
    878  1, 133, :_reduce_none,
    879  1, 133, :_reduce_none,
    880  1, 133, :_reduce_none,
     879 1, 127, :_reduce_53,
     880 1, 133, :_reduce_54,
     881 1, 133, :_reduce_55,
     882 1, 133, :_reduce_56,
     883 1, 133, :_reduce_57,
     884 1, 133, :_reduce_58,
     885 1, 133, :_reduce_59,
     886 1, 133, :_reduce_60,
     887 1, 133, :_reduce_61,
    881888 1, 118, :_reduce_none,
    882  1, 119, :_reduce_none,
    883  2, 119, :_reduce_none,
    884  5, 142, :_reduce_none,
    885  5, 142, :_reduce_none,
    886  5, 142, :_reduce_none,
     889 1, 119, :_reduce_63,
     890 2, 119, :_reduce_64,
     891 5, 142, :_reduce_65,
     892 5, 142, :_reduce_66,
     893 5, 142, :_reduce_67,
    887894 2, 143, :_reduce_68,
    888895 3, 143, :_reduce_69,
    889  1, 144, :_reduce_none,
    890  2, 144, :_reduce_none,
    891  1, 144, :_reduce_none,
     896 1, 144, :_reduce_70,
     897 2, 144, :_reduce_71,
     898 1, 144, :_reduce_72,
    892899 0, 130, :_reduce_none,
    893900 2, 130, :_reduce_none,
     
    902909 2, 103, :_reduce_none,
    903910 2, 103, :_reduce_none,
    904  2, 104, :_reduce_none,
     911 2, 104, :_reduce_85,
    905912 2, 104, :_reduce_none,
    906913 1, 109, :_reduce_none,
    907914 1, 151, :_reduce_none,
    908915 1, 151, :_reduce_none,
    909  1, 152, :_reduce_none,
    910  2, 152, :_reduce_none,
    911  3, 152, :_reduce_none,
     916 1, 152, :_reduce_90,
     917 2, 152, :_reduce_91,
     918 3, 152, :_reduce_92,
    912919 3, 154, :_reduce_93,
    913920 1, 155, :_reduce_94,
    914921 2, 155, :_reduce_none,
    915  1, 156, :_reduce_none,
    916  1, 156, :_reduce_none,
    917  1, 153, :_reduce_none,
    918  1, 153, :_reduce_none,
    919  1, 159, :_reduce_none,
    920  2, 159, :_reduce_none,
    921  3, 160, :_reduce_none,
     922 1, 156, :_reduce_96,
     923 1, 156, :_reduce_97,
     924 1, 153, :_reduce_98,
     925 1, 153, :_reduce_99,
     926 1, 159, :_reduce_100,
     927 2, 159, :_reduce_101,
     928 3, 160, :_reduce_102,
    922929 1, 161, :_reduce_103,
    923  1, 162, :_reduce_none,
    924  2, 162, :_reduce_none,
     930 1, 162, :_reduce_104,
     931 2, 162, :_reduce_105,
    925932 3, 163, :_reduce_106,
    926933 3, 164, :_reduce_107,
    927  1, 158, :_reduce_none,
    928  2, 158, :_reduce_none,
    929  2, 166, :_reduce_none,
    930  3, 166, :_reduce_none,
     934 1, 158, :_reduce_108,
     935 2, 158, :_reduce_109,
     936 2, 166, :_reduce_110,
     937 3, 166, :_reduce_111,
    931938 1, 167, :_reduce_none,
    932  1, 157, :_reduce_none,
    933  2, 157, :_reduce_none,
     939 1, 157, :_reduce_113,
     940 2, 157, :_reduce_114,
    934941 3, 168, :_reduce_115,
    935  1, 169, :_reduce_none,
    936  1, 169, :_reduce_none,
    937  1, 169, :_reduce_none,
    938  1, 169, :_reduce_none,
    939  1, 169, :_reduce_none,
     942 1, 169, :_reduce_116,
     943 1, 169, :_reduce_117,
     944 1, 169, :_reduce_118,
     945 1, 169, :_reduce_119,
     946 1, 169, :_reduce_120,
    940947 1, 165, :_reduce_121,
    941948 1, 165, :_reduce_122,
     
    969976 3, 184, :_reduce_none,
    970977 3, 184, :_reduce_none,
    971  1, 175, :_reduce_none,
    972  2, 175, :_reduce_none,
    973  2, 175, :_reduce_none,
     978 1, 175, :_reduce_152,
     979 2, 175, :_reduce_153,
     980 2, 175, :_reduce_154,
    974981 3, 185, :_reduce_none,
    975982 3, 185, :_reduce_none,
     
    984991 4, 193, :_reduce_none,
    985992 3, 193, :_reduce_none,
    986  1, 176, :_reduce_none,
    987  2, 176, :_reduce_none,
    988  2, 176, :_reduce_none,
     993 1, 176, :_reduce_167,
     994 2, 176, :_reduce_168,
     995 2, 176, :_reduce_169,
    989996 3, 186, :_reduce_none,
    990997 3, 186, :_reduce_none,
     
    9991006 4, 194, :_reduce_none,
    10001007 3, 194, :_reduce_none,
    1001  1, 177, :_reduce_none,
    1002  1, 177, :_reduce_none,
     1008 1, 177, :_reduce_182,
     1009 1, 177, :_reduce_183,
    10031010 3, 187, :_reduce_none,
    10041011 3, 187, :_reduce_none,
     
    11071114 2, 206, :_reduce_288,
    11081115 1, 206, :_reduce_289,
    1109  0, 145, :_reduce_none,
    1110  5, 145, :_reduce_none,
    1111  1, 207, :_reduce_none,
    1112  3, 207, :_reduce_none,
    1113  5, 146, :_reduce_none,
     1116 0, 145, :_reduce_290,
     1117 5, 145, :_reduce_291,
     1118 1, 207, :_reduce_292,
     1119 3, 207, :_reduce_293,
     1120 5, 146, :_reduce_294,
    11141121 1, 208, :_reduce_none,
    11151122 3, 208, :_reduce_none,
     
    11231130 1, 210, :_reduce_none,
    11241131 0, 116, :_reduce_none,
    1125  5, 116, :_reduce_none,
     1132 5, 116, :_reduce_306,
    11261133 2, 116, :_reduce_none,
    11271134 1, 209, :_reduce_none,
     
    11701177 3, 140, :_reduce_none,
    11711178 3, 140, :_reduce_none,
    1172  1, 219, :_reduce_none,
    1173  1, 219, :_reduce_none,
    1174  3, 219, :_reduce_none,
    1175  3, 219, :_reduce_none,
    1176  1, 141, :_reduce_none,
    1177  3, 141, :_reduce_none,
    1178  3, 141, :_reduce_none,
     1179 1, 219, :_reduce_353,
     1180 1, 219, :_reduce_354,
     1181 3, 219, :_reduce_355,
     1182 3, 219, :_reduce_356,
     1183 1, 141, :_reduce_357,
     1184 3, 141, :_reduce_358,
     1185 3, 141, :_reduce_359,
    11791186 1, 126, :_reduce_none,
    11801187 3, 126, :_reduce_none,
     
    11921199 1, 149, :_reduce_none,
    11931200 1, 149, :_reduce_374,
    1194  1, 217, :_reduce_none ]
     1201 1, 217, :_reduce_375 ]
    11951202
    11961203racc_reduce_n = 376
     
    20122019 # reduce 0 omitted
    20132020
    2014  # reduce 1 omitted
     2021module_eval <<'.,.,', 'lib/parser.y', 32
     2022  def _reduce_1( val, _values, result )
     2023    result = val[0]
     2024   result
     2025  end
     2026.,.,
    20152027
    20162028 # reduce 2 omitted
    20172029
    2018  # reduce 3 omitted
    2019 
    2020  # reduce 4 omitted
    2021 
    2022  # reduce 5 omitted
    2023 
    2024  # reduce 6 omitted
    2025 
    2026  # reduce 7 omitted
    2027 
    2028  # reduce 8 omitted
    2029 
    2030  # reduce 9 omitted
    2031 
    2032  # reduce 10 omitted
    2033 
    2034  # reduce 11 omitted
    2035 
    2036  # reduce 12 omitted
     2030module_eval <<'.,.,', 'lib/parser.y', 57
     2031  def _reduce_3( val, _values, result )
     2032    assert_at(__FILE__,__LINE__) do
     2033      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)
     2034    end
     2035   
     2036    archetype_id = val[0][:archetype_id]
     2037    adl_version = val[0][:arch_head][:arch_meta_data][:adl_version]
     2038    concept = val[2]
     2039    language = val[3][:arch_language]
     2040    archetype = OpenEHR::AM::Archetype::ARCHETYPE.create(
     2041                                                         :archetype_id => archetype_id,
     2042                                                         :adl_version => adl_version,
     2043                                                         :concept => concept,
     2044                                                         :description => val[4],
     2045                                                         :definition => val[5],
     2046                                                         :ontology => val[7]
     2047                                                         ) do |archetype|
     2048      archetype.original_language = language
     2049    end
     2050    @@log.info("#{__FILE__}:#{__LINE__}: archetype = #{archetype} at #{@filename}:#{@lineno}")
     2051    result = archetype
     2052   result
     2053  end
     2054.,.,
     2055
     2056module_eval <<'.,.,', 'lib/parser.y', 63
     2057  def _reduce_4( val, _values, result )
     2058    result = {:arch_head => val[0], :archetype_id => val[1] }
     2059   result
     2060  end
     2061.,.,
     2062
     2063module_eval <<'.,.,', 'lib/parser.y', 67
     2064  def _reduce_5( val, _values, result )
     2065    raise
     2066   result
     2067  end
     2068.,.,
     2069
     2070module_eval <<'.,.,', 'lib/parser.y', 72
     2071  def _reduce_6( val, _values, result )
     2072    result = {:arch_meta_data => nil }
     2073   result
     2074  end
     2075.,.,
     2076
     2077module_eval <<'.,.,', 'lib/parser.y', 76
     2078  def _reduce_7( val, _values, result )
     2079    result = val[1]
     2080   result
     2081  end
     2082.,.,
     2083
     2084module_eval <<'.,.,', 'lib/parser.y', 81
     2085  def _reduce_8( val, _values, result )
     2086    result = {:arch_meta_data => val[1] }
     2087   result
     2088  end
     2089.,.,
     2090
     2091module_eval <<'.,.,', 'lib/parser.y', 86
     2092  def _reduce_9( val, _values, result )
     2093    result = val[0]
     2094   result
     2095  end
     2096.,.,
     2097
     2098module_eval <<'.,.,', 'lib/parser.y', 90
     2099  def _reduce_10( val, _values, result )
     2100    result = val[0].merge(val[2])
     2101   result
     2102  end
     2103.,.,
     2104
     2105module_eval <<'.,.,', 'lib/parser.y', 96
     2106  def _reduce_11( val, _values, result )
     2107    result = {:adl_version => val[2], :is_controlled => false }
     2108   result
     2109  end
     2110.,.,
     2111
     2112module_eval <<'.,.,', 'lib/parser.y', 100
     2113  def _reduce_12( val, _values, result )
     2114    result = {:is_controlled => true }
     2115   result
     2116  end
     2117.,.,
    20372118
    20382119 # reduce 13 omitted
     
    20422123 # reduce 15 omitted
    20432124
    2044  # reduce 16 omitted
     2125module_eval <<'.,.,', 'lib/parser.y', 111
     2126  def _reduce_16( val, _values, result )
     2127    result = {:arch_concept => val[1] }
     2128   result
     2129  end
     2130.,.,
    20452131
    20462132 # reduce 17 omitted
    20472133
    2048  # reduce 18 omitted
    2049 
    2050 module_eval <<'.,.,', 'lib/parser.y', 74
     2134module_eval <<'.,.,', 'lib/parser.y', 121
     2135  def _reduce_18( val, _values, result )
     2136    result = {:arch_language => nil}
     2137   result
     2138  end
     2139.,.,
     2140
     2141module_eval <<'.,.,', 'lib/parser.y', 125
    20512142  def _reduce_19( val, _values, result )
    2052     result = {:language => val[1]}
     2143    result = {:arch_language => val[1]}
    20532144   result
    20542145  end
     
    20592150 # reduce 21 omitted
    20602151
    2061  # reduce 22 omitted
     2152module_eval <<'.,.,', 'lib/parser.y', 136
     2153  def _reduce_22( val, _values, result )
     2154    result = OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION.new(:details => val[1])
     2155   result
     2156  end
     2157.,.,
    20622158
    20632159 # reduce 23 omitted
    20642160
    2065  # reduce 24 omitted
     2161module_eval <<'.,.,', 'lib/parser.y', 144
     2162  def _reduce_24( val, _values, result )
     2163    result = val[1]
     2164   result
     2165  end
     2166.,.,
    20662167
    20672168 # reduce 25 omitted
    20682169
    2069  # reduce 26 omitted
    2070 
    2071  # reduce 27 omitted
    2072 
    2073  # reduce 28 omitted
    2074 
    2075  # reduce 29 omitted
    2076 
    2077  # reduce 30 omitted
    2078 
    2079 module_eval <<'.,.,', 'lib/parser.y', 111
     2170module_eval <<'.,.,', 'lib/parser.y', 154
     2171  def _reduce_26( val, _values, result )
     2172    assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT)}
     2173    @@log.info("#{__FILE__}:#{__LINE__}: c_complex_object = #{val[0]} at #{@filename}:#{@lineno}")
     2174    result = val[0]
     2175   result
     2176  end
     2177.,.,
     2178
     2179module_eval <<'.,.,', 'lib/parser.y', 158
     2180  def _reduce_27( val, _values, result )
     2181    result = val[0]
     2182   result
     2183  end
     2184.,.,
     2185
     2186module_eval <<'.,.,', 'lib/parser.y', 169
     2187  def _reduce_28( val, _values, result )
     2188    result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
     2189      c_complex_object.node_id = val[0][:c_complex_object_id][:local_term_code_ref]
     2190      c_complex_object.rm_type_name = val[0][:c_complex_object_id][:type_identifier]
     2191      c_complex_object.occurrences = val[0][:c_occurrences]
     2192    end
     2193   result
     2194  end
     2195.,.,
     2196
     2197module_eval <<'.,.,', 'lib/parser.y', 177
     2198  def _reduce_29( val, _values, result )
     2199    result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
     2200      c_complex_object.node_id = val[0][:c_complex_object_id][:local_term_code_ref]
     2201      c_complex_object.rm_type_name = val[0][:c_complex_object_id][:type_identifier]
     2202      c_complex_object.occurrences = val[0][:c_occurrences]
     2203    end
     2204   result
     2205  end
     2206.,.,
     2207
     2208module_eval <<'.,.,', 'lib/parser.y', 184
     2209  def _reduce_30( val, _values, result )
     2210    result = {:c_complex_object_id => val[0], :c_occurrences => val[1]}
     2211   result
     2212  end
     2213.,.,
     2214
     2215module_eval <<'.,.,', 'lib/parser.y', 189
    20802216  def _reduce_31( val, _values, result )
    2081     result = {:c_complex_object_id => {:type_identifier => val[0]}}
    2082    result
    2083   end
    2084 .,.,
    2085 
    2086 module_eval <<'.,.,', 'lib/parser.y', 115
     2217    result = {:type_identifier => val[0]}
     2218   result
     2219  end
     2220.,.,
     2221
     2222module_eval <<'.,.,', 'lib/parser.y', 193
    20872223  def _reduce_32( val, _values, result )
    2088     result = {:c_complex_object_id => {:type_identifier => val[0], :V_LOCAL_TERM_CODE_REF => val[1]}}
     2224    result = {:type_identifier => val[0], :local_term_code_ref => val[1]}
    20892225   result
    20902226  end
     
    20932229 # reduce 33 omitted
    20942230
    2095  # reduce 34 omitted
    2096 
    2097  # reduce 35 omitted
    2098 
    2099  # reduce 36 omitted
    2100 
    2101  # reduce 37 omitted
    2102 
    2103  # reduce 38 omitted
    2104 
    2105  # reduce 39 omitted
    2106 
    2107  # reduce 40 omitted
    2108 
    2109  # reduce 41 omitted
    2110 
    2111  # reduce 42 omitted
     2231module_eval <<'.,.,', 'lib/parser.y', 199
     2232  def _reduce_34( val, _values, result )
     2233    result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new(:attributes => val[0])
     2234   result
     2235  end
     2236.,.,
     2237
     2238module_eval <<'.,.,', 'lib/parser.y', 207
     2239  def _reduce_35( val, _values, result )
     2240    result = val[0]
     2241   result
     2242  end
     2243.,.,
     2244
     2245module_eval <<'.,.,', 'lib/parser.y', 211
     2246  def _reduce_36( val, _values, result )
     2247    result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new
     2248   result
     2249  end
     2250.,.,
     2251
     2252module_eval <<'.,.,', 'lib/parser.y', 215
     2253  def _reduce_37( val, _values, result )
     2254    result = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_INTERNAL_REF.new
     2255   result
     2256  end
     2257.,.,
     2258
     2259module_eval <<'.,.,', 'lib/parser.y', 219
     2260  def _reduce_38( val, _values, result )
     2261    result = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_SLOT.new
     2262   result
     2263  end
     2264.,.,
     2265
     2266module_eval <<'.,.,', 'lib/parser.y', 223
     2267  def _reduce_39( val, _values, result )
     2268    result = OpenEHR::AM::Archetype::Constraint_Model::CONSTRAINT_REF.new
     2269   result
     2270  end
     2271.,.,
     2272
     2273module_eval <<'.,.,', 'lib/parser.y', 227
     2274  def _reduce_40( val, _values, result )
     2275    result = val[0]
     2276   result
     2277  end
     2278.,.,
     2279
     2280module_eval <<'.,.,', 'lib/parser.y', 231
     2281  def _reduce_41( val, _values, result )
     2282    result = val[0]
     2283   result
     2284  end
     2285.,.,
     2286
     2287module_eval <<'.,.,', 'lib/parser.y', 235
     2288  def _reduce_42( val, _values, result )
     2289    result = val[0]
     2290   result
     2291  end
     2292.,.,
    21122293
    21132294 # reduce 43 omitted
     
    21152296 # reduce 44 omitted
    21162297
    2117  # reduce 45 omitted
     2298module_eval <<'.,.,', 'lib/parser.y', 250
     2299  def _reduce_45( val, _values, result )
     2300    result = val[1]
     2301   result
     2302  end
     2303.,.,
    21182304
    21192305 # reduce 46 omitted
     
    21312317 # reduce 52 omitted
    21322318
    2133  # reduce 53 omitted
    2134 
    2135  # reduce 54 omitted
    2136 
    2137  # reduce 55 omitted
    2138 
    2139  # reduce 56 omitted
    2140 
    2141  # reduce 57 omitted
    2142 
    2143  # reduce 58 omitted
    2144 
    2145  # reduce 59 omitted
    2146 
    2147  # reduce 60 omitted
    2148 
    2149  # reduce 61 omitted
     2319module_eval <<'.,.,', 'lib/parser.y', 270
     2320  def _reduce_53( val, _values, result )
     2321    assert_at(__FILE__,__LINE__){val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_PRIMITIVE)}
     2322    result = OpenEHR::AM::Archetype::Constraint_Model::C_PRIMITIVE_OBJECT.new(:item => val[0])
     2323   result
     2324  end
     2325.,.,
     2326
     2327module_eval <<'.,.,', 'lib/parser.y', 276
     2328  def _reduce_54( val, _values, result )
     2329    @@log.info("#{__FILE__}:#{__LINE__}: c_integer = #{val[0]} at #{@filename}:#{@lineno}")
     2330    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_INTEGER.new
     2331   result
     2332  end
     2333.,.,
     2334
     2335module_eval <<'.,.,', 'lib/parser.y', 281
     2336  def _reduce_55( val, _values, result )
     2337    @@log.info("#{__FILE__}:#{__LINE__}: c_real = #{val[0]} at #{@filename}:#{@lineno}")
     2338    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_REAL.new
     2339   result
     2340  end
     2341.,.,
     2342
     2343module_eval <<'.,.,', 'lib/parser.y', 286
     2344  def _reduce_56( val, _values, result )
     2345    @@log.info("#{__FILE__}:#{__LINE__}: c_date = #{val[0]} at #{@filename}:#{@lineno}")
     2346    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE.new
     2347   result
     2348  end
     2349.,.,
     2350
     2351module_eval <<'.,.,', 'lib/parser.y', 291
     2352  def _reduce_57( val, _values, result )
     2353    @@log.info("#{__FILE__}:#{__LINE__}: c_time = #{val[0]} at #{@filename}:#{@lineno}")
     2354    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_TIME.new
     2355   result
     2356  end
     2357.,.,
     2358
     2359module_eval <<'.,.,', 'lib/parser.y', 296
     2360  def _reduce_58( val, _values, result )
     2361    @@log.info("#{__FILE__}:#{__LINE__}: c_date_time = #{val[0]} at #{@filename}:#{@lineno}")
     2362    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE_TIME.new
     2363   result
     2364  end
     2365.,.,
     2366
     2367module_eval <<'.,.,', 'lib/parser.y', 301
     2368  def _reduce_59( val, _values, result )
     2369    @@log.info("#{__FILE__}:#{__LINE__}: c_duration = #{val[0]} at #{@filename}:#{@lineno}")
     2370    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DURATION.new
     2371   result
     2372  end
     2373.,.,
     2374
     2375module_eval <<'.,.,', 'lib/parser.y', 306
     2376  def _reduce_60( val, _values, result )
     2377    @@log.info("#{__FILE__}:#{__LINE__}: c_string = #{val[0]} at #{@filename}:#{@lineno}")
     2378    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_STRING.new
     2379   result
     2380  end
     2381.,.,
     2382
     2383module_eval <<'.,.,', 'lib/parser.y', 312
     2384  def _reduce_61( val, _values, result )
     2385    assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN)}
     2386    @@log.info("#{__FILE__}:#{__LINE__}: c_boolean = #{val[0]} at #{@filename}:#{@lineno}")
     2387    result = val[0]
     2388   result
     2389  end
     2390.,.,
    21502391
    21512392 # reduce 62 omitted
    21522393
    2153  # reduce 63 omitted
    2154 
    2155  # reduce 64 omitted
    2156 
    2157  # reduce 65 omitted
    2158 
    2159  # reduce 66 omitted
    2160 
    2161  # reduce 67 omitted
    2162 
    2163 module_eval <<'.,.,', 'lib/parser.y', 186
     2394module_eval <<'.,.,', 'lib/parser.y', 322
     2395  def _reduce_63( val, _values, result )
     2396    result = [val[0]]
     2397   result
     2398  end
     2399.,.,
     2400
     2401module_eval <<'.,.,', 'lib/parser.y', 326
     2402  def _reduce_64( val, _values, result )
     2403    result = (val[0] << val[1])
     2404   result
     2405  end
     2406.,.,
     2407
     2408module_eval <<'.,.,', 'lib/parser.y', 335
     2409  def _reduce_65( val, _values, result )
     2410    assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
     2411    c_attribute = val[0]
     2412    c_attribute.children = val[3]
     2413    result = c_attribute
     2414   result
     2415  end
     2416.,.,
     2417
     2418module_eval <<'.,.,', 'lib/parser.y', 340
     2419  def _reduce_66( val, _values, result )
     2420    assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
     2421    result = val[0]
     2422   result
     2423  end
     2424.,.,
     2425
     2426module_eval <<'.,.,', 'lib/parser.y', 345
     2427  def _reduce_67( val, _values, result )
     2428    assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
     2429    result = val[0]
     2430   result
     2431  end
     2432.,.,
     2433
     2434module_eval <<'.,.,', 'lib/parser.y', 356
    21642435  def _reduce_68( val, _values, result )
    21652436    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}, c_existence = #{val[1]} at #{@filename}")
    2166    result
    2167   end
    2168 .,.,
    2169 
    2170 module_eval <<'.,.,', 'lib/parser.y', 190
     2437    result = OpenEHR::AM::Archetype::Constraint_Model::C_SINGLE_ATTRIBUTE.new(
     2438                                                                              :rm_attribute_name => val[0],
     2439                                                                              :existence => val[1]
     2440                                                                              )
     2441   result
     2442  end
     2443.,.,
     2444
     2445module_eval <<'.,.,', 'lib/parser.y', 366
    21712446  def _reduce_69( val, _values, result )
    2172     @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER: #{val[0]}, c_existence = #{val[1]}, c_cardinality = #{val[2]} at #{@filename}")
    2173    result
    2174   end
    2175 .,.,
    2176 
    2177  # reduce 70 omitted
    2178 
    2179  # reduce 71 omitted
    2180 
    2181  # reduce 72 omitted
     2447    assert_at(__FILE__,__LINE__){ val[2].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY) }
     2448    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER: #{val[0]}, c_existence = #{val[1]}, c_cardinality = #{val[2]} at #{@filename}")
     2449    result = OpenEHR::AM::Archetype::Constraint_Model::C_MULTIPLE_ATTRIBUTE.new(
     2450                                                                                :rm_attribute_name => val[0],
     2451                                                                                :existence => val[1],
     2452                                                                                :cardinality => val[2]
     2453                                                                                )
     2454   result
     2455  end
     2456.,.,
     2457
     2458module_eval <<'.,.,', 'lib/parser.y', 371
     2459  def _reduce_70( val, _values, result )
     2460    result = Array[val[0]]
     2461   result
     2462  end
     2463.,.,
     2464
     2465module_eval <<'.,.,', 'lib/parser.y', 375
     2466  def _reduce_71( val, _values, result )
     2467    result = (val[0] << val[1])
     2468   result
     2469  end
     2470.,.,
     2471
     2472module_eval <<'.,.,', 'lib/parser.y', 379
     2473  def _reduce_72( val, _values, result )
     2474    result = Array[val[0]]
     2475   result
     2476  end
     2477.,.,
    21822478
    21832479 # reduce 73 omitted
     
    22052501 # reduce 84 omitted
    22062502
    2207  # reduce 85 omitted
     2503module_eval <<'.,.,', 'lib/parser.y', 410
     2504  def _reduce_85( val, _values, result )
     2505    dadl_section = val[1]
     2506    result = OpenEHR::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new
     2507   result
     2508  end
     2509.,.,
    22082510
    22092511 # reduce 86 omitted
     
    22152517 # reduce 89 omitted
    22162518
    2217  # reduce 90 omitted
    2218 
    2219  # reduce 91 omitted
    2220 
    2221  # reduce 92 omitted
    2222 
    2223 module_eval <<'.,.,', 'lib/parser.y', 240
     2519module_eval <<'.,.,', 'lib/parser.y', 424
     2520  def _reduce_90( val, _values, result )
     2521    result = Array[val[0]]
     2522   result
     2523  end
     2524.,.,
     2525
     2526module_eval <<'.,.,', 'lib/parser.y', 428
     2527  def _reduce_91( val, _values, result )
     2528    result = (val[0] << val[1])
     2529   result
     2530  end
     2531.,.,
     2532
     2533module_eval <<'.,.,', 'lib/parser.y', 432
     2534  def _reduce_92( val, _values, result )
     2535    result = (val[0] << val[2])
     2536   result
     2537  end
     2538.,.,
     2539
     2540module_eval <<'.,.,', 'lib/parser.y', 438
    22242541  def _reduce_93( val, _values, result )
    22252542    @@log.info("#{__FILE__}:#{__LINE__}: attr_id = #{val[0]}, object_block = #{val[2]} at #{@filename}:#{@lineno}")
    2226    result
    2227   end
    2228 .,.,
    2229 
    2230 module_eval <<'.,.,', 'lib/parser.y', 245
     2543    result = {:attr_id => val[0], :object_block => val[2]}
     2544   result
     2545  end
     2546.,.,
     2547
     2548module_eval <<'.,.,', 'lib/parser.y', 444
    22312549  def _reduce_94( val, _values, result )
    22322550    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}:#{@lineno}")
     2551    result = val[0]
    22332552   result
    22342553  end
     
    22372556 # reduce 95 omitted
    22382557
    2239  # reduce 96 omitted
    2240 
    2241  # reduce 97 omitted
    2242 
    2243  # reduce 98 omitted
    2244 
    2245  # reduce 99 omitted
    2246 
    2247  # reduce 100 omitted
    2248 
    2249  # reduce 101 omitted
    2250 
    2251  # reduce 102 omitted
    2252 
    2253 module_eval <<'.,.,', 'lib/parser.y', 262
     2558module_eval <<'.,.,', 'lib/parser.y', 450
     2559  def _reduce_96( val, _values, result )
     2560    result = val[0]
     2561   result
     2562  end
     2563.,.,
     2564
     2565module_eval <<'.,.,', 'lib/parser.y', 454
     2566  def _reduce_97( val, _values, result )
     2567    result = val[0]
     2568   result
     2569  end
     2570.,.,
     2571
     2572module_eval <<'.,.,', 'lib/parser.y', 459
     2573  def _reduce_98( val, _values, result )
     2574    result = val[0]
     2575   result
     2576  end
     2577.,.,
     2578
     2579module_eval <<'.,.,', 'lib/parser.y', 463
     2580  def _reduce_99( val, _values, result )
     2581    result = val[0]
     2582   result
     2583  end
     2584.,.,
     2585
     2586module_eval <<'.,.,', 'lib/parser.y', 468
     2587  def _reduce_100( val, _values, result )
     2588    result = {:untyped_multiple_attr_object_block => val[0]}
     2589   result
     2590  end
     2591.,.,
     2592
     2593module_eval <<'.,.,', 'lib/parser.y', 472
     2594  def _reduce_101( val, _values, result )
     2595    result = {:type_identifier => val[0], :untyped_multiple_attr_object_block => val[1]}
     2596   result
     2597  end
     2598.,.,
     2599
     2600module_eval <<'.,.,', 'lib/parser.y', 477
     2601  def _reduce_102( val, _values, result )
     2602    result = {:multiple_attr_object_block_head => val[0], :keyed_objects => val[1]}
     2603   result
     2604  end
     2605.,.,
     2606
     2607module_eval <<'.,.,', 'lib/parser.y', 483
    22542608  def _reduce_103( val, _values, result )
    22552609    @@log.info("SYM_START_DBLOCK: #{val[0]} at #{@filename}:#{@lineno}")
    2256    result
    2257   end
    2258 .,.,
    2259 
    2260  # reduce 104 omitted
    2261 
    2262  # reduce 105 omitted
    2263 
    2264 module_eval <<'.,.,', 'lib/parser.y', 270
     2610    result = val[0]
     2611   result
     2612  end
     2613.,.,
     2614
     2615module_eval <<'.,.,', 'lib/parser.y', 488
     2616  def _reduce_104( val, _values, result )
     2617    result = Array[val[0]]
     2618   result
     2619  end
     2620.,.,
     2621
     2622module_eval <<'.,.,', 'lib/parser.y', 492
     2623  def _reduce_105( val, _values, result )
     2624    result = (val[0] << val[1])
     2625   result
     2626  end
     2627.,.,
     2628
     2629module_eval <<'.,.,', 'lib/parser.y', 498
    22652630  def _reduce_106( val, _values, result )
    22662631    @@log.info("#{__FILE__}:#{__LINE__}: keyed_object = #{val[0]}, object_block = #{val[2]} at #{@filename}:#{@lineno}")
    2267    result
    2268   end
    2269 .,.,
    2270 
    2271 module_eval <<'.,.,', 'lib/parser.y', 275
     2632    result = {:object_key => val[0], :object_block => val[1]}
     2633   result
     2634  end
     2635.,.,
     2636
     2637module_eval <<'.,.,', 'lib/parser.y', 504
    22722638  def _reduce_107( val, _values, result )
    22732639    @@log.info("object_key: [#{val[1]}] at #{@filename}:#{@lineno}")
    2274    result
    2275   end
    2276 .,.,
    2277 
    2278  # reduce 108 omitted
    2279 
    2280  # reduce 109 omitted
    2281 
    2282  # reduce 110 omitted
    2283 
    2284  # reduce 111 omitted
     2640    result = val[1]
     2641   result
     2642  end
     2643.,.,
     2644
     2645module_eval <<'.,.,', 'lib/parser.y', 509
     2646  def _reduce_108( val, _values, result )
     2647    result = {:untyped_single_attr_object_block => val[0]}
     2648   result
     2649  end
     2650.,.,
     2651
     2652module_eval <<'.,.,', 'lib/parser.y', 513
     2653  def _reduce_109( val, _values, result )
     2654    result = {:type_identifier => val[0], :untyped_single_attr_object_block => val[1]}
     2655   result
     2656  end
     2657.,.,
     2658
     2659module_eval <<'.,.,', 'lib/parser.y', 519
     2660  def _reduce_110( val, _values, result )
     2661    @@log.info("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]} at #{@filename}:#{@lineno}")
     2662    result = {:single_attr_object_complex_head => val[0]}
     2663   result
     2664  end
     2665.,.,
     2666
     2667module_eval <<'.,.,', 'lib/parser.y', 524
     2668  def _reduce_111( val, _values, result )
     2669    @@log.info("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]}, attr_vals = #{val[1]} at #{@filename}:#{@lineno}")
     2670    result = {:single_attr_object_complex_head => val[0], :attr_vals => val[1]}
     2671   result
     2672  end
     2673.,.,
    22852674
    22862675 # reduce 112 omitted
    22872676
    2288  # reduce 113 omitted
    2289 
    2290  # reduce 114 omitted
    2291 
    2292 module_eval <<'.,.,', 'lib/parser.y', 287
     2677module_eval <<'.,.,', 'lib/parser.y', 530
     2678  def _reduce_113( val, _values, result )
     2679    @@log.info("#{__FILE__}:#{__LINE__}: untyped_primitive_object_block = #{val[0]} at #{@filename}:#{@lineno}")
     2680    result = {:untyped_primitive_object_block => val[0]}
     2681   result
     2682  end
     2683.,.,
     2684
     2685module_eval <<'.,.,', 'lib/parser.y', 535
     2686  def _reduce_114( val, _values, result )
     2687    @@log.info("#{__FILE__}:#{__LINE__}: type_identifier = #{val[0]}, untyped_primitive_object_block = #{val[1]} at #{@filename}:#{@lineno}")
     2688    result = {:type_identifier => val[0], :untyped_primitive_object_block => val[1]}
     2689   result
     2690  end
     2691.,.,
     2692
     2693module_eval <<'.,.,', 'lib/parser.y', 540
    22932694  def _reduce_115( val, _values, result )
    2294     @@log.info("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[2]}> at #{@filename}:#{@lineno}")
    2295    result
    2296   end
    2297 .,.,
    2298 
    2299  # reduce 116 omitted
    2300 
    2301  # reduce 117 omitted
    2302 
    2303  # reduce 118 omitted
    2304 
    2305  # reduce 119 omitted
    2306 
    2307  # reduce 120 omitted
    2308 
    2309 module_eval <<'.,.,', 'lib/parser.y', 296
     2695    @@log.info("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[1]}> at #{@filename}:#{@lineno}")
     2696    result = val[1]
     2697   result
     2698  end
     2699.,.,
     2700
     2701module_eval <<'.,.,', 'lib/parser.y', 544
     2702  def _reduce_116( val, _values, result )
     2703    result = val[0]
     2704   result
     2705  end
     2706.,.,
     2707
     2708module_eval <<'.,.,', 'lib/parser.y', 548
     2709  def _reduce_117( val, _values, result )
     2710    result = val[0]
     2711   result
     2712  end
     2713.,.,
     2714
     2715module_eval <<'.,.,', 'lib/parser.y', 552
     2716  def _reduce_118( val, _values, result )
     2717    result = val[0]
     2718   result
     2719  end
     2720.,.,
     2721
     2722module_eval <<'.,.,', 'lib/parser.y', 556
     2723  def _reduce_119( val, _values, result )
     2724    result = val[0]
     2725   result
     2726  end
     2727.,.,
     2728
     2729module_eval <<'.,.,', 'lib/parser.y', 560
     2730  def _reduce_120( val, _values, result )
     2731    result = val[0]
     2732   result
     2733  end
     2734.,.,
     2735
     2736module_eval <<'.,.,', 'lib/parser.y', 565
    23102737  def _reduce_121( val, _values, result )
    23112738    @@log.info("string_value: #{val[0]} at #{@filename}:#{@lineno}")
    2312    result
    2313   end
    2314 .,.,
    2315 
    2316 module_eval <<'.,.,', 'lib/parser.y', 300
     2739    result = val[0]
     2740   result
     2741  end
     2742.,.,
     2743
     2744module_eval <<'.,.,', 'lib/parser.y', 570
    23172745  def _reduce_122( val, _values, result )
    23182746    @@log.info("integer_value: #{val[0]} at #{@filename}:#{@lineno}")
    2319    result
    2320   end
    2321 .,.,
    2322 
    2323 module_eval <<'.,.,', 'lib/parser.y', 304
     2747    result = val[0]
     2748   result
     2749  end
     2750.,.,
     2751
     2752module_eval <<'.,.,', 'lib/parser.y', 575
    23242753  def _reduce_123( val, _values, result )
    23252754    @@log.info("real_value: #{val[0]} at #{@filename}:#{@lineno}")
    2326    result
    2327   end
    2328 .,.,
    2329 
    2330 module_eval <<'.,.,', 'lib/parser.y', 308
     2755    result = val[0]
     2756   result
     2757  end
     2758.,.,
     2759
     2760module_eval <<'.,.,', 'lib/parser.y', 580
    23312761  def _reduce_124( val, _values, result )
    23322762    @@log.info("boolean_value: #{val[0]} at #{@filename}:#{@lineno}")
    2333    result
    2334   end
    2335 .,.,
    2336 
    2337 module_eval <<'.,.,', 'lib/parser.y', 312
     2763    result = val[0]
     2764   result
     2765  end
     2766.,.,
     2767
     2768module_eval <<'.,.,', 'lib/parser.y', 585
    23382769  def _reduce_125( val, _values, result )
    23392770    @@log.info("character_value: #{val[0]} at #{@filename}:#{@lineno}")
    2340    result
    2341   end
    2342 .,.,
    2343 
    2344 module_eval <<'.,.,', 'lib/parser.y', 316
     2771    result = val[0]
     2772   result
     2773  end
     2774.,.,
     2775
     2776module_eval <<'.,.,', 'lib/parser.y', 590
    23452777  def _reduce_126( val, _values, result )
    23462778    @@log.info("date_value: #{val[0]} at #{@filename}:#{@lineno}")
    2347    result
    2348   end
    2349 .,.,
    2350 
    2351 module_eval <<'.,.,', 'lib/parser.y', 320
     2779    result = val[0]
     2780   result
     2781  end
     2782.,.,
     2783
     2784module_eval <<'.,.,', 'lib/parser.y', 595
    23522785  def _reduce_127( val, _values, result )
    23532786    @@log.info("time_value: #{val[0]} at #{@filename}:#{@lineno}")
    2354    result
    2355   end
    2356 .,.,
    2357 
    2358 module_eval <<'.,.,', 'lib/parser.y', 324
     2787    result = val[0]
     2788   result
     2789  end
     2790.,.,
     2791
     2792module_eval <<'.,.,', 'lib/parser.y', 600
    23592793  def _reduce_128( val, _values, result )
    23602794    @@log.info("date_time_value: #{val[0]} at #{@filename}:#{@lineno}")
    2361    result
    2362   end
    2363 .,.,
    2364 
    2365 module_eval <<'.,.,', 'lib/parser.y', 328
     2795    result = val[0]
     2796   result
     2797  end
     2798.,.,
     2799
     2800module_eval <<'.,.,', 'lib/parser.y', 605
    23662801  def _reduce_129( val, _values, result )
    23672802    @@log.info("duration_value: #{val[0]} at #{@filename}:#{@lineno}")
    2368    result
    2369   end
    2370 .,.,
    2371 
    2372 module_eval <<'.,.,', 'lib/parser.y', 332
     2803    result = val[0]
     2804   result
     2805  end
     2806.,.,
     2807
     2808module_eval <<'.,.,', 'lib/parser.y', 610
    23732809  def _reduce_130( val, _values, result )
    23742810    @@log.info("uri_value: #{val[0]} at #{@filename}:#{@lineno}")
     2811    result = val[0]
    23752812   result
    23762813  end
     
    24072844 # reduce 145 omitted
    24082845
    2409 module_eval <<'.,.,', 'lib/parser.y', 353
     2846module_eval <<'.,.,', 'lib/parser.y', 633
    24102847  def _reduce_146( val, _values, result )
    24112848    @@log.info("V_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
    2412    result
    2413   end
    2414 .,.,
    2415 
    2416 module_eval <<'.,.,', 'lib/parser.y', 357
     2849    result = val[0]
     2850   result
     2851  end
     2852.,.,
     2853
     2854module_eval <<'.,.,', 'lib/parser.y', 638
    24172855  def _reduce_147( val, _values, result )
    24182856    @@log.info("V_GENERIC_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
    2419    result
    2420   end
    2421 .,.,
    2422 
    2423 module_eval <<'.,.,', 'lib/parser.y', 362
     2857    result = val[0]
     2858   result
     2859  end
     2860.,.,
     2861
     2862module_eval <<'.,.,', 'lib/parser.y', 644
    24242863  def _reduce_148( val, _values, result )
    24252864    @@log.info("V_STRING: #{val[0]} at #{@filename}:#{@lineno}")
     2865    result = val[0]
    24262866   result
    24272867  end
     
    24342874 # reduce 151 omitted
    24352875
    2436  # reduce 152 omitted
    2437 
    2438  # reduce 153 omitted
    2439 
    2440  # reduce 154 omitted
     2876module_eval <<'.,.,', 'lib/parser.y', 658
     2877  def _reduce_152( val, _values, result )
     2878    begin
     2879      integer = Integer(val[0])
     2880    rescue
     2881      raise
     2882    end
     2883    result = integer
     2884   result
     2885  end
     2886.,.,
     2887
     2888module_eval <<'.,.,', 'lib/parser.y', 667
     2889  def _reduce_153( val, _values, result )
     2890    begin
     2891      integer = Integer(val[0])
     2892    rescue
     2893      raise
     2894    end
     2895    result = integer
     2896   result
     2897  end
     2898.,.,
     2899
     2900module_eval <<'.,.,', 'lib/parser.y', 676
     2901  def _reduce_154( val, _values, result )
     2902    begin
     2903      integer = Integer(val[0])
     2904    rescue
     2905      raise
     2906    end
     2907    result = - integer
     2908   result
     2909  end
     2910.,.,
    24412911
    24422912 # reduce 155 omitted
     
    24642934 # reduce 166 omitted
    24652935
    2466  # reduce 167 omitted
    2467 
    2468  # reduce 168 omitted
    2469 
    2470  # reduce 169 omitted
     2936module_eval <<'.,.,', 'lib/parser.y', 702
     2937  def _reduce_167( val, _values, result )
     2938    begin
     2939      real = Float(val[0])
     2940    rescue
     2941      raise
     2942    end
     2943    result = real
     2944   result
     2945  end
     2946.,.,
     2947
     2948module_eval <<'.,.,', 'lib/parser.y', 711
     2949  def _reduce_168( val, _values, result )
     2950    begin
     2951      real = Float(val[1])
     2952    rescue
     2953      raise
     2954    end
     2955    result = real
     2956   result
     2957  end
     2958.,.,
     2959
     2960module_eval <<'.,.,', 'lib/parser.y', 720
     2961  def _reduce_169( val, _values, result )
     2962    begin
     2963      real = Float(val[1])
     2964    rescue
     2965      raise
     2966    end
     2967    result = - real
     2968   result
     2969  end
     2970.,.,
    24712971
    24722972 # reduce 170 omitted
     
    24942994 # reduce 181 omitted
    24952995
    2496  # reduce 182 omitted
    2497 
    2498  # reduce 183 omitted
     2996module_eval <<'.,.,', 'lib/parser.y', 740
     2997  def _reduce_182( val, _values, result )
     2998    result = true
     2999   result
     3000  end
     3001.,.,
     3002
     3003module_eval <<'.,.,', 'lib/parser.y', 744
     3004  def _reduce_183( val, _values, result )
     3005    result = false
     3006   result
     3007  end
     3008.,.,
    24993009
    25003010 # reduce 184 omitted
     
    25903100 # reduce 229 omitted
    25913101
    2592 module_eval <<'.,.,', 'lib/parser.y', 473
     3102module_eval <<'.,.,', 'lib/parser.y', 808
    25933103  def _reduce_230( val, _values, result )
    25943104    @@log.info("V_ISO8601_DURATION: #{val[0]} at #{@filename}:#{@lineno}")
     3105    result = val[0]
    25953106   result
    25963107  end
     
    26213132 # reduce 242 omitted
    26223133
    2623 module_eval <<'.,.,', 'lib/parser.y', 492
     3134module_eval <<'.,.,', 'lib/parser.y', 828
    26243135  def _reduce_243( val, _values, result )
    26253136    @@log.info("#{__FILE__}:#{__LINE__}: V_QUALIFIED_TERM_CODE_REF = #{val[0]} at #{@filename}:#{@lineno}")
     3137    result = val[0]
    26263138   result
    26273139  end
     
    26343146 # reduce 246 omitted
    26353147
    2636 module_eval <<'.,.,', 'lib/parser.y', 501
     3148module_eval <<'.,.,', 'lib/parser.y', 838
    26373149  def _reduce_247( val, _values, result )
    26383150    @@log.info("#{__FILE__}:#{__LINE__}: V_URI = #{val[0]} at #{@filename}:#{@lineno}")
     3151    result = val[0]
    26393152   result
    26403153  end
     
    27213234 # reduce 287 omitted
    27223235
    2723 module_eval <<'.,.,', 'lib/parser.y', 570
     3236module_eval <<'.,.,', 'lib/parser.y', 907
    27243237  def _reduce_288( val, _values, result )
    27253238    @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}")
     
    27283241.,.,
    27293242
    2730 module_eval <<'.,.,', 'lib/parser.y', 574
     3243module_eval <<'.,.,', 'lib/parser.y', 911
    27313244  def _reduce_289( val, _values, result )
    27323245    @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}")
     
    27353248.,.,
    27363249
    2737  # reduce 290 omitted
    2738 
    2739  # reduce 291 omitted
    2740 
    2741  # reduce 292 omitted
    2742 
    2743  # reduce 293 omitted
    2744 
    2745  # reduce 294 omitted
     3250module_eval <<'.,.,', 'lib/parser.y', 922
     3251  def _reduce_290( val, _values, result )
     3252    result = Range.new(1,1)
     3253   result
     3254  end
     3255.,.,
     3256
     3257module_eval <<'.,.,', 'lib/parser.y', 926
     3258  def _reduce_291( val, _values, result )
     3259    result = val[3]
     3260   result
     3261  end
     3262.,.,
     3263
     3264module_eval <<'.,.,', 'lib/parser.y', 936
     3265  def _reduce_292( val, _values, result )
     3266    begin
     3267      integer = Integer(val[0])
     3268    rescue
     3269      raise
     3270    end
     3271    result = integer
     3272   result
     3273  end
     3274.,.,
     3275
     3276module_eval <<'.,.,', 'lib/parser.y', 946
     3277  def _reduce_293( val, _values, result )
     3278    begin
     3279      from_integer = Integer(val[0])
     3280      to_integer = Integer(val[2])
     3281    rescue
     3282      raise
     3283    end
     3284    result = Range.new(from_integer,to_integer)
     3285   result
     3286  end
     3287.,.,
     3288
     3289module_eval <<'.,.,', 'lib/parser.y', 951
     3290  def _reduce_294( val, _values, result )
     3291    result = OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY.new
     3292   result
     3293  end
     3294.,.,
    27463295
    27473296 # reduce 295 omitted
     
    27673316 # reduce 305 omitted
    27683317
    2769  # reduce 306 omitted
     3318module_eval <<'.,.,', 'lib/parser.y', 970
     3319  def _reduce_306( val, _values, result )
     3320    result = val[3]
     3321   result
     3322  end
     3323.,.,
    27703324
    27713325 # reduce 307 omitted
     
    28613415 # reduce 352 omitted
    28623416
    2863  # reduce 353 omitted
    2864 
    2865  # reduce 354 omitted
    2866 
    2867  # reduce 355 omitted
    2868 
    2869  # reduce 356 omitted
    2870 
    2871  # reduce 357 omitted
    2872 
    2873  # reduce 358 omitted
    2874 
    2875  # reduce 359 omitted
     3417module_eval <<'.,.,', 'lib/parser.y', 1040
     3418  def _reduce_353( val, _values, result )
     3419    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true)
     3420   result
     3421  end
     3422.,.,
     3423
     3424module_eval <<'.,.,', 'lib/parser.y', 1044
     3425  def _reduce_354( val, _values, result )
     3426    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false)
     3427   result
     3428  end
     3429.,.,
     3430
     3431module_eval <<'.,.,', 'lib/parser.y', 1048
     3432  def _reduce_355( val, _values, result )
     3433    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true,:false_valid => false)
     3434   result
     3435  end
     3436.,.,
     3437
     3438module_eval <<'.,.,', 'lib/parser.y', 1052
     3439  def _reduce_356( val, _values, result )
     3440    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false,:false_valid => true)
     3441   result
     3442  end
     3443.,.,
     3444
     3445module_eval <<'.,.,', 'lib/parser.y', 1057
     3446  def _reduce_357( val, _values, result )
     3447    result = val[0]
     3448   result
     3449  end
     3450.,.,
     3451
     3452module_eval <<'.,.,', 'lib/parser.y', 1061
     3453  def _reduce_358( val, _values, result )
     3454    raise 'Not implemented yet'
     3455   result
     3456  end
     3457.,.,
     3458
     3459module_eval <<'.,.,', 'lib/parser.y', 1065
     3460  def _reduce_359( val, _values, result )
     3461    raise 'Not implemented yet'
     3462   result
     3463  end
     3464.,.,
    28763465
    28773466 # reduce 360 omitted
     
    28853474 # reduce 364 omitted
    28863475
    2887 module_eval <<'.,.,', 'lib/parser.y', 694
     3476module_eval <<'.,.,', 'lib/parser.y', 1078
    28883477  def _reduce_365( val, _values, result )
    28893478    @in_interval = false
     
    29093498 # reduce 373 omitted
    29103499
    2911 module_eval <<'.,.,', 'lib/parser.y', 716
     3500module_eval <<'.,.,', 'lib/parser.y', 1100
    29123501  def _reduce_374( val, _values, result )
    29133502    @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}")
     
    29163505.,.,
    29173506
    2918  # reduce 375 omitted
     3507module_eval <<'.,.,', 'lib/parser.y', 1110
     3508  def _reduce_375( val, _values, result )
     3509    result = val[0]
     3510   result
     3511  end
     3512.,.,
    29193513
    29203514 def _reduce_none( val, _values, result )
  • /ruby/trunk/adl_parser/lib/parser.y

    r20 r30  
    2828
    2929input: archetype EOF
     30  {
     31    result = val[0]
     32  }
    3033  | error
    3134
    32 archetype: arch_identification
    33   arch_specialisation
    34   arch_concept
    35   arch_language
    36   arch_description
    37   arch_definition
    38   arch_invariant
    39   arch_ontology
     35archetype: arch_identification arch_specialisation arch_concept arch_language arch_description arch_definition arch_invariant arch_ontology
     36  {
     37    assert_at(__FILE__,__LINE__) do
     38      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)
     39    end
     40   
     41    archetype_id = val[0][:archetype_id]
     42    adl_version = val[0][:arch_head][:arch_meta_data][:adl_version]
     43    concept = val[2]
     44    language = val[3][:arch_language]
     45    archetype = OpenEHR::AM::Archetype::ARCHETYPE.create(
     46                                                         :archetype_id => archetype_id,
     47                                                         :adl_version => adl_version,
     48                                                         :concept => concept,
     49                                                         :description => val[4],
     50                                                         :definition => val[5],
     51                                                         :ontology => val[7]
     52                                                         ) do |archetype|
     53      archetype.original_language = language
     54    end
     55    @@log.info("#{__FILE__}:#{__LINE__}: archetype = #{archetype} at #{@filename}:#{@lineno}")
     56    result = archetype
     57  }
    4058
    4159
    4260arch_identification: arch_head V_ARCHETYPE_ID
     61  {
     62    result = {:arch_head => val[0], :archetype_id => val[1] }
     63  }
    4364  | SYM_ARCHETYPE error
     65  {
     66    raise
     67  }
    4468
    4569arch_head: SYM_ARCHETYPE
     70  {
     71    result = {:arch_meta_data => nil }
     72  }
    4673  | SYM_ARCHETYPE arch_meta_data
     74  {
     75    result = val[1]
     76  }
    4777
    4878arch_meta_data: Left_parenthesis_code arch_meta_data_items Right_parenthesis_code
     79  {
     80    result = {:arch_meta_data => val[1] }
     81  }
    4982
    5083arch_meta_data_items: arch_meta_data_item
     84  {
     85    result = val[0]
     86  }
    5187  | arch_meta_data_items Semicolon_code arch_meta_data_item
    52 #  | arch_meta_data_items ';' arch_meta_data_item
     88  {
     89    result = val[0].merge(val[2])
     90  }
     91
    5392
    5493arch_meta_data_item: SYM_ADL_VERSION SYM_EQ V_VERSION_STRING
     94  {
     95    result = {:adl_version => val[2], :is_controlled => false }
     96  }
    5597  | SYM_IS_CONTROLLED
     98  {
     99    result = {:is_controlled => true }
     100  }
    56101
    57102# Define specialization in which its constraints are narrower than those of the parent.
     
    62107
    63108arch_concept: SYM_CONCEPT V_LOCAL_TERM_CODE_REF
     109  {
     110    result = {:arch_concept => val[1] }
     111  }
    64112  | SYM_CONCEPT error
    65113
     
    69117
    70118arch_language: #-- empty is ok for ADL 1.4 tools
     119  {
     120    result = {:arch_language => nil}
     121  }
    71122    | SYM_LANGUAGE dadl_section
    72123  {
    73     result = {:language => val[1]}
     124    result = {:arch_language => val[1]}
    74125  }
    75126  | SYM_LANGUAGE error
     
    81132arch_description: #-- no meta-data ok
    82133    | SYM_DESCRIPTION dadl_section
    83     | SYM_DESCRIPTION error
    84 
     134  {
     135    result = OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION.new(:details => val[1])
     136  }
     137  | SYM_DESCRIPTION error
     138 
    85139#arch_definition: SYM_DEFINITION V_CADL_TEXT
    86140#  | SYM_DEFINITION error
    87141arch_definition: SYM_DEFINITION cadl_section
     142  {
     143    result = val[1]
     144  }
    88145  | SYM_DEFINITION error
    89146
     
    91148### cADL section
    92149cadl_section: c_complex_object
     150  {
     151    assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT)}
     152    @@log.info("#{__FILE__}:#{__LINE__}: c_complex_object = #{val[0]} at #{@filename}:#{@lineno}")
     153    result = val[0]
     154  }
    93155  | assertions
     156  {
     157    result = val[0]
     158  }
    94159#  | error
    95160
    96161#c_complex_object: c_complex_object_head SYM_MATCHES SYM_START_CBLOCK c_complex_object_body SYM_END_CBLOCK
    97162c_complex_object: c_complex_object_head SYM_MATCHES START_REGEXP_BLOCK REGEXP_BODY END_REGEXP_BLOCK # added by akimichi
     163  {
     164    result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
     165      c_complex_object.node_id = val[0][:c_complex_object_id][:local_term_code_ref]
     166      c_complex_object.rm_type_name = val[0][:c_complex_object_id][:type_identifier]
     167      c_complex_object.occurrences = val[0][:c_occurrences]
     168    end
     169  }
    98170    | c_complex_object_head SYM_MATCHES SYM_START_CBLOCK c_complex_object_body SYM_END_CBLOCK
    99 #     | c_complex_object_head error SYM_END_CBLOCK
    100 #   {
    101 #     @adl_type.push(:cadl)
    102 #     yyerror
    103 #   }
     171  {
     172    result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:attributes => val[3]) do |c_complex_object|
     173      c_complex_object.node_id = val[0][:c_complex_object_id][:local_term_code_ref]
     174      c_complex_object.rm_type_name = val[0][:c_complex_object_id][:type_identifier]
     175      c_complex_object.occurrences = val[0][:c_occurrences]
     176    end
     177  }
     178#    | c_complex_object_head error SYM_END_CBLOCK
    104179#    | c_complex_object_head SYM_MATCHES SYM_START_CBLOCK c_complex_object_body c_invariants SYM_END_CBLOCK
    105180
    106181c_complex_object_head: c_complex_object_id c_occurrences
     182  {
     183    result = {:c_complex_object_id => val[0], :c_occurrences => val[1]}
     184  }
    107185
    108186c_complex_object_id: type_identifier
    109187  {
    110     result = {:c_complex_object_id => {:type_identifier => val[0]}}
     188    result = {:type_identifier => val[0]}
    111189  }
    112190  | type_identifier V_LOCAL_TERM_CODE_REF
    113191  {
    114     result = {:c_complex_object_id => {:type_identifier => val[0], :V_LOCAL_TERM_CODE_REF => val[1]}}
     192    result = {:type_identifier => val[0], :local_term_code_ref => val[1]}
    115193  }
    116194
    117195c_complex_object_body: c_any #-- used to indicate that any value of a type is ok
    118196  | c_attributes
     197  {
     198    result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new(:attributes => val[0])
     199  }
    119200
    120201
     
    122203
    123204c_object: v_c_domain_type
     205  {
     206    result = val[0]
     207  }
    124208  | c_complex_object
     209  {
     210    result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new
     211  }
    125212  | archetype_internal_ref
     213  {
     214    result = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_INTERNAL_REF.new
     215  }
    126216  | archetype_slot
     217  {
     218    result = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_SLOT.new
     219  }
    127220  | constraint_ref
     221  {
     222    result = OpenEHR::AM::Archetype::Constraint_Model::CONSTRAINT_REF.new
     223  }
    128224  | c_code_phrase
     225  {
     226    result = val[0]
     227  }
    129228  | c_ordinal
     229  {
     230    result = val[0]
     231  }
    130232  | c_primitive_object
     233  {
     234    result = val[0]
     235  }
    131236#  | v_c_domain_type
    132237#  | V_C_DOMAIN_TYPE
     
    141246
    142247v_c_domain_type: START_V_C_DOMAIN_TYPE_BLOCK dadl_section END_V_C_DOMAIN_TYPE_BLOCK
     248  {
     249    result = val[1]
     250  }
    143251
    144252# 'archetype_internal_ref' is a node that refers to a previously defined object node in the same archetype.
     
    157265# 'c_primitive_object' is an node representing a constraint on a primitive object type.
    158266c_primitive_object: c_primitive
     267  {
     268    assert_at(__FILE__,__LINE__){val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_PRIMITIVE)}
     269    result = OpenEHR::AM::Archetype::Constraint_Model::C_PRIMITIVE_OBJECT.new(:item => val[0])
     270  }
    159271
    160272c_primitive: c_integer
     273  {
     274    @@log.info("#{__FILE__}:#{__LINE__}: c_integer = #{val[0]} at #{@filename}:#{@lineno}")
     275    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_INTEGER.new
     276  }
    161277  | c_real
     278  {
     279    @@log.info("#{__FILE__}:#{__LINE__}: c_real = #{val[0]} at #{@filename}:#{@lineno}")
     280    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_REAL.new
     281  }
    162282  | c_date
     283  {
     284    @@log.info("#{__FILE__}:#{__LINE__}: c_date = #{val[0]} at #{@filename}:#{@lineno}")
     285    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE.new
     286  }
    163287  | c_time
     288  {
     289    @@log.info("#{__FILE__}:#{__LINE__}: c_time = #{val[0]} at #{@filename}:#{@lineno}")
     290    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_TIME.new
     291  }
    164292  | c_date_time
     293  {
     294    @@log.info("#{__FILE__}:#{__LINE__}: c_date_time = #{val[0]} at #{@filename}:#{@lineno}")
     295    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE_TIME.new
     296  }
    165297  | c_duration
     298  {
     299    @@log.info("#{__FILE__}:#{__LINE__}: c_duration = #{val[0]} at #{@filename}:#{@lineno}")
     300    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DURATION.new
     301  }
    166302  | c_string
     303  {
     304    @@log.info("#{__FILE__}:#{__LINE__}: c_string = #{val[0]} at #{@filename}:#{@lineno}")
     305    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_STRING.new
     306  }
    167307  | c_boolean
     308  {
     309    assert_at(__FILE__,__LINE__){val[0].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN)}
     310    @@log.info("#{__FILE__}:#{__LINE__}: c_boolean = #{val[0]} at #{@filename}:#{@lineno}")
     311    result = val[0]
     312  }
    168313
    169314c_any: Star_code
     
    173318
    174319c_attributes: c_attribute
     320  {
     321    result = [val[0]]
     322  }
    175323  | c_attributes c_attribute
     324  {
     325    result = (val[0] << val[1])
     326  }
    176327
    177328# 'c_attribute' is a node representing a constraint on an attribute in an object model.
    178329c_attribute: c_attr_head SYM_MATCHES SYM_START_CBLOCK c_attr_values SYM_END_CBLOCK
     330  {
     331    assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
     332    c_attribute = val[0]
     333    c_attribute.children = val[3]
     334    result = c_attribute
     335  }
    179336  | c_attr_head SYM_MATCHES START_REGEXP_BLOCK REGEXP_BODY END_REGEXP_BLOCK # added by akimichi
     337  {
     338    assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
     339    result = val[0]
     340  }
    180341  | c_attr_head SYM_MATCHES SYM_START_CBLOCK error SYM_END_CBLOCK
     342  {
     343    assert_at(__FILE__,__LINE__){ val[0].kind_of?(OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE)}
     344    result = val[0]
     345  }
    181346
    182347
     
    184349  {
    185350    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}, c_existence = #{val[1]} at #{@filename}")
     351    result = OpenEHR::AM::Archetype::Constraint_Model::C_SINGLE_ATTRIBUTE.new(
     352                                                                              :rm_attribute_name => val[0],
     353                                                                              :existence => val[1]
     354                                                                              )
     355
    186356  }
    187357  | V_ATTRIBUTE_IDENTIFIER c_existence c_cardinality
    188358  {
     359    assert_at(__FILE__,__LINE__){ val[2].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY) }
    189360    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER: #{val[0]}, c_existence = #{val[1]}, c_cardinality = #{val[2]} at #{@filename}")
     361    result = OpenEHR::AM::Archetype::Constraint_Model::C_MULTIPLE_ATTRIBUTE.new(
     362                                                                                :rm_attribute_name => val[0],
     363                                                                                :existence => val[1],
     364                                                                                :cardinality => val[2]
     365                                                                                )
    190366  }
    191367
    192368c_attr_values: c_object
     369  {
     370    result = Array[val[0]]
     371  }
    193372  | c_attr_values c_object
     373  {
     374    result = (val[0] << val[1])
     375  }
    194376  | c_any # -- to allow a property to have any value
     377  {
     378    result = Array[val[0]]
     379  }
    195380
    196381### c_includes: #-- Empty
     
    220405
    221406arch_ontology: SYM_ONTOLOGY dadl_section
     407  {
     408    dadl_section = val[1]
     409    result = OpenEHR::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new
     410  }
    222411  | SYM_ONTOLOGY error
    223412
     
    231420
    232421attr_vals: attr_val
     422  {
     423    result = Array[val[0]]
     424  }
    233425  | attr_vals attr_val
     426  {
     427    result = (val[0] << val[1])
     428  }
    234429  | attr_vals Semicolon_code attr_val
    235 #  | attr_vals ';' attr_val
     430  {
     431    result = (val[0] << val[2])
     432  }
    236433
    237434attr_val: attr_id SYM_EQ object_block
    238435  {
    239436    @@log.info("#{__FILE__}:#{__LINE__}: attr_id = #{val[0]}, object_block = #{val[2]} at #{@filename}:#{@lineno}")
     437    result = {:attr_id => val[0], :object_block => val[2]}
    240438  }
    241439
     
    243441  {
    244442    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}:#{@lineno}")
     443    result = val[0]
    245444  }
    246445  | V_ATTRIBUTE_IDENTIFIER error
    247446
    248447object_block: complex_object_block
     448  {
     449    result = val[0]
     450  }
    249451  | primitive_object_block
     452  {
     453    result = val[0]
     454  }
    250455
    251456complex_object_block: single_attr_object_block
     457  {
     458    result = val[0]
     459  }
    252460  | multiple_attr_object_block
     461  {
     462    result = val[0]
     463  }
    253464
    254465multiple_attr_object_block: untyped_multiple_attr_object_block
     466  {
     467    result = {:untyped_multiple_attr_object_block => val[0]}
     468  }
    255469  | type_identifier untyped_multiple_attr_object_block
     470  {
     471    result = {:type_identifier => val[0], :untyped_multiple_attr_object_block => val[1]}
     472  }
    256473
    257474untyped_multiple_attr_object_block: multiple_attr_object_block_head keyed_objects SYM_END_DBLOCK
     475  {
     476    result = {:multiple_attr_object_block_head => val[0], :keyed_objects => val[1]}
     477  }
    258478
    259479multiple_attr_object_block_head: SYM_START_DBLOCK
    260   {
     480  { 
    261481    @@log.info("SYM_START_DBLOCK: #{val[0]} at #{@filename}:#{@lineno}")
     482    result = val[0]
    262483  }
    263484
    264485keyed_objects: keyed_object
     486  {
     487    result = Array[val[0]]
     488  }
    265489  | keyed_objects keyed_object
     490  {
     491    result = (val[0] << val[1])
     492  }
    266493
    267494keyed_object: object_key SYM_EQ object_block
    268495  {
    269496    @@log.info("#{__FILE__}:#{__LINE__}: keyed_object = #{val[0]}, object_block = #{val[2]} at #{@filename}:#{@lineno}")
     497    result = {:object_key => val[0], :object_block => val[1]}
    270498  }
    271499
     
    273501  {
    274502    @@log.info("object_key: [#{val[1]}] at #{@filename}:#{@lineno}")
     503    result = val[1]
    275504  }
    276505
    277506single_attr_object_block: untyped_single_attr_object_block
     507  {
     508    result = {:untyped_single_attr_object_block => val[0]}
     509  }
    278510  | type_identifier untyped_single_attr_object_block
     511  {
     512    result = {:type_identifier => val[0], :untyped_single_attr_object_block => val[1]}
     513  }
     514
    279515untyped_single_attr_object_block: single_attr_object_complex_head SYM_END_DBLOCK # <>
     516  {
     517    @@log.info("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]} at #{@filename}:#{@lineno}")
     518    result = {:single_attr_object_complex_head => val[0]}
     519  }
    280520  | single_attr_object_complex_head attr_vals SYM_END_DBLOCK
     521  {
     522    @@log.info("#{__FILE__}:#{__LINE__}: single_attr_object_complex_head = #{val[0]}, attr_vals = #{val[1]} at #{@filename}:#{@lineno}")
     523    result = {:single_attr_object_complex_head => val[0], :attr_vals => val[1]}
     524  }
    281525single_attr_object_complex_head: SYM_START_DBLOCK
    282526primitive_object_block: untyped_primitive_object_block
     527  {
     528    @@log.info("#{__FILE__}:#{__LINE__}: untyped_primitive_object_block = #{val[0]} at #{@filename}:#{@lineno}")
     529    result = {:untyped_primitive_object_block => val[0]}
     530  }
    283531  | type_identifier untyped_primitive_object_block
     532  {
     533    @@log.info("#{__FILE__}:#{__LINE__}: type_identifier = #{val[0]}, untyped_primitive_object_block = #{val[1]} at #{@filename}:#{@lineno}")
     534    result = {:type_identifier => val[0], :untyped_primitive_object_block => val[1]}
     535  }
    284536untyped_primitive_object_block: SYM_START_DBLOCK primitive_object_value SYM_END_DBLOCK
    285537  {
    286     @@log.info("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[2]}> at #{@filename}:#{@lineno}")
     538    @@log.info("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[1]}> at #{@filename}:#{@lineno}")
     539    result = val[1]
    287540  }
    288541primitive_object_value: simple_value
     542  {
     543    result = val[0]
     544  }
    289545  | simple_list_value
     546  {
     547    result = val[0]
     548  }
    290549  | simple_interval_value
     550  {
     551    result = val[0]
     552  }
    291553  | term_code
     554  {
     555    result = val[0]
     556  }
    292557  | term_code_list_value
     558  {
     559    result = val[0]
     560  }
    293561simple_value: string_value
    294562  {
    295563    @@log.info("string_value: #{val[0]} at #{@filename}:#{@lineno}")
     564    result = val[0]
    296565  }
    297566  | integer_value
    298567  {
    299568    @@log.info("integer_value: #{val[0]} at #{@filename}:#{@lineno}")
     569    result = val[0]
    300570  }
    301571  | real_value
    302572  {
    303573    @@log.info("real_value: #{val[0]} at #{@filename}:#{@lineno}")
     574    result = val[0]
    304575  }
    305576  | boolean_value
    306577  {
    307578    @@log.info("boolean_value: #{val[0]} at #{@filename}:#{@lineno}")
     579    result = val[0]
    308580  }
    309581  | character_value
    310582  {
    311583    @@log.info("character_value: #{val[0]} at #{@filename}:#{@lineno}")
     584    result = val[0]
    312585  }
    313586  | date_value
    314587  {
    315588    @@log.info("date_value: #{val[0]} at #{@filename}:#{@lineno}")
     589    result = val[0]
    316590  }
    317591  | time_value
    318592  {
    319593    @@log.info("time_value: #{val[0]} at #{@filename}:#{@lineno}")
     594    result = val[0]
    320595  }
    321596  | date_time_value
    322597  {
    323598    @@log.info("date_time_value: #{val[0]} at #{@filename}:#{@lineno}")
     599    result = val[0]
    324600  }
    325601  | duration_value
    326602  {
    327603    @@log.info("duration_value: #{val[0]} at #{@filename}:#{@lineno}")
     604    result = val[0]
    328605  }
    329606  | uri_value
    330607  {
    331608    @@log.info("uri_value: #{val[0]} at #{@filename}:#{@lineno}")
    332   }
     609    result = val[0]
     610  }
     611
    333612simple_list_value: string_list_value
    334613  | integer_list_value
     
    351630  {
    352631    @@log.info("V_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
     632    result = val[0]
    353633  }
    354634  | V_GENERIC_TYPE_IDENTIFIER
    355635  {
    356636    @@log.info("V_GENERIC_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
     637    result = val[0]
    357638  }
    358639
     
    360641  {
    361642    @@log.info("V_STRING: #{val[0]} at #{@filename}:#{@lineno}")
     643    result = val[0]
    362644  }
    363645
     
    367649
    368650integer_value: V_INTEGER
     651  {
     652    begin
     653      integer = Integer(val[0])
     654    rescue
     655      raise
     656    end
     657    result = integer
     658  }
    369659  | Plus_code V_INTEGER
     660  {
     661    begin
     662      integer = Integer(val[0])
     663    rescue
     664      raise
     665    end
     666    result = integer
     667  }
    370668  | Minus_code V_INTEGER
     669  {
     670    begin
     671      integer = Integer(val[0])
     672    rescue
     673      raise
     674    end
     675    result = - integer
     676  }
    371677###   | '+' V_INTEGER
    372678###   | '-' V_INTEGER
     
    387693
    388694real_value: V_REAL
     695  {
     696    begin
     697      real = Float(val[0])
     698    rescue
     699      raise
     700    end
     701    result = real
     702  }
    389703  | Plus_code V_REAL
     704  {
     705    begin
     706      real = Float(val[1])
     707    rescue
     708      raise
     709    end
     710    result = real
     711  }
    390712  | Minus_code V_REAL
    391 #  | '+' V_REAL
    392 #  | '-' V_REAL
     713  {
     714    begin
     715      real = Float(val[1])
     716    rescue
     717      raise
     718    end
     719    result = - real
     720  }
    393721
    394722real_list_value: real_value Comma_code real_value
     
    408736
    409737boolean_value: SYM_TRUE
     738  {
     739    result = true
     740  }
    410741  | SYM_FALSE
     742  {
     743    result = false
     744  }
    411745
    412746boolean_list_value: boolean_value Comma_code boolean_value
     
    471805  {
    472806    @@log.info("V_ISO8601_DURATION: #{val[0]} at #{@filename}:#{@lineno}")
     807    result = val[0]
    473808  }
    474809
     
    490825  {
    491826    @@log.info("#{__FILE__}:#{__LINE__}: V_QUALIFIED_TERM_CODE_REF = #{val[0]} at #{@filename}:#{@lineno}")
     827    result = val[0]
    492828  }
    493829
     
    499835  {
    500836    @@log.info("#{__FILE__}:#{__LINE__}: V_URI = #{val[0]} at #{@filename}:#{@lineno}")
     837    result = val[0]
    501838  }
    502839
     
    581918
    582919c_existence: #-- default to 1..1
    583     | SYM_EXISTENCE SYM_MATCHES SYM_START_CBLOCK existence_spec SYM_END_CBLOCK
     920    {
     921    result = Range.new(1,1)
     922  }
     923  | SYM_EXISTENCE SYM_MATCHES SYM_START_CBLOCK existence_spec SYM_END_CBLOCK
     924  {
     925    result = val[3]
     926  }
    584927
    585928existence_spec:  V_INTEGER #-- can only be 0 or 1
     929  {
     930    begin
     931      integer = Integer(val[0])
     932    rescue
     933      raise
     934    end
     935    result = integer
     936  }
    586937  | V_INTEGER SYM_ELLIPSIS V_INTEGER #-- can only be 0..0, 0..1, 1..1
     938  {
     939    begin
     940      from_integer = Integer(val[0])
     941      to_integer = Integer(val[2])
     942    rescue
     943      raise
     944    end
     945    result = Range.new(from_integer,to_integer)
     946  }
    587947
    588948c_cardinality: SYM_CARDINALITY SYM_MATCHES SYM_START_CBLOCK cardinality_spec SYM_END_CBLOCK
     949  {
     950    result = OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY.new
     951  }
    589952
    590953cardinality_spec: occurrence_spec
     
    603966c_occurrences:  #-- default to 1..1
    604967  | SYM_OCCURRENCES SYM_MATCHES SYM_START_CBLOCK occurrence_spec SYM_END_CBLOCK
     968  {
     969    result = val[3]
     970  }
    605971  | SYM_OCCURRENCES error
    606972
     
    6701036
    6711037c_boolean_spec: SYM_TRUE
     1038  {
     1039    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true)
     1040  }
    6721041  | SYM_FALSE
     1042  {
     1043    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false)
     1044  }
    6731045  | SYM_TRUE Comma_code SYM_FALSE
     1046  {
     1047    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true,:false_valid => false)
     1048  }
    6741049  | SYM_FALSE Comma_code SYM_TRUE
     1050  {
     1051    result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false,:false_valid => true)
     1052  }
    6751053
    6761054c_boolean: c_boolean_spec
     1055  {
     1056    result = val[0]
     1057  }
    6771058  | c_boolean_spec Semicolon_code boolean_value
     1059  {
     1060    raise 'Not implemented yet'
     1061  }
    6781062  | c_boolean_spec Semicolon_code error
    679 #  | c_boolean_spec ';' error
     1063  {
     1064    raise 'Not implemented yet'
     1065  }
    6801066
    6811067c_ordinal: c_ordinal_spec
    6821068  | c_ordinal_spec Semicolon_code integer_value
    6831069  | c_ordinal_spec Semicolon_code error
    684 #  | c_ordinal_spec ';' error
    6851070
    6861071c_ordinal_spec: ordinal
    6871072  | c_ordinal_spec Comma_code ordinal
    688 #  | c_ordinal_spec ',' ordinal
    6891073
    6901074ordinal: integer_value SYM_INTERVAL_DELIM V_QUALIFIED_TERM_CODE_REF
     
    7221106
    7231107duration_pattern: V_ISO8601_DURATION_CONSTRAINT_PATTERN
     1108  {
     1109    result = val[0]
     1110  }
    7241111
    7251112
     
    7311118require 'lib/util.rb'
    7321119require 'lib/scanner.rb'
    733 require 'lib/model.rb'
     1120require 'rubygems'
     1121require 'am.rb'
    7341122$DEBUG = true
    7351123
     
    7371125
    7381126---- inner
     1127
     1128def assert_at(file,line, message = "")
     1129  unless yield
     1130    raise "Assertion failed !: #{file}, #{line}: #{message}"
     1131  end
     1132end
    7391133
    7401134@@log = Logger.new('log/parser.log','daily')
  • /ruby/trunk/adl_parser/lib/scanner.rb

    r20 r30  
    115115              Yaparc::Apply.new(
    116116                                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])?/),
    117                                                 Yaparc::Regex.new(/AP([0-9]+|[yY])?([0-9]+|[mM])?([0-9]+|[wW])?([0-9]+|[dD])?/))) do |match|
    118 #                                 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])?/),
    119 #                                                 Yaparc::Regex.new(/AP([0-9]+[yY])?([0-9]+[mM])?([0-9]+[wW])?([0-9]+[dD])?/))) do |match|
     117                                                Yaparc::Regex.new(/\AP([0-9]+|[yY])?([0-9]+|[mM])?([0-9]+|[wW])?([0-9]+|[dD])?/))) do |match|
    120118                LOG.info("V_ISO8601_DURATION: #{match}")
    121119                [:V_ISO8601_DURATION, match]
     
    160158            @parser = lambda do |input|
    161159              reserved_parsers = OpenEHR::ADL::Scanner::DADL::RESERVED.map do |keyword|
    162                 Yaparc::Tokenize.new(Yaparc::Literal.new(keyword[0], false))
     160                Yaparc::Tokenize.new(
     161                                     Yaparc::Literal.new(keyword[0], false)
     162                                     )
    163163              end
    164164              Yaparc::Alt.new(Yaparc::Apply.new(Yaparc::Alt.new(*reserved_parsers)) do |match|
     
    248248        end
    249249
     250        #V_ISO8601_DURATION_CONSTRAINT_PATTERN
     251        class V_ISO8601_DURATION_CONSTRAINT_PATTERN
     252          include Yaparc::Parsable
     253          def initialize
     254            @parser = lambda do |input|
     255              Yaparc::Apply.new(Yaparc::Alt.new(Yaparc::Regex.new(/\AP[yY]?[mM]?[wW]?[dD]?T[hH]?[mM]?[sS]?/),
     256                                                Yaparc::Regex.new(/\AP[yY]?[mM]?[wW]?[dD]?/))) do |match|
     257                OpenEHR::ADL::Scanner::Common::LOG.info("V_ISO8601_DURATION_CONSTRAINT_PATTERN: #{match}")
     258                [:V_ISO8601_DURATION_CONSTRAINT_PATTERN, match]
     259              end
     260            end
     261          end
     262        end
     263
    250264        #V_C_DOMAIN_TYPE /\A[A-Z][a-zA-Z0-9_]*[ \n]*\</
    251265        class V_C_DOMAIN_TYPE
     
    270284                              OpenEHR::ADL::Scanner::Common::V_ISO8601_DURATION.new,
    271285                              V_C_DOMAIN_TYPE.new,
     286                              V_ISO8601_DURATION_CONSTRAINT_PATTERN.new,
    272287                              Reserved.new,
    273288                              OpenEHR::ADL::Scanner::Common::V_QUALIFIED_TERM_CODE_REF.new,
  • /ruby/trunk/adl_parser/tests/parser_test.rb

    r20 r30  
    1 #$:.unshift File.join(File.dirname(__FILE__))
    2 
    31require 'lib/parser.rb'
    42require 'test/unit'
     
    1614    laboratory_request = File.read('tests/openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl')
    1715    assert_nothing_raised do
    18       @parser.parse(laboratory_request, 'openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl')
     16      result = @parser.parse(laboratory_request, 'openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl')
     17      assert_instance_of OpenEHR::AM::Archetype::ARCHETYPE, result
     18      assert_instance_of OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION, result.description
     19      assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT, result.definition
     20#      assert_equal '', result.definition
    1921    end
    2022
     
    2224    assert_nothing_raised do
    2325      result = @parser.parse(apgar, 'openEHR-EHR-OBSERVATION.apgar.v1.adl')
    24       #       assert_equal "", result
     26      assert_instance_of OpenEHR::AM::Archetype::ARCHETYPE, result
     27      assert_instance_of OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION, result.description
     28      assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT, result.definition
    2529    end
    2630
     
    3135
    3236
    33 #     medication = File.read('tests/openEHR-EHR-ITEM_TREE.medication.v1.adl')
    34 #     assert_nothing_raised do
    35 #       @parser.parse(medication, 'openEHR-EHR-ITEM_TREE.medication.v1.adl')
    36 #     end
    3737
    3838    referral = File.read('tests/openEHR-EHR-ITEM_TREE.referral.v1.adl')
     
    144144
    145145
     146#     medication = File.read('tests/openEHR-EHR-ITEM_TREE.medication.v1.adl')
     147#     assert_nothing_raised do
     148#       @parser.parse(medication, 'openEHR-EHR-ITEM_TREE.medication.v1.adl')
     149#     end
    146150  end
    147151end
  • /ruby/trunk/models/Rakefile

    r20 r30  
    3434
    3535
     36gem_spec = Gem::Specification.new do |s|
     37  s.name = 'openehr_models'
     38  s.author = 'Shinji KOBAYASHI, Akimichi TATSUKAWA'
     39  s.version = '0.0.1'
     40  s.summary = 'OpenEHR models'
     41  s.email = 'openehr-jp@openehr.jp'
     42  s.test_files = FileList['tests/test_*.rb', '*.adl']
     43  candidates = Dir.glob("{am,rm,docs,tests}/**/*") + FileList['COPYING', 'Rakefile','am.rb','assumed_library_types.rb','rm.rb']
     44  s.files = candidates.delete_if do |item|
     45    item.include?(".svn") || item.include?("rdoc")
     46  end
     47#  s.files << FileList['COPYING', 'Rakefile','am.rb','assumed_library_types.rb','rm.rb']
     48#  s.require_paths += [".","am","rm"]
     49  s.require_path = "."
     50  s.has_rdoc = true
     51#  s.extra_rdoc_files = ["README"]
     52end
     53
     54
     55Rake::GemPackageTask.new(gem_spec) do |pkg|
     56  pkg.need_zip = false
     57  pkg.need_tar = false
     58end
     59
     60#CLOBBER.include('rdoc')
     61#CLEAN.include('lib/*.output', 'log/*.log')
     62
     63
    3664
    3765
  • /ruby/trunk/models/am.rb

    r20 r30  
    1717  module AM
    1818    module Archetype
    19       autoload :Archetype, "am/archetype/archetype.rb"
     19      autoload :ARCHETYPE, "am/archetype/archetype.rb"
    2020      autoload :Constraint_Model, "am/archetype/constraint_model/archetype_constraint.rb"
    2121      autoload :Ontology, "am/archetype/ontology.rb"
    22       autoload :Archetype_Description, "am/archetype/archetype_description/archetype_description.rb"
     22     
     23      module Archetype_Description
     24        autoload :ARCHETYPE_DESCRIPTION, "am/archetype/archetype_description/archetype_description.rb"
     25      end
     26
    2327      module Constraint_Model
    24         autoload :Assertion, "am/archetype/constraint_model/assertion.rb"
     28        autoload :ARCHETYPE_CONSTRAINT, "am/archetype/constraint_model/archetype_constraint.rb"
    2529        autoload :Primitive, "am/archetype/constraint_model/primitive.rb"
    2630      end #end of ConstraintModel
     31
     32      module Assertion
     33        autoload :ASSERTION, "am/archetype/constraint_model/assertion.rb"
     34      end
     35
    2736    end # of Archetype
     37
     38    module OpenEHR_Profile
     39      module Data_Types
     40        module Basic
     41          autoload :C_DV_STATE, "am/openehr_profile/data_types/basic.rb"
     42        end
     43
     44        module Text
     45          autoload :C_CODE_PHASE, "am/openehr_profile/data_types/text.rb"
     46        end
     47
     48        module Quantity
     49          autoload :C_DV_QUANTITY, "am/openehr_profile/data_types/quantity.rb"
     50          autoload :C_DV_ORDINAL, "am/openehr_profile/data_types/quantity.rb"
     51          autoload :C_QUANTITY_ITEM, "am/openehr_profile/data_types/quantity.rb"
     52        end
     53      end
     54    end
    2855  end # of AM
    2956end # of OpenEHR
  • /ruby/trunk/models/am/archetype/archetype.rb

    r20 r30  
    77#        include OpenEHR::RM::Support::Terminology::OpenEHR_Code_Set_Identifier
    88        include OpenEHR::RM::Support::Terminology
    9         CURRENT_ADL_VERSION = "2.0"
     9        CURRENT_ADL_VERSION = "1.4"
    1010      end
    11       class Archetype < OpenEHR::RM::Common::Resource::Authored_Resource
     11
     12      class ARCHETYPE < OpenEHR::RM::Common::Resource::AUTHORED_RESOURCE
    1213        include ADL_Definition
    1314        attr_accessor :archetype_id, :concept_code, :is_controlled, :original_language, :parent_archtype_id, :uid
    1415
    15         attr_reader :adl_version, :id, :parent_id
    16         attr_reader :concept, :definition, :ontology
    17         attr_accessor :description,:original_language
     16        attr_reader :parent_id,:concept, :definition, :ontology
     17        attr_accessor :adl_version,:description,:original_language
    1818        attr_accessor :revision_history, :translation
    1919
    20         def initialize(parent_id, concept,
    21                        description, revision_history, is_controled,
    22                        definition, ontology, adl_version,
    23                        id = nil , original_language = nil, translation = nil)
    24 #          raise Exception.new("illegal argument error, id == nil") unless id
    25 #          raise Exception.new("illegal argument error, originalLanguage == nil") unless origina_language
     20        def initialize(args = {})
     21          @adl_version = args[:adl_version] if args[:adl_version]
     22          @archetype_id = args[:archetype_id] ? args[:archetype_id] : nil
     23          @parent_id = args[:parent_id] if args[:parent_id]
     24          @concept = args[:concept] if args[:concept]
     25          @is_controled = args[:is_controled] if args[:is_controled]
     26          @definition = args[:definition] if args[:definition]
     27          @ontology = args[:ontology] if args[:ontology]
     28 #         loadMaps(definition)
     29          super
     30        end
    2631
    27 #          raise Exception.new("illegal argument error, translation == nil") unless translation
    28           @adl_version = adl_version
    29           @id = id
    30           @parent_id = parent_id
    31           @concept = concept
    32           @original_language = original_language
    33           @translation = translation
    34           @description = description
    35           @revision_history = revision_history
    36           @is_controled = is_controled
    37           @definition = definition
    38           @ontology = ontology
    39  #         loadMaps(definition)
     32        def self.create(args ={}, &block)
     33          archetype = new(args)
     34          if block_given?
     35            yield archetype
     36          end
     37          return archetype
    4038        end
    4139
     
    7573        def version
    7674        end
    77       end
     75      end # end of ARCHETYPE
    7876      # original file:
    7977      # ref_imple_eiffel/components/adl_parser/src/interface/adl_definition.e
    80     end # end of Archetype
     78
     79      class VALIDITY_KIND
     80      end
     81    end
     82
     83
    8184  end # end of AM
    8285end # end of OpenEHR
  • /ruby/trunk/models/am/archetype/archetype_description/archetype_description.rb

    r20 r30  
    44    module Archetype
    55      module Archetype_Description
    6         class Archetype_Description
    7           attr_accessor :archetype_package_uri, :lifecycle_state, :original_author, :other_contributors, :other_details
     6        class ARCHETYPE_DESCRIPTION
     7          attr_accessor :archetype_package_uri, :lifecycle_state, :original_author, :other_contributors, :other_details, :details
     8          def initialize(args ={ })
     9            @details = args[:details] ? args[:details] : []
     10          end
    811        end
    912
    10         class Archetype_Description_Item
     13        class ARCHETYPE_DESCRIPTION_ITEM
    1114          attr_accessor :archetype_package_uri, :lifecycle_state, :original_author, :other_contributors, :other_details
    1215        end
  • /ruby/trunk/models/am/archetype/constraint_model/archetype_constraint.rb

    r20 r30  
    44    module Archetype
    55      module Constraint_Model
    6         class Archetype_Constraint
     6        class ARCHETYPE_CONSTRAINT
    77         
     8        end
     9
     10        class CARDINALITY
     11         
     12        end
     13
     14        class C_OBJECT < ARCHETYPE_CONSTRAINT
     15          attr_accessor :node_id, :occurrences, :rm_type_name
     16
     17          def initialize(args = { })
     18            @node_id = args[:node_id] if args[:node_id]
     19            @occurrences = args[:occurrences] if args[:occurrences]
     20            @rm_type_name = args[:rm_type_name] if args[:rm_type_name]
     21          end
     22        end
     23
     24        class C_ATTRIBUTE < ARCHETYPE_CONSTRAINT
     25          attr_accessor :rm_attribute_name, :existence, :children
     26
     27          def initialize(args = { })
     28            @rm_attribute_name = args[:rm_attribute_name] if args[:rm_attribute_name]
     29            @existence = args[:existence] if args[:existence]
     30            @children = args[:children] ? args[:children] : []
     31           
     32          end
     33        end
     34
     35        class C_DEFINED_OBJECT < C_OBJECT
     36          attr_accessor :assumed_value
     37         
     38          def initialize(args = { })
     39            @assumed_value = args[:assumed_value] if args[:assumed_value]
     40            super
     41          end
     42        end
     43
     44        class C_PRIMITIVE_OBJECT < C_DEFINED_OBJECT
     45          attr_accessor :item
     46         
     47          def initialize(args = { })
     48            @attributes = args[:item] if args[:item]
     49            super
     50          end
     51        end
     52
     53        class C_COMPLEX_OBJECT < C_DEFINED_OBJECT
     54          attr_accessor :attributes, :attributes_valid
     55         
     56          def initialize(args = { })
     57            @attributes = args[:attributes] ? args[:attributes] : []
     58            super
     59          end
     60
     61          def self.create(args = { }, &block)
     62            c_complex_object = new(args)
     63            if block_given?
     64              yield c_complex_object
     65            end
     66            return c_complex_object
     67          end
     68        end
     69
     70        class C_DOMAIN_TYPE < C_DEFINED_OBJECT
     71         
     72        end
     73
     74        class C_REFERENCE_OBJECT < C_OBJECT
     75         
     76        end
     77
     78        class ARCHETYPE_INTERNAL_REF < C_REFERENCE_OBJECT
     79         
     80        end
     81
     82        class ARCHETYPE_SLOT < C_REFERENCE_OBJECT
     83         
     84        end
     85
     86        class CONSTRAINT_REF < C_REFERENCE_OBJECT
     87         
     88        end
     89
     90        class C_SINGLE_ATTRIBUTE < C_ATTRIBUTE
     91          attr_accessor :alternatives
     92
     93          def initialize(args = { })
     94            @alternatives = args[:alternatives] ? args[:alternatives] : []
     95            super
     96          end
     97        end
     98
     99        class C_MULTIPLE_ATTRIBUTE < C_ATTRIBUTE
     100          attr_accessor :members, :cardinality
     101         
     102          def initialize(args = { })
     103            @members = args[:members] ? args[:members] : []
     104            @cardinality = args[:cardinality] if args[:cardinality]
     105            super
     106          end
    8107        end
    9108      end
  • /ruby/trunk/models/am/archetype/constraint_model/assertion.rb

    r20 r30  
    22  module AM
    33    module Archetype
    4       module Constraint_Model
    5         module Assertion
    6           class Assertion
    7           end
     4      module Assertion
     5        class ASSERTION
     6        end
     7
     8        class ASSERTION_VARIABLE
     9        end
     10
     11        class OPERATOR_KIND
     12        end
     13
     14        class EXPR_ITEM
     15        end
     16
     17        class EXPR_LEAF < EXPR_ITEM
     18        end
     19
     20        class EXPR_OPERATOR < EXPR_ITEM
     21        end
     22
     23        class EXPR_UNARY_OPERATOR < EXPR_OPERATOR
     24        end
     25
     26        class EXPR_BINARY_OPERATOR < EXPR_OPERATOR
    827        end
    928      end
  • /ruby/trunk/models/am/archetype/constraint_model/primitive.rb

    r20 r30  
    33    module Archetype
    44      module Constraint_Model
     5
    56        module Primitive
    6           class C_Primitive
     7
     8          class C_PRIMITIVE
    79            def assumed_value
    810              raise NotImplementedError, "assumed_value should be implemented"
     
    1820            end
    1921          end
    20           class C_Boolean < C_Primitive
    21             attr_accessor :assumed_value
    22             def initialize(true_valid, false_valid, assumed_value)
    23               binary_consistency(true_valid, false_valid)
    24               @true_valid = true_valid
    25               @false_valid = false_valid
    26               @assumed_value = assumed_value
     22
     23          class C_BOOLEAN < C_PRIMITIVE
     24            attr_reader :true_valid, :false_valid, :assumed_value
     25
     26            def initialize(args = { })
     27              @true_valid = args[:true_valid] ? args[:true_valid] : false
     28              @false_valid = args[:false_valid] ? args[:false_valid] : false
     29              @assumed_value = args[:assumed_value] ? args[:assumed_value] : false
     30              binary_consistency(@true_valid, @false_valid)
    2731            end
    28             def set_true_valid(true_valid)
     32
     33            def true_valid=(true_valid)
    2934              binary_consistency(true_valid, @false_valid)
    3035              @true_valid = true_valid
    3136            end
    32             def set_false_valid(false_valid)
     37
     38            def false_valid=(false_valid)
    3339              binary_consistency(@true_valid,false_valid)
    3440              @false_valid = false_valid
    3541            end
    36             def true_valid?
    37               @true_valid
    38             end
    39             def false_valid?
    40               @false_valid
    41             end
     42
    4243            def valid_value?
    4344             
    4445            end
    45             def default_value(a_value=nil)
     46
     47            def default_value(a_value = nil)
    4648              if a_value == nil
    4749                @true_valid
     
    5052              end             
    5153            end
     54
    5255            private
     56
    5357            def binary_consistency(true_valid, false_valid)
    5458              if !true_valid && !false_valid
     
    5761            end
    5862          end # of C_Boolean
    59           class C_Integer < C_Primitive
     63
     64          class C_STRING < C_PRIMITIVE
    6065           
    6166          end
     67
     68          class C_INTEGER < C_PRIMITIVE
     69           
     70          end
     71
     72          class C_REAL < C_PRIMITIVE
     73           
     74          end
     75
     76          class C_TIME < C_PRIMITIVE
     77           
     78          end
     79
     80          class C_DATE < C_PRIMITIVE
     81           
     82          end
     83
     84          class C_DATE_TIME < C_PRIMITIVE
     85           
     86          end
     87
     88          class C_DURATION < C_PRIMITIVE
     89            attr_accessor :years_allowed, :months_allowed, :weeks_allowed, :days_allowed, :hours_allowed, :minutes_allowed, :seconds_allowed, :fractional_seconds_allowed, :range, :assumed_value
     90          end
     91
     92
     93
    6294        end # of Primitive
    6395      end # of Constraint_Model
  • /ruby/trunk/models/am/archetype/ontology.rb

    r20 r30  
    33    module Archetype
    44      module Ontology
    5         class Archetype_Ontology
     5        class ARCHETYPE_ONTOLOGY
    66          attr_accessor :constraint_codes, :specialisation_depth
    77          attr_accessor :term_attribute_names, :term_codes
    88          attr_accessor :terminologies_available
     9
    910          def constraint_binding(a_terminology, a_code)
    1011          end
     12
    1113          def constraint_definition(a_lang, a_code)
    1214          end
     15
    1316          def has_language?(a_lang)
    1417          end
     18
    1519          def has_terminology?(a_terminology)
    1620          end
     21
    1722          def term_binding(a_terminology, a_code)
    1823          end
     24
    1925          def term_definition(a_lang, a_code)
    2026          end
    2127        end
    22         class Archetype_Term
     28
     29        class ARCHETYPE_TERM
    2330          attr_accessor :code, :items
    24           def initialize(code, items)
    25             if code == nil
    26               raise ArgumentError, "Code is empty"
    27             end
    28             if items.keys == nil
    29               raise ArgumentError, "Items is empty"
    30             end
    31             @code = code
    32             @items = items
     31
     32          def initialize(args = { })
     33                         
     34            @code = if args[:code]
     35                      args[:code]
     36                    else
     37                      raise ArgumentError, "Code is empty"
     38                    end
     39            @items = if args[:items]
     40                       args[:items]
     41                     else
     42                       raise ArgumentError, "Items is empty"
     43                     end
    3344          end
     45
    3446          def keys
    35             items.keys
     47            @items.keys
    3648          end
    3749        end
  • /ruby/trunk/models/am/openehr_profile/data_types/basic.rb

    r20 r30  
    11module OpenEHR
    2   module RM
     2  module AM
    33    module OpenEHR_Profile
    44      module Data_Types
     5        module Basic
     6          class C_DV_STATE
     7          end
     8
     9          class STATE_MACHINE
     10          end
     11
     12          class STATE
     13          end
     14
     15          class TERMINAL_STATE < STATE
     16          end
     17
     18          class NON_TERMINAL_STATE < STATE
     19          end
     20
     21          class TRANSITION
     22          end
     23        end
     24
     25       
    526      end # of Data_Types
    627    end # of OpenEHR Profile
  • /ruby/trunk/models/assumed_library_types.rb

    r20 r30  
    1010        set_upper_included(upper_included)
    1111      end
     12
    1213      def set_lower(lower)
    1314        check_lower_upper(lower, @upper)
    1415      end
     16
    1517      def set_upper(upper)
    1618        check_lower_upper(@lower, upper)
    1719      end
     20
    1821      def set_lower_included(lower_included)
    1922        if (lower == nil) && (lower_included != nil)
     
    2225        @lower_included = lower_included
    2326      end
     27
    2428      def set_upper_included(upper_included)
    2529        @upper_included = upper_included
     
    2832        end
    2933      end
     34
    3035      def has?(value)
    3136        if ((@lower < value) && (value < @upper) ||
     
    3742        end
    3843      end
     44
    3945      private
     46
    4047      def check_lower_upper(lower, upper)
    4148        if (lower == nil) && (upper == nil)
  • /ruby/trunk/models/rm.rb

    r20 r30  
    1313  module RM
    1414    autoload :Demographic, "rm/demographic.rb"
     15
    1516    module Common
    1617      autoload :Resource, "rm/common/resource.rb"
    1718    end
     19
    1820    module Support
    1921      autoload :Definition, "rm/support/definition.rb"
     22
     23      module Identification
     24        autoload :OBJECT_ID, "rm/support/identification.rb"
     25      end
     26
    2027      module Terminology
    2128        autoload :Terminology, "rm/support/terminology.rb"
    2229      end
    2330    end
     31
    2432    module Data_Types
    2533      autoload :Basic, "rm/data_types/basic.rb"
  • /ruby/trunk/models/rm/common/resource.rb

    r20 r30  
    44    module Common
    55      module Resource
    6         class Authored_Resource
    7           attr_reader :is_controled
    8           attr_reader :revision_history, :translations
     6        class AUTHORED_RESOURCE
     7          attr_reader :is_controled,:revision_history, :translations
    98          attr_accessor :description, :original_language
    10           def initialize(original_language, translations,
    11                          description, revision_history = nil)
    12             if original_language == nil
    13               raise Exception.new("original language nil")
     9
     10          def initialize(args = { })
     11            @original_language = args[:original_language] if args[:original_language]
     12            @translations = args[:translations] if args[:translations]
     13            @revision_history = args[:revision_history] ? args[:revision_history] : nil
     14
     15            unless @revision_history
     16              @is_controled = false
     17            else
     18              @is_controled = true
    1419            end
    15             if translations == nil
    16               raise Exception.new("translation empty")
    17             end
    18             if revision_history == nil
    19               is_controled = false
    20             else
    21               is_controled = true
    22             end
    23             @original_language = original_language
    24             @translations = translations
    25             @description = description
    26             @revision_history = revision_history
     20
     21            @original_language = args[:original_language] if args[:original_language]
     22            @translations = args[:translations] if args[:translations]
     23            @description = args[:description] if args[:description]
    2724          end
     25
    2826          def current_version
    2927            @revision_history.most_recent_revision
    3028          end
     29
    3130          def language_available
    3231            languages = Set.new
    33             if translations != nil
    34               languages << translations.keys
     32            if @translations != nil
     33              languages << @translations.keys
    3534            end
    36             languages << original_language.code_string
     35            languages << @original_language.code_string
    3736          end
    3837        end
    39         class Translation_Details
     38
     39        class TRANSLATION_DETAILS
    4040          attr_accessor :language, :author, :accreditation
    4141          attr_accessor :other_details, :terminology_service
     42
    4243          def initialize(language, author, accreditation, other_details,
    4344                         terminology_service)
  • /ruby/trunk/models/rm/support/identification.rb

    r20 r30  
    22  module RM
    33    module Support
    4       module Definition
    5         class Object_ID
     4      module Identification
     5
     6        class OBJECT_ID
    67          attr_accessor :value
     8
    79          def initiallize(value)
    8             if value == nil
    9               raise Exception.new("empty value")
    10             end
     10            raise "empty value" unless value
    1111            @value = value
    1212          end
    1313        end # of ObjectID
    14         class Terminology_ID < Object_ID
     14
     15        class ARCHETYPE_ID < OBJECT_ID
     16        end
     17
     18        class TERMINOLOGY_ID < OBJECT_ID
    1519          attr_reader :name
    16           def initialize(arg0, arg1=nil)
    17             if arg1 == nil
    18               super(arg0)
    19             else
    20               super(toValue(arg0, arg1))
    21               @name = arg0
    22               @version = arg1     
    23             end
     20
     21          def initialize(name , version_id)
     22            @name , @version_id = name , version_id
     23#             if arg1 == nil
     24#               super(arg0)
     25#             else
     26#               super(toValue(arg0, arg1))
     27#               @name = arg0
     28#               @version = arg1     
     29#             end
    2430          end
     31
    2532          def setValue(value)
    2633            loadValue(value)
    2734            super.value = value
    2835          end
     36
    2937          def version_id
    3038            @version
    3139          end
     40
    3241          private
     42
    3343          def loadValue(value)
    3444            if /\(.*\)$/ =~ value
    35               @name, @version = value.split(\())
     45#              @name, @version = value.split(\())
    3646              @version.chop!
    3747            else
     
    4050            end
    4151          end
     52
    4253          def toValue(name, version)
    4354            if name == ""
  • /ruby/trunk/models/tests/test_archetype_model.rb

    r20 r30  
    55class ArchetypeModelTest < Test::Unit::TestCase
    66  def setup
    7     @archetype = OpenEHR::AM::Archetype::Archetype.new(nil,nil,nil,nil,nil,nil,nil,nil)
    8     @archetype_description = OpenEHR::AM::Archetype::Archetype_Description::Archetype_Description.new
    9     @archetype_constraint = OpenEHR::AM::Archetype::Constraint_Model::Archetype_Constraint.new
    10     @assertion = OpenEHR::AM::Archetype::Constraint_Model::Assertion::Assertion.new
    11     @c_primitive = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_Primitive.new
    12     @c_boolean = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_Boolean.new(true, true, true)
    13     @c_integer = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_Integer.new
    14     @archetype_ontology = OpenEHR::AM::Archetype::Ontology::Archetype_Ontology.new
     7    @archetype = OpenEHR::AM::Archetype::ARCHETYPE.new
     8    @validity_kind = OpenEHR::AM::Archetype::VALIDITY_KIND.new
     9
     10    @archetype_description = OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION.new
     11    @archetype_description_item = OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION_ITEM.new
    1512  end
    1613 
    1714  def test_init
    18     assert_instance_of OpenEHR::AM::Archetype::Ontology::Archetype_Ontology, @archetype_ontology
    19     assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::Archetype_Constraint, @archetype_constraint
    20     assert_instance_of OpenEHR::AM::Archetype::Archetype_Description::Archetype_Description, @archetype_description
    21     assert_instance_of OpenEHR::AM::Archetype::Archetype, @archetype
    22     assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::Assertion::Assertion, @assertion
    23     assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_Primitive, @c_primitive
    24     assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_Boolean, @c_boolean
     15    assert_instance_of OpenEHR::AM::Archetype::ARCHETYPE, @archetype
     16    assert_instance_of OpenEHR::AM::Archetype::VALIDITY_KIND, @validity_kind
     17    assert_instance_of OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION, @archetype_description
     18    assert_instance_of OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION_ITEM, @archetype_description_item
     19    assert_instance_of OpenEHR::AM::Archetype::ARCHETYPE, @archetype
    2520  end
     21
     22  def test_create
     23    archetype_instance = OpenEHR::AM::Archetype::ARCHETYPE.create() do |archetype|
     24      archetype.adl_version = '1.4'
     25    end
     26
     27    assert_instance_of OpenEHR::AM::Archetype::ARCHETYPE, archetype_instance
     28  end
     29end
     30
     31class ArchetypeModelConstraintTest < Test::Unit::TestCase
     32  def setup
     33    @archetype_constraint = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_CONSTRAINT.new
     34    @cardinality = OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY.new   
     35   
     36    @archetype_constraint = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_CONSTRAINT.new
     37    @c_object = OpenEHR::AM::Archetype::Constraint_Model::C_OBJECT.new
     38    @c_defined_object = OpenEHR::AM::Archetype::Constraint_Model::C_DEFINED_OBJECT.new
     39    @c_attribute = OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE.new
     40    @c_single_attribute = OpenEHR::AM::Archetype::Constraint_Model::C_SINGLE_ATTRIBUTE.new
     41    @c_multiple_attribute = OpenEHR::AM::Archetype::Constraint_Model::C_MULTIPLE_ATTRIBUTE.new(:rm_attribute_name => 'attribute_name', :cardinality => @cardinality)
     42    @c_primitive_object = OpenEHR::AM::Archetype::Constraint_Model::C_PRIMITIVE_OBJECT.new
     43    @c_reference_object =  OpenEHR::AM::Archetype::Constraint_Model::C_REFERENCE_OBJECT.new
     44    @archetype_internal_ref =  OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_INTERNAL_REF.new
     45    @archetype_slot = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_SLOT.new
     46    @constraint_ref = OpenEHR::AM::Archetype::Constraint_Model::CONSTRAINT_REF.new
     47    @c_domain_type = OpenEHR::AM::Archetype::Constraint_Model::C_DOMAIN_TYPE.new
     48    @c_complex_object = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new(:attributes => [@c_single_attribute])
     49  end
     50
     51  def test_init
     52    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_CONSTRAINT, @archetype_constraint
     53    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::C_OBJECT, @c_object
     54    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::C_DEFINED_OBJECT, @c_defined_object
     55    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::C_ATTRIBUTE, @c_attribute
     56    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::C_SINGLE_ATTRIBUTE, @c_single_attribute
     57    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::C_MULTIPLE_ATTRIBUTE, @c_multiple_attribute
     58    assert_equal 'attribute_name', @c_multiple_attribute.rm_attribute_name
     59    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY, @c_multiple_attribute.cardinality
     60    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::C_PRIMITIVE_OBJECT, @c_primitive_object
     61    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::C_REFERENCE_OBJECT, @c_reference_object
     62    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_INTERNAL_REF, @archetype_internal_ref
     63    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_SLOT, @archetype_slot
     64    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::CONSTRAINT_REF, @constraint_ref
     65    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::C_DOMAIN_TYPE, @c_domain_type
     66    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT, @c_complex_object
     67    assert_instance_of Array, @c_complex_object.attributes
     68    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_CONSTRAINT, @archetype_constraint
     69    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY, @cardinality
     70  end
     71
     72  def test_create
     73    c_complex_object = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.create(:node_id => 'test_node',
     74                                                                                         :attributes => [1,2],
     75                                                                                         :assumed_value => Array
     76                                                                                         )
     77    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT, c_complex_object
     78    assert_equal 'test_node', c_complex_object.node_id
     79  end
     80end
     81
     82class ArchetypeModelPrimitiveTest < Test::Unit::TestCase
     83  def setup
     84    @c_primitive = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_PRIMITIVE.new
     85    @c_boolean = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true,
     86                                                                                    :false_valid => true,
     87                                                                                    :assumed_value => true)
     88    @c_string = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_STRING.new
     89    @c_integer = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_INTEGER.new
     90    @c_real = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_REAL.new
     91    @c_time = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_TIME.new
     92    @c_date = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE.new
     93    @c_date_time = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE_TIME.new
     94    @c_duration = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DURATION.new
     95  end
     96
     97  def test_init
     98    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_PRIMITIVE, @c_primitive
     99    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN, @c_boolean
     100    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_STRING, @c_string
     101    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_INTEGER, @c_integer
     102    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_REAL, @c_real
     103    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_TIME, @c_time
     104    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE, @c_date
     105    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DATE_TIME, @c_date_time
     106    assert_instance_of OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_DURATION, @c_duration
     107  end
     108
    26109  def test_primitive
    27     assert @c_boolean.true_valid?
    28     assert @c_boolean.false_valid?
     110    assert @c_boolean.true_valid
     111    assert @c_boolean.false_valid
    29112    assert @c_boolean.assumed_value
    30113    assert @c_boolean.has_assumed_value?
    31114    assert @c_boolean.default_value
    32115    assert @c_boolean.default_value(true)
    33     assert_raise(ArgumentError) {@c_boolean.set_true_valid(false); @c_boolean.set_false_valid(false)}
    34     assert_raise(ArgumentError) {OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_Boolean.new(false,false,false)}
     116    assert_raise(ArgumentError) do
     117      @c_boolean.true_valid = false
     118      @c_boolean.false_valid = false
     119    end
     120    assert_raise(ArgumentError) do
     121      OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid =>false,
     122                                                                         :false_valid => false,
     123                                                                         :assumed_value => false)
     124    end
     125  end
     126 
     127end
     128
     129class ArchetypeModelOntologyTest < Test::Unit::TestCase
     130  def setup
     131    @archetype_ontology = OpenEHR::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new
     132    @archetype_term = OpenEHR::AM::Archetype::Ontology::ARCHETYPE_TERM.new(:code => '', :items => '')
     133  end
     134
     135  def test_init
     136    assert_instance_of OpenEHR::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY, @archetype_ontology
     137    assert_instance_of OpenEHR::AM::Archetype::Ontology::ARCHETYPE_TERM, @archetype_term
     138  end
     139end
     140   
     141class ArchetypeModelAssertionTest < Test::Unit::TestCase
     142  def setup
     143    @assertion = OpenEHR::AM::Archetype::Assertion::ASSERTION.new
     144    @assertion_variable = OpenEHR::AM::Archetype::Assertion::ASSERTION_VARIABLE.new
     145    @operator_kind = OpenEHR::AM::Archetype::Assertion::OPERATOR_KIND.new
     146    @expr_item = OpenEHR::AM::Archetype::Assertion::EXPR_ITEM.new
     147    @expr_leaf = OpenEHR::AM::Archetype::Assertion::EXPR_LEAF.new
     148    @expr_operator = OpenEHR::AM::Archetype::Assertion::EXPR_OPERATOR.new
     149    @expr_unary_operator = OpenEHR::AM::Archetype::Assertion::EXPR_UNARY_OPERATOR.new
     150    @expr_binary_operator = OpenEHR::AM::Archetype::Assertion::EXPR_BINARY_OPERATOR.new
     151  end
     152
     153  def test_init
     154    assert_instance_of OpenEHR::AM::Archetype::Assertion::ASSERTION, @assertion
     155    assert_instance_of OpenEHR::AM::Archetype::Assertion::ASSERTION_VARIABLE, @assertion_variable
     156    assert_instance_of OpenEHR::AM::Archetype::Assertion::OPERATOR_KIND, @operator_kind
     157    assert_instance_of OpenEHR::AM::Archetype::Assertion::EXPR_ITEM, @expr_item
     158    assert_instance_of OpenEHR::AM::Archetype::Assertion::EXPR_LEAF, @expr_leaf
     159    assert_instance_of OpenEHR::AM::Archetype::Assertion::EXPR_OPERATOR, @expr_operator
     160    assert_instance_of OpenEHR::AM::Archetype::Assertion::EXPR_UNARY_OPERATOR, @expr_unary_operator
     161    assert_instance_of OpenEHR::AM::Archetype::Assertion::EXPR_BINARY_OPERATOR, @expr_binary_operator
    35162  end
    36163end
    37164
     165class ArchetypeModelProfileTest < Test::Unit::TestCase
     166  def setup
     167    @c_dv_state = OpenEHR::AM::OpenEHR_Profile::Data_Types::Basic::C_DV_STATE.new
     168    @state_machine = OpenEHR::AM::OpenEHR_Profile::Data_Types::Basic::STATE_MACHINE.new
     169    @state = OpenEHR::AM::OpenEHR_Profile::Data_Types::Basic::STATE.new
     170    @terminal_state = OpenEHR::AM::OpenEHR_Profile::Data_Types::Basic::TERMINAL_STATE.new
     171    @non_terminal_state = OpenEHR::AM::OpenEHR_Profile::Data_Types::Basic::NON_TERMINAL_STATE.new
     172    @transition = OpenEHR::AM::OpenEHR_Profile::Data_Types::Basic::TRANSITION.new
     173
     174    @c_code_phase = OpenEHR::AM::OpenEHR_Profile::Data_Types::Text::C_CODE_PHASE.new
     175
     176    @c_dv_quantity = OpenEHR::AM::OpenEHR_Profile::Data_Types::Quantity::C_DV_QUANTITY.new
     177    @c_dv_ordinal = OpenEHR::AM::OpenEHR_Profile::Data_Types::Quantity::C_DV_ORDINAL.new
     178    @c_quantity_item = OpenEHR::AM::OpenEHR_Profile::Data_Types::Quantity::C_QUANTITY_ITEM.new
     179  end
     180
     181  def test_init
     182    assert_instance_of OpenEHR::AM::OpenEHR_Profile::Data_Types::Basic::C_DV_STATE, @c_dv_state
     183    assert_instance_of OpenEHR::AM::OpenEHR_Profile::Data_Types::Basic::STATE_MACHINE, @state_machine
     184    assert_instance_of OpenEHR::AM::OpenEHR_Profile::Data_Types::Basic::STATE, @state
     185    assert_instance_of OpenEHR::AM::OpenEHR_Profile::Data_Types::Basic::TERMINAL_STATE, @terminal_state
     186    assert_instance_of OpenEHR::AM::OpenEHR_Profile::Data_Types::Basic::NON_TERMINAL_STATE, @non_terminal_state
     187    assert_instance_of OpenEHR::AM::OpenEHR_Profile::Data_Types::Basic::TRANSITION, @transition
     188    assert_instance_of OpenEHR::AM::OpenEHR_Profile::Data_Types::Text::C_CODE_PHASE, @c_code_phase
     189    assert_instance_of OpenEHR::AM::OpenEHR_Profile::Data_Types::Quantity::C_DV_QUANTITY, @c_dv_quantity
     190    assert_instance_of OpenEHR::AM::OpenEHR_Profile::Data_Types::Quantity::C_DV_ORDINAL, @c_dv_ordinal
     191    assert_instance_of OpenEHR::AM::OpenEHR_Profile::Data_Types::Quantity::C_QUANTITY_ITEM, @c_quantity_item
     192  end
     193end
  • /ruby/trunk/models/tests/test_reference_model.rb

    r20 r30  
    55class ReferenceModelTest < Test::Unit::TestCase
    66  def setup
    7     @authored_resource = OpenEHR::RM::Common::Resource::Authored_Resource.new("ja","en","test")
    8     @translation_details = OpenEHR::RM::Common::Resource::Translation_Details.new(nil,nil,nil,nil,nil)
     7    @authored_resource = OpenEHR::RM::Common::Resource::AUTHORED_RESOURCE.new(:original_language => "ja",
     8                                                                              :translations => "en",
     9                                                                              :description => "test")
     10    @translation_details = OpenEHR::RM::Common::Resource::TRANSLATION_DETAILS.new(nil,nil,nil,nil,nil)
    911#    @openehr_definitions = OpenEHR::RM::Support::Definition::OpenEHR_Definitions.new
    1012    @dv_boolean = OpenEHR::RM::Data_Types::Basic::DV_Boolean.new("TRUE")
     
    1921 
    2022  def test_init
    21     assert_instance_of OpenEHR::RM::Common::Resource::Authored_Resource, @authored_resource
    22     assert_instance_of OpenEHR::RM::Common::Resource::Translation_Details, @translation_details
     23    assert_instance_of OpenEHR::RM::Common::Resource::AUTHORED_RESOURCE, @authored_resource
     24    assert_instance_of OpenEHR::RM::Common::Resource::TRANSLATION_DETAILS, @translation_details
    2325    assert_instance_of OpenEHR::RM::Data_Types::Basic::DV_Boolean, @dv_boolean
    2426    assert_instance_of OpenEHR::RM::Data_Types::Basic::DV_State, @dv_state
     
    2931    assert_instance_of OpenEHR::RM::Data_Types::Text::DV_Coded_Text, @dv_coded_text
    3032  end
     33
    3134  def test_constant
    3235    assert_equal("\r", OpenEHR::RM::Support::Definition::OpenEHR_Definitions::CR)
     
    3538    assert_equal("\n", OpenEHR::RM::Data_Types::Basic::Data_Value::LF)
    3639  end
     40
    3741  def test_dv_boolean
    3842    assert @dv_boolean.value?
     
    4347    assert_raise(ArgumentError){OpenEHR::RM::Data_Types::Basic::DV_Boolean.new(nil)}
    4448  end
     49
    4550  def test_dv_state
    4651    assert_equal("code1", @dv_state.value)
     
    5257    assert_raise(ArgumentError) {OpenEHR::RM::Data_Types::Basic::DV_State.new(nil,nil)}
    5358  end
     59
    5460  def test_dv_identifier
    5561    assert_equal("Ruby Hospital", @dv_identifier.assigner)
     
    6773    assert_raise(ArgumentError) {OpenEHR::RM::Data_Types::Basic::DV_Identifier.new(nil, nil, nil, nil)}
    6874  end
     75
    6976  def test_dv_uri
    7077    assert_equal("file0", @dv_uri.fragment_id)
     
    7784    assert_equal("/openehr-jp/", @dv_uri.path)
    7885  end
     86
    7987  def test_dv_ehr_uri
    8088    assert_equal("ehr", @dv_ehr_uri.scheme)
     
    8290      @dv_ehr_uri.value="svn://www.openehr.jp/openehr-jp/" }
    8391  end
     92
    8493  def test_dv_text
    8594    assert_equal("valid value", @dv_text.value)
    86     assert_raise(ArgumentError){
    87       @dv_text.value = "not valid value\n"}
    88     assert_raise(ArgumentError){
    89       @dv_text.value = nil }
    90     assert_raise(ArgumentError){
    91       @dv_text.value = "" }
    92     assert_raise(ArgumentError){
    93       @dv_text.formatting = "" }
    94     assert_raise(ArgumentError){
    95       @dv_text.encoding = ""}
    96     assert_raise(ArgumentError){
    97       @dv_text.language = ""}
    98     assert_raise(ArgumentError){
    99       @dv_text.mappings = Set.new}
    100     assert_raise(ArgumentError){
    101       @dv_text.mappings = ""}
    102     assert_raise(ArgumentError){
    103       @dv_text.language = ""}
     95    assert_raise(ArgumentError){@dv_text.value = "not valid value\n"}
     96    assert_raise(ArgumentError){@dv_text.value = nil }
     97    assert_raise(ArgumentError){@dv_text.value = "" }
     98    assert_raise(ArgumentError){@dv_text.formatting = "" }
     99    assert_raise(ArgumentError){@dv_text.encoding = ""}
     100    assert_raise(ArgumentError){@dv_text.language = ""}
     101    assert_raise(ArgumentError){@dv_text.mappings = Set.new}
     102    assert_raise(ArgumentError){@dv_text.mappings = ""}
     103    assert_raise(ArgumentError){@dv_text.language = ""}
    104104  end
     105
    105106  def test_dv_coded_text
    106107    assert_equal("valid value", @dv_coded_text.value)
    107108    assert_equal("AT1000", @dv_coded_text.defining_code)
    108     assert_raise(ArgumentError){
    109       @dv_coded_text.defining_code=nil}
     109    assert_raise(ArgumentError){@dv_coded_text.defining_code=nil}
    110110  end
     111
    111112  def test_dv_paragraph
    112113    assert_equal((Set.new ["test1", "test2"]), @dv_paragraph.items)
    113     assert_raise(ArgumentError){
    114       @dv_paragraph.items=Set.new}
     114    assert_raise(ArgumentError){@dv_paragraph.items=Set.new}
    115115  end
     116
    116117  def test_terminology_mapping
    117118   
     
    119120end
    120121
     122
     123class ReferenceModelSupportIdentificationTest < Test::Unit::TestCase
     124  def setup
     125    @object_id = OpenEHR::RM::Support::Identification::OBJECT_ID.new
     126    @terminology_id = OpenEHR::RM::Support::Identification::TERMINOLOGY_ID.new('terminology','version')
     127    @archetype_id = OpenEHR::RM::Support::Identification::ARCHETYPE_ID.new
     128  end
     129 
     130  def test_init
     131    assert_instance_of OpenEHR::RM::Support::Identification::OBJECT_ID, @object_id
     132    assert_instance_of OpenEHR::RM::Support::Identification::TERMINOLOGY_ID, @terminology_id
     133    assert_instance_of OpenEHR::RM::Support::Identification::ARCHETYPE_ID, @archetype_id
     134
     135  end
     136end
Note: See TracChangeset for help on using the changeset viewer.