openehr 1.2.4 → 1.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|