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,36 @@
1
+ # ticket 195
2
+ require File.dirname(__FILE__) + '/../../../../../../spec_helper'
3
+ require 'openehr/am/openehr_profile/data_types/basic'
4
+ include ::OpenEHR::AM::OpenEHRProfile::DataTypes::Basic
5
+ require 'set'
6
+
7
+ describe NonTerminalState do
8
+ before(:each) do
9
+ proposed_state = State.new(:name => 'PROPOSED')
10
+ complete_state = TerminalState.new(:name => 'COMPLETED')
11
+ finish = Transition.new(:event => 'finish', :next_state => complete_state)
12
+ transitions = Set[finish]
13
+ @non_terminal_state = NonTerminalState.new(:name => 'IN_EXECUTION',
14
+ :transitions => transitions)
15
+ end
16
+
17
+ it 'is an instance of NonTerminalState' do
18
+ @non_terminal_state.should be_an_instance_of NonTerminalState
19
+ end
20
+
21
+ it 'name is IN_EXECUTION' do
22
+ @non_terminal_state.name.should == 'IN_EXECUTION'
23
+ end
24
+
25
+ it 'size of transitions is 2' do
26
+ @non_terminal_state.transitions.size.should == 1
27
+ end
28
+
29
+ it 'raise error if traisitions is empty' do
30
+ expect {@non_terminal_state.transitions = Set.new}.to raise_error
31
+ end
32
+
33
+ it 'raise error if transitions is nil' do
34
+ expect {@non_terminal_state.transitions = nil}.to raise_error
35
+ end
36
+ end
@@ -0,0 +1,34 @@
1
+ # ticket 193
2
+ require File.dirname(__FILE__) + '/../../../../../../spec_helper'
3
+ require 'openehr/am/openehr_profile/data_types/basic'
4
+ include ::OpenEHR::AM::OpenEHRProfile::DataTypes::Basic
5
+ require 'set'
6
+
7
+ describe StateMachine do
8
+ before(:each) do
9
+ proposed_state = State.new(:name => 'PROPOSED')
10
+ complete_state = TerminalState.new(:name => 'COMPLETED')
11
+ finish = Transition.new(:event => 'finish', :next_state => complete_state)
12
+ transitions = Set[finish]
13
+ non_terminal_state = NonTerminalState.new(:name => 'IN_EXECUTION',
14
+ :transitions => transitions)
15
+ states = Set[proposed_state, non_terminal_state, complete_state]
16
+ @state_machine = StateMachine.new(:states => states)
17
+ end
18
+
19
+ it 'is an instance of StateMachine' do
20
+ @state_machine.should be_an_instance_of StateMachine
21
+ end
22
+
23
+ it 'states size is 3' do
24
+ @state_machine.states.size.should be 3
25
+ end
26
+
27
+ it 'raise error if states are nil' do
28
+ expect {@state_machine.states = nil}.to raise_error
29
+ end
30
+
31
+ it 'raise error if states is empty' do
32
+ expect {@state_machine.states = Set.new}.to raise_error
33
+ end
34
+ end
@@ -0,0 +1,26 @@
1
+ # ticket 191
2
+ require File.dirname(__FILE__) + '/../../../../../../spec_helper'
3
+ require 'openehr/am/openehr_profile/data_types/basic'
4
+ include ::OpenEHR::AM::OpenEHRProfile::DataTypes::Basic
5
+
6
+ describe State do
7
+ before(:all) do
8
+ @state = State.new(:name => 'PROPOSED')
9
+ end
10
+
11
+ it 'is an instance of State' do
12
+ @state.should be_an_instance_of State
13
+ end
14
+
15
+ it 'name is PROPOSED' do
16
+ @state.name.should == 'PROPOSED'
17
+ end
18
+
19
+ it 'raise error name is empty' do
20
+ expect {@state.name = ''}.to raise_error
21
+ end
22
+
23
+ it 'raise error name is nil' do
24
+ expect {@state.name = nil}.to raise_error
25
+ end
26
+ end
@@ -0,0 +1,18 @@
1
+ # ticket 196
2
+ require File.dirname(__FILE__) + '/../../../../../../spec_helper'
3
+ require 'openehr/am/openehr_profile/data_types/basic'
4
+ include ::OpenEHR::AM::OpenEHRProfile::DataTypes::Basic
5
+
6
+ describe TerminalState do
7
+ before(:all) do
8
+ @terminal_state = TerminalState.new(:name => 'PROPOSED')
9
+ end
10
+
11
+ it 'is an instance of TerminalState' do
12
+ @terminal_state.should be_an_instance_of TerminalState
13
+ end
14
+
15
+ it 'name is PROPOSED' do
16
+ @terminal_state.name.should == 'PROPOSED'
17
+ end
18
+ end
@@ -0,0 +1,62 @@
1
+ # ticket 197
2
+ require File.dirname(__FILE__) + '/../../../../../../spec_helper'
3
+ require 'openehr/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 'openehr/am/openehr_profile/data_types/quantity'
3
+ include ::OpenEHR::AM::OpenEHRProfile::DataTypes::Quantity
4
+ require 'openehr/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
@@ -0,0 +1,34 @@
1
+ require File.dirname(__FILE__) + '/../../../../../../spec_helper'
2
+ include ::OpenEHR::RM::DataTypes::Text
3
+ include ::OpenEHR::AssumedLibraryTypes
4
+ include ::OpenEHR::RM::Support::Identification
5
+ require 'openehr/am/openehr_profile/data_types/text'
6
+ include ::OpenEHR::AM::OpenEHRProfile::DataTypes::Text
7
+
8
+ describe CCodePhrase do
9
+ before(:all) do
10
+ term_id = TerminologyID.new(:value => 'ICD10')
11
+ occurrences = Interval.new(:upper => 1)
12
+ @c_code_phrase = CCodePhrase.new(:terminology_id => term_id,
13
+ :code_list => ['C92', 'C93'],
14
+ :path => 'value/text',
15
+ :occurrences => occurrences,
16
+ :rm_type_name => 'CodePhrase')
17
+ end
18
+
19
+ it 'is an instance of CCodePhrase' do
20
+ @c_code_phrase.should be_an_instance_of CCodePhrase
21
+ end
22
+
23
+ it 'terminology_id is ICD10' do
24
+ @c_code_phrase.terminology_id.value.should == 'ICD10'
25
+ end
26
+
27
+ it 'code_list is C92, C93' do
28
+ @c_code_phrase.code_list.should == ['C92', 'C93']
29
+ end
30
+
31
+ it 'occurrences upper is 1' do
32
+ @c_code_phrase.occurrences.upper.should be 1
33
+ end
34
+ end
@@ -0,0 +1,145 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+ include OpenEHR::AssumedLibraryTypes
3
+
4
+ describe Interval do
5
+ before(:each) do
6
+ @interval = Interval.new(:upper => 10,
7
+ :lower => 1)
8
+ end
9
+
10
+ it 'should be an instance of Interval' do
11
+ @interval.should be_an_instance_of Interval
12
+ end
13
+
14
+ it 's upper should be greater than lower' do
15
+ @interval.upper.should be > @interval.lower
16
+ end
17
+
18
+ it 's upper should be equal 10' do
19
+ @interval.upper.should == 10
20
+ end
21
+
22
+ it 's lower should be equal 1' do
23
+ @interval.lower.should == 1
24
+ end
25
+
26
+ it 'should raise ArgumentError with smaller upper' do
27
+ lambda {@interval.upper = -1}.should raise_error ArgumentError
28
+ end
29
+
30
+ it 'should raise ArgumentError with greater lower' do
31
+ lambda {@interval.lower = 11}.should raise_error ArgumentError
32
+ end
33
+
34
+ it 'should have 5' do
35
+ @interval.has?(5).should be_true
36
+ end
37
+
38
+ it 'should not have 11' do
39
+ @interval.has?(11).should_not be_true
40
+ end
41
+
42
+ it 'should not have -1' do
43
+ @interval.has?(-1).should_not be_true
44
+ end
45
+
46
+ it 'should not have 10' do
47
+ @interval.has?(10).should_not be_true
48
+ end
49
+
50
+ it 'should not have 1' do
51
+ @interval.has?(1).should_not be_true
52
+ end
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
+
59
+ describe Interval, 'when lower included' do
60
+ before do
61
+ @interval.lower_included = true
62
+ end
63
+
64
+ it 'should be lower_included' do
65
+ @interval.should be_lower_included
66
+ end
67
+
68
+ it 'should have 1 when lower included' do
69
+ @interval.has?(1).should be_true
70
+ end
71
+
72
+ after do
73
+ @interval.lower_included = false
74
+ end
75
+ end
76
+
77
+ describe Interval, 'when upper included' do
78
+ before do
79
+ @interval.upper_included = true
80
+ end
81
+
82
+ it 'should be upper uncluded' do
83
+ @interval.should be_upper_included
84
+ end
85
+
86
+ it 'should have 10 when upper included' do
87
+ @interval.has?(10).should be_true
88
+ end
89
+
90
+ after do
91
+ @interval.upper_included = false
92
+ end
93
+ end
94
+
95
+ describe Interval, 'when upper unbounded' do
96
+ before do
97
+ @interval.upper = nil
98
+ end
99
+
100
+ it 'should be upper unbounded' do
101
+ @interval.should be_upper_unbounded
102
+ end
103
+
104
+ it 'should have 11' do
105
+ @interval.has?(11).should be_true
106
+ end
107
+
108
+ it 'should raise ArgumentError, when upper_included is assigned' do
109
+ lambda{
110
+ @interval.upper_included = true
111
+ }.should raise_error ArgumentError
112
+ end
113
+
114
+ after do
115
+ @interval.upper = 10
116
+ end
117
+ end
118
+
119
+ describe Interval, 'when lower unbounded' do
120
+ before do
121
+ @interval.lower = nil
122
+ end
123
+
124
+ it 'should be lower unbounded' do
125
+ @interval.should be_lower_unbounded
126
+ end
127
+
128
+ it 'should have -10' do
129
+ @interval.has?(-10).should be_true
130
+ end
131
+
132
+ it 'should raise ArgumentError, when lower_included is assigned' do
133
+ lambda{
134
+ @interval.lower_included = true
135
+ }.should raise_error ArgumentError
136
+ end
137
+ end
138
+
139
+ it 'should raise ArgumentError both upper and lower is nil' do
140
+ lambda {
141
+ Interval.new
142
+ }.should raise_error ArgumentError
143
+ end
144
+ end
145
+