openehr 1.1.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 (384) hide show
  1. data/.document +5 -0
  2. data/.rspec +2 -0
  3. data/.travis.yml +3 -0
  4. data/Gemfile +23 -0
  5. data/Guardfile +12 -0
  6. data/History.txt +36 -0
  7. data/PostInstall.txt +9 -0
  8. data/README.rdoc +82 -0
  9. data/Rakefile +44 -0
  10. data/VERSION +1 -0
  11. data/doc/openehr_terminology.xml +2700 -0
  12. data/lib/openehr.rb +11 -0
  13. data/lib/openehr/am.rb +8 -0
  14. data/lib/openehr/am/archetype.rb +133 -0
  15. data/lib/openehr/am/archetype/assertion.rb +190 -0
  16. data/lib/openehr/am/archetype/constraint_model.rb +328 -0
  17. data/lib/openehr/am/archetype/constraint_model/primitive.rb +327 -0
  18. data/lib/openehr/am/archetype/ontology.rb +126 -0
  19. data/lib/openehr/am/openehr_profile.rb +9 -0
  20. data/lib/openehr/am/openehr_profile/data_types.rb +13 -0
  21. data/lib/openehr/am/openehr_profile/data_types/basic.rb +114 -0
  22. data/lib/openehr/am/openehr_profile/data_types/quantity.rb +67 -0
  23. data/lib/openehr/am/openehr_profile/data_types/text.rb +22 -0
  24. data/lib/openehr/assumed_library_types.rb +691 -0
  25. data/lib/openehr/parser.rb +23 -0
  26. data/lib/openehr/parser/adl.rb +57 -0
  27. data/lib/openehr/parser/adl_grammar.tt +245 -0
  28. data/lib/openehr/parser/adl_parser.rb +52 -0
  29. data/lib/openehr/parser/cadl_grammar.tt +1527 -0
  30. data/lib/openehr/parser/cadl_node.rb +44 -0
  31. data/lib/openehr/parser/dadl.rb +13 -0
  32. data/lib/openehr/parser/dadl_grammar.tt +358 -0
  33. data/lib/openehr/parser/exception.rb +68 -0
  34. data/lib/openehr/parser/shared_token_grammar.tt +1229 -0
  35. data/lib/openehr/parser/validator.rb +19 -0
  36. data/lib/openehr/parser/xml_perser.rb +13 -0
  37. data/lib/openehr/rm.rb +15 -0
  38. data/lib/openehr/rm/common.rb +14 -0
  39. data/lib/openehr/rm/common/archetyped.rb +182 -0
  40. data/lib/openehr/rm/common/change_control.rb +332 -0
  41. data/lib/openehr/rm/common/directory.rb +29 -0
  42. data/lib/openehr/rm/common/generic.rb +216 -0
  43. data/lib/openehr/rm/common/resource.rb +154 -0
  44. data/lib/openehr/rm/composition.rb +103 -0
  45. data/lib/openehr/rm/composition/content.rb +22 -0
  46. data/lib/openehr/rm/composition/content/entry.rb +253 -0
  47. data/lib/openehr/rm/composition/content/navigation.rb +31 -0
  48. data/lib/openehr/rm/data_structures.rb +25 -0
  49. data/lib/openehr/rm/data_structures/history.rb +117 -0
  50. data/lib/openehr/rm/data_structures/item_structure.rb +218 -0
  51. data/lib/openehr/rm/data_structures/item_structure/representation.rb +63 -0
  52. data/lib/openehr/rm/data_types.rb +14 -0
  53. data/lib/openehr/rm/data_types/basic.rb +108 -0
  54. data/lib/openehr/rm/data_types/charset.lst +818 -0
  55. data/lib/openehr/rm/data_types/charset_extract.rb +24 -0
  56. data/lib/openehr/rm/data_types/encapsulated.rb +98 -0
  57. data/lib/openehr/rm/data_types/quantity.rb +402 -0
  58. data/lib/openehr/rm/data_types/quantity/date_time.rb +256 -0
  59. data/lib/openehr/rm/data_types/text.rb +169 -0
  60. data/lib/openehr/rm/data_types/time_specification.rb +75 -0
  61. data/lib/openehr/rm/data_types/uri.rb +83 -0
  62. data/lib/openehr/rm/demographic.rb +269 -0
  63. data/lib/openehr/rm/ehr.rb +162 -0
  64. data/lib/openehr/rm/integration.rb +27 -0
  65. data/lib/openehr/rm/security.rb +12 -0
  66. data/lib/openehr/rm/support.rb +14 -0
  67. data/lib/openehr/rm/support/definition.rb +15 -0
  68. data/lib/openehr/rm/support/identification.rb +412 -0
  69. data/lib/openehr/rm/support/measurement.rb +17 -0
  70. data/lib/openehr/rm/support/terminology.rb +135 -0
  71. data/lib/openehr/serializer.rb +272 -0
  72. data/lib/openehr/terminology.rb +7 -0
  73. data/lib/openehr/terminology/open_ehr_terminology.rb +41 -0
  74. data/lib/openehr/writer.rb +12 -0
  75. data/openehr.gemspec +472 -0
  76. data/spec/lib/openehr/am/archetype/archetype_spec.rb +103 -0
  77. data/spec/lib/openehr/am/archetype/assertion/assertion_spec.rb +60 -0
  78. data/spec/lib/openehr/am/archetype/assertion/assertion_variable_spec.rb +30 -0
  79. data/spec/lib/openehr/am/archetype/assertion/expr_binary_operator.rb +40 -0
  80. data/spec/lib/openehr/am/archetype/assertion/expr_item_spec.rb +28 -0
  81. data/spec/lib/openehr/am/archetype/assertion/expr_leaf_spec.rb +34 -0
  82. data/spec/lib/openehr/am/archetype/assertion/expr_operator_spec.rb +25 -0
  83. data/spec/lib/openehr/am/archetype/assertion/expr_unary_operator_spec.rb +26 -0
  84. data/spec/lib/openehr/am/archetype/assertion/operator_kind_spec.rb +114 -0
  85. data/spec/lib/openehr/am/archetype/constraint_model/archetype_constraint_spec.rb +56 -0
  86. data/spec/lib/openehr/am/archetype/constraint_model/archetype_internal_ref_spec.rb +36 -0
  87. data/spec/lib/openehr/am/archetype/constraint_model/archetype_slot_spec.rb +61 -0
  88. data/spec/lib/openehr/am/archetype/constraint_model/c_attribute_spec.rb +59 -0
  89. data/spec/lib/openehr/am/archetype/constraint_model/c_complex_object_spec.rb +39 -0
  90. data/spec/lib/openehr/am/archetype/constraint_model/c_defined_object_spec.rb +53 -0
  91. data/spec/lib/openehr/am/archetype/constraint_model/c_domain_type_spec.rb +25 -0
  92. data/spec/lib/openehr/am/archetype/constraint_model/c_multiple_attribute_spec.rb +23 -0
  93. data/spec/lib/openehr/am/archetype/constraint_model/c_object_spec.rb +61 -0
  94. data/spec/lib/openehr/am/archetype/constraint_model/c_primitive_object_spec.rb +33 -0
  95. data/spec/lib/openehr/am/archetype/constraint_model/c_reference_object_spec.rb +17 -0
  96. data/spec/lib/openehr/am/archetype/constraint_model/c_single_attribute_spec.rb +22 -0
  97. data/spec/lib/openehr/am/archetype/constraint_model/cardinality_spec.rb +68 -0
  98. data/spec/lib/openehr/am/archetype/constraint_model/constraint_ref_spec.rb +29 -0
  99. data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_boolean_spec.rb +57 -0
  100. data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_date_spec.rb +52 -0
  101. data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_date_time_spec.rb +136 -0
  102. data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_duration_spec.rb +41 -0
  103. data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_integer_spec.rb +67 -0
  104. data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_primitive_spec.rb +41 -0
  105. data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_real_spec.rb +19 -0
  106. data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_string_spec.rb +73 -0
  107. data/spec/lib/openehr/am/archetype/constraint_model/primitive/c_time_spec.rb +104 -0
  108. data/spec/lib/openehr/am/archetype/ontology/archetype_ontology_spec.rb +97 -0
  109. data/spec/lib/openehr/am/archetype/ontology/archetype_term_spec.rb +43 -0
  110. data/spec/lib/openehr/am/archetype/validity_kind_spec.rb +42 -0
  111. data/spec/lib/openehr/am/openehr_profile/data_types/basic/c_dv_state_spec.rb +34 -0
  112. data/spec/lib/openehr/am/openehr_profile/data_types/basic/non_terminal_state_spec.rb +36 -0
  113. data/spec/lib/openehr/am/openehr_profile/data_types/basic/state_machine_spec.rb +34 -0
  114. data/spec/lib/openehr/am/openehr_profile/data_types/basic/state_spec.rb +26 -0
  115. data/spec/lib/openehr/am/openehr_profile/data_types/basic/terminal_state_spec.rb +18 -0
  116. data/spec/lib/openehr/am/openehr_profile/data_types/basic/transition_spec.rb +62 -0
  117. data/spec/lib/openehr/am/openehr_profile/data_types/quantity/c_dv_ordinal_spec.rb +41 -0
  118. data/spec/lib/openehr/am/openehr_profile/data_types/quantity/c_dv_quantity_spec.rb +50 -0
  119. data/spec/lib/openehr/am/openehr_profile/data_types/quantity/c_quantity_item_spec.rb +46 -0
  120. data/spec/lib/openehr/am/openehr_profile/data_types/text/c_code_phrase_spec.rb +34 -0
  121. data/spec/lib/openehr/assumed_library_types/interval_spec.rb +145 -0
  122. data/spec/lib/openehr/assumed_library_types/iso8601_date_spec.rb +236 -0
  123. data/spec/lib/openehr/assumed_library_types/iso8601_date_time_spec.rb +47 -0
  124. data/spec/lib/openehr/assumed_library_types/iso8601_duration_spec.rb +150 -0
  125. data/spec/lib/openehr/assumed_library_types/iso8601_time_spec.rb +234 -0
  126. data/spec/lib/openehr/assumed_library_types/iso8601_timezone_spec.rb +57 -0
  127. data/spec/lib/openehr/assumed_library_types/time_definitions_spec.rb +136 -0
  128. data/spec/lib/openehr/assumed_library_types/timezone_spec.rb +42 -0
  129. data/spec/lib/openehr/parser/adl14/adl-test-ENTRY.assumed_types.v1.adl +88 -0
  130. data/spec/lib/openehr/parser/adl14/adl-test-ENTRY.basic_types.v1.adl +143 -0
  131. data/spec/lib/openehr/parser/adl14/adl-test-ENTRY.basic_types_fail.v1.adl +50 -0
  132. data/spec/lib/openehr/parser/adl14/adl-test-ENTRY.most_minimal.v1.adl +27 -0
  133. data/spec/lib/openehr/parser/adl14/adl-test-ENTRY.structure_test1.v1.adl +46 -0
  134. data/spec/lib/openehr/parser/adl14/adl-test-SOME_TYPE.generic_type_basic.draft.adl +56 -0
  135. data/spec/lib/openehr/parser/adl14/adl-test-SOME_TYPE.generic_type_use_node.draft.adl +63 -0
  136. data/spec/lib/openehr/parser/adl14/adl-test-car.paths.test.adl +80 -0
  137. data/spec/lib/openehr/parser/adl14/adl-test-car.use_node.test.adl +87 -0
  138. data/spec/lib/openehr/parser/adl14/adl-test-composition.dv_coded_text.test.adl +29 -0
  139. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_bindings.test.adl +47 -0
  140. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_desc_missing_purpose.test.adl +45 -0
  141. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_description.test.adl +61 -0
  142. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_description2.test.adl +45 -0
  143. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_identification.test.adl +26 -0
  144. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_internal_ref.test.adl +36 -0
  145. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_internal_ref2.test.adl +36 -0
  146. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_language.test.adl +47 -0
  147. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_language_no_accreditation.test.adl +38 -0
  148. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_language_order_of_translation_details.test.adl +40 -0
  149. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_ontology.test.adl +25 -0
  150. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_slot.test.adl +40 -0
  151. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_slot.test2.adl +37 -0
  152. data/spec/lib/openehr/parser/adl14/adl-test-entry.archetype_uncommonkeys.test.adl +29 -0
  153. data/spec/lib/openehr/parser/adl14/adl-test-entry.basic_types.test.adl +272 -0
  154. data/spec/lib/openehr/parser/adl14/adl-test-entry.c_code_phrase.test.adl +77 -0
  155. data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_ordinal.test.adl +66 -0
  156. data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_quantity_empty.test.adl +46 -0
  157. data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_quantity_full.test.adl +64 -0
  158. data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_quantity_full2.test.adl +64 -0
  159. data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_quantity_full3.test.adl +64 -0
  160. data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_quantity_item_units_only.test.adl +55 -0
  161. data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_quantity_list.test.adl +58 -0
  162. data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_quantity_property.test.adl +47 -0
  163. data/spec/lib/openehr/parser/adl14/adl-test-entry.c_dv_quantity_reversed.test.adl +59 -0
  164. data/spec/lib/openehr/parser/adl14/adl-test-entry.constraint_binding.test.adl +37 -0
  165. data/spec/lib/openehr/parser/adl14/adl-test-entry.constraint_ref.test.adl +43 -0
  166. data/spec/lib/openehr/parser/adl14/adl-test-entry.datetime.test.adl +183 -0
  167. data/spec/lib/openehr/parser/adl14/adl-test-entry.domain_types.test.adl +97 -0
  168. data/spec/lib/openehr/parser/adl14/adl-test-entry.durations.test.adl +109 -0
  169. data/spec/lib/openehr/parser/adl14/adl-test-entry.empty_other_contributors.test.adl +42 -0
  170. data/spec/lib/openehr/parser/adl14/adl-test-entry.missing_language.test.adl +23 -0
  171. data/spec/lib/openehr/parser/adl14/adl-test-entry.mixed_node_types.draft.adl +61 -0
  172. data/spec/lib/openehr/parser/adl14/adl-test-entry.most_minimal.test.adl +23 -0
  173. data/spec/lib/openehr/parser/adl14/adl-test-entry.multi_language.test.adl +52 -0
  174. data/spec/lib/openehr/parser/adl14/adl-test-entry.special_string.test.adl +88 -0
  175. data/spec/lib/openehr/parser/adl14/adl-test-entry.structure_test1.test.adl +45 -0
  176. data/spec/lib/openehr/parser/adl14/adl-test-entry.structure_test2.test.adl +45 -0
  177. data/spec/lib/openehr/parser/adl14/adl-test-entry.term_binding.test.adl +37 -0
  178. data/spec/lib/openehr/parser/adl14/adl-test-entry.term_binding2.test.adl +32 -0
  179. data/spec/lib/openehr/parser/adl14/adl-test-entry.testtranslations.test.adl +83 -0
  180. data/spec/lib/openehr/parser/adl14/adl-test-entry.translations_author_language.test.adl +34 -0
  181. data/spec/lib/openehr/parser/adl14/adl-test-entry.translations_language_author.test.adl +34 -0
  182. data/spec/lib/openehr/parser/adl14/adl-test-entry.unicode_BOM_support.test.adl +41 -0
  183. data/spec/lib/openehr/parser/adl14/adl-test-entry.unicode_support.test.adl +41 -0
  184. data/spec/lib/openehr/parser/adl14/openEHR-EHR-ACTION.imaging.v1.adl +275 -0
  185. data/spec/lib/openehr/parser/adl14/openEHR-EHR-ACTION.referral.v1.adl +351 -0
  186. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.auscultation-chest.v1.adl +765 -0
  187. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.auscultation.v1.adl +48 -0
  188. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.dimensions-circumference.v1.adl +134 -0
  189. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.dimensions.v1.adl +241 -0
  190. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-abdomen.v1.adl +321 -0
  191. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-chest.v1.adl +379 -0
  192. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-fetus.v1.adl +577 -0
  193. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-generic-joint.v1.adl +146 -0
  194. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-generic-lymphnode.v1.adl +176 -0
  195. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-generic-mass.v1.adl +221 -0
  196. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-generic.v1.adl +139 -0
  197. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-nervous_system.v1.adl +116 -0
  198. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-uterine_cervix.v1.adl +420 -0
  199. data/spec/lib/openehr/parser/adl14/openEHR-EHR-CLUSTER.exam-uterus.v1.adl +293 -0
  200. data/spec/lib/openehr/parser/adl14/openEHR-EHR-COMPOSITION.discharge.v1draft.adl +53 -0
  201. data/spec/lib/openehr/parser/adl14/openEHR-EHR-COMPOSITION.encounter.v1draft.adl +45 -0
  202. data/spec/lib/openehr/parser/adl14/openEHR-EHR-EVALUATION.adverse.v1.adl +411 -0
  203. data/spec/lib/openehr/parser/adl14/openEHR-EHR-EVALUATION.columna_vertebral.v1.adl +85 -0
  204. data/spec/lib/openehr/parser/adl14/openEHR-EHR-INSTRUCTION.medication.v1.adl +88 -0
  205. data/spec/lib/openehr/parser/adl14/openEHR-EHR-INSTRUCTION.referral.v1.adl +84 -0
  206. data/spec/lib/openehr/parser/adl14/openEHR-EHR-ITEM_TREE.Laboratory_request.v1.adl +492 -0
  207. data/spec/lib/openehr/parser/adl14/openEHR-EHR-ITEM_TREE.follow_up.v1draft.adl +94 -0
  208. data/spec/lib/openehr/parser/adl14/openEHR-EHR-ITEM_TREE.imaging.v1.adl +127 -0
  209. data/spec/lib/openehr/parser/adl14/openEHR-EHR-ITEM_TREE.medication-formulation.v1.adl +457 -0
  210. data/spec/lib/openehr/parser/adl14/openEHR-EHR-ITEM_TREE.medication.v1.adl +869 -0
  211. data/spec/lib/openehr/parser/adl14/openEHR-EHR-ITEM_TREE.referral.v1.adl +494 -0
  212. data/spec/lib/openehr/parser/adl14/openEHR-EHR-OBSERVATION.apgar.v1.adl +545 -0
  213. data/spec/lib/openehr/parser/adl14/openEHR-EHR-OBSERVATION.blood_pressure.v1.adl +673 -0
  214. data/spec/lib/openehr/parser/adl14/openEHR-EHR-OBSERVATION.body_mass_index.v1.adl +166 -0
  215. data/spec/lib/openehr/parser/adl14/openEHR-EHR-OBSERVATION.lab_test.v1.adl +376 -0
  216. data/spec/lib/openehr/parser/adl14/openEHR-EHR-OBSERVATION.testassumedvalue.v1.adl +99 -0
  217. data/spec/lib/openehr/parser/adl14/openEHR-EHR-SECTION.findings.v1.adl +47 -0
  218. data/spec/lib/openehr/parser/adl14/openEHR-EHR-SECTION.reason_for_encounter.v1.adl +51 -0
  219. data/spec/lib/openehr/parser/adl14/openEHR-EHR-SECTION.summary.v1.adl +52 -0
  220. data/spec/lib/openehr/parser/adl14/openEHR-EHR-SECTION.vital_signs.v1.adl +54 -0
  221. data/spec/lib/openehr/parser/adl_archetype_internal_ref2_spec.rb +42 -0
  222. data/spec/lib/openehr/parser/adl_archetype_internal_ref_spec.rb +125 -0
  223. data/spec/lib/openehr/parser/adl_archetype_internal_ref_with_generics_spec.rb +258 -0
  224. data/spec/lib/openehr/parser/adl_archetype_ontology_binding_spec.rb +98 -0
  225. data/spec/lib/openehr/parser/adl_archetype_ontology_spec.rb +42 -0
  226. data/spec/lib/openehr/parser/adl_archetype_slot_cluster_spec.rb +101 -0
  227. data/spec/lib/openehr/parser/adl_archetype_slot_spec.rb +193 -0
  228. data/spec/lib/openehr/parser/adl_archetype_uncommon_term_keys_spec.rb +25 -0
  229. data/spec/lib/openehr/parser/adl_description_spec.rb +164 -0
  230. data/spec/lib/openehr/parser/adl_identification_spec.rb +18 -0
  231. data/spec/lib/openehr/parser/adl_language_no_accreditation_spec.rb +66 -0
  232. data/spec/lib/openehr/parser/adl_language_order_spec.rb +68 -0
  233. data/spec/lib/openehr/parser/adl_language_spec.rb +119 -0
  234. data/spec/lib/openehr/parser/adl_language_translation_author_language_spec.rb +50 -0
  235. data/spec/lib/openehr/parser/adl_language_translation_language_author_spec.rb +46 -0
  236. data/spec/lib/openehr/parser/adl_parser_spec.rb +347 -0
  237. data/spec/lib/openehr/parser/adl_path_spec.rb +176 -0
  238. data/spec/lib/openehr/parser/base_spec.rb +19 -0
  239. data/spec/lib/openehr/parser/basic_generic_type_spec.rb +18 -0
  240. data/spec/lib/openehr/parser/basic_type_spec.rb +2922 -0
  241. data/spec/lib/openehr/parser/c_dv_quantity_any_allowed_spec.rb +34 -0
  242. data/spec/lib/openehr/parser/c_dv_quantity_shared_example_for_lacked_items_spec.rb +36 -0
  243. data/spec/lib/openehr/parser/c_dv_quantity_shared_example_spec.rb +146 -0
  244. data/spec/lib/openehr/parser/cdv_ordinal_parse_spec.rb +231 -0
  245. data/spec/lib/openehr/parser/code_phrase_spec.rb +96 -0
  246. data/spec/lib/openehr/parser/constraint_binding_spec.rb +26 -0
  247. data/spec/lib/openehr/parser/constraint_ref_spec.rb +32 -0
  248. data/spec/lib/openehr/parser/date_time_spec.rb +1953 -0
  249. data/spec/lib/openehr/parser/duration_spec.rb +475 -0
  250. data/spec/lib/openehr/parser/dv_coded_text_parse_spec.rb +27 -0
  251. data/spec/lib/openehr/parser/empty_other_contributors_spec.rb +19 -0
  252. data/spec/lib/openehr/parser/lab_test_parser_spec.rb +14 -0
  253. data/spec/lib/openehr/parser/missing_language_spec.rb +20 -0
  254. data/spec/lib/openehr/parser/missing_purpose_spec.rb +23 -0
  255. data/spec/lib/openehr/parser/mixed_node_types_spec.rb +16 -0
  256. data/spec/lib/openehr/parser/most_minimal_adl_spec.rb +19 -0
  257. data/spec/lib/openehr/parser/multi_language_spec.rb +58 -0
  258. data/spec/lib/openehr/parser/parser_spec_helper.rb +7 -0
  259. data/spec/lib/openehr/parser/path_based_terminology_binding_spec.rb +30 -0
  260. data/spec/lib/openehr/parser/special_string_spec.rb +20 -0
  261. data/spec/lib/openehr/parser/structure_comment_spec.rb +21 -0
  262. data/spec/lib/openehr/parser/structure_nested_comments_spec.rb +22 -0
  263. data/spec/lib/openehr/parser/structure_spec.rb +202 -0
  264. data/spec/lib/openehr/parser/term_binding_spec.rb +54 -0
  265. data/spec/lib/openehr/parser/unicode_bom_spec.rb +17 -0
  266. data/spec/lib/openehr/parser/unicode_support_spec.rb +46 -0
  267. data/spec/lib/openehr/rm/common/archetyped/archetyped_spec.rb +50 -0
  268. data/spec/lib/openehr/rm/common/archetyped/feeder_audit_details_spec.rb +60 -0
  269. data/spec/lib/openehr/rm/common/archetyped/feeder_audit_spec.rb +51 -0
  270. data/spec/lib/openehr/rm/common/archetyped/link_spec.rb +42 -0
  271. data/spec/lib/openehr/rm/common/archetyped/locatable_spec.rb +89 -0
  272. data/spec/lib/openehr/rm/common/archetyped/pathable_spec.rb +42 -0
  273. data/spec/lib/openehr/rm/common/change_control/contribution_spec.rb +56 -0
  274. data/spec/lib/openehr/rm/common/change_control/imported_version_spec.rb +62 -0
  275. data/spec/lib/openehr/rm/common/change_control/original_version_spec.rb +71 -0
  276. data/spec/lib/openehr/rm/common/change_control/version_spec.rb +91 -0
  277. data/spec/lib/openehr/rm/common/change_control/versioned_object_spec.rb +284 -0
  278. data/spec/lib/openehr/rm/common/directory/folder_spec.rb +26 -0
  279. data/spec/lib/openehr/rm/common/generic/attestation_spec.rb +62 -0
  280. data/spec/lib/openehr/rm/common/generic/audit_details_spec.rb +51 -0
  281. data/spec/lib/openehr/rm/common/generic/participation_spec.rb +36 -0
  282. data/spec/lib/openehr/rm/common/generic/party_identified_spec.rb +64 -0
  283. data/spec/lib/openehr/rm/common/generic/party_proxy_spec.rb +18 -0
  284. data/spec/lib/openehr/rm/common/generic/party_related_spec.rb +24 -0
  285. data/spec/lib/openehr/rm/common/generic/revision_history_item_spec.rb +43 -0
  286. data/spec/lib/openehr/rm/common/generic/revision_history_spec.rb +45 -0
  287. data/spec/lib/openehr/rm/common/resource/authored_resource_spec.rb +68 -0
  288. data/spec/lib/openehr/rm/common/resource/resource_description_item_spec.rb +105 -0
  289. data/spec/lib/openehr/rm/common/resource/resource_description_spec.rb +74 -0
  290. data/spec/lib/openehr/rm/common/resource/translation_details_spec.rb +35 -0
  291. data/spec/lib/openehr/rm/composition/composition_spec.rb +92 -0
  292. data/spec/lib/openehr/rm/composition/content/content_item_spec.rb +14 -0
  293. data/spec/lib/openehr/rm/composition/content/entry/action_spec.rb +69 -0
  294. data/spec/lib/openehr/rm/composition/content/entry/activity_spec.rb +61 -0
  295. data/spec/lib/openehr/rm/composition/content/entry/admin_entry_spec.rb +38 -0
  296. data/spec/lib/openehr/rm/composition/content/entry/care_entry_spec.rb +37 -0
  297. data/spec/lib/openehr/rm/composition/content/entry/entry_spec.rb +98 -0
  298. data/spec/lib/openehr/rm/composition/content/entry/evaluation_spec.rb +37 -0
  299. data/spec/lib/openehr/rm/composition/content/entry/instruction_details_spec.rb +51 -0
  300. data/spec/lib/openehr/rm/composition/content/entry/instruction_spec.rb +62 -0
  301. data/spec/lib/openehr/rm/composition/content/entry/ism_transition_spec.rb +46 -0
  302. data/spec/lib/openehr/rm/composition/content/entry/observation_spec.rb +45 -0
  303. data/spec/lib/openehr/rm/composition/content/navigation/section_spec.rb +32 -0
  304. data/spec/lib/openehr/rm/composition/event_context_spec.rb +88 -0
  305. data/spec/lib/openehr/rm/data_structures/data_structure_spec.rb +21 -0
  306. data/spec/lib/openehr/rm/data_structures/history/event_spec.rb +44 -0
  307. data/spec/lib/openehr/rm/data_structures/history/history_spec.rb +67 -0
  308. data/spec/lib/openehr/rm/data_structures/history/interval_event_spec.rb +43 -0
  309. data/spec/lib/openehr/rm/data_structures/item_structure/item_list_spec.rb +53 -0
  310. data/spec/lib/openehr/rm/data_structures/item_structure/item_single_spec.rb +29 -0
  311. data/spec/lib/openehr/rm/data_structures/item_structure/item_table_spec.rb +147 -0
  312. data/spec/lib/openehr/rm/data_structures/item_structure/item_tree_spec.rb +48 -0
  313. data/spec/lib/openehr/rm/data_structures/item_structure/representation/cluster_spec.rb +26 -0
  314. data/spec/lib/openehr/rm/data_structures/item_structure/representation/element_spec.rb +22 -0
  315. data/spec/lib/openehr/rm/data_types/basic/data_value_spec.rb +17 -0
  316. data/spec/lib/openehr/rm/data_types/basic/dv_boolean_spec.rb +29 -0
  317. data/spec/lib/openehr/rm/data_types/basic/dv_identifier_spec.rb +108 -0
  318. data/spec/lib/openehr/rm/data_types/basic/dv_state_spec.rb +44 -0
  319. data/spec/lib/openehr/rm/data_types/encapsulated/dv_encapsulated_spec.rb +42 -0
  320. data/spec/lib/openehr/rm/data_types/encapsulated/dv_multimedia_spec.rb +79 -0
  321. data/spec/lib/openehr/rm/data_types/encapsulated/dv_parsable_spec.rb +34 -0
  322. data/spec/lib/openehr/rm/data_types/quantity/date_time/dv_date_spec.rb +64 -0
  323. data/spec/lib/openehr/rm/data_types/quantity/date_time/dv_date_time_spec.rb +26 -0
  324. data/spec/lib/openehr/rm/data_types/quantity/date_time/dv_duration_spec.rb +44 -0
  325. data/spec/lib/openehr/rm/data_types/quantity/date_time/dv_temporal_spec.rb +25 -0
  326. data/spec/lib/openehr/rm/data_types/quantity/date_time/dv_time_spec.rb +41 -0
  327. data/spec/lib/openehr/rm/data_types/quantity/dv_absolute_quantity_spec.rb +35 -0
  328. data/spec/lib/openehr/rm/data_types/quantity/dv_amount_spec.rb +105 -0
  329. data/spec/lib/openehr/rm/data_types/quantity/dv_count_spec.rb +12 -0
  330. data/spec/lib/openehr/rm/data_types/quantity/dv_interval_spec.rb +17 -0
  331. data/spec/lib/openehr/rm/data_types/quantity/dv_ordered_spec.rb +60 -0
  332. data/spec/lib/openehr/rm/data_types/quantity/dv_ordinal_spec.rb +74 -0
  333. data/spec/lib/openehr/rm/data_types/quantity/dv_proportion_spec.rb +162 -0
  334. data/spec/lib/openehr/rm/data_types/quantity/dv_quantified_spec.rb +36 -0
  335. data/spec/lib/openehr/rm/data_types/quantity/dv_quantity_spec.rb +78 -0
  336. data/spec/lib/openehr/rm/data_types/quantity/proportion_kind_spec.rb +24 -0
  337. data/spec/lib/openehr/rm/data_types/quantity/reference_range_spec.rb +43 -0
  338. data/spec/lib/openehr/rm/data_types/text/code_phrase_spec.rb +23 -0
  339. data/spec/lib/openehr/rm/data_types/text/dv_paragraph_spec.rb +13 -0
  340. data/spec/lib/openehr/rm/data_types/text/dv_text_spec.rb +79 -0
  341. data/spec/lib/openehr/rm/data_types/text/term_mapping_spec.rb +59 -0
  342. data/spec/lib/openehr/rm/data_types/uri/dv_ehr_uri_spec.rb +21 -0
  343. data/spec/lib/openehr/rm/data_types/uri/dv_uri_spec.rb +36 -0
  344. data/spec/lib/openehr/rm/demographic/actor_spec.rb +79 -0
  345. data/spec/lib/openehr/rm/demographic/address_spec.rb +33 -0
  346. data/spec/lib/openehr/rm/demographic/capability_spec.rb +37 -0
  347. data/spec/lib/openehr/rm/demographic/contact_spec.rb +45 -0
  348. data/spec/lib/openehr/rm/demographic/party_identity_spec.rb +32 -0
  349. data/spec/lib/openehr/rm/demographic/party_relationship_spec.rb +84 -0
  350. data/spec/lib/openehr/rm/demographic/party_spec.rb +131 -0
  351. data/spec/lib/openehr/rm/demographic/role_spec.rb +58 -0
  352. data/spec/lib/openehr/rm/ehr/ehr_access_spec.rb +33 -0
  353. data/spec/lib/openehr/rm/ehr/ehr_spec.rb +139 -0
  354. data/spec/lib/openehr/rm/ehr/ehr_status_spec.rb +52 -0
  355. data/spec/lib/openehr/rm/ehr/versioned_composition_spec.rb +33 -0
  356. data/spec/lib/openehr/rm/integration/generic_entry_spec.rb +31 -0
  357. data/spec/lib/openehr/rm/support/identification/access_group_ref_spec.rb +19 -0
  358. data/spec/lib/openehr/rm/support/identification/archetype_id_spec.rb +152 -0
  359. data/spec/lib/openehr/rm/support/identification/generic_id_spec.rb +33 -0
  360. data/spec/lib/openehr/rm/support/identification/hier_object_id_spec.rb +12 -0
  361. data/spec/lib/openehr/rm/support/identification/internet_id_spec.rb +12 -0
  362. data/spec/lib/openehr/rm/support/identification/iso_oid_spec.rb +12 -0
  363. data/spec/lib/openehr/rm/support/identification/locatable_ref_spec.rb +34 -0
  364. data/spec/lib/openehr/rm/support/identification/object_id_spec.rb +24 -0
  365. data/spec/lib/openehr/rm/support/identification/object_ref_spec.rb +33 -0
  366. data/spec/lib/openehr/rm/support/identification/object_version_id_spec.rb +59 -0
  367. data/spec/lib/openehr/rm/support/identification/party_ref_spec.rb +29 -0
  368. data/spec/lib/openehr/rm/support/identification/template_id_spec.rb +12 -0
  369. data/spec/lib/openehr/rm/support/identification/terminology_id_spec.rb +33 -0
  370. data/spec/lib/openehr/rm/support/identification/uid_based_id_spec.rb +50 -0
  371. data/spec/lib/openehr/rm/support/identification/uid_spec.rb +29 -0
  372. data/spec/lib/openehr/rm/support/identification/version_tree_id_spec.rb +104 -0
  373. data/spec/lib/openehr/rm/support/measurement_service_spec.rb +7 -0
  374. data/spec/lib/openehr/rm/support/terminology_service_spec.rb +24 -0
  375. data/spec/lib/openehr/serializer/adl-test-entry.most_minimal.test.adl +20 -0
  376. data/spec/lib/openehr/serializer/adl_serializer_spec.rb +47 -0
  377. data/spec/lib/openehr/serializer/openEHR-EHR-SECTION.test.v1.adl +38 -0
  378. data/spec/lib/openehr/serializer/openEHR-EHR-SECTION.test.v1.xml +58 -0
  379. data/spec/lib/openehr/serializer/sample_archetype_spec.rb +44 -0
  380. data/spec/lib/openehr/serializer/xml_serializer_spec.rb +49 -0
  381. data/spec/lib/openehr/terminology/open_ehr_terminology_spec.rb +40 -0
  382. data/spec/spec.opts +6 -0
  383. data/spec/spec_helper.rb +58 -0
  384. metadata +631 -0
@@ -0,0 +1,88 @@
1
+ require File.dirname(__FILE__) + '/../../../../spec_helper'
2
+ include OpenEHR::RM::Composition
3
+ include OpenEHR::RM::DataTypes::Quantity::DateTime
4
+ include OpenEHR::RM::DataTypes::Text
5
+ include OpenEHR::RM::DataStructures::ItemStructure
6
+
7
+ describe EventContext do
8
+ before(:each) do
9
+ start = DvDateTime.new(:value => '2009-11-13T20:46:57')
10
+ setting_group = stub(CodePhrase, :code_string => '225')
11
+ setting = stub(DvCodedText, :defining_code => setting_group)
12
+ ending = DvDateTime.new(:value => '2010-10-14T09:00:00')
13
+ participations = stub(Array, :size => 5, :empty? => false)
14
+ other_context = stub(ItemStructure, :archetype_node_id => 'at0002')
15
+ @event_context = EventContext.new(:start_time => start,
16
+ :end_time => ending,
17
+ :setting => setting,
18
+ :participations => participations,
19
+ :location => 'ehime',
20
+ :other_context => other_context)
21
+ end
22
+
23
+ it 'should be an instance of EventContext' do
24
+ @event_context.should be_an_instance_of EventContext
25
+ end
26
+
27
+ it 'start_time should be assigned properly' do
28
+ @event_context.start_time.value.should == '2009-11-13T20:46:57'
29
+ end
30
+
31
+ it 'should raise ArgumentError with nil start_time' do
32
+ lambda {
33
+ @event_context.start_time = nil
34
+ }.should raise_error ArgumentError
35
+ end
36
+
37
+ it 'setting should be assigned properly' do
38
+ @event_context.setting.defining_code.code_string.should == '225'
39
+ end
40
+
41
+ it 'should raise ArgumentError with nil setting' do
42
+ lambda {
43
+ @event_context.setting = nil
44
+ }.should raise_error ArgumentError
45
+ end
46
+
47
+ it 'should vaildate setting code with Terminology service'
48
+
49
+ it 'end_time should be assigned properly' do
50
+ @event_context.end_time.value.should == '2010-10-14T09:00:00'
51
+ end
52
+
53
+ it 'participations should be properly assigned' do
54
+ @event_context.participations.size.should be_equal 5
55
+ end
56
+
57
+ it 'should raise ArgumentError with empty participations' do
58
+ lambda {
59
+ @event_context.participations = [ ]
60
+ }.should raise_error ArgumentError
61
+ end
62
+
63
+ it 'should not raise ArgumentError with nil participations' do
64
+ lambda {
65
+ @event_context.participations = nil
66
+ }.should_not raise_error ArgumentError
67
+ end
68
+
69
+ it 'location should be assigned properly' do
70
+ @event_context.location.should == 'ehime'
71
+ end
72
+
73
+ it 'should raise ArgumentError with empty location' do
74
+ lambda {
75
+ @event_context.location = ''
76
+ }.should raise_error ArgumentError
77
+ end
78
+
79
+ it 'should not raise ArgumentError with nil location' do
80
+ lambda {
81
+ @event_context.location = nil
82
+ }.should_not raise_error ArgumentError
83
+ end
84
+
85
+ it 'other_context should be assigned properly' do
86
+ @event_context.other_context.archetype_node_id.should == 'at0002'
87
+ end
88
+ end
@@ -0,0 +1,21 @@
1
+ require File.dirname(__FILE__) + '/../../../../spec_helper'
2
+ include OpenEHR::RM::DataStructures
3
+ include OpenEHR::RM::DataTypes::Text
4
+
5
+ describe DataStructure do
6
+ before(:each) do
7
+ name = DvText.new(:value => 'test')
8
+ @data_structure = DataStructure.new(:archetype_node_id => 'at0001',
9
+ :name => name)
10
+ end
11
+
12
+ it 'should be an instance of DataStructure' do
13
+ @data_structure.should be_an_instance_of DataStructure
14
+ end
15
+
16
+ it 'should raise NotImplementedError' do
17
+ lambda {
18
+ @data_structure.as_hierarchy
19
+ }.should raise_error NotImplementedError
20
+ end
21
+ end
@@ -0,0 +1,44 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::RM::DataStructures::History
3
+ include OpenEHR::RM::DataStructures::ItemStructure
4
+ include OpenEHR::RM::DataTypes::Text
5
+ include OpenEHR::RM::DataTypes::Quantity::DateTime
6
+
7
+ describe Event do
8
+ before(:each) do
9
+ time = DvDateTime.new(:value => '2009-11-12T10:19:33')
10
+ state = stub(ItemStructure, :archetype_node_id => 'at0002')
11
+ origin = DvDateTime.new(:value => '2009-11-11T10:20:40')
12
+ parent = stub(History, :origin => origin)
13
+ @event = Event.new(:archetype_node_id => 'at0001',
14
+ :name => DvText.new(:value => 'Event test'),
15
+ :time => time,
16
+ :data => 'data',
17
+ :state => state,
18
+ :parent => parent)
19
+ end
20
+
21
+ it 'should be an instance of Event' do
22
+ @event.should be_an_instance_of Event
23
+ end
24
+
25
+ it 'data should be assigned properly' do
26
+ @event.data.should == 'data'
27
+ end
28
+
29
+ it 'time should be assigned properly' do
30
+ @event.time.value.should == '2009-11-12T10:19:33'
31
+ end
32
+
33
+ it 'state should be assigned properly' do
34
+ @event.state.archetype_node_id.should == 'at0002'
35
+ end
36
+
37
+ it 'parent should be properly assigned' do
38
+ @event.parent.origin.value.should == '2009-11-11T10:20:40'
39
+ end
40
+
41
+ it 'offset should be diff of parent.origin from time' do
42
+ @event.offset.value.should == 'P0Y0M0W0DT23H58M53S'
43
+ end
44
+ end
@@ -0,0 +1,67 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::RM::DataStructures::History
3
+ include OpenEHR::RM::DataStructures::ItemStructure
4
+ include OpenEHR::RM::DataTypes::Text
5
+ include OpenEHR::RM::DataTypes::Quantity::DateTime
6
+
7
+ describe History do
8
+ before(:each) do
9
+ origin = DvDateTime.new(:value => '2009-11-01T00:00:00')
10
+ period = DvDuration.new(:value => 'P1Y2M3W4D')
11
+ duration = DvDuration.new(:value => 'P0Y0M0W6D')
12
+ events = [stub(Event, :archetype_node_id => 'at0002')]
13
+ summary = stub(ItemStructure, :archetype_node_id => 'at0003')
14
+ @history = History.new(:archetype_node_id => 'at0001',
15
+ :name => DvText.new(:value => 'history test'),
16
+ :origin => origin,
17
+ :period => period,
18
+ :duration => duration,
19
+ :events => events,
20
+ :summary => summary)
21
+ end
22
+
23
+ it 'should be an instance of History' do
24
+ @history.should be_an_instance_of History
25
+ end
26
+
27
+ it 'origin should be properly assigned' do
28
+ @history.origin.value.should == '2009-11-01T00:00:00'
29
+ end
30
+
31
+ it 'should raise ArgumentError with nil origin' do
32
+ lambda {
33
+ @history.origin = nil
34
+ }.should raise_error ArgumentError
35
+ end
36
+
37
+ it 'period should be properly assigned' do
38
+ @history.period.value.should == 'P1Y2M3W4D'
39
+ end
40
+
41
+ it 'duration should be properly assigned' do
42
+ @history.duration.value.should == 'P0Y0M0W6D'
43
+ end
44
+
45
+ it 'is_periodic? should be true when period is not nil' do
46
+ @history.is_periodic?.should be_true
47
+ end
48
+
49
+ it 'is_periodic? should be false when period is nil' do
50
+ @history.period = nil
51
+ @history.is_periodic?.should be_false
52
+ end
53
+
54
+ it 'events should be properly assigned' do
55
+ @history.events[0].archetype_node_id.should == 'at0002'
56
+ end
57
+
58
+ it 'empty events should raise ArgumentError' do
59
+ lambda {
60
+ @history.events = []
61
+ }.should raise_error ArgumentError
62
+ end
63
+
64
+ it 'summary should be properly assigned' do
65
+ @history.summary.archetype_node_id.should == 'at0003'
66
+ end
67
+ end
@@ -0,0 +1,43 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::RM::DataStructures::History
3
+ include OpenEHR::RM::DataStructures::ItemStructure
4
+ include OpenEHR::RM::DataTypes::Text
5
+ include OpenEHR::RM::DataTypes::Quantity::DateTime
6
+
7
+ describe IntervalEvent do
8
+ before(:each) do
9
+ time = DvDateTime.new(:value => '2009-11-12T10:19:33Z')
10
+ state = stub(ItemStructure, :archetype_node_id => 'at0002')
11
+ origin = DvDateTime.new(:value => '2009-11-11T10:20:40Z')
12
+ parent = stub(History, :origin => origin)
13
+ math_function = stub(DvCodedText, :value => 'mean')
14
+ width = DvDuration.new(:value => 'P0Y2M1W3DT5H7M3S')
15
+ @interval_event = IntervalEvent.new(:archetype_node_id => 'at0001',
16
+ :name => DvText.new(:value => 'Event test'),
17
+ :time => time,
18
+ :data => 'data',
19
+ :width => width,
20
+ :math_function => math_function,
21
+ :sample_count => 1234)
22
+ end
23
+
24
+ it 'should be an instance of IntervalEvent' do
25
+ @interval_event.should be_an_instance_of IntervalEvent
26
+ end
27
+
28
+ it 'width should be assigned properly' do
29
+ @interval_event.width.value.should == 'P0Y2M1W3DT5H7M3S'
30
+ end
31
+
32
+ it 'math_function should be assigned properly' do
33
+ @interval_event.math_function.value.should == 'mean'
34
+ end
35
+
36
+ it 'sample_count should be assigned properly' do
37
+ @interval_event.sample_count.should be_equal 1234
38
+ end
39
+
40
+ it 'should subtract time for interval start time' do
41
+ @interval_event.interval_start_time.value.should == '2009-09-09T05:12:30Z'
42
+ end
43
+ end
@@ -0,0 +1,53 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::RM::DataStructures::ItemStructure
3
+ include OpenEHR::RM::DataStructures::ItemStructure::Representation
4
+ include OpenEHR::RM::DataTypes::Text
5
+
6
+ describe ItemList do
7
+ before(:each) do
8
+ items = %w{one two three}.collect do |n|
9
+ Element.new(:name => DvText.new(:value => n),
10
+ :archetype_node_id => 'test')
11
+ end
12
+ item_list_name = DvText.new(:value => 'item list')
13
+ @item_list = ItemList.new(:name => item_list_name,
14
+ :archetype_node_id => 'test',
15
+ :items => items)
16
+
17
+ end
18
+
19
+ it 'should be instance of ItemList' do
20
+ @item_list.should be_an_instance_of ItemList
21
+ end
22
+
23
+ it 'count should be 3' do
24
+ @item_list.item_count.should be_equal 3
25
+ end
26
+
27
+ it 'count should be 0' do
28
+ @item_list.items = nil
29
+ @item_list.item_count.should be_equal 0
30
+ end
31
+
32
+
33
+ it 'retrieve the names of all items' do
34
+ @item_list.names.should == %w{one two three}.collect{|n|
35
+ DvText.new(:value => n)}
36
+ end
37
+
38
+ it 'should return the item with a name' do
39
+ @item_list.named_item('one').name.value.should == 'one'
40
+ end
41
+
42
+ it 'should return nil when item is not exist' do
43
+ @item_list.named_item('four').should be_nil
44
+ end
45
+
46
+ it 'retrieve the ith item with number' do
47
+ @item_list.ith_item(1).name.value.should == 'one'
48
+ end
49
+
50
+ it 'generate cluster of items' do
51
+ @item_list.as_hierarchy.name.value.should == 'item list'
52
+ end
53
+ end
@@ -0,0 +1,29 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+
3
+ include OpenEHR::RM::DataStructures::ItemStructure
4
+ include OpenEHR::RM::DataStructures::ItemStructure::Representation
5
+ include OpenEHR::RM::DataTypes::Text
6
+
7
+ describe ItemSingle do
8
+ before(:each) do
9
+ element = stub(Element, :archetype_node_id => 'at0002')
10
+ item_single_name = DvText.new(:value => 'item single')
11
+ @item_single = ItemSingle.new(:name => item_single_name,
12
+ :archetype_node_id => 'at0001',
13
+ :item => element)
14
+ end
15
+
16
+ it 'should be an instance of ItemSingle' do
17
+ @item_single.should be_an_instance_of ItemSingle
18
+ end
19
+
20
+ it 'should raise ArgumentError with nil item' do
21
+ lambda {
22
+ @item_single.item = nil
23
+ }.should raise_error ArgumentError
24
+ end
25
+
26
+ it 'should return as_hierarchy' do
27
+ @item_single.as_hierarchy.archetype_node_id.should == 'at0002'
28
+ end
29
+ end
@@ -0,0 +1,147 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+
3
+ include OpenEHR::RM::DataStructures::ItemStructure
4
+ include OpenEHR::RM::DataStructures::ItemStructure::Representation
5
+ include OpenEHR::RM::DataTypes::Text
6
+
7
+ def row(args)
8
+ return args.collect do |n|
9
+ Element.new(:name => DvText.new(:value => n),
10
+ :archetype_node_id => 'test')
11
+ end
12
+ end
13
+
14
+ def cluster_builder(name,rows)
15
+ return Cluster.new(:name => DvText.new(:value => name),
16
+ :archetype_node_id => 'test',
17
+ :items => rows)
18
+ end
19
+
20
+ describe ItemTable do
21
+ before(:each) do
22
+ row1 = row(%w{one two three})
23
+ row2 = row(%w{four five six})
24
+ rows = [row1, row2].collect{|r| cluster_builder('cluster',r)}
25
+ @item_table = ItemTable.new(:name => DvText.new(:value => 'item table'),
26
+ :archetype_node_id => 'test',
27
+ :rows => rows)
28
+ end
29
+
30
+ it 'should be an instance of ItemTable' do
31
+ @item_table.should be_an_instance_of ItemTable
32
+ end
33
+
34
+ it 's row count should be 2' do
35
+ @item_table.row_count.should be_equal 2
36
+ end
37
+
38
+ it 's row_count should be 0 when rows are nil' do
39
+ @item_table.rows = nil
40
+ @item_table.row_count.should be_equal 0
41
+ end
42
+
43
+ it 's column_count should be 3' do
44
+ @item_table.column_count.should be_equal 3
45
+ end
46
+
47
+ it 'column_count should be 0 when @rows == nil' do
48
+ @item_table.rows = nil
49
+ @item_table.column_count.should be_equal 0
50
+ end
51
+
52
+ it 's row_names should be cluster cluster' do
53
+ @item_table.row_names.should == %w{cluster cluster}.collect{|n|
54
+ DvText.new(:value => n)}
55
+ end
56
+
57
+ it 's row_names should be empty when items are nil' do
58
+ @item_table.rows = nil
59
+ @item_table.row_names.should == []
60
+ end
61
+
62
+ it 's column_names should one two three' do
63
+ @item_table.column_names.should == %w{one two three}.collect{|s|
64
+ DvText.new(:value => s)}
65
+ end
66
+
67
+ it 's column_names should empty when items aer nil' do
68
+ @item_table.rows = nil
69
+ @item_table.column_names.should == []
70
+ end
71
+
72
+ it 's ith_row(integer) should be ith row' do
73
+ @item_table.ith_row(2).items[1].name.value.should == 'five'
74
+ end
75
+
76
+ it 'should be invalid index under 0' do
77
+ lambda {@item_table.ith_row(0) }.should raise_error(ArgumentError)
78
+ end
79
+
80
+ it 'should be true because it has_row_with_name cluster' do
81
+ @item_table.has_row_with_name?('one').should be_true
82
+ end
83
+
84
+ it 'should be true because it does not have_row_with_name key' do
85
+ @item_table.has_row_with_name?('two').should_not be_true
86
+ end
87
+
88
+ it 'should raise argument error key is nil' do
89
+ lambda {@item_table.has_row_with_name?(nil)
90
+ }.should raise_error(ArgumentError)
91
+ end
92
+
93
+ it 'should raise argument error key is empty' do
94
+ lambda {@item_table.has_row_with_name?('')
95
+ }.should raise_error(ArgumentError)
96
+ end
97
+
98
+ it 'should be true because it has_column_with_name one' do
99
+ @item_table.has_column_with_name?('one').should be_true
100
+ end
101
+
102
+ it 'should be false it has_column with name ten' do
103
+ @item_table.has_column_with_name?('ten').should be_false
104
+ end
105
+
106
+ it 'second row should be named_row four' do
107
+ @item_table.named_row('four').items[1].name.value = 'five'
108
+ end
109
+
110
+ it 'should be true if row has key' do
111
+ @item_table.has_row_with_key?(Set['one','two']).should be_true
112
+ end
113
+
114
+ it 'should not be true if row has not key' do
115
+ @item_table.has_row_with_key?(Set['two','five']).should be_false
116
+ end
117
+
118
+ it 'should be a first row that has one' do
119
+ @item_table.row_with_key(Set['one', 'two']).items[0].name.value.should =='one'
120
+ end
121
+
122
+ it 'should raise argument error if row has no key' do
123
+ lambda {
124
+ @item_table.row_with_key(Set['two','five'])}.should raise_error(ArgumentError)
125
+ end
126
+
127
+ it 'should be element at cell ij' do
128
+ @item_table.element_at_cell_ij(2,2).name.value.should == 'five'
129
+ end
130
+
131
+ it 'should not be element at cell with wrong ij' do
132
+ @item_table.element_at_cell_ij(2,3).name.value.should_not == 'five'
133
+ end
134
+
135
+ it 'should be two element at named cell by row column' do
136
+ @item_table.element_at_named_cell('cluster', 'three').name.value == 'three'
137
+ end
138
+
139
+ it 'should return nil when rows are nil' do
140
+ @item_table.rows = nil
141
+ @item_table.row_count.should be_equal 0
142
+ end
143
+
144
+ it 'should be first row as hierachy' do
145
+ @item_table.as_hierarchy.name.value.should == 'cluster'
146
+ end
147
+ end