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,64 @@
1
+ require File.dirname(__FILE__) + '/../../../../../../spec_helper'
2
+ include OpenEHR::RM::DataTypes::Quantity::DateTime
3
+
4
+ describe DvDate do
5
+ before(:each) do
6
+ @dv_date = DvDate.new(:value => '2009-09-28')
7
+ end
8
+
9
+ it 'should be an instance of DvDate' do
10
+ @dv_date.should be_an_instance_of DvDate
11
+ end
12
+
13
+ it 'value should be' do
14
+ @dv_date.value.should == '2009-09-28'
15
+ end
16
+
17
+ it 'year should be 2009' do
18
+ @dv_date.year.should be_equal 2009
19
+ end
20
+
21
+ it 'month should be 9' do
22
+ @dv_date.month.should be_equal 9
23
+ end
24
+
25
+ it 'day should be 28' do
26
+ @dv_date.day.should be_equal 28
27
+ end
28
+
29
+ it 'magnitude should 734045' do
30
+ @dv_date.magnitude.should == 734045
31
+ end
32
+
33
+ it 'diff should P0Y0M1W11D' do
34
+ diff_date = DvDate.new(:value => '2009-10-09')
35
+ @dv_date.diff(diff_date).value.should == 'P0Y0M1W11D'
36
+ end
37
+
38
+ it 'should process leap year' do
39
+ @dv_date.value = '2004-02-28'
40
+ diff_date = DvDate.new(:value => '2004-03-01')
41
+ @dv_date.diff(diff_date).value.should == 'P0Y0M0W2D'
42
+ end
43
+
44
+ it 'should process year'do
45
+ diff_date = DvDate.new(:value => '2007-12-31')
46
+ @dv_date.diff(diff_date).value.should == 'P1Y8M4W28D'
47
+ end
48
+
49
+ it 'should be P0Y11M4W31D' do
50
+ diff_date = DvDate.new(:value => '2008-09-30')
51
+ @dv_date.diff(diff_date).value.should == 'P0Y11M4W29D'
52
+ end
53
+
54
+ it 'should be P1Y0M0W1D' do
55
+ diff_date = DvDate.new(:value => '2010-09-29')
56
+ @dv_date.diff(diff_date).value.should == 'P1Y0M0W1D'
57
+ end
58
+
59
+ it 'should be P0Y0M0W1D' do
60
+ past_date = DvDate.new(:value => '2009-12-31')
61
+ future_date=DvDate.new(:value => '2010-01-01')
62
+ past_date.diff(future_date).value.should == 'P0Y0M0W1D'
63
+ end
64
+ end
@@ -0,0 +1,26 @@
1
+ require File.dirname(__FILE__) + '/../../../../../../spec_helper'
2
+ require 'openehr/rm/data_types/quantity/date_time'
3
+ include OpenEHR::RM::DataTypes::Quantity::DateTime
4
+
5
+ describe DvDateTime do
6
+ before(:each) do
7
+ @dv_date_time = DvDateTime.new(:value => '2009-09-29T15:03:22.3Z')
8
+ end
9
+
10
+ it 'should be an instance of DvDateTime' do
11
+ @dv_date_time.should be_an_instance_of DvDateTime
12
+ end
13
+
14
+ it 'magnitude should be 63423697018.3' do
15
+ @dv_date_time.magnitude.should be_within(0.01).of(63423697018.3)
16
+ end
17
+
18
+ it 'should be equal when magnitude is same' do
19
+ @dv_date_time.should == DvDateTime.new(:value => '2009-09-29T15:03:22.3Z')
20
+ end
21
+
22
+ it 'diff should be caluculated from past to future' do
23
+ future = DvDateTime.new(:value => '2009-10-29T16:23:30.3Z')
24
+ @dv_date_time.diff(future).value.should == 'P0Y1M0W0DT1H20M8.0S'
25
+ end
26
+ end
@@ -0,0 +1,44 @@
1
+ require File.dirname(__FILE__) + '/../../../../../../spec_helper'
2
+ include OpenEHR::RM::DataTypes::Quantity::DateTime
3
+
4
+ describe DvDate do
5
+ before(:each) do
6
+ @dv_duration = DvDuration.new(:value => 'P1Y2M3W4DT5H6M7.7S')
7
+ end
8
+
9
+ it 'is an instance of DvDuration' do
10
+ @dv_duration.should be_an_instance_of DvDuration
11
+ end
12
+
13
+ it 'year is 1' do
14
+ @dv_duration.years.should be 1
15
+ end
16
+
17
+ it 'months is 2' do
18
+ @dv_duration.months.should be 2
19
+ end
20
+
21
+ it 'weeks is 3' do
22
+ @dv_duration.weeks.should be 3
23
+ end
24
+
25
+ it 'days is 4' do
26
+ @dv_duration.days.should be 4
27
+ end
28
+
29
+ it 'hours should be 5' do
30
+ @dv_duration.hours.should be 5
31
+ end
32
+
33
+ it 'minutes should be 6' do
34
+ @dv_duration.minutes.should be 6
35
+ end
36
+
37
+ it 'seconds should be 7' do
38
+ @dv_duration.seconds.should be 7
39
+ end
40
+
41
+ it 'fractional_second should be 0.7' do
42
+ @dv_duration.fractional_second.should == 0.7
43
+ end
44
+ end
@@ -0,0 +1,25 @@
1
+ require File.dirname(__FILE__) + '/../../../../../../spec_helper'
2
+ require 'openehr/rm/data_types/quantity/date_time'
3
+ include OpenEHR::RM::DataTypes::Quantity::DateTime
4
+
5
+ describe DvTemporal do
6
+ before(:each) do
7
+ @dv_temporal = DvTemporal.new(:value => '2009-09-28T23:36')
8
+ end
9
+
10
+ it 'should be an instance of DvTemporal' do
11
+ @dv_temporal.should be_an_instance_of DvTemporal
12
+ end
13
+
14
+ it 'should raise ArgumentError with nil value' do
15
+ lambda {
16
+ @dv_temporal.value = nil
17
+ }.should raise_error ArgumentError
18
+ end
19
+
20
+ it 'should raise ArgumentError with empty value' do
21
+ lambda {
22
+ @dv_temporal.value = ''
23
+ }.should raise_error ArgumentError
24
+ end
25
+ end
@@ -0,0 +1,41 @@
1
+ require File.dirname(__FILE__) + '/../../../../../../spec_helper'
2
+ include OpenEHR::RM::DataTypes::Quantity::DateTime
3
+
4
+ describe DvTime do
5
+ before(:each) do
6
+ @dv_time = DvTime.new(:value => '11:17:30.2-0900')
7
+ end
8
+
9
+ it 'should be an instance of DvTime' do
10
+ @dv_time.should be_an_instance_of DvTime
11
+ end
12
+
13
+ it 'hour should be 11' do
14
+ @dv_time.hour.should == 11
15
+ end
16
+
17
+ it 'minute should be 17' do
18
+ @dv_time.minute.should == 17
19
+ end
20
+
21
+ it 'second should be 30' do
22
+ @dv_time.second.should == 30
23
+ end
24
+
25
+ it 'fractional_second should be 0.2' do
26
+ @dv_time.fractional_second.should == 0.2
27
+ end
28
+
29
+ it 'timezone should be -0900' do
30
+ @dv_time.timezone.should == '-0900'
31
+ end
32
+
33
+ it 'magnitude should 40650.2' do
34
+ @dv_time.magnitude.should == 40650.2
35
+ end
36
+
37
+ it 'should be ' do
38
+ diff_time = DvTime.new(:value => '15:36:48.05')
39
+ @dv_time.diff(diff_time).value.should =='P0Y0M0W0DT4H19M17.85S'
40
+ end
41
+ end
@@ -0,0 +1,35 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::RM::DataTypes::Quantity
3
+
4
+ describe DvAbsoluteQuantity do
5
+ before(:each) do
6
+ @dv_absolute_quantity = DvAbsoluteQuantity.new(:magnitude => 7)
7
+ end
8
+
9
+ it 'should be an instance of DvAbsoluteQuantity' do
10
+ @dv_absolute_quantity.should be_an_instance_of DvAbsoluteQuantity
11
+ end
12
+
13
+ it 's add 3 method should magnitude 10' do
14
+ dv_absolute_quantity10 =
15
+ @dv_absolute_quantity.add(DvAbsoluteQuantity.new(:magnitude => 3))
16
+ dv_absolute_quantity10.magnitude.should == 10
17
+ end
18
+
19
+ it 's diff method should return DvAmount' do
20
+ diff_dv_amount = @dv_absolute_quantity.diff(DvAbsoluteQuantity.new(
21
+ :magnitude => 10))
22
+ diff_dv_amount.magnitude.should == 3
23
+ end
24
+
25
+ it 's subtract method should raise NotImplementedError' do
26
+ sub_dv_absolute_quantity = @dv_absolute_quantity.subtract(DvAbsoluteQuantity.new(:magnitude => 10))
27
+ sub_dv_absolute_quantity.magnitude.should == -3
28
+ end
29
+
30
+ it 'should be raise ArgumentError when type mismatched' do
31
+ lambda {
32
+ @dv_absolute_quantity.add(1)
33
+ }.should raise_error ArgumentError
34
+ end
35
+ end
@@ -0,0 +1,105 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::RM::DataTypes::Quantity
3
+
4
+ describe DvAmount do
5
+ before(:each) do
6
+ @dv_amount = DvAmount.new(:magnitude => 2,
7
+ :accuracy => 100,
8
+ :accuracy_percent => true)
9
+ end
10
+
11
+ it 'should be an instance of DvAmount' do
12
+ @dv_amount.should be_an_instance_of DvAmount
13
+ end
14
+
15
+ it 's magnitude should be equal 2' do
16
+ @dv_amount.magnitude.should be_equal 2
17
+ end
18
+
19
+ it 's accuracy should be 100 percent' do
20
+ @dv_amount.accuracy.should be_equal 100
21
+ end
22
+
23
+ it 's accuracy_is_percent should be true' do
24
+ @dv_amount.accuracy_is_percent?.should be_true
25
+ end
26
+
27
+ it 'should has an instance with nil accuracy' do
28
+ dv_amount = DvAmount.new(:magnitude => 1)
29
+ dv_amount.should be_an_instance_of DvAmount
30
+ end
31
+
32
+ it 'should be 3 if +2 magnitude DvAmount' do
33
+ dv_amount4 = @dv_amount + DvAmount.new(:magnitude => 2)
34
+ dv_amount4.magnitude.should == 4
35
+ end
36
+
37
+ it 'should be -1 if - 3 magnitude DvAmount' do
38
+ dv_amount_1 = @dv_amount - DvAmount.new(:magnitude => 3)
39
+ dv_amount_1.magnitude.should == -1
40
+ end
41
+
42
+ it 'should be type mismatch' do
43
+ lambda {
44
+ @dv_amount + 1
45
+ }.should raise_error ArgumentError
46
+ end
47
+
48
+ it 'should not raise ArgumentError' do
49
+ lambda {
50
+ @dv_amount.set_accuracy(0, true)
51
+ }.should_not raise_error ArgumentError
52
+ end
53
+ it 'should not raise ArgumentError' do
54
+ lambda {
55
+ @dv_amount.set_accuracy(50, true)
56
+ }.should_not raise_error ArgumentError
57
+ end
58
+
59
+ it 'should not raise ArgumentError' do
60
+ lambda {
61
+ @dv_amount.set_accuracy(100, true)
62
+ }.should_not raise_error ArgumentError
63
+ end
64
+
65
+ it 'should raise ArgumentError with invaild accuracy' do
66
+ lambda {
67
+ @dv_amount.set_accuracy(-0.01, true)
68
+ }.should raise_error ArgumentError
69
+ end
70
+
71
+ it 'should raise ArgumentError with invaild accuracy' do
72
+ lambda {
73
+ @dv_amount.set_accuracy(100.1, true)
74
+ }.should raise_error ArgumentError
75
+ end
76
+
77
+ it 'should not raise ArgumentError' do
78
+ lambda {
79
+ @dv_amount.set_accuracy(0, false)
80
+ }.should_not raise_error ArgumentError
81
+ end
82
+ it 'should not raise ArgumentError' do
83
+ lambda {
84
+ @dv_amount.set_accuracy(0.5, false)
85
+ }.should_not raise_error ArgumentError
86
+ end
87
+
88
+ it 'should not raise ArgumentError' do
89
+ lambda {
90
+ @dv_amount.set_accuracy(1.0, false)
91
+ }.should_not raise_error ArgumentError
92
+ end
93
+
94
+ it 'should raise ArgumentError with invaild accuracy' do
95
+ lambda {
96
+ @dv_amount.set_accuracy(-0.01, false)
97
+ }.should raise_error ArgumentError
98
+ end
99
+
100
+ it 'should raise ArgumentError with invaild accuracy' do
101
+ lambda {
102
+ @dv_amount.set_accuracy(1.01, false)
103
+ }.should raise_error ArgumentError
104
+ end
105
+ end
@@ -0,0 +1,12 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::RM::DataTypes::Quantity
3
+
4
+ describe DvCount do
5
+ before(:each) do
6
+ @dv_count = DvCount.new(:magnitude => 1)
7
+ end
8
+
9
+ it 'should be an instance of DvCount' do
10
+ @dv_count.should be_an_instance_of DvCount
11
+ end
12
+ end
@@ -0,0 +1,17 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::RM::DataTypes::Quantity
3
+
4
+ describe DvInterval do
5
+ before(:each) do
6
+ @dv_interval = DvInterval.new(:upper => 100,
7
+ :lower => 1)
8
+ end
9
+
10
+ it 'should be an instance of DvInterval' do
11
+ @dv_interval.should be_an_instance_of DvInterval
12
+ end
13
+
14
+ it 's upper should be larger than lower' do
15
+ @dv_interval.upper.should > @dv_interval.lower
16
+ end
17
+ end
@@ -0,0 +1,60 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::RM::DataTypes::Quantity
3
+ include OpenEHR::RM::DataTypes::Text
4
+
5
+ describe DvOrdered do
6
+ before(:each) do
7
+ @dv_ordered = DvOrdered.new
8
+ end
9
+
10
+ it 'should be an instance of DvOrdered' do
11
+ @dv_ordered.should be_an_instance_of DvOrdered
12
+ end
13
+
14
+ it 'is_normal? should be false' do
15
+ @dv_ordered.is_normal?.should be_false
16
+ end
17
+
18
+ it 'should be normal' do
19
+ normal_code = stub(CodePhrase, :code_string => 'N')
20
+ @dv_ordered.normal_status = normal_code
21
+ @dv_ordered.is_normal?.should be_true
22
+ end
23
+
24
+ it 'should not be normal' do
25
+ abnormal_code = stub(CodePhrase, :code_string => 'H')
26
+ @dv_ordered.normal_status = abnormal_code
27
+ @dv_ordered.is_normal?.should_not be_true
28
+ end
29
+
30
+ it 'is_simple? should be true' do
31
+ @dv_ordered.is_simple?.should be_true
32
+ end
33
+
34
+ it 'is_simple? should be false' do
35
+ @dv_ordered.other_reference_ranges = 'dummy'
36
+ @dv_ordered.is_simple?.should be_false
37
+ end
38
+
39
+ it 'should raise ArgumentError' do
40
+ lambda{
41
+ @dv_ordered.other_reference_ranges = ''
42
+ }.should raise_error ArgumentError
43
+ end
44
+
45
+ it 'should be normal in range' do
46
+ normal_range = stub(DvInterval, :has => true)
47
+ @dv_ordered.normal_range = normal_range
48
+ @dv_ordered.is_normal?.should be_true
49
+ end
50
+
51
+ it 'is_strictly_comparable_to should be true for DvOrdered' do
52
+ @dv_ordered.is_strictly_comparable_to?(DvOrdered.new).should be_true
53
+ end
54
+
55
+ it 'should be raise NotImplemented error' do
56
+ lambda {
57
+ @dv_ordered<=>1
58
+ }.should raise_error(NotImplementedError)
59
+ end
60
+ end
@@ -0,0 +1,74 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::RM::DataTypes::Quantity
3
+ include OpenEHR::RM::DataTypes::Text
4
+ include OpenEHR::RM::Support::Identification
5
+
6
+ describe DvOrdinal do
7
+ before(:each) do
8
+ terminology_id = stub(TerminologyID, :value => 'urine:prot')
9
+ code_phrase = stub(CodePhrase, :terminology_id => terminology_id)
10
+ symbol = stub(DvCodedText, :code_string => '+',
11
+ :defining_code => code_phrase)
12
+ dv_text = stub(DvText, :value => 'limits')
13
+ limits = stub(ReferenceRange, :meaning => dv_text)
14
+ @dv_ordinal = DvOrdinal.new(:value => 1,
15
+ :symbol => symbol,
16
+ :limits => limits)
17
+ end
18
+
19
+ it 'should be an instance of DvOrdinal' do
20
+ @dv_ordinal.should be_an_instance_of DvOrdinal
21
+ end
22
+
23
+ it 's value should be equal 1' do
24
+ @dv_ordinal.value.should be_equal 1
25
+ end
26
+
27
+ it 's symbol should be + code string' do
28
+ @dv_ordinal.symbol.code_string.should == '+'
29
+ end
30
+
31
+ it 's symbol defining_code should be urine:prot' do
32
+ @dv_ordinal.symbol.defining_code.terminology_id.value.should ==
33
+ 'urine:prot'
34
+ end
35
+
36
+ it 'should be strictry comperable to other DvOrdinal' do
37
+ terminology_id = stub(TerminologyID, :value => 'urine:prot')
38
+ code_phrase = stub(CodePhrase, :terminology_id => terminology_id)
39
+ symbol = stub(DvCodedText, :defining_code => code_phrase)
40
+ dv_ordinal = DvOrdinal.new(:value => 2,
41
+ :symbol => symbol)
42
+ @dv_ordinal.is_strictly_comparable_to?(dv_ordinal).should be_true
43
+ end
44
+
45
+ it 's limit.value should be limits' do
46
+ @dv_ordinal.limits.meaning.value.should == 'limits'
47
+ end
48
+
49
+ it 'should raise error when limits.value is not limitted' do
50
+ unlimit = stub(DvText, :value => 'unimitted')
51
+ unlimitted_range = stub(ReferenceRange, :meaning => unlimit)
52
+ lambda {
53
+ @dv_ordinal.limits = unlimitted_range
54
+ }.should raise_error ArgumentError
55
+ end
56
+
57
+ it 'should be comparable' do
58
+ dv_ordinal = stub(DvOrdinal, :value => 2)
59
+ @dv_ordinal.should < dv_ordinal
60
+ end
61
+
62
+ it 'is_strictly comparable should be false with other instance' do
63
+ @dv_ordinal.is_strictly_comparable_to?('dummy').should be_false
64
+ end
65
+
66
+ it 'is strictly comparable should be false with other terminology' do
67
+ terminology_id = stub(TerminologyID, :value => 'blood pressure')
68
+ code_phrase = stub(CodePhrase, :terminology_id => terminology_id)
69
+ symbol = stub(DvCodedText, :defining_code => code_phrase)
70
+ dv_ordinal = DvOrdinal.new(:value => 3,
71
+ :symbol => symbol)
72
+ @dv_ordinal.is_strictly_comparable_to?(dv_ordinal).should be_false
73
+ end
74
+ end