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.
Files changed (115) hide show
  1. data/Gemfile +10 -2
  2. data/Gemfile.lock +58 -18
  3. data/Guardfile +2 -1
  4. data/History.txt +10 -3
  5. data/Manifest.txt +3 -5
  6. data/README.rdoc +36 -32
  7. data/Rakefile +1 -1
  8. data/VERSION +1 -1
  9. data/bin/adl_validator.rb +84 -0
  10. data/lib/open_ehr/am/archetype/constraint_model/primitive.rb +11 -7
  11. data/lib/open_ehr/am/archetype/constraint_model.rb +4 -16
  12. data/lib/open_ehr/am/archetype/ontology.rb +37 -6
  13. data/lib/open_ehr/am/archetype.rb +6 -7
  14. data/lib/open_ehr/am/open_ehr_profile/data_types/text.rb +5 -2
  15. data/lib/open_ehr/parser/adl.rb +19 -0
  16. data/lib/open_ehr/parser/adl_grammar.tt +155 -0
  17. data/lib/open_ehr/parser/adl_parser.rb +48 -0
  18. data/lib/open_ehr/parser/cadl_grammar.tt +803 -0
  19. data/lib/open_ehr/parser/dadl.rb +13 -0
  20. data/lib/open_ehr/parser/dadl_grammar.tt +358 -0
  21. data/lib/open_ehr/parser/exception.rb +68 -0
  22. data/lib/open_ehr/parser/scanner/adl_scanner.rb +819 -0
  23. data/lib/open_ehr/parser/shared_token_grammar.tt +1200 -0
  24. data/lib/open_ehr/parser/validator.rb +20 -0
  25. data/lib/open_ehr/parser.rb +16 -12
  26. data/lib/open_ehr.rb +1 -0
  27. data/open_ehr.gemspec +364 -0
  28. data/spec/lib/open_ehr/am/archetype/archetype_spec.rb +7 -2
  29. data/spec/lib/open_ehr/am/archetype/constraint_model/c_multiple_attribute_spec.rb +0 -6
  30. data/spec/lib/open_ehr/am/archetype/constraint_model/c_object_spec.rb +10 -10
  31. data/spec/lib/open_ehr/am/archetype/constraint_model/c_single_attribute_spec.rb +0 -6
  32. data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_boolean_spec.rb +5 -0
  33. data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_date_time_spec.rb +5 -0
  34. data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_duration_spec.rb +5 -0
  35. data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_integer_spec.rb +5 -0
  36. data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_primitive_spec.rb +8 -6
  37. data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_real_spec.rb +7 -2
  38. data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_string_spec.rb +5 -0
  39. data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_time_spec.rb +5 -0
  40. data/spec/lib/open_ehr/am/archetype/ontology/archetype_ontology_spec.rb +27 -7
  41. data/spec/lib/open_ehr/am/archetype/ontology/archetype_term_spec.rb +3 -3
  42. data/spec/lib/open_ehr/parser/adl/adl-test-ENTRY.assumed_types.v1.adl +88 -0
  43. data/spec/lib/open_ehr/parser/adl/adl-test-ENTRY.basic_types.v1.adl +143 -0
  44. data/spec/lib/open_ehr/parser/adl/adl-test-ENTRY.basic_types_fail.v1.adl +50 -0
  45. data/spec/lib/open_ehr/parser/adl/adl-test-ENTRY.most_minimal.v1.adl +27 -0
  46. data/spec/lib/open_ehr/parser/adl/adl-test-ENTRY.structure_test1.v1.adl +46 -0
  47. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-ACTION.imaging.v1.adl +275 -0
  48. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-ACTION.referral.v1.adl +351 -0
  49. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.auscultation-chest.v1.adl +765 -0
  50. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.auscultation.v1.adl +217 -0
  51. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.dimensions-circumference.v1.adl +134 -0
  52. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.dimensions.v1.adl +241 -0
  53. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.exam-abdomen.v1.adl +321 -0
  54. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.exam-chest.v1.adl +379 -0
  55. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.exam-fetus.v1.adl +577 -0
  56. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.exam-generic-joint.v1.adl +146 -0
  57. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.exam-generic-lymphnode.v1.adl +176 -0
  58. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.exam-generic-mass.v1.adl +221 -0
  59. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.exam-generic.v1.adl +139 -0
  60. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.exam-nervous_system.v1.adl +116 -0
  61. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.exam-uterine_cervix.v1.adl +420 -0
  62. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-CLUSTER.exam-uterus.v1.adl +293 -0
  63. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-COMPOSITION.discharge.v1draft.adl +53 -0
  64. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-COMPOSITION.encounter.v1draft.adl +45 -0
  65. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-EVALUATION.adverse.v1.adl +411 -0
  66. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-INSTRUCTION.medication.v1.adl +88 -0
  67. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-INSTRUCTION.referral.v1.adl +84 -0
  68. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl +492 -0
  69. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-ITEM_TREE.follow_up.v1draft.adl +94 -0
  70. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-ITEM_TREE.imaging.v1.adl +127 -0
  71. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-ITEM_TREE.medication-formulation.v1.adl +457 -0
  72. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-ITEM_TREE.medication.v1.adl +869 -0
  73. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-ITEM_TREE.referral.v1.adl +494 -0
  74. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-OBSERVATION.apgar.v1.adl +545 -0
  75. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-OBSERVATION.blood_pressure.v1.adl +673 -0
  76. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-OBSERVATION.body_mass_index.v1.adl +166 -0
  77. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-SECTION.findings.v1.adl +47 -0
  78. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-SECTION.reason_for_encounter.v1.adl +51 -0
  79. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-SECTION.summary.v1.adl +52 -0
  80. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-SECTION.vital_signs.v1.adl +54 -0
  81. data/spec/lib/open_ehr/parser/adl/openEHR-EHR-cadl_sample.v1.adl +9 -0
  82. data/spec/lib/open_ehr/parser/adl_parser_spec.rb +210 -0
  83. data/spec/lib/open_ehr/parser/base_spec.rb +19 -0
  84. data/spec/spec.opts +2 -1
  85. data/spec/spec_helper.rb +3 -0
  86. metadata +166 -52
  87. data/doc/README_rdoc.html +0 -148
  88. data/doc/created.rid +0 -2
  89. data/doc/images/brick.png +0 -0
  90. data/doc/images/brick_link.png +0 -0
  91. data/doc/images/bug.png +0 -0
  92. data/doc/images/bullet_black.png +0 -0
  93. data/doc/images/bullet_toggle_minus.png +0 -0
  94. data/doc/images/bullet_toggle_plus.png +0 -0
  95. data/doc/images/date.png +0 -0
  96. data/doc/images/find.png +0 -0
  97. data/doc/images/loadingAnimation.gif +0 -0
  98. data/doc/images/macFFBgHack.png +0 -0
  99. data/doc/images/package.png +0 -0
  100. data/doc/images/page_green.png +0 -0
  101. data/doc/images/page_white_text.png +0 -0
  102. data/doc/images/page_white_width.png +0 -0
  103. data/doc/images/plugin.png +0 -0
  104. data/doc/images/ruby.png +0 -0
  105. data/doc/images/tag_green.png +0 -0
  106. data/doc/images/wrench.png +0 -0
  107. data/doc/images/wrench_orange.png +0 -0
  108. data/doc/images/zoom.png +0 -0
  109. data/doc/index.html +0 -54
  110. data/doc/js/darkfish.js +0 -116
  111. data/doc/js/jquery.js +0 -32
  112. data/doc/js/quicksearch.js +0 -114
  113. data/doc/js/thickbox-compressed.js +0 -10
  114. data/doc/rdoc.css +0 -706
  115. 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