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,293 @@
1
+ archetype (adl_version=1.4)
2
+ openEHR-EHR-CLUSTER.exam-uterus.v1
3
+ specialize
4
+ openEHR-EHR-CLUSTER.exam.v1
5
+
6
+ concept
7
+ [at0000.1] -- Examination of the uterus
8
+ language
9
+ original_language = <[ISO_639-1::en]>
10
+ description
11
+ original_author = <
12
+ ["name"] = <"Sam Heard">
13
+ ["organisation"] = <"Ocean Informatics">
14
+ ["date"] = <"08/04/2007">
15
+ ["email"] = <"sam.heard@oceaninformatics.biz">
16
+ >
17
+ details = <
18
+ ["en"] = <
19
+ language = <[ISO_639-1::en]>
20
+ purpose = <"A cluster for recording findings on physical examination of the uterus.">
21
+ use = <"">
22
+ keywords = <"examination", "physical", "uterus", "pregnancy">
23
+ misuse = <"">
24
+ >
25
+ >
26
+ lifecycle_state = <"Initial">
27
+ other_contributors = <>
28
+
29
+ definition
30
+ CLUSTER[at0000.1] matches { -- Examination of the uterus
31
+ items cardinality matches {0..*; unordered} matches {
32
+ CLUSTER[at0004] occurrences matches {0..1} matches { -- Normal statements
33
+ items cardinality matches {0..*; unordered} matches {
34
+ ELEMENT[at0005] occurrences matches {0..*} matches { -- Normal statement
35
+ value matches {
36
+ DV_TEXT matches {*}
37
+ }
38
+ }
39
+ }
40
+ }
41
+ ELEMENT[at0002] occurrences matches {0..1} matches { -- Clinical description
42
+ value matches {
43
+ DV_TEXT matches {*}
44
+ }
45
+ }
46
+ CLUSTER[at0008] occurrences matches {0..1} matches { -- Findings
47
+ items cardinality matches {0..*; unordered} matches {
48
+ allow_archetype CLUSTER occurrences matches {0..*} matches {
49
+ include
50
+ archetype_id/value matches {/palpation\.v1draft/}
51
+ archetype_id/value matches {/inspection\.v1draft/}
52
+ exclude
53
+ archetype_id/value matches {/.*/}
54
+ }
55
+ ELEMENT[at0.24] occurrences matches {0..1} matches { -- Position
56
+ value matches {
57
+ DV_CODED_TEXT matches {
58
+ defining_code matches {
59
+ [local::
60
+ at0.26, -- Anteverted
61
+ at0.27] -- Retroverted
62
+ }
63
+ }
64
+ }
65
+ }
66
+ CLUSTER[at0.1] occurrences matches {0..1} matches { -- Size
67
+ items cardinality matches {0..*; unordered} matches {
68
+ ELEMENT[at0.2] occurrences matches {0..1} matches { -- Fundal height
69
+ value matches {
70
+ C_DV_QUANTITY <
71
+ property = <[openehr::122]>
72
+ list = <
73
+ ["1"] = <
74
+ units = <"cm">
75
+ magnitude = <|0.0..100.0|>
76
+ precision = <|1|>
77
+ >
78
+ >
79
+ >
80
+ }
81
+ }
82
+ allow_archetype CLUSTER occurrences matches {0..1} matches {
83
+ include
84
+ archetype_id/value matches {/dimensions\.v1/}
85
+ archetype_id/value matches {/size\.v1draft/}
86
+ }
87
+ ELEMENT[at0.3] occurrences matches {0..1} matches { -- Weeks of gestation
88
+ value matches {
89
+ DV_DURATION matches {
90
+ value matches {PW}
91
+ }
92
+ }
93
+ }
94
+ ELEMENT[at0.20] occurrences matches {0..1} matches { -- Relative to anatomical markers
95
+ value matches {
96
+ DV_CODED_TEXT matches {
97
+ defining_code matches {
98
+ [local::
99
+ at0.21, -- At symphisis pubis
100
+ at0.22, -- At umbilicus
101
+ at0.23] -- At xiphisternum
102
+ }
103
+ }
104
+ }
105
+ }
106
+ }
107
+ }
108
+ ELEMENT[at0.4] occurrences matches {0..1} matches { -- Assessment of liquor volume
109
+ value matches {
110
+ -3|[local::at0.5], -- Markedly reduced
111
+ -2|[local::at0.6], -- Reduced
112
+ -1|[local::at0.7], -- Slightly reduced
113
+ 0|[local::at0.8], -- Normal
114
+ 1|[local::at0.9], -- Slightly increased
115
+ 2|[local::at0.10], -- Increased
116
+ 3|[local::at0.11] -- Markedly increased
117
+ }
118
+ }
119
+ ELEMENT[at0.12] occurrences matches {0..1} matches { -- Number of fetuses
120
+ value matches {
121
+ DV_COUNT matches {
122
+ magnitude matches {|>=0|}
123
+ }
124
+ }
125
+ }
126
+ CLUSTER[at0.18] occurrences matches {0..1} matches { -- Fetus
127
+ items cardinality matches {1..*; unordered} matches {
128
+ allow_archetype CLUSTER occurrences matches {0..*} matches {
129
+ include
130
+ archetype_id/value matches {/exam-fetus\.v1/}
131
+ }
132
+ }
133
+ }
134
+ CLUSTER[at0003] occurrences matches {0..1} matches { -- Detail
135
+ items cardinality matches {0..*; unordered} matches {
136
+ allow_archetype CLUSTER occurrences matches {0..1} matches {
137
+ include
138
+ archetype_id/value matches {/exam-generic\.v1/}
139
+ }
140
+ }
141
+ }
142
+ }
143
+ }
144
+ ELEMENT[at0006] occurrences matches {0..*} matches { -- Image
145
+ value matches {
146
+ DV_MULTIMEDIA matches {
147
+ media_type matches {
148
+ [openEHR::
149
+ 426,
150
+ 427,
151
+ 429]
152
+ }
153
+ }
154
+ }
155
+ }
156
+ }
157
+ }
158
+
159
+ ontology
160
+ term_definitions = <
161
+ ["en"] = <
162
+ items = <
163
+ ["at0.1"] = <
164
+ description = <"Information about the size of the object for examination">
165
+ text = <"Size">
166
+ >
167
+ ["at0.10"] = <
168
+ description = <"The amount of liquor is definitely increased">
169
+ text = <"Increased">
170
+ >
171
+ ["at0.11"] = <
172
+ description = <"The amount of liquor is greatly increased compared to normal for gestation">
173
+ text = <"Markedly increased">
174
+ >
175
+ ["at0.12"] = <
176
+ description = <"The number of foetuses that are in the uterus">
177
+ text = <"Number of fetuses">
178
+ >
179
+ ["at0.18"] = <
180
+ description = <"Information about one or more foetuses">
181
+ text = <"Fetus">
182
+ >
183
+ ["at0.19"] = <
184
+ description = <"An optional identifier of the fetus">
185
+ text = <"Identifier">
186
+ >
187
+ ["at0.2"] = <
188
+ description = <"The height of the uterine fundus measured from the symphysis pubis">
189
+ text = <"Fundal height">
190
+ >
191
+ ["at0.20"] = <
192
+ description = <"Relative size of uterus related to anatomy of person">
193
+ text = <"Relative to anatomical markers">
194
+ >
195
+ ["at0.21"] = <
196
+ description = <"*">
197
+ text = <"At symphisis pubis">
198
+ >
199
+ ["at0.22"] = <
200
+ description = <"*">
201
+ text = <"At umbilicus">
202
+ >
203
+ ["at0.23"] = <
204
+ description = <"*">
205
+ text = <"At xiphisternum">
206
+ >
207
+ ["at0.24"] = <
208
+ description = <"Position of uterus">
209
+ text = <"Position">
210
+ >
211
+ ["at0.25"] = <
212
+ description = <"Position of uterus">
213
+ text = <"Position">
214
+ >
215
+ ["at0.26"] = <
216
+ description = <"Uterine fundus is tipped forward">
217
+ text = <"Anteverted">
218
+ >
219
+ ["at0.27"] = <
220
+ description = <"Uterine fundus is tipped backward">
221
+ text = <"Retroverted">
222
+ >
223
+ ["at0.28"] = <
224
+ description = <"*">
225
+ text = <"New element">
226
+ >
227
+ ["at0.3"] = <
228
+ description = <"The size in terms of weeks of pregnancy">
229
+ text = <"Weeks of gestation">
230
+ >
231
+ ["at0.4"] = <
232
+ description = <"The relative amount of liquor present in the uterus">
233
+ text = <"Assessment of liquor volume">
234
+ >
235
+ ["at0.5"] = <
236
+ description = <"The amount of liquor is much less than expected">
237
+ text = <"Markedly reduced">
238
+ >
239
+ ["at0.6"] = <
240
+ description = <"The amount of liquor is definitely reduced">
241
+ text = <"Reduced">
242
+ >
243
+ ["at0.7"] = <
244
+ description = <"The amount of liquor is slightly reduced">
245
+ text = <"Slightly reduced">
246
+ >
247
+ ["at0.8"] = <
248
+ description = <"The amount of liquor is normal for gestation">
249
+ text = <"Normal">
250
+ >
251
+ ["at0.9"] = <
252
+ description = <"The amount of liquor is slightly increased">
253
+ text = <"Slightly increased">
254
+ >
255
+ ["at0000"] = <
256
+ description = <"Generic examination cluster for describing a finding on physical examination">
257
+ text = <"Examination">
258
+ >
259
+ ["at0000.1"] = <
260
+ description = <"For recording findings of the uterus including when pregnant">
261
+ text = <"Examination of the uterus">
262
+ >
263
+ ["at0001"] = <
264
+ description = <"The object of the examination">
265
+ text = <"Object">
266
+ >
267
+ ["at0002"] = <
268
+ description = <"Textural description of the part examined">
269
+ text = <"Clinical description">
270
+ >
271
+ ["at0003"] = <
272
+ description = <"More focused examination findings">
273
+ text = <"Detail">
274
+ >
275
+ ["at0004"] = <
276
+ description = <"A group of statements about the normality of the examination">
277
+ text = <"Normal statements">
278
+ >
279
+ ["at0005"] = <
280
+ description = <"A specific statement of normality">
281
+ text = <"Normal statement">
282
+ >
283
+ ["at0006"] = <
284
+ description = <"Drawing or image of the area examined">
285
+ text = <"Image">
286
+ >
287
+ ["at0008"] = <
288
+ description = <"Clinical findings">
289
+ text = <"Findings">
290
+ >
291
+ >
292
+ >
293
+ >
@@ -0,0 +1,53 @@
1
+ archetype (adl_version=1.4)
2
+ openEHR-EHR-COMPOSITION.discharge.v1draft
3
+
4
+ concept
5
+ [at0000] -- Discharge
6
+ language
7
+ original_language = <[ISO_639-1::en]>
8
+ description
9
+ original_author = <
10
+ ["name"] = <"unknown">
11
+ >
12
+ details = <
13
+ ["en"] = <
14
+ language = <[ISO_639-1::en]>
15
+ purpose = <"For communication at the time of discharge from an episode of care or an institution.">
16
+ use = <"">
17
+ misuse = <"">
18
+ >
19
+ >
20
+ lifecycle_state = <"Initial">
21
+ other_contributors = <>
22
+
23
+ definition
24
+ COMPOSITION[at0000] matches { -- Discharge
25
+ category matches {
26
+ DV_CODED_TEXT matches {
27
+ defining_code matches {[openehr::433]}
28
+ }
29
+ }
30
+ context matches {
31
+ EVENT_CONTEXT matches {
32
+ other_context matches {
33
+ ITEM_TREE[at0001] matches {*}
34
+ }
35
+ }
36
+ }
37
+ }
38
+
39
+ ontology
40
+ term_definitions = <
41
+ ["en"] = <
42
+ items = <
43
+ ["at0000"] = <
44
+ description = <"A summarising communication about at the time of discharge from an institution or an episode of care">
45
+ text = <"Discharge">
46
+ >
47
+ ["at0001"] = <
48
+ description = <"@ internal @">
49
+ text = <"Tree">
50
+ >
51
+ >
52
+ >
53
+ >
@@ -0,0 +1,45 @@
1
+ archetype (adl_version=1.4)
2
+ openEHR-EHR-COMPOSITION.encounter.v1draft
3
+
4
+ concept
5
+ [at0000] -- Encounter
6
+ language
7
+ original_language = <[ISO_639-1::en]>
8
+ description
9
+ original_author = <
10
+ ["name"] = <"Thomas Beale">
11
+ ["organisation"] = <"Ocean Informatics">
12
+ ["date"] = <"10/10/2005">
13
+ >
14
+ details = <
15
+ ["en"] = <
16
+ language = <[ISO_639-1::en]>
17
+ purpose = <"Record of encounter as a progress note.">
18
+ use = <"">
19
+ keywords = <"progress", "note", "encounter">
20
+ misuse = <"">
21
+ >
22
+ >
23
+ lifecycle_state = <"AuthorDraft">
24
+ other_contributors = <>
25
+
26
+ definition
27
+ COMPOSITION[at0000] matches { -- Encounter
28
+ category matches {
29
+ DV_CODED_TEXT matches {
30
+ defining_code matches {[openehr::433]}
31
+ }
32
+ }
33
+ }
34
+
35
+ ontology
36
+ term_definitions = <
37
+ ["en"] = <
38
+ items = <
39
+ ["at0000"] = <
40
+ description = <"Generic encounter or progress note composition">
41
+ text = <"Encounter">
42
+ >
43
+ >
44
+ >
45
+ >