openehr 1.2.4 → 1.2.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/openehr/am/archetype/constraint_model.rb +16 -1
- data/lib/openehr/am/openehr_profile/data_types/text.rb +4 -0
- data/lib/openehr/assumed_library_types.rb +5 -1
- data/lib/openehr/parser/adl_grammar.tt +58 -21
- data/lib/openehr/parser/adl_parser.rb +2 -1
- data/lib/openehr/version.rb +1 -1
- data/spec/lib/openehr/parser/structure_spec.rb +7 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 25bb1088a748632a3c49a91baa2d7d7851e14dbe
|
4
|
+
data.tar.gz: a5737fec858751805a134c214c36d6cc3894f1fc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 99b27154f9c3a897e44c5c8583ef11975d6e1ce9baa2ed056282c4c63fd6357cd433e048dce3e77dd42c66e18cc2f64ad40054ce7b6359be8049494f16e79f6a
|
7
|
+
data.tar.gz: 4b18acd91c8b25d047d63dc127e5b5039846857be4b5be0f8df5f71cb4ae7914e51aeec8c68f276e6b923457f0fdcaabaafdaddb3815b36fdd077a0d4e92c70f
|
@@ -187,8 +187,23 @@ module OpenEHR
|
|
187
187
|
def any_allowed?
|
188
188
|
return item.nil?
|
189
189
|
end
|
190
|
-
end
|
191
190
|
|
191
|
+
%w(assumed_value assumed_value= has_assumed_value? default_value
|
192
|
+
any_allowed?, valid_value?).each do |m|
|
193
|
+
define_method(m) do |*args|
|
194
|
+
self.item.send(m, *args) if !self.item.nil?
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
def method_missing(meth, *args)
|
199
|
+
if !self.item.nil? && self.item.respond_to?(meth)
|
200
|
+
self.item.send(meth, *args)
|
201
|
+
else
|
202
|
+
super
|
203
|
+
end
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
192
207
|
class CComplexObject < CDefinedObject
|
193
208
|
attr_accessor :attributes
|
194
209
|
|
@@ -458,7 +458,11 @@ module OpenEHR
|
|
458
458
|
|
459
459
|
module ISO8601DateTimeModule
|
460
460
|
include ISO8601DateModule, ISO8601TimeModule
|
461
|
-
|
461
|
+
|
462
|
+
def hour_unknown?
|
463
|
+
@hour.nil?
|
464
|
+
end
|
465
|
+
|
462
466
|
def as_string
|
463
467
|
if (!@year.nil? and !@month.nil? and !@day.nil?)
|
464
468
|
s = Date.new(@year, @month, @day).to_s
|
@@ -260,7 +260,7 @@ module OpenEHR
|
|
260
260
|
def value(node = ArchetypeNode.new)
|
261
261
|
args = head.value
|
262
262
|
args[:occurrences] ||= OpenEHR::AssumedLibraryTypes::Interval.new(
|
263
|
-
:lower => 1, :upper => 1)
|
263
|
+
:lower => 1, :upper => 1, :lower_included => true, :upper_included => true)
|
264
264
|
node.id = args[:node_id]
|
265
265
|
if node.root? or node.id.nil?
|
266
266
|
args[:path] = node.path
|
@@ -275,7 +275,7 @@ module OpenEHR
|
|
275
275
|
def value(node = ArchetypeNode.new)
|
276
276
|
args = c_complex_object_head.value
|
277
277
|
args[:occurrences] ||= OpenEHR::AssumedLibraryTypes::Interval.new(
|
278
|
-
:lower => 1, :upper => 1)
|
278
|
+
:lower => 1, :upper => 1, :lower_included => true, :upper_included => true)
|
279
279
|
node.id = args[:node_id]
|
280
280
|
args[:path] = node.path
|
281
281
|
OpenEHR::AM::Archetype::ConstraintModel::CComplexObject.new(args)
|
@@ -337,14 +337,14 @@ module OpenEHR
|
|
337
337
|
args[:path] = node.path
|
338
338
|
args[:rm_type_name] = 'DV_ORDINAL'
|
339
339
|
args[:occurrences] ||= OpenEHR::AssumedLibraryTypes::Interval.new(
|
340
|
-
:upper => 1, :lower => 1)
|
340
|
+
:upper => 1, :lower => 1, :lower_included => true, :upper_included => true)
|
341
341
|
OpenEHR::AM::OpenEHRProfile::DataTypes::Quantity::CDvOrdinal.new(
|
342
342
|
args)
|
343
343
|
end
|
344
344
|
}
|
345
345
|
/ c_primitive_object '' {
|
346
346
|
def value(node)
|
347
|
-
c_primitive_object.value
|
347
|
+
c_primitive_object.value(node)
|
348
348
|
end
|
349
349
|
}
|
350
350
|
/ c_complex_object '' {
|
@@ -395,7 +395,7 @@ module OpenEHR
|
|
395
395
|
OpenEHR::AM::Archetype::ConstraintModel::ArchetypeInternalRef.new(
|
396
396
|
:rm_type_name => type_identifier.value,
|
397
397
|
:occurrences => OpenEHR::AssumedLibraryTypes::Interval.new(
|
398
|
-
:lower => 1, :upper => 1),
|
398
|
+
:lower => 1, :upper => 1, :lower_included => true, :upper_included => true),
|
399
399
|
:path => node.path,
|
400
400
|
:target_path => object_path.value)
|
401
401
|
end
|
@@ -439,7 +439,7 @@ module OpenEHR
|
|
439
439
|
def value(node)
|
440
440
|
args = c_archetype_slot_id.value(node)
|
441
441
|
args[:occurrences] = OpenEHR::AssumedLibraryTypes::Interval.new(
|
442
|
-
:upper => 1, :lower => 1)
|
442
|
+
:upper => 1, :lower => 1, :lower_included => true, :upper_included => true)
|
443
443
|
args
|
444
444
|
end
|
445
445
|
}
|
@@ -463,8 +463,16 @@ module OpenEHR
|
|
463
463
|
|
464
464
|
rule c_primitive_object
|
465
465
|
c_primitive '' {
|
466
|
-
def value
|
467
|
-
|
466
|
+
def value(node)
|
467
|
+
OpenEHR::AM::Archetype::ConstraintModel::CPrimitiveObject.new(
|
468
|
+
{:item => c_primitive.value,
|
469
|
+
:rm_type_name => c_primitive.value.type,
|
470
|
+
:occurrences => OpenEHR::AssumedLibraryTypes::Interval.new(
|
471
|
+
:upper => 1,
|
472
|
+
:lower => 1,
|
473
|
+
:lower_included => true,
|
474
|
+
:upper_included => true),
|
475
|
+
:path => node.path})
|
468
476
|
end
|
469
477
|
}
|
470
478
|
end
|
@@ -517,8 +525,8 @@ module OpenEHR
|
|
517
525
|
def value(node)
|
518
526
|
OpenEHR::AM::Archetype::ConstraintModel::CAttribute.new(
|
519
527
|
:path => node.path, :rm_attribute_name => 'ANY',
|
520
|
-
:
|
521
|
-
:lower => 1, :upper => 1))
|
528
|
+
:existence => OpenEHR::AssumedLibraryTypes::Interval.new(
|
529
|
+
:lower => 1, :upper => 1, :lower_included => true, :upper_included => true))
|
522
530
|
end
|
523
531
|
}
|
524
532
|
end
|
@@ -661,12 +669,20 @@ module OpenEHR
|
|
661
669
|
rule existence_spec
|
662
670
|
lo:V_INTEGER SYM_ELLIPSIS up:V_INTEGER {
|
663
671
|
def value
|
664
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
672
|
+
OpenEHR::AssumedLibraryTypes::Interval.new(
|
673
|
+
:lower => lo.value,
|
674
|
+
:upper => up.value,
|
675
|
+
:lower_included => true,
|
676
|
+
:upper_included => true)
|
665
677
|
end
|
666
678
|
}
|
667
679
|
/ V_INTEGER '' {
|
668
680
|
def value
|
669
|
-
OpenEHR::AssumedLibraryTypes::Interval.new(
|
681
|
+
OpenEHR::AssumedLibraryTypes::Interval.new(
|
682
|
+
:lower => V_INTEGER.value,
|
683
|
+
:upper => V_INTEGER.value,
|
684
|
+
:lower_included => true,
|
685
|
+
:upper_included => true)
|
670
686
|
end
|
671
687
|
}
|
672
688
|
end
|
@@ -754,11 +770,14 @@ module OpenEHR
|
|
754
770
|
def value
|
755
771
|
if ed.value == '*'
|
756
772
|
OpenEHR::AssumedLibraryTypes::Interval.new(
|
757
|
-
:lower => st.value
|
773
|
+
:lower => st.value,
|
774
|
+
:lower_included => true)
|
758
775
|
else
|
759
776
|
OpenEHR::AssumedLibraryTypes::Interval.new(
|
760
777
|
:lower => st.value,
|
761
|
-
:upper => ed.value
|
778
|
+
:upper => ed.value,
|
779
|
+
:lower_included => true,
|
780
|
+
:upper_included => true)
|
762
781
|
end
|
763
782
|
end
|
764
783
|
}
|
@@ -766,7 +785,9 @@ module OpenEHR
|
|
766
785
|
def value
|
767
786
|
OpenEHR::AssumedLibraryTypes::Interval.new(
|
768
787
|
:lower => cardinality_limit_value.value,
|
769
|
-
:upper => cardinality_limit_value.value
|
788
|
+
:upper => cardinality_limit_value.value,
|
789
|
+
:lower_included => true,
|
790
|
+
:upper_included => true)
|
770
791
|
end
|
771
792
|
}
|
772
793
|
end
|
@@ -1107,7 +1128,11 @@ module OpenEHR
|
|
1107
1128
|
OpenEHR::AM::Archetype::ConstraintModel::ConstraintRef.new(
|
1108
1129
|
:path => node.path,
|
1109
1130
|
:rm_type_name => 'ConstraintRef',
|
1110
|
-
:occurrences => OpenEHR::AssumedLibraryTypes::Interval.new(
|
1131
|
+
:occurrences => OpenEHR::AssumedLibraryTypes::Interval.new(
|
1132
|
+
:upper => 1,
|
1133
|
+
:lower => 1,
|
1134
|
+
:lower_included => true,
|
1135
|
+
:upper_included => true),
|
1111
1136
|
:reference => vltcr.value)
|
1112
1137
|
end
|
1113
1138
|
}
|
@@ -1160,7 +1185,10 @@ module OpenEHR
|
|
1160
1185
|
::OpenEHR::AM::OpenEHRProfile::DataTypes::Text::CCodePhrase.new(
|
1161
1186
|
:rm_type_name => 'CodePhrase',
|
1162
1187
|
:occurrences => OpenEHR::AssumedLibraryTypes::Interval.new(
|
1163
|
-
:upper => 1,
|
1188
|
+
:upper => 1,
|
1189
|
+
:lower => 1,
|
1190
|
+
:lower_included => true,
|
1191
|
+
:upper_included => true),
|
1164
1192
|
:terminology_id => ti.value, :code_list => code_string_spec.value,
|
1165
1193
|
:assumed_value => code_string.value,
|
1166
1194
|
:path => node.path)
|
@@ -1171,7 +1199,10 @@ module OpenEHR
|
|
1171
1199
|
::OpenEHR::AM::OpenEHRProfile::DataTypes::Text::CCodePhrase.new(
|
1172
1200
|
:rm_type_name => 'CodePhrase',
|
1173
1201
|
:occurrences => OpenEHR::AssumedLibraryTypes::Interval.new(
|
1174
|
-
:upper => 1,
|
1202
|
+
:upper => 1,
|
1203
|
+
:lower => 1,
|
1204
|
+
:lower_included => true,
|
1205
|
+
:upper_included => true),
|
1175
1206
|
:terminology_id => ti.value, :code_list => code_string_spec.value,
|
1176
1207
|
:path => node.path)
|
1177
1208
|
end
|
@@ -1181,7 +1212,10 @@ module OpenEHR
|
|
1181
1212
|
::OpenEHR::AM::OpenEHRProfile::DataTypes::Text::CCodePhrase.new(
|
1182
1213
|
:rm_type_name => 'CodePhrase',
|
1183
1214
|
:occurrences => OpenEHR::AssumedLibraryTypes::Interval.new(
|
1184
|
-
:upper => 1,
|
1215
|
+
:upper => 1,
|
1216
|
+
:lower => 1,
|
1217
|
+
:lower_included => true,
|
1218
|
+
:upper_included => true),
|
1185
1219
|
:terminology_id => ti.value, :code_list => [], :path => node.path)
|
1186
1220
|
end
|
1187
1221
|
}
|
@@ -1357,7 +1391,10 @@ module OpenEHR
|
|
1357
1391
|
OpenEHR::AM::OpenEHRProfile::DataTypes::Quantity::CQuantityItem.new(
|
1358
1392
|
:path => node.path, :rm_type_name => 'DvQuantity',
|
1359
1393
|
:occurrences => OpenEHR::AssumedLibraryTypes::Interval.new(
|
1360
|
-
|
1394
|
+
:upper => 1,
|
1395
|
+
:lower => 1,
|
1396
|
+
:lower_included => true,
|
1397
|
+
:upper_included => true),
|
1361
1398
|
:units => units.value,
|
1362
1399
|
:magnitude => magnitude, :precision => precision)
|
1363
1400
|
end
|
@@ -2203,7 +2240,7 @@ module OpenEHR
|
|
2203
2240
|
SYM_INTERVAL_DELIM SYM_GT lo:integer_value SYM_ELLIPSIS SYM_LT up:integer_value SYM_INTERVAL_DELIM {
|
2204
2241
|
def value
|
2205
2242
|
OpenEHR::AssumedLibraryTypes::Interval.new(:lower => lo.value,
|
2206
|
-
|
2243
|
+
:upper => up.value,
|
2207
2244
|
:lower_included => false,
|
2208
2245
|
:upper_included => false)
|
2209
2246
|
end
|
@@ -10,11 +10,12 @@ include OpenEHR::RM::DataTypes::Text
|
|
10
10
|
module OpenEHR
|
11
11
|
module Parser
|
12
12
|
class ADLParser < Base
|
13
|
+
Treetop.load(File.dirname(__FILE__)+'/adl_grammar.tt')
|
14
|
+
|
13
15
|
def initialize(filename)
|
14
16
|
super(filename)
|
15
17
|
file = File.open(filename, 'r:bom|utf-8')
|
16
18
|
data = file.read
|
17
|
-
Treetop.load(File.dirname(__FILE__)+'/adl_grammar.tt')
|
18
19
|
ap = ADLGrammarParser.new
|
19
20
|
@result = ap.parse(data)
|
20
21
|
file.close
|
data/lib/openehr/version.rb
CHANGED
@@ -8,7 +8,8 @@ describe ADLParser do
|
|
8
8
|
archetype = adl14_archetype('adl-test-entry.structure_test1.test.adl')
|
9
9
|
@definition = archetype.definition
|
10
10
|
@occurrences = OpenEHR::AssumedLibraryTypes::Interval.new(
|
11
|
-
:upper => 1, :lower => 1
|
11
|
+
:upper => 1, :lower => 1,
|
12
|
+
:lower_included => true, :upper_included => true)
|
12
13
|
end
|
13
14
|
|
14
15
|
context 'root definition object' do
|
@@ -148,13 +149,15 @@ describe ADLParser do
|
|
148
149
|
|
149
150
|
it 'existence are 0..1' do
|
150
151
|
existence = OpenEHR::AssumedLibraryTypes::Interval.new(
|
151
|
-
:lower => 0, :upper => 1
|
152
|
+
:lower => 0, :upper => 1,
|
153
|
+
:lower_included => true, :upper_included => true)
|
152
154
|
@attr.existence.should == existence
|
153
155
|
end
|
154
156
|
|
155
157
|
it 'cardinality interval is 0..8' do
|
156
158
|
interval = OpenEHR::AssumedLibraryTypes::Interval.new(
|
157
|
-
:lower => 0, :upper => 8
|
159
|
+
:lower => 0, :upper => 8,
|
160
|
+
:lower_included => true, :upper_included => true)
|
158
161
|
@attr.cardinality.interval.should == interval
|
159
162
|
end
|
160
163
|
|
@@ -191,7 +194,7 @@ describe ADLParser do
|
|
191
194
|
|
192
195
|
it 'occurences is upper unbounded' do
|
193
196
|
occurrences = OpenEHR::AssumedLibraryTypes::Interval.new(
|
194
|
-
:lower => 0)
|
197
|
+
:lower => 0, :lower_included => true)
|
195
198
|
@second.occurrences.should == occurrences
|
196
199
|
end
|
197
200
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openehr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shinji KOBAYASHI
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2013-03-
|
15
|
+
date: 2013-03-23 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rake
|