open_ehr 0.6.1 → 0.9.0
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.
- data/Gemfile +10 -2
- data/Gemfile.lock +58 -18
- data/Guardfile +2 -1
- data/History.txt +10 -3
- data/Manifest.txt +3 -5
- data/README.rdoc +36 -32
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/bin/adl_validator.rb +84 -0
- data/lib/open_ehr/am/archetype/constraint_model/primitive.rb +11 -7
- data/lib/open_ehr/am/archetype/constraint_model.rb +4 -16
- data/lib/open_ehr/am/archetype/ontology.rb +37 -6
- data/lib/open_ehr/am/archetype.rb +6 -7
- data/lib/open_ehr/am/open_ehr_profile/data_types/text.rb +5 -2
- data/lib/open_ehr/parser/adl.rb +19 -0
- data/lib/open_ehr/parser/adl_grammar.tt +155 -0
- data/lib/open_ehr/parser/adl_parser.rb +48 -0
- data/lib/open_ehr/parser/cadl_grammar.tt +803 -0
- data/lib/open_ehr/parser/dadl.rb +13 -0
- data/lib/open_ehr/parser/dadl_grammar.tt +358 -0
- data/lib/open_ehr/parser/exception.rb +68 -0
- data/lib/open_ehr/parser/scanner/adl_scanner.rb +819 -0
- data/lib/open_ehr/parser/shared_token_grammar.tt +1200 -0
- data/lib/open_ehr/parser/validator.rb +20 -0
- data/lib/open_ehr/parser.rb +16 -12
- data/lib/open_ehr.rb +1 -0
- data/open_ehr.gemspec +364 -0
- data/spec/lib/open_ehr/am/archetype/archetype_spec.rb +7 -2
- data/spec/lib/open_ehr/am/archetype/constraint_model/c_multiple_attribute_spec.rb +0 -6
- data/spec/lib/open_ehr/am/archetype/constraint_model/c_object_spec.rb +10 -10
- data/spec/lib/open_ehr/am/archetype/constraint_model/c_single_attribute_spec.rb +0 -6
- data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_boolean_spec.rb +5 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_date_time_spec.rb +5 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_duration_spec.rb +5 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_integer_spec.rb +5 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_primitive_spec.rb +8 -6
- data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_real_spec.rb +7 -2
- data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_string_spec.rb +5 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_time_spec.rb +5 -0
- data/spec/lib/open_ehr/am/archetype/ontology/archetype_ontology_spec.rb +27 -7
- data/spec/lib/open_ehr/am/archetype/ontology/archetype_term_spec.rb +3 -3
- data/spec/lib/open_ehr/parser/adl/adl-test-ENTRY.assumed_types.v1.adl +88 -0
- data/spec/lib/open_ehr/parser/adl/adl-test-ENTRY.basic_types.v1.adl +143 -0
- data/spec/lib/open_ehr/parser/adl/adl-test-ENTRY.basic_types_fail.v1.adl +50 -0
- data/spec/lib/open_ehr/parser/adl/adl-test-ENTRY.most_minimal.v1.adl +27 -0
- data/spec/lib/open_ehr/parser/adl/adl-test-ENTRY.structure_test1.v1.adl +46 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-ACTION.imaging.v1.adl +275 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-ACTION.referral.v1.adl +351 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.auscultation-chest.v1.adl +765 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.auscultation.v1.adl +217 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.dimensions-circumference.v1.adl +134 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.dimensions.v1.adl +241 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.exam-abdomen.v1.adl +321 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.exam-chest.v1.adl +379 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.exam-fetus.v1.adl +577 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.exam-generic-joint.v1.adl +146 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.exam-generic-lymphnode.v1.adl +176 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.exam-generic-mass.v1.adl +221 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.exam-generic.v1.adl +139 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.exam-nervous_system.v1.adl +116 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.exam-uterine_cervix.v1.adl +420 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.exam-uterus.v1.adl +293 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-COMPOSITION.discharge.v1draft.adl +53 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-COMPOSITION.encounter.v1draft.adl +45 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-EVALUATION.adverse.v1.adl +411 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-INSTRUCTION.medication.v1.adl +88 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-INSTRUCTION.referral.v1.adl +84 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl +492 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-ITEM_TREE.follow_up.v1draft.adl +94 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-ITEM_TREE.imaging.v1.adl +127 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-ITEM_TREE.medication-formulation.v1.adl +457 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-ITEM_TREE.medication.v1.adl +869 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-ITEM_TREE.referral.v1.adl +494 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-OBSERVATION.apgar.v1.adl +545 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-OBSERVATION.blood_pressure.v1.adl +673 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-OBSERVATION.body_mass_index.v1.adl +166 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-SECTION.findings.v1.adl +47 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-SECTION.reason_for_encounter.v1.adl +51 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-SECTION.summary.v1.adl +52 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-SECTION.vital_signs.v1.adl +54 -0
- data/spec/lib/open_ehr/parser/adl/openEHR-EHR-cadl_sample.v1.adl +9 -0
- data/spec/lib/open_ehr/parser/adl_parser_spec.rb +210 -0
- data/spec/lib/open_ehr/parser/base_spec.rb +19 -0
- data/spec/spec.opts +2 -1
- data/spec/spec_helper.rb +3 -0
- metadata +166 -52
- data/doc/README_rdoc.html +0 -148
- data/doc/created.rid +0 -2
- data/doc/images/brick.png +0 -0
- data/doc/images/brick_link.png +0 -0
- data/doc/images/bug.png +0 -0
- data/doc/images/bullet_black.png +0 -0
- data/doc/images/bullet_toggle_minus.png +0 -0
- data/doc/images/bullet_toggle_plus.png +0 -0
- data/doc/images/date.png +0 -0
- data/doc/images/find.png +0 -0
- data/doc/images/loadingAnimation.gif +0 -0
- data/doc/images/macFFBgHack.png +0 -0
- data/doc/images/package.png +0 -0
- data/doc/images/page_green.png +0 -0
- data/doc/images/page_white_text.png +0 -0
- data/doc/images/page_white_width.png +0 -0
- data/doc/images/plugin.png +0 -0
- data/doc/images/ruby.png +0 -0
- data/doc/images/tag_green.png +0 -0
- data/doc/images/wrench.png +0 -0
- data/doc/images/wrench_orange.png +0 -0
- data/doc/images/zoom.png +0 -0
- data/doc/index.html +0 -54
- data/doc/js/darkfish.js +0 -116
- data/doc/js/jquery.js +0 -32
- data/doc/js/quicksearch.js +0 -114
- data/doc/js/thickbox-compressed.js +0 -10
- data/doc/rdoc.css +0 -706
- data/lib/#open_ehr.rb# +0 -11
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
require 'shared_token_grammar'
|
|
2
|
+
require 'dadl_grammar'
|
|
3
|
+
require 'cadl_grammar'
|
|
4
|
+
require 'adl'
|
|
5
|
+
|
|
6
|
+
module OpenEHR
|
|
7
|
+
module Parser
|
|
8
|
+
grammar ADLGrammar
|
|
9
|
+
|
|
10
|
+
include SharedToken
|
|
11
|
+
include DADLGrammar
|
|
12
|
+
include CADL
|
|
13
|
+
|
|
14
|
+
rule archetype
|
|
15
|
+
arch_identification
|
|
16
|
+
arch_specialisation?
|
|
17
|
+
arch_concept
|
|
18
|
+
arch_language?
|
|
19
|
+
arch_description?
|
|
20
|
+
arch_definition
|
|
21
|
+
arch_invariant?
|
|
22
|
+
arch_ontology {
|
|
23
|
+
def archetype_id
|
|
24
|
+
arch_identification.archetype_id
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def adl_version
|
|
28
|
+
arch_identification.adl_version
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def concept
|
|
32
|
+
arch_concept.value
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def original_language
|
|
36
|
+
elements[3].original_language
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def translations
|
|
40
|
+
elements[3].translations
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def description
|
|
44
|
+
elements[4].values
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def definition
|
|
48
|
+
arch_definition.value
|
|
49
|
+
end
|
|
50
|
+
}
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
rule arch_identification
|
|
54
|
+
head:arch_head V_ARCHETYPE_ID space {
|
|
55
|
+
def archetype_id
|
|
56
|
+
elements[1].text_value
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def adl_version
|
|
60
|
+
head.adl_version
|
|
61
|
+
end
|
|
62
|
+
}
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
rule arch_head
|
|
66
|
+
SYM_ARCHETYPE m:arch_meta_data? {
|
|
67
|
+
def adl_version
|
|
68
|
+
m.adl_version
|
|
69
|
+
end
|
|
70
|
+
}
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
rule arch_meta_data
|
|
74
|
+
'(' arch_meta_data_items ')' space {
|
|
75
|
+
def adl_version
|
|
76
|
+
arch_meta_data_items.adl_version
|
|
77
|
+
end
|
|
78
|
+
}
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
rule arch_meta_data_items
|
|
82
|
+
item:arch_meta_data_item (';' other_item:arch_meta_data_item)* {
|
|
83
|
+
def adl_version
|
|
84
|
+
item.adl_version
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def is_controled?
|
|
88
|
+
item.is_controled? or other_item.map {|i| i.is_controled}
|
|
89
|
+
end
|
|
90
|
+
}
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
rule arch_meta_data_item
|
|
94
|
+
SYM_ADL_VERSION SYM_EQ V_VERSION_STRING space {
|
|
95
|
+
def adl_version
|
|
96
|
+
elements[2].text_value
|
|
97
|
+
end
|
|
98
|
+
}
|
|
99
|
+
/ SYM_IS_CONTROLED space {
|
|
100
|
+
def is_controled?
|
|
101
|
+
true if elements[0]
|
|
102
|
+
end
|
|
103
|
+
}
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
rule arch_specialisation
|
|
107
|
+
SYM_SPECIALIZE arch_id:V_ARCHETYPE_ID space {
|
|
108
|
+
def specialised?
|
|
109
|
+
true if elements[0]
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def archetype_id
|
|
113
|
+
arch_id.text_value
|
|
114
|
+
end
|
|
115
|
+
}
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
rule arch_concept
|
|
119
|
+
SYM_CONCEPT conc:V_LOCAL_TERM_CODE_REF space {
|
|
120
|
+
def value
|
|
121
|
+
conc.text_value[1..-2]
|
|
122
|
+
end
|
|
123
|
+
}
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
rule arch_language
|
|
127
|
+
SYM_LANGUAGE lang:V_DADL_TEXT <ArchLanguage>
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
rule arch_description
|
|
131
|
+
SYM_DESCRIPTION desc:V_DADL_TEXT space {
|
|
132
|
+
def values
|
|
133
|
+
desc.value
|
|
134
|
+
end
|
|
135
|
+
}
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
rule arch_definition
|
|
139
|
+
SYM_DEFINITION definition:V_CADL_TEXT space {
|
|
140
|
+
def value
|
|
141
|
+
definition.value
|
|
142
|
+
end
|
|
143
|
+
}
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
rule arch_invariant
|
|
147
|
+
SYM_INVARIANT V_ASSERTION_TEXT space
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
rule arch_ontology
|
|
151
|
+
SYM_ONTOLOGY V_DADL_TEXT space
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
$:.unshift(File.dirname(__FILE__)) unless
|
|
2
|
+
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
|
3
|
+
require 'polyglot'
|
|
4
|
+
require 'treetop'
|
|
5
|
+
|
|
6
|
+
include OpenEHR::Parser
|
|
7
|
+
|
|
8
|
+
module OpenEHR
|
|
9
|
+
module Parser
|
|
10
|
+
class ADLParser < Base
|
|
11
|
+
def initialize(filename)
|
|
12
|
+
super(filename)
|
|
13
|
+
data = File.read(filename)
|
|
14
|
+
Treetop.load(File.dirname(__FILE__)+'/adl_grammar.tt')
|
|
15
|
+
ap = ADLGrammarParser.new
|
|
16
|
+
@result = ap.parse(data)
|
|
17
|
+
if @result.nil?
|
|
18
|
+
puts ap.failure_reason
|
|
19
|
+
puts ap.failure_line
|
|
20
|
+
puts ap.failure_column
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def parse
|
|
25
|
+
archetype = ArchetypeMock.new(:archetype_id => @result.archetype_id,
|
|
26
|
+
:adl_version => @result.adl_version,
|
|
27
|
+
:concept => @result.concept,
|
|
28
|
+
:original_language => @result.original_language,
|
|
29
|
+
:translation => @result.translations,
|
|
30
|
+
:description => @result.description,
|
|
31
|
+
:definition => @result.definition)
|
|
32
|
+
return archetype
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# temporary class for parser building
|
|
36
|
+
|
|
37
|
+
class ArchetypeMock
|
|
38
|
+
def initialize(args = { })
|
|
39
|
+
@params = args
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def method_missing(name)
|
|
43
|
+
@params[name]
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end # of Parser
|
|
48
|
+
end # of OpenEHR
|