open_ehr 0.9.5 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +3 -0
- data/README.rdoc +35 -25
- data/VERSION +1 -1
- data/lib/open_ehr.rb +2 -3
- data/lib/open_ehr/am.rb +1 -2
- data/lib/open_ehr/am/openehr_profile.rb +0 -1
- data/lib/open_ehr/am/openehr_profile/data_types.rb +2 -1
- data/lib/open_ehr/am/openehr_profile/data_types/basic.rb +88 -1
- data/lib/open_ehr/am/openehr_profile/data_types/quantity.rb +51 -2
- data/lib/open_ehr/am/openehr_profile/data_types/text.rb +2 -2
- data/lib/open_ehr/assumed_library_types.rb +5 -0
- data/lib/open_ehr/parser/adl.rb +5 -5
- data/lib/open_ehr/parser/adl_grammar.tt +13 -16
- data/lib/open_ehr/parser/adl_parser.rb +13 -5
- data/lib/open_ehr/parser/cadl_grammar.tt +247 -31
- data/lib/open_ehr/parser/cadl_node.rb +25 -0
- data/lib/open_ehr/parser/dadl_grammar.tt +6 -6
- data/lib/open_ehr/parser/shared_token_grammar.tt +14 -5
- data/lib/open_ehr/rm.rb +1 -2
- data/lib/open_ehr/rm/composition/content/entry.rb +8 -1
- data/lib/open_ehr/rm/data_types.rb +2 -2
- data/lib/open_ehr/rm/data_types/quantity.rb +1 -2
- data/lib/open_ehr/rm/data_types/quantity/date_time.rb +8 -5
- data/lib/open_ehr/rm/data_types/text.rb +7 -6
- data/lib/open_ehr/rm/support/identification.rb +13 -9
- data/open_ehr.gemspec +34 -4
- data/spec/lib/open_ehr/am/openehr_profile/data_types/basic/c_dv_state_spec.rb +34 -0
- data/spec/lib/open_ehr/am/openehr_profile/data_types/basic/non_terminal_state_spec.rb +36 -0
- data/spec/lib/open_ehr/am/openehr_profile/data_types/basic/state_machine_spec.rb +34 -0
- data/spec/lib/open_ehr/am/openehr_profile/data_types/basic/state_spec.rb +26 -0
- data/spec/lib/open_ehr/am/openehr_profile/data_types/basic/terminal_state_spec.rb +18 -0
- data/spec/lib/open_ehr/am/openehr_profile/data_types/basic/transition_spec.rb +62 -0
- data/spec/lib/open_ehr/am/openehr_profile/data_types/quantity/c_dv_ordinal_spec.rb +41 -0
- data/spec/lib/open_ehr/am/openehr_profile/data_types/quantity/c_dv_quantity_spec.rb +50 -0
- data/spec/lib/open_ehr/am/openehr_profile/data_types/quantity/c_quantity_item_spec.rb +46 -0
- data/spec/lib/open_ehr/am/openehr_profile/data_types/text/c_code_phrase_spec.rb +0 -1
- data/spec/lib/open_ehr/assumed_library_types/interval_spec.rb +5 -0
- data/spec/lib/open_ehr/parser/adl14/adl-test-composition.dv_coded_text.test.adl +1 -1
- data/spec/lib/open_ehr/parser/adl14/adl-test-entry.archetype_desc_missing_purpose.test.adl +1 -1
- data/spec/lib/open_ehr/parser/adl14/adl-test-entry.c_dv_ordinal.test.adl +1 -1
- data/spec/lib/open_ehr/parser/adl14/adl-test-entry.c_dv_quantity_empty.test.adl +1 -1
- data/spec/lib/open_ehr/parser/adl14/adl-test-entry.c_dv_quantity_full.test.adl +1 -1
- data/spec/lib/open_ehr/parser/adl14/adl-test-entry.c_dv_quantity_full2.test.adl +1 -1
- data/spec/lib/open_ehr/parser/adl14/adl-test-entry.c_dv_quantity_full3.test.adl +1 -1
- data/spec/lib/open_ehr/parser/adl14/adl-test-entry.c_dv_quantity_item_units_only.test.adl +1 -1
- data/spec/lib/open_ehr/parser/adl14/adl-test-entry.c_dv_quantity_list.test.adl +1 -1
- data/spec/lib/open_ehr/parser/adl14/adl-test-entry.c_dv_quantity_property.test.adl +1 -1
- data/spec/lib/open_ehr/parser/adl14/adl-test-entry.c_dv_quantity_reversed.test.adl +1 -1
- data/spec/lib/open_ehr/parser/adl14/adl-test-entry.constraint_binding.test.adl +1 -1
- data/spec/lib/open_ehr/parser/adl14/adl-test-entry.constraint_ref.test.adl +1 -1
- data/spec/lib/open_ehr/parser/adl14/adl-test-entry.empty_other_contributors.test.adl +1 -1
- data/spec/lib/open_ehr/parser/adl14/adl-test-entry.missing_language.test.adl +1 -1
- data/spec/lib/open_ehr/parser/adl14/adl-test-entry.mixed_node_types.draft.adl +1 -1
- data/spec/lib/open_ehr/parser/adl14/adl-test-entry.most_minimal.test.adl +1 -1
- data/spec/lib/open_ehr/parser/adl14/adl-test-entry.multi_language.test.adl +1 -1
- data/spec/lib/open_ehr/parser/adl14/adl-test-entry.special_string.test.adl +1 -1
- data/spec/lib/open_ehr/parser/adl14/adl-test-entry.structure_test1.test.adl +1 -1
- data/spec/lib/open_ehr/parser/adl14/adl-test-entry.structure_test2.test.adl +1 -1
- data/spec/lib/open_ehr/parser/adl14/adl-test-entry.term_binding.test.adl +1 -1
- data/spec/lib/open_ehr/parser/adl14/adl-test-entry.term_binding2.test.adl +1 -1
- data/spec/lib/open_ehr/parser/adl14/adl-test-entry.unicode_BOM_support.test.adl +1 -1
- data/spec/lib/open_ehr/parser/adl14/adl-test-entry.unicode_support.test.adl +1 -1
- data/spec/lib/open_ehr/parser/adl_archetype_ontology_binding_spec.rb +3 -3
- data/spec/lib/open_ehr/parser/c_dv_quantity_any_allowed_spec.rb +34 -0
- data/spec/lib/open_ehr/parser/c_dv_quantity_shared_example_for_lacked_items_spec.rb +36 -0
- data/spec/lib/open_ehr/parser/c_dv_quantity_shared_example_spec.rb +146 -0
- data/spec/lib/open_ehr/parser/cdv_ordinal_parse_spec.rb +231 -0
- data/spec/lib/open_ehr/parser/code_phrase_spec.rb +7 -2
- data/spec/lib/open_ehr/parser/constraint_binding_spec.rb +26 -0
- data/spec/lib/open_ehr/parser/constraint_ref_spec.rb +32 -0
- data/spec/lib/open_ehr/parser/dv_coded_text_parse_spec.rb +27 -0
- data/spec/lib/open_ehr/parser/empty_other_contributors_spec.rb +19 -0
- data/spec/lib/open_ehr/parser/missing_language_spec.rb +20 -0
- data/spec/lib/open_ehr/parser/missing_purpose_spec.rb +23 -0
- data/spec/lib/open_ehr/parser/mixed_node_types_spec.rb +16 -0
- data/spec/lib/open_ehr/parser/most_minimal_adl_spec.rb +19 -0
- data/spec/lib/open_ehr/parser/multi_language_spec.rb +58 -0
- data/spec/lib/open_ehr/parser/path_based_terminology_binding_spec.rb +30 -0
- data/spec/lib/open_ehr/parser/special_string_spec.rb +20 -0
- data/spec/lib/open_ehr/parser/structure_comment_spec.rb +21 -0
- data/spec/lib/open_ehr/parser/structure_nested_comments_spec.rb +22 -0
- data/spec/lib/open_ehr/parser/structure_spec.rb +202 -0
- data/spec/lib/open_ehr/parser/term_binding_spec.rb +54 -0
- data/spec/lib/open_ehr/parser/unicode_bom_spec.rb +17 -0
- data/spec/lib/open_ehr/parser/unicode_support_spec.rb +46 -0
- data/spec/lib/open_ehr/rm/common/change_control/imported_version_spec.rb +0 -1
- data/spec/lib/open_ehr/rm/common/change_control/original_version_spec.rb +2 -2
- data/spec/lib/open_ehr/rm/common/change_control/version_spec.rb +0 -1
- data/spec/lib/open_ehr/rm/common/change_control/versioned_object_spec.rb +0 -1
- data/spec/lib/open_ehr/rm/common/generic/revision_history_item_spec.rb +3 -3
- data/spec/lib/open_ehr/rm/composition/content/entry/entry_spec.rb +12 -2
- data/spec/lib/open_ehr/rm/data_types/quantity/date_time/dv_date_time_spec.rb +1 -0
- data/spec/lib/open_ehr/rm/data_types/quantity/date_time/{dv_tempral_spec.rb → dv_temporal_spec.rb} +1 -0
- data/spec/lib/open_ehr/rm/data_types/text/dv_text_spec.rb +25 -3
- data/spec/lib/open_ehr/rm/demographic/party_spec.rb +1 -3
- data/spec/lib/open_ehr/rm/support/identification/access_group_ref_spec.rb +2 -2
- data/spec/lib/open_ehr/rm/support/identification/object_version_id_spec.rb +3 -4
- metadata +69 -39
@@ -0,0 +1,62 @@
|
|
1
|
+
# ticket 197
|
2
|
+
require File.dirname(__FILE__) + '/../../../../../../spec_helper'
|
3
|
+
require 'open_ehr/am/openehr_profile/data_types/basic'
|
4
|
+
include ::OpenEHR::AM::OpenEHRProfile::DataTypes::Basic
|
5
|
+
|
6
|
+
describe Transition do
|
7
|
+
before(:each) do
|
8
|
+
next_state = State.new(:name => 'IN_EXECUTION')
|
9
|
+
@transition = Transition.new(:event => 'start',
|
10
|
+
:guard => 'PROPOSED',
|
11
|
+
:action => 'order',
|
12
|
+
:next_state => next_state)
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'is an instance of TerminalState' do
|
16
|
+
@transition.should be_an_instance_of Transition
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'event start' do
|
20
|
+
@transition.event.should == 'start'
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'guard is PROPOSED' do
|
24
|
+
@transition.guard.should == 'PROPOSED'
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'action is order' do
|
28
|
+
@transition.action.should == 'order'
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'next state is named IN_EXECUTION' do
|
32
|
+
@transition.next_state.name.should == 'IN_EXECUTION'
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'raise error if event is nil' do
|
36
|
+
expect {@transition.event = nil}.to raise_error
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'raise error if event is empty' do
|
40
|
+
expect {@transition.event = ''}.to raise_error
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'does not raise error if guard is nil' do
|
44
|
+
expect {@transition.guard = nil}.to_not raise_error
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'raise error if action is empty' do
|
48
|
+
expect {@transition.guard = ''}.to raise_error
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'does not raise error if action is nil' do
|
52
|
+
expect {@transition.action = nil}.to_not raise_error
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'raise error if action is empty' do
|
56
|
+
expect {@transition.action = ''}.to raise_error
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'raise error if next_state is nil' do
|
60
|
+
expect {@transition.next_state = nil}.to raise_error
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../../../../spec_helper'
|
2
|
+
require 'open_ehr/am/openehr_profile/data_types/quantity'
|
3
|
+
include ::OpenEHR::AM::OpenEHRProfile::DataTypes::Quantity
|
4
|
+
require 'open_ehr/rm/data_types/quantity'
|
5
|
+
include ::OpenEHR::RM::DataTypes::Quantity
|
6
|
+
include ::OpenEHR::RM::DataTypes::Text
|
7
|
+
include OpenEHR::AssumedLibraryTypes
|
8
|
+
|
9
|
+
describe CDvOrdinal do
|
10
|
+
before(:each) do
|
11
|
+
occurrences = Interval.new(:upper => 1, :lower => 1)
|
12
|
+
symbol = stub(DvCodedText, :code_string => 'AML')
|
13
|
+
list = [DvOrdinal.new(:value => 1,:symbol => symbol)]
|
14
|
+
@c_dv_ordinal = CDvOrdinal.new(:list => list,
|
15
|
+
:path => 'value/ordinal',
|
16
|
+
:occurrences => occurrences,
|
17
|
+
:rm_type_name => 'DvOrdinal')
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'is an instance of CDvOrdinal' do
|
22
|
+
@c_dv_ordinal.should be_an_instance_of CDvOrdinal
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'inherits DvDomain class, path is value/ordinal' do
|
26
|
+
@c_dv_ordinal.path.should == 'value/ordinal'
|
27
|
+
end
|
28
|
+
|
29
|
+
it '1st of list valie is 1' do
|
30
|
+
@c_dv_ordinal.list[0].value.should == 1
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'symbol code string is AML' do
|
34
|
+
@c_dv_ordinal.list[0].symbol.code_string.should == 'AML'
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'list is empty then any_allowed is true' do
|
38
|
+
@c_dv_ordinal.list = nil
|
39
|
+
@c_dv_ordinal.should be_any_allowed
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# ticket 199
|
2
|
+
require File.dirname(__FILE__) + '/../../../../../../spec_helper'
|
3
|
+
include ::OpenEHR::AM::OpenEHRProfile::DataTypes::Quantity
|
4
|
+
include ::OpenEHR::RM::DataTypes::Text
|
5
|
+
include OpenEHR::AssumedLibraryTypes
|
6
|
+
|
7
|
+
describe CDvQuantity do
|
8
|
+
before(:each) do
|
9
|
+
occurrences = Interval.new(:upper => 1, :lower => 1)
|
10
|
+
property = stub(CodePhrase, :code_string => 'AML')
|
11
|
+
list = [CQuantityItem.new(:magnitude => 10, :units => 'mg')]
|
12
|
+
@c_dv_quantity = CDvQuantity.new(:list => list,
|
13
|
+
:path => 'value/quantity',
|
14
|
+
:property => property,
|
15
|
+
:occurrences => occurrences,
|
16
|
+
:rm_type_name => 'DvQuantity')
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'is an instance of CDvQuantity' do
|
21
|
+
@c_dv_quantity.should be_an_instance_of CDvQuantity
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'path is value/quantity' do
|
25
|
+
@c_dv_quantity.path.should == 'value/quantity'
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'property code string is AML' do
|
29
|
+
@c_dv_quantity.property.code_string.should == 'AML'
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'first item of list is 10mg' do
|
33
|
+
@c_dv_quantity.list[0].magnitude.should be 10
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'is not any allowed' do
|
37
|
+
@c_dv_quantity.should_not be_any_allowed
|
38
|
+
end
|
39
|
+
|
40
|
+
context 'list and property are not assigned' do
|
41
|
+
before(:each) do
|
42
|
+
@c_dv_quantity.list = nil
|
43
|
+
@c_dv_quantity.property = nil
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'is any allowed' do
|
47
|
+
@c_dv_quantity.should be_any_allowed
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# ticket 203
|
2
|
+
include OpenEHR::AssumedLibraryTypes
|
3
|
+
include OpenEHR::AM::OpenEHRProfile::DataTypes::Quantity
|
4
|
+
|
5
|
+
describe CQuantityItem do
|
6
|
+
before(:each) do
|
7
|
+
magnitude = Interval.new(:upper => 100, :lower => 0)
|
8
|
+
precision = Interval.new(:upper => 10, :lower => 2)
|
9
|
+
@c_quantity_item = CQuantityItem.new(:units => 'mg',
|
10
|
+
:magnitude => magnitude,
|
11
|
+
:precision => precision)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'is an instance of CQuantityItem' do
|
15
|
+
@c_quantity_item.should be_an_instance_of CQuantityItem
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'magnitude upper is 100' do
|
19
|
+
@c_quantity_item.magnitude.upper.should be 100
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'precision lower is -2' do
|
23
|
+
@c_quantity_item.precision.lower.should be 2
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'units is not nil' do
|
27
|
+
expect {@c_quantity_item.units = nil}.to raise_error
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'units is not be empty' do
|
31
|
+
expect {@c_quantity_item.units = ''}.to raise_error
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'is not precision unconstrained' do
|
35
|
+
@c_quantity_item.should_not be_precision_unconstrained
|
36
|
+
end
|
37
|
+
context 'precision unconstrained' do
|
38
|
+
before(:each) do
|
39
|
+
@c_quantity_item.precision = Interval.new(:upper => -1, :lower => -1)
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'precision unconstrained is true' do
|
43
|
+
@c_quantity_item.should be_precision_unconstrained
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -51,6 +51,11 @@ describe Interval do
|
|
51
51
|
@interval.has?(1).should_not be_true
|
52
52
|
end
|
53
53
|
|
54
|
+
it 'should be equal lower and upper is same' do
|
55
|
+
interval = Interval.new(:upper => 10, :lower => 1)
|
56
|
+
@interval.should == interval
|
57
|
+
end
|
58
|
+
|
54
59
|
describe Interval, 'when lower included' do
|
55
60
|
before do
|
56
61
|
@interval.lower_included = true
|
@@ -78,11 +78,11 @@ describe ADLParser do
|
|
78
78
|
end
|
79
79
|
|
80
80
|
it 'terminology id is SNOMED-CT' do
|
81
|
-
@term.terminology_id.value.should == 'SNOMED-CT'
|
81
|
+
@term[0].terminology_id.value.should == 'SNOMED-CT'
|
82
82
|
end
|
83
83
|
|
84
84
|
it 'code_string is 123456' do
|
85
|
-
@term.code_string.should == '123456'
|
85
|
+
@term[0].code_string.should == '123456'
|
86
86
|
end
|
87
87
|
end
|
88
88
|
end
|
@@ -90,7 +90,7 @@ describe ADLParser do
|
|
90
90
|
context 'constraint bindings' do
|
91
91
|
it 'terminology SNOMED-CT, constraint code is ac0001' do
|
92
92
|
@ontology.constraint_binding(:terminology => 'SNOMED-CT',
|
93
|
-
:code => 'ac0001').should ==
|
93
|
+
:code => 'ac0001').value.should ==
|
94
94
|
'http://openEHR.org/testconstraintbinding'
|
95
95
|
end
|
96
96
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# ticket 174
|
2
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
3
|
+
require File.dirname(__FILE__) + '/parser_spec_helper'
|
4
|
+
require 'open_ehr/am/openehr_profile/data_types/quantity'
|
5
|
+
include ::OpenEHR::AM::OpenEHRProfile::DataTypes::Quantity
|
6
|
+
require 'open_ehr/rm/data_types/quantity'
|
7
|
+
include ::OpenEHR::RM::DataTypes::Quantity
|
8
|
+
|
9
|
+
describe 'CDvQuantity empty' do
|
10
|
+
before(:all) do
|
11
|
+
archetype = adl14_archetype('adl-test-entry.c_dv_quantity_empty.test.adl')
|
12
|
+
@c_dv_quantity = archetype.definition.attributes[0].children[0].attributes[0].children[0].attributes[0].children[0]
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'is an instance of CDvQuantity' do
|
16
|
+
@c_dv_quantity.should be_an_instance_of CDvQuantity
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'list is nil' do
|
20
|
+
@c_dv_quantity.list.should be_nil
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'property is nil' do
|
24
|
+
@c_dv_quantity.property.should be_nil
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'assumed value is nil' do
|
28
|
+
@c_dv_quantity.assumed_value.should be_nil
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'is any allowed' do
|
32
|
+
@c_dv_quantity.should be_any_allowed
|
33
|
+
end
|
34
|
+
end
|