Changes in / [30:20]


Ignore:
Files:
2 added
8 deleted
21 edited

Legend:

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

    r30 r20  
    2424                 return ontology
    2525
    26 adlVersion :: Parser Version
     26
     27adlVersion :: Parser String
    2728adlVersion = do dec1 <- string "archetype (adl_version="
    2829                ver <- many anyChar
     
    5152
    5253adlLanguage :: Parser Language
    53 adlLanguage = do spaces
    54                  head <- string "language"
    55                  
    5654
    57 
    58 parseAtoms :: Parser [Atom]
    59 parseAtoms = 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 
    70 data Language = Original_Laguage String
    71               | Translaions [Transpation]
    72                 deriving Show
    73 
    74 data Translation = Symbol String
    75                  | Language String
    76                  | Author Author
    77 
    78 data Author = Name String
    79             | Organisation String
    80 
    81 data Atom = Name String
    82           | Description String
    83 
    84 type Version :: String
  • /ruby/trunk/adl_parser/Rakefile

    r30 r20  
    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   s.files = FileList['README', 'COPYING', 'Rakefile']
     89  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")
    9594end
    9695
  • /ruby/trunk/adl_parser/lib/parser.rb

    r30 r20  
    1313require 'lib/util.rb'
    1414require 'lib/scanner.rb'
    15 require 'rubygems'
    16 require 'am.rb'
     15require 'lib/model.rb'
    1716$DEBUG = true
    1817
     
    2625    class Parser < Racc::Parser
    2726
    28 module_eval <<'..end lib/parser.y modeval..id3b9eed63e6', 'lib/parser.y', 1127
    29 
    30 def assert_at(file,line, message = "")
    31   unless yield
    32     raise "Assertion failed !: #{file}, #{line}: #{message}"
    33   end
    34 end
     27module_eval <<'..end lib/parser.y modeval..id134a7f5a66', 'lib/parser.y', 739
    3528
    3629@@log = Logger.new('log/parser.log','daily')
     
    819812
    820813
    821 ..end lib/parser.y modeval..id3b9eed63e6
     814..end lib/parser.y modeval..id134a7f5a66
    822815
    823816##### racc 1.4.5 generates ###
     
    825818racc_reduce_table = [
    826819 0, 0, :racc_error,
    827  2, 95, :_reduce_1,
     820 2, 95, :_reduce_none,
    828821 1, 95, :_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,
     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,
    839832 0, 98, :_reduce_none,
    840833 2, 98, :_reduce_none,
    841834 2, 98, :_reduce_none,
    842  2, 99, :_reduce_16,
    843835 2, 99, :_reduce_none,
    844  0, 100, :_reduce_18,
     836 2, 99, :_reduce_none,
     837 0, 100, :_reduce_none,
    845838 2, 100, :_reduce_19,
    846839 2, 100, :_reduce_none,
    847840 0, 101, :_reduce_none,
    848  2, 101, :_reduce_22,
    849841 2, 101, :_reduce_none,
    850  2, 102, :_reduce_24,
     842 2, 101, :_reduce_none,
    851843 2, 102, :_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,
     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,
    857850 1, 115, :_reduce_31,
    858851 2, 115, :_reduce_32,
    859852 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,
     853 1, 114, :_reduce_none,
    869854 1, 120, :_reduce_none,
    870855 1, 120, :_reduce_none,
    871  3, 121, :_reduce_45,
     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,
    872865 4, 122, :_reduce_none,
    873866 3, 122, :_reduce_none,
     
    877870 3, 132, :_reduce_none,
    878871 2, 132, :_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,
     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,
    888881 1, 118, :_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,
     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,
    894887 2, 143, :_reduce_68,
    895888 3, 143, :_reduce_69,
    896  1, 144, :_reduce_70,
    897  2, 144, :_reduce_71,
    898  1, 144, :_reduce_72,
     889 1, 144, :_reduce_none,
     890 2, 144, :_reduce_none,
     891 1, 144, :_reduce_none,
    899892 0, 130, :_reduce_none,
    900893 2, 130, :_reduce_none,
     
    909902 2, 103, :_reduce_none,
    910903 2, 103, :_reduce_none,
    911  2, 104, :_reduce_85,
     904 2, 104, :_reduce_none,
    912905 2, 104, :_reduce_none,
    913906 1, 109, :_reduce_none,
    914907 1, 151, :_reduce_none,
    915908 1, 151, :_reduce_none,
    916  1, 152, :_reduce_90,
    917  2, 152, :_reduce_91,
    918  3, 152, :_reduce_92,
     909 1, 152, :_reduce_none,
     910 2, 152, :_reduce_none,
     911 3, 152, :_reduce_none,
    919912 3, 154, :_reduce_93,
    920913 1, 155, :_reduce_94,
    921914 2, 155, :_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,
     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,
    929922 1, 161, :_reduce_103,
    930  1, 162, :_reduce_104,
    931  2, 162, :_reduce_105,
     923 1, 162, :_reduce_none,
     924 2, 162, :_reduce_none,
    932925 3, 163, :_reduce_106,
    933926 3, 164, :_reduce_107,
    934  1, 158, :_reduce_108,
    935  2, 158, :_reduce_109,
    936  2, 166, :_reduce_110,
    937  3, 166, :_reduce_111,
     927 1, 158, :_reduce_none,
     928 2, 158, :_reduce_none,
     929 2, 166, :_reduce_none,
     930 3, 166, :_reduce_none,
    938931 1, 167, :_reduce_none,
    939  1, 157, :_reduce_113,
    940  2, 157, :_reduce_114,
     932 1, 157, :_reduce_none,
     933 2, 157, :_reduce_none,
    941934 3, 168, :_reduce_115,
    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,
     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,
    947940 1, 165, :_reduce_121,
    948941 1, 165, :_reduce_122,
     
    976969 3, 184, :_reduce_none,
    977970 3, 184, :_reduce_none,
    978  1, 175, :_reduce_152,
    979  2, 175, :_reduce_153,
    980  2, 175, :_reduce_154,
     971 1, 175, :_reduce_none,
     972 2, 175, :_reduce_none,
     973 2, 175, :_reduce_none,
    981974 3, 185, :_reduce_none,
    982975 3, 185, :_reduce_none,
     
    991984 4, 193, :_reduce_none,
    992985 3, 193, :_reduce_none,
    993  1, 176, :_reduce_167,
    994  2, 176, :_reduce_168,
    995  2, 176, :_reduce_169,
     986 1, 176, :_reduce_none,
     987 2, 176, :_reduce_none,
     988 2, 176, :_reduce_none,
    996989 3, 186, :_reduce_none,
    997990 3, 186, :_reduce_none,
     
    1006999 4, 194, :_reduce_none,
    10071000 3, 194, :_reduce_none,
    1008  1, 177, :_reduce_182,
    1009  1, 177, :_reduce_183,
     1001 1, 177, :_reduce_none,
     1002 1, 177, :_reduce_none,
    10101003 3, 187, :_reduce_none,
    10111004 3, 187, :_reduce_none,
     
    11141107 2, 206, :_reduce_288,
    11151108 1, 206, :_reduce_289,
    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,
     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,
    11211114 1, 208, :_reduce_none,
    11221115 3, 208, :_reduce_none,
     
    11301123 1, 210, :_reduce_none,
    11311124 0, 116, :_reduce_none,
    1132  5, 116, :_reduce_306,
     1125 5, 116, :_reduce_none,
    11331126 2, 116, :_reduce_none,
    11341127 1, 209, :_reduce_none,
     
    11771170 3, 140, :_reduce_none,
    11781171 3, 140, :_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,
     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,
    11861179 1, 126, :_reduce_none,
    11871180 3, 126, :_reduce_none,
     
    11991192 1, 149, :_reduce_none,
    12001193 1, 149, :_reduce_374,
    1201  1, 217, :_reduce_375 ]
     1194 1, 217, :_reduce_none ]
    12021195
    12031196racc_reduce_n = 376
     
    20192012 # reduce 0 omitted
    20202013
    2021 module_eval <<'.,.,', 'lib/parser.y', 32
    2022   def _reduce_1( val, _values, result )
    2023     result = val[0]
    2024    result
    2025   end
    2026 .,.,
     2014 # reduce 1 omitted
    20272015
    20282016 # reduce 2 omitted
    20292017
    2030 module_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 
    2056 module_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 
    2063 module_eval <<'.,.,', 'lib/parser.y', 67
    2064   def _reduce_5( val, _values, result )
    2065     raise
    2066    result
    2067   end
    2068 .,.,
    2069 
    2070 module_eval <<'.,.,', 'lib/parser.y', 72
    2071   def _reduce_6( val, _values, result )
    2072     result = {:arch_meta_data => nil }
    2073    result
    2074   end
    2075 .,.,
    2076 
    2077 module_eval <<'.,.,', 'lib/parser.y', 76
    2078   def _reduce_7( val, _values, result )
    2079     result = val[1]
    2080    result
    2081   end
    2082 .,.,
    2083 
    2084 module_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 
    2091 module_eval <<'.,.,', 'lib/parser.y', 86
    2092   def _reduce_9( val, _values, result )
    2093     result = val[0]
    2094    result
    2095   end
    2096 .,.,
    2097 
    2098 module_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 
    2105 module_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 
    2112 module_eval <<'.,.,', 'lib/parser.y', 100
    2113   def _reduce_12( val, _values, result )
    2114     result = {:is_controlled => true }
    2115    result
    2116   end
    2117 .,.,
     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
    21182037
    21192038 # reduce 13 omitted
     
    21232042 # reduce 15 omitted
    21242043
     2044 # reduce 16 omitted
     2045
     2046 # reduce 17 omitted
     2047
     2048 # reduce 18 omitted
     2049
     2050module_eval <<'.,.,', 'lib/parser.y', 74
     2051  def _reduce_19( val, _values, result )
     2052    result = {:language => val[1]}
     2053   result
     2054  end
     2055.,.,
     2056
     2057 # reduce 20 omitted
     2058
     2059 # reduce 21 omitted
     2060
     2061 # reduce 22 omitted
     2062
     2063 # reduce 23 omitted
     2064
     2065 # reduce 24 omitted
     2066
     2067 # reduce 25 omitted
     2068
     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
    21252079module_eval <<'.,.,', 'lib/parser.y', 111
    2126   def _reduce_16( val, _values, result )
    2127     result = {:arch_concept => val[1] }
    2128    result
    2129   end
    2130 .,.,
    2131 
    2132  # reduce 17 omitted
    2133 
    2134 module_eval <<'.,.,', 'lib/parser.y', 121
    2135   def _reduce_18( val, _values, result )
    2136     result = {:arch_language => nil}
    2137    result
    2138   end
    2139 .,.,
    2140 
    2141 module_eval <<'.,.,', 'lib/parser.y', 125
    2142   def _reduce_19( val, _values, result )
    2143     result = {:arch_language => val[1]}
    2144    result
    2145   end
    2146 .,.,
    2147 
    2148  # reduce 20 omitted
    2149 
    2150  # reduce 21 omitted
    2151 
    2152 module_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 .,.,
    2158 
    2159  # reduce 23 omitted
    2160 
    2161 module_eval <<'.,.,', 'lib/parser.y', 144
    2162   def _reduce_24( val, _values, result )
    2163     result = val[1]
    2164    result
    2165   end
    2166 .,.,
    2167 
    2168  # reduce 25 omitted
    2169 
    2170 module_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 
    2179 module_eval <<'.,.,', 'lib/parser.y', 158
    2180   def _reduce_27( val, _values, result )
    2181     result = val[0]
    2182    result
    2183   end
    2184 .,.,
    2185 
    2186 module_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 
    2197 module_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 
    2208 module_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 
    2215 module_eval <<'.,.,', 'lib/parser.y', 189
    22162080  def _reduce_31( val, _values, result )
    2217     result = {:type_identifier => val[0]}
    2218    result
    2219   end
    2220 .,.,
    2221 
    2222 module_eval <<'.,.,', 'lib/parser.y', 193
     2081    result = {:c_complex_object_id => {:type_identifier => val[0]}}
     2082   result
     2083  end
     2084.,.,
     2085
     2086module_eval <<'.,.,', 'lib/parser.y', 115
    22232087  def _reduce_32( val, _values, result )
    2224     result = {:type_identifier => val[0], :local_term_code_ref => val[1]}
     2088    result = {:c_complex_object_id => {:type_identifier => val[0], :V_LOCAL_TERM_CODE_REF => val[1]}}
    22252089   result
    22262090  end
     
    22292093 # reduce 33 omitted
    22302094
    2231 module_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 
    2238 module_eval <<'.,.,', 'lib/parser.y', 207
    2239   def _reduce_35( val, _values, result )
    2240     result = val[0]
    2241    result
    2242   end
    2243 .,.,
    2244 
    2245 module_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 
    2252 module_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 
    2259 module_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 
    2266 module_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 
    2273 module_eval <<'.,.,', 'lib/parser.y', 227
    2274   def _reduce_40( val, _values, result )
    2275     result = val[0]
    2276    result
    2277   end
    2278 .,.,
    2279 
    2280 module_eval <<'.,.,', 'lib/parser.y', 231
    2281   def _reduce_41( val, _values, result )
    2282     result = val[0]
    2283    result
    2284   end
    2285 .,.,
    2286 
    2287 module_eval <<'.,.,', 'lib/parser.y', 235
    2288   def _reduce_42( val, _values, result )
    2289     result = val[0]
    2290    result
    2291   end
    2292 .,.,
     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
    22932112
    22942113 # reduce 43 omitted
     
    22962115 # reduce 44 omitted
    22972116
    2298 module_eval <<'.,.,', 'lib/parser.y', 250
    2299   def _reduce_45( val, _values, result )
    2300     result = val[1]
    2301    result
    2302   end
    2303 .,.,
     2117 # reduce 45 omitted
    23042118
    23052119 # reduce 46 omitted
     
    23172131 # reduce 52 omitted
    23182132
    2319 module_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 
    2327 module_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 
    2335 module_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 
    2343 module_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 
    2351 module_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 
    2359 module_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 
    2367 module_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 
    2375 module_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 
    2383 module_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 .,.,
     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
    23912150
    23922151 # reduce 62 omitted
    23932152
    2394 module_eval <<'.,.,', 'lib/parser.y', 322
    2395   def _reduce_63( val, _values, result )
    2396     result = [val[0]]
    2397    result
    2398   end
    2399 .,.,
    2400 
    2401 module_eval <<'.,.,', 'lib/parser.y', 326
    2402   def _reduce_64( val, _values, result )
    2403     result = (val[0] << val[1])
    2404    result
    2405   end
    2406 .,.,
    2407 
    2408 module_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 
    2418 module_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 
    2426 module_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 
    2434 module_eval <<'.,.,', 'lib/parser.y', 356
     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
     2163module_eval <<'.,.,', 'lib/parser.y', 186
    24352164  def _reduce_68( val, _values, result )
    24362165    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]}, c_existence = #{val[1]} at #{@filename}")
    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 
    2445 module_eval <<'.,.,', 'lib/parser.y', 366
     2166   result
     2167  end
     2168.,.,
     2169
     2170module_eval <<'.,.,', 'lib/parser.y', 190
    24462171  def _reduce_69( val, _values, result )
    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 
    2458 module_eval <<'.,.,', 'lib/parser.y', 371
    2459   def _reduce_70( val, _values, result )
    2460     result = Array[val[0]]
    2461    result
    2462   end
    2463 .,.,
    2464 
    2465 module_eval <<'.,.,', 'lib/parser.y', 375
    2466   def _reduce_71( val, _values, result )
    2467     result = (val[0] << val[1])
    2468    result
    2469   end
    2470 .,.,
    2471 
    2472 module_eval <<'.,.,', 'lib/parser.y', 379
    2473   def _reduce_72( val, _values, result )
    2474     result = Array[val[0]]
    2475    result
    2476   end
    2477 .,.,
     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
    24782182
    24792183 # reduce 73 omitted
     
    25012205 # reduce 84 omitted
    25022206
    2503 module_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 .,.,
     2207 # reduce 85 omitted
    25102208
    25112209 # reduce 86 omitted
     
    25172215 # reduce 89 omitted
    25182216
    2519 module_eval <<'.,.,', 'lib/parser.y', 424
    2520   def _reduce_90( val, _values, result )
    2521     result = Array[val[0]]
    2522    result
    2523   end
    2524 .,.,
    2525 
    2526 module_eval <<'.,.,', 'lib/parser.y', 428
    2527   def _reduce_91( val, _values, result )
    2528     result = (val[0] << val[1])
    2529    result
    2530   end
    2531 .,.,
    2532 
    2533 module_eval <<'.,.,', 'lib/parser.y', 432
    2534   def _reduce_92( val, _values, result )
    2535     result = (val[0] << val[2])
    2536    result
    2537   end
    2538 .,.,
    2539 
    2540 module_eval <<'.,.,', 'lib/parser.y', 438
     2217 # reduce 90 omitted
     2218
     2219 # reduce 91 omitted
     2220
     2221 # reduce 92 omitted
     2222
     2223module_eval <<'.,.,', 'lib/parser.y', 240
    25412224  def _reduce_93( val, _values, result )
    25422225    @@log.info("#{__FILE__}:#{__LINE__}: attr_id = #{val[0]}, object_block = #{val[2]} at #{@filename}:#{@lineno}")
    2543     result = {:attr_id => val[0], :object_block => val[2]}
    2544    result
    2545   end
    2546 .,.,
    2547 
    2548 module_eval <<'.,.,', 'lib/parser.y', 444
     2226   result
     2227  end
     2228.,.,
     2229
     2230module_eval <<'.,.,', 'lib/parser.y', 245
    25492231  def _reduce_94( val, _values, result )
    25502232    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}:#{@lineno}")
    2551     result = val[0]
    25522233   result
    25532234  end
     
    25562237 # reduce 95 omitted
    25572238
    2558 module_eval <<'.,.,', 'lib/parser.y', 450
    2559   def _reduce_96( val, _values, result )
    2560     result = val[0]
    2561    result
    2562   end
    2563 .,.,
    2564 
    2565 module_eval <<'.,.,', 'lib/parser.y', 454
    2566   def _reduce_97( val, _values, result )
    2567     result = val[0]
    2568    result
    2569   end
    2570 .,.,
    2571 
    2572 module_eval <<'.,.,', 'lib/parser.y', 459
    2573   def _reduce_98( val, _values, result )
    2574     result = val[0]
    2575    result
    2576   end
    2577 .,.,
    2578 
    2579 module_eval <<'.,.,', 'lib/parser.y', 463
    2580   def _reduce_99( val, _values, result )
    2581     result = val[0]
    2582    result
    2583   end
    2584 .,.,
    2585 
    2586 module_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 
    2593 module_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 
    2600 module_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 
    2607 module_eval <<'.,.,', 'lib/parser.y', 483
     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
     2253module_eval <<'.,.,', 'lib/parser.y', 262
    26082254  def _reduce_103( val, _values, result )
    26092255    @@log.info("SYM_START_DBLOCK: #{val[0]} at #{@filename}:#{@lineno}")
    2610     result = val[0]
    2611    result
    2612   end
    2613 .,.,
    2614 
    2615 module_eval <<'.,.,', 'lib/parser.y', 488
    2616   def _reduce_104( val, _values, result )
    2617     result = Array[val[0]]
    2618    result
    2619   end
    2620 .,.,
    2621 
    2622 module_eval <<'.,.,', 'lib/parser.y', 492
    2623   def _reduce_105( val, _values, result )
    2624     result = (val[0] << val[1])
    2625    result
    2626   end
    2627 .,.,
    2628 
    2629 module_eval <<'.,.,', 'lib/parser.y', 498
     2256   result
     2257  end
     2258.,.,
     2259
     2260 # reduce 104 omitted
     2261
     2262 # reduce 105 omitted
     2263
     2264module_eval <<'.,.,', 'lib/parser.y', 270
    26302265  def _reduce_106( val, _values, result )
    26312266    @@log.info("#{__FILE__}:#{__LINE__}: keyed_object = #{val[0]}, object_block = #{val[2]} at #{@filename}:#{@lineno}")
    2632     result = {:object_key => val[0], :object_block => val[1]}
    2633    result
    2634   end
    2635 .,.,
    2636 
    2637 module_eval <<'.,.,', 'lib/parser.y', 504
     2267   result
     2268  end
     2269.,.,
     2270
     2271module_eval <<'.,.,', 'lib/parser.y', 275
    26382272  def _reduce_107( val, _values, result )
    26392273    @@log.info("object_key: [#{val[1]}] at #{@filename}:#{@lineno}")
    2640     result = val[1]
    2641    result
    2642   end
    2643 .,.,
    2644 
    2645 module_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 
    2652 module_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 
    2659 module_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 
    2667 module_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 .,.,
     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
    26742285
    26752286 # reduce 112 omitted
    26762287
    2677 module_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 
    2685 module_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 
    2693 module_eval <<'.,.,', 'lib/parser.y', 540
     2288 # reduce 113 omitted
     2289
     2290 # reduce 114 omitted
     2291
     2292module_eval <<'.,.,', 'lib/parser.y', 287
    26942293  def _reduce_115( val, _values, result )
    2695     @@log.info("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[1]}> at #{@filename}:#{@lineno}")
    2696     result = val[1]
    2697    result
    2698   end
    2699 .,.,
    2700 
    2701 module_eval <<'.,.,', 'lib/parser.y', 544
    2702   def _reduce_116( val, _values, result )
    2703     result = val[0]
    2704    result
    2705   end
    2706 .,.,
    2707 
    2708 module_eval <<'.,.,', 'lib/parser.y', 548
    2709   def _reduce_117( val, _values, result )
    2710     result = val[0]
    2711    result
    2712   end
    2713 .,.,
    2714 
    2715 module_eval <<'.,.,', 'lib/parser.y', 552
    2716   def _reduce_118( val, _values, result )
    2717     result = val[0]
    2718    result
    2719   end
    2720 .,.,
    2721 
    2722 module_eval <<'.,.,', 'lib/parser.y', 556
    2723   def _reduce_119( val, _values, result )
    2724     result = val[0]
    2725    result
    2726   end
    2727 .,.,
    2728 
    2729 module_eval <<'.,.,', 'lib/parser.y', 560
    2730   def _reduce_120( val, _values, result )
    2731     result = val[0]
    2732    result
    2733   end
    2734 .,.,
    2735 
    2736 module_eval <<'.,.,', 'lib/parser.y', 565
     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
     2309module_eval <<'.,.,', 'lib/parser.y', 296
    27372310  def _reduce_121( val, _values, result )
    27382311    @@log.info("string_value: #{val[0]} at #{@filename}:#{@lineno}")
    2739     result = val[0]
    2740    result
    2741   end
    2742 .,.,
    2743 
    2744 module_eval <<'.,.,', 'lib/parser.y', 570
     2312   result
     2313  end
     2314.,.,
     2315
     2316module_eval <<'.,.,', 'lib/parser.y', 300
    27452317  def _reduce_122( val, _values, result )
    27462318    @@log.info("integer_value: #{val[0]} at #{@filename}:#{@lineno}")
    2747     result = val[0]
    2748    result
    2749   end
    2750 .,.,
    2751 
    2752 module_eval <<'.,.,', 'lib/parser.y', 575
     2319   result
     2320  end
     2321.,.,
     2322
     2323module_eval <<'.,.,', 'lib/parser.y', 304
    27532324  def _reduce_123( val, _values, result )
    27542325    @@log.info("real_value: #{val[0]} at #{@filename}:#{@lineno}")
    2755     result = val[0]
    2756    result
    2757   end
    2758 .,.,
    2759 
    2760 module_eval <<'.,.,', 'lib/parser.y', 580
     2326   result
     2327  end
     2328.,.,
     2329
     2330module_eval <<'.,.,', 'lib/parser.y', 308
    27612331  def _reduce_124( val, _values, result )
    27622332    @@log.info("boolean_value: #{val[0]} at #{@filename}:#{@lineno}")
    2763     result = val[0]
    2764    result
    2765   end
    2766 .,.,
    2767 
    2768 module_eval <<'.,.,', 'lib/parser.y', 585
     2333   result
     2334  end
     2335.,.,
     2336
     2337module_eval <<'.,.,', 'lib/parser.y', 312
    27692338  def _reduce_125( val, _values, result )
    27702339    @@log.info("character_value: #{val[0]} at #{@filename}:#{@lineno}")
    2771     result = val[0]
    2772    result
    2773   end
    2774 .,.,
    2775 
    2776 module_eval <<'.,.,', 'lib/parser.y', 590
     2340   result
     2341  end
     2342.,.,
     2343
     2344module_eval <<'.,.,', 'lib/parser.y', 316
    27772345  def _reduce_126( val, _values, result )
    27782346    @@log.info("date_value: #{val[0]} at #{@filename}:#{@lineno}")
    2779     result = val[0]
    2780    result
    2781   end
    2782 .,.,
    2783 
    2784 module_eval <<'.,.,', 'lib/parser.y', 595
     2347   result
     2348  end
     2349.,.,
     2350
     2351module_eval <<'.,.,', 'lib/parser.y', 320
    27852352  def _reduce_127( val, _values, result )
    27862353    @@log.info("time_value: #{val[0]} at #{@filename}:#{@lineno}")
    2787     result = val[0]
    2788    result
    2789   end
    2790 .,.,
    2791 
    2792 module_eval <<'.,.,', 'lib/parser.y', 600
     2354   result
     2355  end
     2356.,.,
     2357
     2358module_eval <<'.,.,', 'lib/parser.y', 324
    27932359  def _reduce_128( val, _values, result )
    27942360    @@log.info("date_time_value: #{val[0]} at #{@filename}:#{@lineno}")
    2795     result = val[0]
    2796    result
    2797   end
    2798 .,.,
    2799 
    2800 module_eval <<'.,.,', 'lib/parser.y', 605
     2361   result
     2362  end
     2363.,.,
     2364
     2365module_eval <<'.,.,', 'lib/parser.y', 328
    28012366  def _reduce_129( val, _values, result )
    28022367    @@log.info("duration_value: #{val[0]} at #{@filename}:#{@lineno}")
    2803     result = val[0]
    2804    result
    2805   end
    2806 .,.,
    2807 
    2808 module_eval <<'.,.,', 'lib/parser.y', 610
     2368   result
     2369  end
     2370.,.,
     2371
     2372module_eval <<'.,.,', 'lib/parser.y', 332
    28092373  def _reduce_130( val, _values, result )
    28102374    @@log.info("uri_value: #{val[0]} at #{@filename}:#{@lineno}")
    2811     result = val[0]
    28122375   result
    28132376  end
     
    28442407 # reduce 145 omitted
    28452408
    2846 module_eval <<'.,.,', 'lib/parser.y', 633
     2409module_eval <<'.,.,', 'lib/parser.y', 353
    28472410  def _reduce_146( val, _values, result )
    28482411    @@log.info("V_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
    2849     result = val[0]
    2850    result
    2851   end
    2852 .,.,
    2853 
    2854 module_eval <<'.,.,', 'lib/parser.y', 638
     2412   result
     2413  end
     2414.,.,
     2415
     2416module_eval <<'.,.,', 'lib/parser.y', 357
    28552417  def _reduce_147( val, _values, result )
    28562418    @@log.info("V_GENERIC_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
    2857     result = val[0]
    2858    result
    2859   end
    2860 .,.,
    2861 
    2862 module_eval <<'.,.,', 'lib/parser.y', 644
     2419   result
     2420  end
     2421.,.,
     2422
     2423module_eval <<'.,.,', 'lib/parser.y', 362
    28632424  def _reduce_148( val, _values, result )
    28642425    @@log.info("V_STRING: #{val[0]} at #{@filename}:#{@lineno}")
    2865     result = val[0]
    28662426   result
    28672427  end
     
    28742434 # reduce 151 omitted
    28752435
    2876 module_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 
    2888 module_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 
    2900 module_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 .,.,
     2436 # reduce 152 omitted
     2437
     2438 # reduce 153 omitted
     2439
     2440 # reduce 154 omitted
    29112441
    29122442 # reduce 155 omitted
     
    29342464 # reduce 166 omitted
    29352465
    2936 module_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 
    2948 module_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 
    2960 module_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 .,.,
     2466 # reduce 167 omitted
     2467
     2468 # reduce 168 omitted
     2469
     2470 # reduce 169 omitted
    29712471
    29722472 # reduce 170 omitted
     
    29942494 # reduce 181 omitted
    29952495
    2996 module_eval <<'.,.,', 'lib/parser.y', 740
    2997   def _reduce_182( val, _values, result )
    2998     result = true
    2999    result
    3000   end
    3001 .,.,
    3002 
    3003 module_eval <<'.,.,', 'lib/parser.y', 744
    3004   def _reduce_183( val, _values, result )
    3005     result = false
    3006    result
    3007   end
    3008 .,.,
     2496 # reduce 182 omitted
     2497
     2498 # reduce 183 omitted
    30092499
    30102500 # reduce 184 omitted
     
    31002590 # reduce 229 omitted
    31012591
    3102 module_eval <<'.,.,', 'lib/parser.y', 808
     2592module_eval <<'.,.,', 'lib/parser.y', 473
    31032593  def _reduce_230( val, _values, result )
    31042594    @@log.info("V_ISO8601_DURATION: #{val[0]} at #{@filename}:#{@lineno}")
    3105     result = val[0]
    31062595   result
    31072596  end
     
    31322621 # reduce 242 omitted
    31332622
    3134 module_eval <<'.,.,', 'lib/parser.y', 828
     2623module_eval <<'.,.,', 'lib/parser.y', 492
    31352624  def _reduce_243( val, _values, result )
    31362625    @@log.info("#{__FILE__}:#{__LINE__}: V_QUALIFIED_TERM_CODE_REF = #{val[0]} at #{@filename}:#{@lineno}")
    3137     result = val[0]
    31382626   result
    31392627  end
     
    31462634 # reduce 246 omitted
    31472635
    3148 module_eval <<'.,.,', 'lib/parser.y', 838
     2636module_eval <<'.,.,', 'lib/parser.y', 501
    31492637  def _reduce_247( val, _values, result )
    31502638    @@log.info("#{__FILE__}:#{__LINE__}: V_URI = #{val[0]} at #{@filename}:#{@lineno}")
    3151     result = val[0]
    31522639   result
    31532640  end
     
    32342721 # reduce 287 omitted
    32352722
    3236 module_eval <<'.,.,', 'lib/parser.y', 907
     2723module_eval <<'.,.,', 'lib/parser.y', 570
    32372724  def _reduce_288( val, _values, result )
    32382725    @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}")
     
    32412728.,.,
    32422729
    3243 module_eval <<'.,.,', 'lib/parser.y', 911
     2730module_eval <<'.,.,', 'lib/parser.y', 574
    32442731  def _reduce_289( val, _values, result )
    32452732    @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}")
     
    32482735.,.,
    32492736
    3250 module_eval <<'.,.,', 'lib/parser.y', 922
    3251   def _reduce_290( val, _values, result )
    3252     result = Range.new(1,1)
    3253    result
    3254   end
    3255 .,.,
    3256 
    3257 module_eval <<'.,.,', 'lib/parser.y', 926
    3258   def _reduce_291( val, _values, result )
    3259     result = val[3]
    3260    result
    3261   end
    3262 .,.,
    3263 
    3264 module_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 
    3276 module_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 
    3289 module_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 .,.,
     2737 # reduce 290 omitted
     2738
     2739 # reduce 291 omitted
     2740
     2741 # reduce 292 omitted
     2742
     2743 # reduce 293 omitted
     2744
     2745 # reduce 294 omitted
    32952746
    32962747 # reduce 295 omitted
     
    33162767 # reduce 305 omitted
    33172768
    3318 module_eval <<'.,.,', 'lib/parser.y', 970
    3319   def _reduce_306( val, _values, result )
    3320     result = val[3]
    3321    result
    3322   end
    3323 .,.,
     2769 # reduce 306 omitted
    33242770
    33252771 # reduce 307 omitted
     
    34152861 # reduce 352 omitted
    34162862
    3417 module_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 
    3424 module_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 
    3431 module_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 
    3438 module_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 
    3445 module_eval <<'.,.,', 'lib/parser.y', 1057
    3446   def _reduce_357( val, _values, result )
    3447     result = val[0]
    3448    result
    3449   end
    3450 .,.,
    3451 
    3452 module_eval <<'.,.,', 'lib/parser.y', 1061
    3453   def _reduce_358( val, _values, result )
    3454     raise 'Not implemented yet'
    3455    result
    3456   end
    3457 .,.,
    3458 
    3459 module_eval <<'.,.,', 'lib/parser.y', 1065
    3460   def _reduce_359( val, _values, result )
    3461     raise 'Not implemented yet'
    3462    result
    3463   end
    3464 .,.,
     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
    34652876
    34662877 # reduce 360 omitted
     
    34742885 # reduce 364 omitted
    34752886
    3476 module_eval <<'.,.,', 'lib/parser.y', 1078
     2887module_eval <<'.,.,', 'lib/parser.y', 694
    34772888  def _reduce_365( val, _values, result )
    34782889    @in_interval = false
     
    34982909 # reduce 373 omitted
    34992910
    3500 module_eval <<'.,.,', 'lib/parser.y', 1100
     2911module_eval <<'.,.,', 'lib/parser.y', 716
    35012912  def _reduce_374( val, _values, result )
    35022913    @@log.info("#{__FILE__}:#{__LINE__}, V_ATTRIBUTE_IDENTIFIER = #{word} at #{@filename}")
     
    35052916.,.,
    35062917
    3507 module_eval <<'.,.,', 'lib/parser.y', 1110
    3508   def _reduce_375( val, _values, result )
    3509     result = val[0]
    3510    result
    3511   end
    3512 .,.,
     2918 # reduce 375 omitted
    35132919
    35142920 def _reduce_none( val, _values, result )
  • /ruby/trunk/adl_parser/lib/parser.y

    r30 r20  
    2828
    2929input: archetype EOF
    30   {
    31     result = val[0]
    32   }
    3330  | error
    3431
    35 archetype: 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   }
     32archetype: arch_identification
     33  arch_specialisation
     34  arch_concept
     35  arch_language
     36  arch_description
     37  arch_definition
     38  arch_invariant
     39  arch_ontology
    5840
    5941
    6042arch_identification: arch_head V_ARCHETYPE_ID
    61   {
    62     result = {:arch_head => val[0], :archetype_id => val[1] }
    63   }
    6443  | SYM_ARCHETYPE error
    65   {
    66     raise
    67   }
    6844
    6945arch_head: SYM_ARCHETYPE
    70   {
    71     result = {:arch_meta_data => nil }
    72   }
    7346  | SYM_ARCHETYPE arch_meta_data
    74   {
    75     result = val[1]
    76   }
    7747
    7848arch_meta_data: Left_parenthesis_code arch_meta_data_items Right_parenthesis_code
    79   {
    80     result = {:arch_meta_data => val[1] }
    81   }
    8249
    8350arch_meta_data_items: arch_meta_data_item
    84   {
    85     result = val[0]
    86   }
    8751  | arch_meta_data_items Semicolon_code arch_meta_data_item
    88   {
    89     result = val[0].merge(val[2])
    90   }
    91 
     52#  | arch_meta_data_items ';' arch_meta_data_item
    9253
    9354arch_meta_data_item: SYM_ADL_VERSION SYM_EQ V_VERSION_STRING
    94   {
    95     result = {:adl_version => val[2], :is_controlled => false }
    96   }
    9755  | SYM_IS_CONTROLLED
    98   {
    99     result = {:is_controlled => true }
    100   }
    10156
    10257# Define specialization in which its constraints are narrower than those of the parent.
     
    10762
    10863arch_concept: SYM_CONCEPT V_LOCAL_TERM_CODE_REF
    109   {
    110     result = {:arch_concept => val[1] }
    111   }
    11264  | SYM_CONCEPT error
    11365
     
    11769
    11870arch_language: #-- empty is ok for ADL 1.4 tools
    119   {
    120     result = {:arch_language => nil}
    121   }
    12271    | SYM_LANGUAGE dadl_section
    12372  {
    124     result = {:arch_language => val[1]}
     73    result = {:language => val[1]}
    12574  }
    12675  | SYM_LANGUAGE error
     
    13281arch_description: #-- no meta-data ok
    13382    | SYM_DESCRIPTION dadl_section
    134   {
    135     result = OpenEHR::AM::Archetype::Archetype_Description::ARCHETYPE_DESCRIPTION.new(:details => val[1])
    136   }
    137   | SYM_DESCRIPTION error
    138  
     83    | SYM_DESCRIPTION error
     84
    13985#arch_definition: SYM_DEFINITION V_CADL_TEXT
    14086#  | SYM_DEFINITION error
    14187arch_definition: SYM_DEFINITION cadl_section
    142   {
    143     result = val[1]
    144   }
    14588  | SYM_DEFINITION error
    14689
     
    14891### cADL section
    14992cadl_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   }
    15593  | assertions
    156   {
    157     result = val[0]
    158   }
    15994#  | error
    16095
    16196#c_complex_object: c_complex_object_head SYM_MATCHES SYM_START_CBLOCK c_complex_object_body SYM_END_CBLOCK
    16297c_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   }
    17098    | c_complex_object_head SYM_MATCHES SYM_START_CBLOCK c_complex_object_body SYM_END_CBLOCK
    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
     99#     | c_complex_object_head error SYM_END_CBLOCK
     100#   {
     101#     @adl_type.push(:cadl)
     102#     yyerror
     103#   }
    179104#    | c_complex_object_head SYM_MATCHES SYM_START_CBLOCK c_complex_object_body c_invariants SYM_END_CBLOCK
    180105
    181106c_complex_object_head: c_complex_object_id c_occurrences
    182   {
    183     result = {:c_complex_object_id => val[0], :c_occurrences => val[1]}
    184   }
    185107
    186108c_complex_object_id: type_identifier
    187109  {
    188     result = {:type_identifier => val[0]}
     110    result = {:c_complex_object_id => {:type_identifier => val[0]}}
    189111  }
    190112  | type_identifier V_LOCAL_TERM_CODE_REF
    191113  {
    192     result = {:type_identifier => val[0], :local_term_code_ref => val[1]}
     114    result = {:c_complex_object_id => {:type_identifier => val[0], :V_LOCAL_TERM_CODE_REF => val[1]}}
    193115  }
    194116
    195117c_complex_object_body: c_any #-- used to indicate that any value of a type is ok
    196118  | c_attributes
    197   {
    198     result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new(:attributes => val[0])
    199   }
    200119
    201120
     
    203122
    204123c_object: v_c_domain_type
    205   {
    206     result = val[0]
    207   }
    208124  | c_complex_object
    209   {
    210     result = OpenEHR::AM::Archetype::Constraint_Model::C_COMPLEX_OBJECT.new
    211   }
    212125  | archetype_internal_ref
    213   {
    214     result = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_INTERNAL_REF.new
    215   }
    216126  | archetype_slot
    217   {
    218     result = OpenEHR::AM::Archetype::Constraint_Model::ARCHETYPE_SLOT.new
    219   }
    220127  | constraint_ref
    221   {
    222     result = OpenEHR::AM::Archetype::Constraint_Model::CONSTRAINT_REF.new
    223   }
    224128  | c_code_phrase
    225   {
    226     result = val[0]
    227   }
    228129  | c_ordinal
    229   {
    230     result = val[0]
    231   }
    232130  | c_primitive_object
    233   {
    234     result = val[0]
    235   }
    236131#  | v_c_domain_type
    237132#  | V_C_DOMAIN_TYPE
     
    246141
    247142v_c_domain_type: START_V_C_DOMAIN_TYPE_BLOCK dadl_section END_V_C_DOMAIN_TYPE_BLOCK
    248   {
    249     result = val[1]
    250   }
    251143
    252144# 'archetype_internal_ref' is a node that refers to a previously defined object node in the same archetype.
     
    265157# 'c_primitive_object' is an node representing a constraint on a primitive object type.
    266158c_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   }
    271159
    272160c_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   }
    277161  | 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   }
    282162  | 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   }
    287163  | 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   }
    292164  | 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   }
    297165  | 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   }
    302166  | 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   }
    307167  | 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   }
    313168
    314169c_any: Star_code
     
    318173
    319174c_attributes: c_attribute
    320   {
    321     result = [val[0]]
    322   }
    323175  | c_attributes c_attribute
    324   {
    325     result = (val[0] << val[1])
    326   }
    327176
    328177# 'c_attribute' is a node representing a constraint on an attribute in an object model.
    329178c_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   }
    336179  | 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   }
    341180  | 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   }
    346181
    347182
     
    349184  {
    350185    @@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 
    356186  }
    357187  | V_ATTRIBUTE_IDENTIFIER c_existence c_cardinality
    358188  {
    359     assert_at(__FILE__,__LINE__){ val[2].instance_of?(OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY) }
    360189    @@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                                                                                 )
    366190  }
    367191
    368192c_attr_values: c_object
    369   {
    370     result = Array[val[0]]
    371   }
    372193  | c_attr_values c_object
    373   {
    374     result = (val[0] << val[1])
    375   }
    376194  | c_any # -- to allow a property to have any value
    377   {
    378     result = Array[val[0]]
    379   }
    380195
    381196### c_includes: #-- Empty
     
    405220
    406221arch_ontology: SYM_ONTOLOGY dadl_section
    407   {
    408     dadl_section = val[1]
    409     result = OpenEHR::AM::Archetype::Ontology::ARCHETYPE_ONTOLOGY.new
    410   }
    411222  | SYM_ONTOLOGY error
    412223
     
    420231
    421232attr_vals: attr_val
    422   {
    423     result = Array[val[0]]
    424   }
    425233  | attr_vals attr_val
    426   {
    427     result = (val[0] << val[1])
    428   }
    429234  | attr_vals Semicolon_code attr_val
    430   {
    431     result = (val[0] << val[2])
    432   }
     235#  | attr_vals ';' attr_val
    433236
    434237attr_val: attr_id SYM_EQ object_block
    435238  {
    436239    @@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]}
    438240  }
    439241
     
    441243  {
    442244    @@log.info("#{__FILE__}:#{__LINE__}: V_ATTRIBUTE_IDENTIFIER = #{val[0]} at #{@filename}:#{@lineno}")
    443     result = val[0]
    444245  }
    445246  | V_ATTRIBUTE_IDENTIFIER error
    446247
    447248object_block: complex_object_block
    448   {
    449     result = val[0]
    450   }
    451249  | primitive_object_block
    452   {
    453     result = val[0]
    454   }
    455250
    456251complex_object_block: single_attr_object_block
    457   {
    458     result = val[0]
    459   }
    460252  | multiple_attr_object_block
    461   {
    462     result = val[0]
    463   }
    464253
    465254multiple_attr_object_block: untyped_multiple_attr_object_block
    466   {
    467     result = {:untyped_multiple_attr_object_block => val[0]}
    468   }
    469255  | type_identifier untyped_multiple_attr_object_block
    470   {
    471     result = {:type_identifier => val[0], :untyped_multiple_attr_object_block => val[1]}
    472   }
    473256
    474257untyped_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   }
    478258
    479259multiple_attr_object_block_head: SYM_START_DBLOCK
    480   { 
     260  {
    481261    @@log.info("SYM_START_DBLOCK: #{val[0]} at #{@filename}:#{@lineno}")
    482     result = val[0]
    483262  }
    484263
    485264keyed_objects: keyed_object
    486   {
    487     result = Array[val[0]]
    488   }
    489265  | keyed_objects keyed_object
    490   {
    491     result = (val[0] << val[1])
    492   }
    493266
    494267keyed_object: object_key SYM_EQ object_block
    495268  {
    496269    @@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]}
    498270  }
    499271
     
    501273  {
    502274    @@log.info("object_key: [#{val[1]}] at #{@filename}:#{@lineno}")
    503     result = val[1]
    504275  }
    505276
    506277single_attr_object_block: untyped_single_attr_object_block
    507   {
    508     result = {:untyped_single_attr_object_block => val[0]}
    509   }
    510278  | type_identifier untyped_single_attr_object_block
    511   {
    512     result = {:type_identifier => val[0], :untyped_single_attr_object_block => val[1]}
    513   }
    514 
    515279untyped_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   }
    520280  | 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   }
    525281single_attr_object_complex_head: SYM_START_DBLOCK
    526282primitive_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   }
    531283  | 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   }
    536284untyped_primitive_object_block: SYM_START_DBLOCK primitive_object_value SYM_END_DBLOCK
    537285  {
    538     @@log.info("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[1]}> at #{@filename}:#{@lineno}")
    539     result = val[1]
     286    @@log.info("#{__FILE__}:#{__LINE__}: primitive_object_block = <#{val[2]}> at #{@filename}:#{@lineno}")
    540287  }
    541288primitive_object_value: simple_value
    542   {
    543     result = val[0]
    544   }
    545289  | simple_list_value
    546   {
    547     result = val[0]
    548   }
    549290  | simple_interval_value
    550   {
    551     result = val[0]
    552   }
    553291  | term_code
    554   {
    555     result = val[0]
    556   }
    557292  | term_code_list_value
    558   {
    559     result = val[0]
    560   }
    561293simple_value: string_value
    562294  {
    563295    @@log.info("string_value: #{val[0]} at #{@filename}:#{@lineno}")
    564     result = val[0]
    565296  }
    566297  | integer_value
    567298  {
    568299    @@log.info("integer_value: #{val[0]} at #{@filename}:#{@lineno}")
    569     result = val[0]
    570300  }
    571301  | real_value
    572302  {
    573303    @@log.info("real_value: #{val[0]} at #{@filename}:#{@lineno}")
    574     result = val[0]
    575304  }
    576305  | boolean_value
    577306  {
    578307    @@log.info("boolean_value: #{val[0]} at #{@filename}:#{@lineno}")
    579     result = val[0]
    580308  }
    581309  | character_value
    582310  {
    583311    @@log.info("character_value: #{val[0]} at #{@filename}:#{@lineno}")
    584     result = val[0]
    585312  }
    586313  | date_value
    587314  {
    588315    @@log.info("date_value: #{val[0]} at #{@filename}:#{@lineno}")
    589     result = val[0]
    590316  }
    591317  | time_value
    592318  {
    593319    @@log.info("time_value: #{val[0]} at #{@filename}:#{@lineno}")
    594     result = val[0]
    595320  }
    596321  | date_time_value
    597322  {
    598323    @@log.info("date_time_value: #{val[0]} at #{@filename}:#{@lineno}")
    599     result = val[0]
    600324  }
    601325  | duration_value
    602326  {
    603327    @@log.info("duration_value: #{val[0]} at #{@filename}:#{@lineno}")
    604     result = val[0]
    605328  }
    606329  | uri_value
    607330  {
    608331    @@log.info("uri_value: #{val[0]} at #{@filename}:#{@lineno}")
    609     result = val[0]
    610   }
    611 
     332  }
    612333simple_list_value: string_list_value
    613334  | integer_list_value
     
    630351  {
    631352    @@log.info("V_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
    632     result = val[0]
    633353  }
    634354  | V_GENERIC_TYPE_IDENTIFIER
    635355  {
    636356    @@log.info("V_GENERIC_TYPE_IDENTIFIER: #{val[0]} at #{@filename}:#{@lineno}")
    637     result = val[0]
    638357  }
    639358
     
    641360  {
    642361    @@log.info("V_STRING: #{val[0]} at #{@filename}:#{@lineno}")
    643     result = val[0]
    644362  }
    645363
     
    649367
    650368integer_value: V_INTEGER
    651   {
    652     begin
    653       integer = Integer(val[0])
    654     rescue
    655       raise
    656     end
    657     result = integer
    658   }
    659369  | Plus_code V_INTEGER
    660   {
    661     begin
    662       integer = Integer(val[0])
    663     rescue
    664       raise
    665     end
    666     result = integer
    667   }
    668370  | Minus_code V_INTEGER
    669   {
    670     begin
    671       integer = Integer(val[0])
    672     rescue
    673       raise
    674     end
    675     result = - integer
    676   }
    677371###   | '+' V_INTEGER
    678372###   | '-' V_INTEGER
     
    693387
    694388real_value: V_REAL
    695   {
    696     begin
    697       real = Float(val[0])
    698     rescue
    699       raise
    700     end
    701     result = real
    702   }
    703389  | Plus_code V_REAL
    704   {
    705     begin
    706       real = Float(val[1])
    707     rescue
    708       raise
    709     end
    710     result = real
    711   }
    712390  | Minus_code V_REAL
    713   {
    714     begin
    715       real = Float(val[1])
    716     rescue
    717       raise
    718     end
    719     result = - real
    720   }
     391#  | '+' V_REAL
     392#  | '-' V_REAL
    721393
    722394real_list_value: real_value Comma_code real_value
     
    736408
    737409boolean_value: SYM_TRUE
    738   {
    739     result = true
    740   }
    741410  | SYM_FALSE
    742   {
    743     result = false
    744   }
    745411
    746412boolean_list_value: boolean_value Comma_code boolean_value
     
    805471  {
    806472    @@log.info("V_ISO8601_DURATION: #{val[0]} at #{@filename}:#{@lineno}")
    807     result = val[0]
    808473  }
    809474
     
    825490  {
    826491    @@log.info("#{__FILE__}:#{__LINE__}: V_QUALIFIED_TERM_CODE_REF = #{val[0]} at #{@filename}:#{@lineno}")
    827     result = val[0]
    828492  }
    829493
     
    835499  {
    836500    @@log.info("#{__FILE__}:#{__LINE__}: V_URI = #{val[0]} at #{@filename}:#{@lineno}")
    837     result = val[0]
    838501  }
    839502
     
    918581
    919582c_existence: #-- default to 1..1
    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   }
     583    | SYM_EXISTENCE SYM_MATCHES SYM_START_CBLOCK existence_spec SYM_END_CBLOCK
    927584
    928585existence_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   }
    937586  | 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   }
    947587
    948588c_cardinality: SYM_CARDINALITY SYM_MATCHES SYM_START_CBLOCK cardinality_spec SYM_END_CBLOCK
    949   {
    950     result = OpenEHR::AM::Archetype::Constraint_Model::CARDINALITY.new
    951   }
    952589
    953590cardinality_spec: occurrence_spec
     
    966603c_occurrences:  #-- default to 1..1
    967604  | SYM_OCCURRENCES SYM_MATCHES SYM_START_CBLOCK occurrence_spec SYM_END_CBLOCK
    968   {
    969     result = val[3]
    970   }
    971605  | SYM_OCCURRENCES error
    972606
     
    1036670
    1037671c_boolean_spec: SYM_TRUE
    1038   {
    1039     result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => true)
    1040   }
    1041672  | SYM_FALSE
    1042   {
    1043     result = OpenEHR::AM::Archetype::Constraint_Model::Primitive::C_BOOLEAN.new(:true_valid => false)
    1044   }
    1045673  | 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   }
    1049674  | 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   }
    1053675
    1054676c_boolean: c_boolean_spec
    1055   {
    1056     result = val[0]
    1057   }
    1058677  | c_boolean_spec Semicolon_code boolean_value
    1059   {
    1060     raise 'Not implemented yet'
    1061   }
    1062678  | c_boolean_spec Semicolon_code error
    1063   {
    1064     raise 'Not implemented yet'
    1065   }
     679#  | c_boolean_spec ';' error
    1066680
    1067681c_ordinal: c_ordinal_spec
    1068682  | c_ordinal_spec Semicolon_code integer_value
    1069683  | c_ordinal_spec Semicolon_code error
     684#  | c_ordinal_spec ';' error
    1070685
    1071686c_ordinal_spec: ordinal
    1072687  | c_ordinal_spec Comma_code ordinal
     688#  | c_ordinal_spec ',' ordinal
    1073689
    1074690ordinal: integer_value SYM_INTERVAL_DELIM V_QUALIFIED_TERM_CODE_REF
     
    1106722
    1107723duration_pattern: V_ISO8601_DURATION_CONSTRAINT_PATTERN
    1108   {
    1109     result = val[0]
    1110   }
    1111724
    1112725
     
    1118731require 'lib/util.rb'
    1119732require 'lib/scanner.rb'
    1120 require 'rubygems'
    1121 require 'am.rb'
     733require 'lib/model.rb'
    1122734$DEBUG = true
    1123735
     
    1125737
    1126738---- inner
    1127 
    1128 def assert_at(file,line, message = "")
    1129   unless yield
    1130     raise "Assertion failed !: #{file}, #{line}: #{message}"
    1131   end
    1132 end
    1133739
    1134740@@log = Logger.new('log/parser.log','daily')
  • /ruby/trunk/adl_parser/lib/scanner.rb

    r30 r20  
    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|
     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|
    118120                LOG.info("V_ISO8601_DURATION: #{match}")
    119121                [:V_ISO8601_DURATION, match]
     
    158160            @parser = lambda do |input|
    159161              reserved_parsers = OpenEHR::ADL::Scanner::DADL::RESERVED.map do |keyword|
    160                 Yaparc::Tokenize.new(
    161                                      Yaparc::Literal.new(keyword[0], false)
    162                                      )
     162                Yaparc::Tokenize.new(Yaparc::Literal.new(keyword[0], false))
    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 
    264250        #V_C_DOMAIN_TYPE /\A[A-Z][a-zA-Z0-9_]*[ \n]*\</
    265251        class V_C_DOMAIN_TYPE
     
    284270                              OpenEHR::ADL::Scanner::Common::V_ISO8601_DURATION.new,
    285271                              V_C_DOMAIN_TYPE.new,
    286                               V_ISO8601_DURATION_CONSTRAINT_PATTERN.new,
    287272                              Reserved.new,
    288273                              OpenEHR::ADL::Scanner::Common::V_QUALIFIED_TERM_CODE_REF.new,
  • /ruby/trunk/adl_parser/tests/parser_test.rb

    r30 r20  
     1#$:.unshift File.join(File.dirname(__FILE__))
     2
    13require 'lib/parser.rb'
    24require 'test/unit'
     
    1416    laboratory_request = File.read('tests/openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl')
    1517    assert_nothing_raised do
    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
     18      @parser.parse(laboratory_request, 'openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl')
    2119    end
    2220
     
    2422    assert_nothing_raised do
    2523      result = @parser.parse(apgar, 'openEHR-EHR-OBSERVATION.apgar.v1.adl')
    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
     24      #       assert_equal "", result
    2925    end
    3026
     
    3531
    3632
     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
    150146  end
    151147end
  • /ruby/trunk/models/Rakefile

    r30 r20  
    3434
    3535
    36 gem_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"]
    52 end
    53 
    54 
    55 Rake::GemPackageTask.new(gem_spec) do |pkg|
    56   pkg.need_zip = false
    57   pkg.need_tar = false
    58 end
    59 
    60 #CLOBBER.include('rdoc')
    61 #CLEAN.include('lib/*.output', 'log/*.log')
    62 
    63 
    6436
    6537
  • /ruby/trunk/models/am.rb

    r30 r20  
    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      
    23       module Archetype_Description
    24         autoload :ARCHETYPE_DESCRIPTION, "am/archetype/archetype_description/archetype_description.rb"
    25       end
    26 
     22      autoload :Archetype_Description, "am/archetype/archetype_description/archetype_description.rb"
    2723      module Constraint_Model
    28         autoload :ARCHETYPE_CONSTRAINT, "am/archetype/constraint_model/archetype_constraint.rb"
     24        autoload :Assertion, "am/archetype/constraint_model/assertion.rb"
    2925        autoload :Primitive, "am/archetype/constraint_model/primitive.rb"
    3026      end #end of ConstraintModel
    31 
    32       module Assertion
    33         autoload :ASSERTION, "am/archetype/constraint_model/assertion.rb"
    34       end
    35 
    3627    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
    5528  end # of AM
    5629end # of OpenEHR
  • /ruby/trunk/models/am/archetype/archetype.rb

    r30 r20  
    77#        include OpenEHR::RM::Support::Terminology::OpenEHR_Code_Set_Identifier
    88        include OpenEHR::RM::Support::Terminology
    9         CURRENT_ADL_VERSION = "1.4"
     9        CURRENT_ADL_VERSION = "2.0"
    1010      end
    11 
    12       class ARCHETYPE < OpenEHR::RM::Common::Resource::AUTHORED_RESOURCE
     11      class Archetype < OpenEHR::RM::Common::Resource::Authored_Resource
    1312        include ADL_Definition
    1413        attr_accessor :archetype_id, :concept_code, :is_controlled, :original_language, :parent_archtype_id, :uid
    1514
    16         attr_reader :parent_id,:concept, :definition, :ontology
    17         attr_accessor :adl_version,:description,:original_language
     15        attr_reader :adl_version, :id, :parent_id
     16        attr_reader :concept, :definition, :ontology
     17        attr_accessor :description,:original_language
    1818        attr_accessor :revision_history, :translation
    1919
    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]
     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
     26
     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
    2839 #         loadMaps(definition)
    29           super
    30         end
    31 
    32         def self.create(args ={}, &block)
    33           archetype = new(args)
    34           if block_given?
    35             yield archetype
    36           end
    37           return archetype
    3840        end
    3941
     
    7375        def version
    7476        end
    75       end # end of ARCHETYPE
     77      end
    7678      # original file:
    7779      # ref_imple_eiffel/components/adl_parser/src/interface/adl_definition.e
    78 
    79       class VALIDITY_KIND
    80       end
    81     end
    82 
    83 
     80    end # end of Archetype
    8481  end # end of AM
    8582end # end of OpenEHR
  • /ruby/trunk/models/am/archetype/archetype_description/archetype_description.rb

    r30 r20  
    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, :details
    8           def initialize(args ={ })
    9             @details = args[:details] ? args[:details] : []
    10           end
     6        class Archetype_Description
     7          attr_accessor :archetype_package_uri, :lifecycle_state, :original_author, :other_contributors, :other_details
    118        end
    129
    13         class ARCHETYPE_DESCRIPTION_ITEM
     10        class Archetype_Description_Item
    1411          attr_accessor :archetype_package_uri, :lifecycle_state, :original_author, :other_contributors, :other_details
    1512        end
  • /ruby/trunk/models/am/archetype/constraint_model/archetype_constraint.rb

    r30 r20  
    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
    1078        end
    1089      end
  • /ruby/trunk/models/am/archetype/constraint_model/assertion.rb

    r30 r20  
    22  module AM
    33    module Archetype
    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
     4      module Constraint_Model
     5        module Assertion
     6          class Assertion
     7          end
    278        end
    289      end
  • /ruby/trunk/models/am/archetype/constraint_model/primitive.rb

    r30 r20  
    33    module Archetype
    44      module Constraint_Model
    5 
    65        module Primitive
    7 
    8           class C_PRIMITIVE
     6          class C_Primitive
    97            def assumed_value
    108              raise NotImplementedError, "assumed_value should be implemented"
     
    2018            end
    2119          end
    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)
     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
    3127            end
    32 
    33             def true_valid=(true_valid)
     28            def set_true_valid(true_valid)
    3429              binary_consistency(true_valid, @false_valid)
    3530              @true_valid = true_valid
    3631            end
    37 
    38             def false_valid=(false_valid)
     32            def set_false_valid(false_valid)
    3933              binary_consistency(@true_valid,false_valid)
    4034              @false_valid = false_valid
    4135            end
    42 
     36            def true_valid?
     37              @true_valid
     38            end
     39            def false_valid?
     40              @false_valid
     41            end
    4342            def valid_value?
    4443             
    4544            end
    46 
    47             def default_value(a_value = nil)
     45            def default_value(a_value=nil)
    4846              if a_value == nil
    4947                @true_valid
     
    5250              end             
    5351            end
    54 
    5552            private
    56 
    5753            def binary_consistency(true_valid, false_valid)
    5854              if !true_valid && !false_valid
     
    6157            end
    6258          end # of C_Boolean
    63 
    64           class C_STRING < C_PRIMITIVE
     59          class C_Integer < C_Primitive
    6560           
    6661          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 
    9462        end # of Primitive
    9563      end # of Constraint_Model
  • /ruby/trunk/models/am/archetype/ontology.rb

    r30 r20  
    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 
    109          def constraint_binding(a_terminology, a_code)
    1110          end
    12 
    1311          def constraint_definition(a_lang, a_code)
    1412          end
    15 
    1613          def has_language?(a_lang)
    1714          end
    18 
    1915          def has_terminology?(a_terminology)
    2016          end
    21 
    2217          def term_binding(a_terminology, a_code)
    2318          end
    24 
    2519          def term_definition(a_lang, a_code)
    2620          end
    2721        end
    28 
    29         class ARCHETYPE_TERM
     22        class Archetype_Term
    3023          attr_accessor :code, :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
     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
    4433          end
    45 
    4634          def keys
    47             @items.keys
     35            items.keys
    4836          end
    4937        end
  • /ruby/trunk/models/am/openehr_profile/data_types/basic.rb

    r30 r20  
    11module OpenEHR
    2   module AM
     2  module RM
    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        
    265      end # of Data_Types
    276    end # of OpenEHR Profile
  • /ruby/trunk/models/assumed_library_types.rb

    r30 r20  
    1010        set_upper_included(upper_included)
    1111      end
    12 
    1312      def set_lower(lower)
    1413        check_lower_upper(lower, @upper)
    1514      end
    16 
    1715      def set_upper(upper)
    1816        check_lower_upper(@lower, upper)
    1917      end
    20 
    2118      def set_lower_included(lower_included)
    2219        if (lower == nil) && (lower_included != nil)
     
    2522        @lower_included = lower_included
    2623      end
    27 
    2824      def set_upper_included(upper_included)
    2925        @upper_included = upper_included
     
    3228        end
    3329      end
    34 
    3530      def has?(value)
    3631        if ((@lower < value) && (value < @upper) ||
     
    4237        end
    4338      end
    44 
    4539      private
    46 
    4740      def check_lower_upper(lower, upper)
    4841        if (lower == nil) && (upper == nil)
  • /ruby/trunk/models/rm.rb

    r30 r20  
    1313  module RM
    1414    autoload :Demographic, "rm/demographic.rb"
    15 
    1615    module Common
    1716      autoload :Resource, "rm/common/resource.rb"
    1817    end
    19 
    2018    module Support
    2119      autoload :Definition, "rm/support/definition.rb"
    22 
    23       module Identification
    24         autoload :OBJECT_ID, "rm/support/identification.rb"
    25       end
    26 
    2720      module Terminology
    2821        autoload :Terminology, "rm/support/terminology.rb"
    2922      end
    3023    end
    31 
    3224    module Data_Types
    3325      autoload :Basic, "rm/data_types/basic.rb"
  • /ruby/trunk/models/rm/common/resource.rb

    r30 r20  
    44    module Common
    55      module Resource
    6         class AUTHORED_RESOURCE
    7           attr_reader :is_controled,:revision_history, :translations
     6        class Authored_Resource
     7          attr_reader :is_controled
     8          attr_reader :revision_history, :translations
    89          attr_accessor :description, :original_language
    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
     10          def initialize(original_language, translations,
     11                         description, revision_history = nil)
     12            if original_language == nil
     13              raise Exception.new("original language nil")
     14            end
     15            if translations == nil
     16              raise Exception.new("translation empty")
     17            end
     18            if revision_history == nil
     19              is_controled = false
    1720            else
    18               @is_controled = true
     21              is_controled = true
    1922            end
    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]
     23            @original_language = original_language
     24            @translations = translations
     25            @description = description
     26            @revision_history = revision_history
    2427          end
    25 
    2628          def current_version
    2729            @revision_history.most_recent_revision
    2830          end
    29 
    3031          def language_available
    3132            languages = Set.new
    32             if @translations != nil
    33               languages << @translations.keys
     33            if translations != nil
     34              languages << translations.keys
    3435            end
    35             languages << @original_language.code_string
     36            languages << original_language.code_string
    3637          end
    3738        end
    38 
    39         class TRANSLATION_DETAILS
     39        class Translation_Details
    4040          attr_accessor :language, :author, :accreditation
    4141          attr_accessor :other_details, :terminology_service
    42 
    4342          def initialize(language, author, accreditation, other_details,
    4443                         terminology_service)
  • /ruby/trunk/models/rm/support/identification.rb

    r30 r20  
    22  module RM
    33    module Support
    4       module Identification
    5 
    6         class OBJECT_ID
     4      module Definition
     5        class Object_ID
    76          attr_accessor :value
    8 
    97          def initiallize(value)
    10             raise "empty value" unless value
     8            if value == nil
     9              raise Exception.new("empty value")
     10            end
    1111            @value = value
    1212          end
    1313        end # of ObjectID
    14 
    15         class ARCHETYPE_ID < OBJECT_ID
    16         end
    17 
    18         class TERMINOLOGY_ID < OBJECT_ID
     14        class Terminology_ID < Object_ID
    1915          attr_reader :name
    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
     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
    3024          end
    31 
    3225          def setValue(value)
    3326            loadValue(value)
    3427            super.value = value
    3528          end
    36 
    3729          def version_id
    3830            @version
    3931          end
    40 
    4132          private
    42 
    4333          def loadValue(value)
    4434            if /\(.*\)$/ =~ value
    45 #              @name, @version = value.split(\())
     35              @name, @version = value.split(\())
    4636              @version.chop!
    4737            else
     
    5040            end
    5141          end
    52 
    5342          def toValue(name, version)
    5443            if name == ""
  • /ruby/trunk/models/tests/test_archetype_model.rb

    r30 r20  
    55class ArchetypeModelTest < Test::Unit::TestCase
    66  def setup
    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
     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
    1215  end
    1316 
    1417  def test_init
    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
     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
    2025  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
    29 end
    30 
    31 class 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
    80 end
    81 
    82 class 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 
    10926  def test_primitive
    110     assert @c_boolean.true_valid
    111     assert @c_boolean.false_valid
     27    assert @c_boolean.true_valid?
     28    assert @c_boolean.false_valid?
    11229    assert @c_boolean.assumed_value
    11330    assert @c_boolean.has_assumed_value?
    11431    assert @c_boolean.default_value
    11532    assert @c_boolean.default_value(true)
    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  
    127 end
    128 
    129 class 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
    139 end
    140    
    141 class 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
     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)}
    16235  end
    16336end
    16437
    165 class 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
    193 end
  • /ruby/trunk/models/tests/test_reference_model.rb

    r30 r20  
    55class ReferenceModelTest < Test::Unit::TestCase
    66  def setup
    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)
     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)
    119#    @openehr_definitions = OpenEHR::RM::Support::Definition::OpenEHR_Definitions.new
    1210    @dv_boolean = OpenEHR::RM::Data_Types::Basic::DV_Boolean.new("TRUE")
     
    2119 
    2220  def test_init
    23     assert_instance_of OpenEHR::RM::Common::Resource::AUTHORED_RESOURCE, @authored_resource
    24     assert_instance_of OpenEHR::RM::Common::Resource::TRANSLATION_DETAILS, @translation_details
     21    assert_instance_of OpenEHR::RM::Common::Resource::Authored_Resource, @authored_resource
     22    assert_instance_of OpenEHR::RM::Common::Resource::Translation_Details, @translation_details
    2523    assert_instance_of OpenEHR::RM::Data_Types::Basic::DV_Boolean, @dv_boolean
    2624    assert_instance_of OpenEHR::RM::Data_Types::Basic::DV_State, @dv_state
     
    3129    assert_instance_of OpenEHR::RM::Data_Types::Text::DV_Coded_Text, @dv_coded_text
    3230  end
    33 
    3431  def test_constant
    3532    assert_equal("\r", OpenEHR::RM::Support::Definition::OpenEHR_Definitions::CR)
     
    3835    assert_equal("\n", OpenEHR::RM::Data_Types::Basic::Data_Value::LF)
    3936  end
    40 
    4137  def test_dv_boolean
    4238    assert @dv_boolean.value?
     
    4743    assert_raise(ArgumentError){OpenEHR::RM::Data_Types::Basic::DV_Boolean.new(nil)}
    4844  end
    49 
    5045  def test_dv_state
    5146    assert_equal("code1", @dv_state.value)
     
    5752    assert_raise(ArgumentError) {OpenEHR::RM::Data_Types::Basic::DV_State.new(nil,nil)}
    5853  end
    59 
    6054  def test_dv_identifier
    6155    assert_equal("Ruby Hospital", @dv_identifier.assigner)
     
    7367    assert_raise(ArgumentError) {OpenEHR::RM::Data_Types::Basic::DV_Identifier.new(nil, nil, nil, nil)}
    7468  end
    75 
    7669  def test_dv_uri
    7770    assert_equal("file0", @dv_uri.fragment_id)
     
    8477    assert_equal("/openehr-jp/", @dv_uri.path)
    8578  end
    86 
    8779  def test_dv_ehr_uri
    8880    assert_equal("ehr", @dv_ehr_uri.scheme)
     
    9082      @dv_ehr_uri.value="svn://www.openehr.jp/openehr-jp/" }
    9183  end
    92 
    9384  def test_dv_text
    9485    assert_equal("valid value", @dv_text.value)
    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 = ""}
     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 = ""}
    104104  end
    105 
    106105  def test_dv_coded_text
    107106    assert_equal("valid value", @dv_coded_text.value)
    108107    assert_equal("AT1000", @dv_coded_text.defining_code)
    109     assert_raise(ArgumentError){@dv_coded_text.defining_code=nil}
     108    assert_raise(ArgumentError){
     109      @dv_coded_text.defining_code=nil}
    110110  end
    111 
    112111  def test_dv_paragraph
    113112    assert_equal((Set.new ["test1", "test2"]), @dv_paragraph.items)
    114     assert_raise(ArgumentError){@dv_paragraph.items=Set.new}
     113    assert_raise(ArgumentError){
     114      @dv_paragraph.items=Set.new}
    115115  end
    116 
    117116  def test_terminology_mapping
    118117   
     
    120119end
    121120
    122 
    123 class 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
    136 end
Note: See TracChangeset for help on using the changeset viewer.