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,17 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::AM::Archetype::ConstraintModel
3
+ include OpenEHR::AssumedLibraryTypes
4
+
5
+ describe CReferenceObject do
6
+ before(:each) do
7
+ occurrences = Interval.new(:lower => 0, :upper => 1)
8
+ @c_reference_object = CReferenceObject.new(:path => '/event/[at0001]/',
9
+ :rm_type_name => 'DV_TIME',
10
+ :node_id => 'ac0001',
11
+ :occurrences => occurrences)
12
+ end
13
+
14
+ it 'should be an instance of CReferenceObject' do
15
+ @c_reference_object.should be_an_instance_of CReferenceObject
16
+ end
17
+ end
@@ -0,0 +1,22 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::AM::Archetype::ConstraintModel
3
+ include OpenEHR::AssumedLibraryTypes
4
+
5
+ describe CSingleAttribute do
6
+ before(:each) do
7
+ existence = Interval.new(:upper =>0, :lower => 0)
8
+ alternatives = stub(Array, :size => 5)
9
+ @c_single_attribute = CSingleAttribute.new(:path => '/event/at001',
10
+ :rm_attribute_name => 'DV_DATE',
11
+ :existence => existence,
12
+ :alternatives => alternatives)
13
+ end
14
+
15
+ it 'should be an instance of CSingleAttribute' do
16
+ @c_single_attribute.should be_an_instance_of CSingleAttribute
17
+ end
18
+
19
+ it 'alternative should be assigned properly' do
20
+ @c_single_attribute.alternatives.size.should be_equal 5
21
+ end
22
+ end
@@ -0,0 +1,68 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::AM::Archetype::ConstraintModel
3
+ include OpenEHR::AssumedLibraryTypes
4
+
5
+ describe Cardinality do
6
+ before(:each) do
7
+ interval = Interval.new(:upper => 1, :lower => 0)
8
+ @cardinality = Cardinality.new(:is_ordered => true,
9
+ :is_unique => true,
10
+ :interval => interval)
11
+ end
12
+
13
+ it 'should be an instance of Cardinality' do
14
+ @cardinality.should be_an_instance_of Cardinality
15
+ end
16
+
17
+ it 'is_ordered should be assigned properly' do
18
+ @cardinality.should be_ordered
19
+ end
20
+
21
+ it 'is_ordered should be false' do
22
+ @cardinality.is_ordered = false
23
+ @cardinality.should_not be_ordered
24
+ end
25
+
26
+ it 'is_unique should be assigned properly' do
27
+ @cardinality.should be_unique
28
+ end
29
+
30
+ it 'is_unique should not be true' do
31
+ @cardinality.is_unique = false
32
+ @cardinality.should_not be_unique
33
+ end
34
+
35
+ it 'interval should be assigned properly' do
36
+ @cardinality.interval.upper.should be_equal 1
37
+ end
38
+
39
+ it 'is_set represent not ordered and unique' do
40
+ @cardinality.should_not be_set
41
+ end
42
+
43
+ it 'is_set should be true' do
44
+ @cardinality.is_unique = true
45
+ @cardinality.is_ordered = false
46
+ @cardinality.should be_set
47
+ end
48
+
49
+ it 'is_list represent ordered and not unique' do
50
+ @cardinality.is_ordered = true
51
+ @cardinality.is_unique = false
52
+ @cardinality.should be_list
53
+ end
54
+
55
+ it 'is_list should not be true' do
56
+ @cardinality.should_not be_list
57
+ end
58
+
59
+ it 'is_bag represent not ordered and not unique' do
60
+ @cardinality.is_ordered = false
61
+ @cardinality.is_unique = false
62
+ @cardinality.should be_bag
63
+ end
64
+
65
+ it 'is_bag? should not be true' do
66
+ @cardinality.should_not be_bag
67
+ end
68
+ end
@@ -0,0 +1,29 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::AM::Archetype::ConstraintModel
3
+ include OpenEHR::AssumedLibraryTypes
4
+
5
+ describe ConstraintRef do
6
+ before(:each) do
7
+ occurrences = Interval.new(:lower => 0, :upper => 1)
8
+ @constraint_ref =
9
+ ConstraintRef.new(:path => '/event/[at0001]/',
10
+ :rm_type_name => 'DV_TIME',
11
+ :node_id => 'ac0001',
12
+ :occurrences => occurrences,
13
+ :reference => 'ac0002')
14
+ end
15
+
16
+ it 'should be an instance of ConstraintRef' do
17
+ @constraint_ref.should be_an_instance_of ConstraintRef
18
+ end
19
+
20
+ it 'reference should be assigned properly' do
21
+ @constraint_ref.reference.should == 'ac0002'
22
+ end
23
+
24
+ it 'should raise ArgumentError when reference is nil' do
25
+ lambda {
26
+ @constraint_ref.reference = nil
27
+ }.should raise_error ArgumentError
28
+ end
29
+ end
@@ -0,0 +1,57 @@
1
+ require File.dirname(__FILE__) + '/../../../../../../spec_helper'
2
+ include OpenEHR::AM::Archetype::ConstraintModel::Primitive
3
+ include OpenEHR::RM::DataTypes::Basic
4
+
5
+ describe CBoolean do
6
+ before(:each) do
7
+ default_value = DvBoolean.new(:value => true)
8
+ @c_boolean = CBoolean.new(:default_value => true,
9
+ :type => 'Boolean',
10
+ :true_valid => true,
11
+ :false_valid => true)
12
+ end
13
+
14
+ it 'should be_an_instance_of CBoolean' do
15
+ @c_boolean.should be_an_instance_of CBoolean
16
+ end
17
+
18
+ it 'true_valid should be assigned properly' do
19
+ @c_boolean.should be_true_valid
20
+ end
21
+
22
+ it 'false_valid should be assigned properly' do
23
+ @c_boolean.should be_false_valid
24
+ end
25
+
26
+ it 'type should be DvBoolean' do
27
+ @c_boolean.type.should == 'Boolean'
28
+ end
29
+
30
+ it 'should raise ArgumentError when both true_valid and false_valid are false' do
31
+ lambda {
32
+ @c_boolean.true_valid = false
33
+ @c_boolean.false_valid = false
34
+ }.should raise_error ArgumentError
35
+ end
36
+
37
+ it 'should raise ArgumentError if both false_valid and true_valid are false' do
38
+ lambda {
39
+ @c_boolean.false_valid = false
40
+ @c_boolean.true_valid = false
41
+ }.should raise_error ArgumentError
42
+ end
43
+
44
+ it 'should raise ArgumentError if default_value is false and false_valid is false' do
45
+ lambda {
46
+ @c_boolean.false_valid = false
47
+ @c_boolean.default_value = false
48
+ }.should raise_error ArgumentError
49
+ end
50
+
51
+ it 'should raise ArgumentError if default_value is true and true_valid is false' do
52
+ lambda {
53
+ @c_boolean.true_valid = false
54
+ @c_boolean.default_value = true
55
+ }.should raise_error ArgumentError
56
+ end
57
+ end
@@ -0,0 +1,52 @@
1
+ require File.dirname(__FILE__) + '/../../../../../../spec_helper'
2
+ include OpenEHR::AM::Archetype
3
+ include OpenEHR::AM::Archetype::ConstraintModel::Primitive
4
+ include OpenEHR::RM::DataTypes::Quantity::DateTime
5
+
6
+ describe CDate do
7
+ before(:all) do
8
+ default_value = DvDate.new(:value => '2010-01-18')
9
+ assumed_value = DvDate.new(:value => '2007-02-19')
10
+ range = Interval.new(:lower => DvDate.new(:value => '2001-01-01'),
11
+ :upper => DvDate.new(:value => '2010-12-31'))
12
+ @c_date = CDate.new(:default_value => default_value,
13
+ :assumed_value => assumed_value,
14
+ :range => range)
15
+ end
16
+
17
+ it 'should be an instance of CDate' do
18
+ @c_date.should be_an_instance_of CDate
19
+ end
20
+
21
+ it 'range should be assigned properly' do
22
+ @c_date.range.upper.month.should be_equal 12
23
+ end
24
+
25
+ it 'validity_is_range should be true if range is assigned' do
26
+ @c_date.should be_validity_is_range
27
+ end
28
+
29
+ it 'raise ArgumentError unless range xor pattern' do
30
+ @c_date.range.should raise_error
31
+ end
32
+
33
+ describe 'pattern attribute' do
34
+ before(:all) do
35
+ @c_date = CDate.new(:pattern => 'yyyy-mm-dd')
36
+ end
37
+
38
+ it 'pattern should be yyyy-mm-dd' do
39
+ @c_date.pattern.should == 'yyyy-mm-dd'
40
+ end
41
+ end
42
+
43
+ describe 'list attribute' do
44
+ before(:all) do
45
+ @c_date = CDate.new(:list => [DvDate.new(:value => '2011-11-28')])
46
+ end
47
+
48
+ it 'head of list is 2011-11-28' do
49
+ @c_date.list[0].value.should == '2011-11-28'
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,136 @@
1
+ require File.dirname(__FILE__) + '/../../../../../../spec_helper'
2
+ include OpenEHR::AM::Archetype
3
+ include OpenEHR::AM::Archetype::ConstraintModel::Primitive
4
+ include OpenEHR::RM::DataTypes::Quantity::DateTime
5
+
6
+ describe CDateTime do
7
+ before(:each) do
8
+ default_value = DvDateTime.new(:value => '2010-01-25T01:23:45.1')
9
+ assumed_value = DvDateTime.new(:value => '2001-12-23T22:02:33.2')
10
+ range = Interval.new(:lower => DvDateTime.new(:value =>'1995-04-19T01:01:22'),
11
+ :upper => DvDateTime.new(:value => '2022-12-31T23:55:59'))
12
+ @c_date_time =
13
+ CDateTime.new(:default_value => default_value,
14
+ :assumed_value => assumed_value,
15
+ :range => range,
16
+ :month_validity => ValidityKind::MANDATORY,
17
+ :day_validity => ValidityKind::MANDATORY,
18
+ :hour_vaildity => ValidityKind::MANDATORY,
19
+ :minute_validity => ValidityKind::MANDATORY,
20
+ :second_validity => ValidityKind::OPTIONAL,
21
+ :millisecond_validity => ValidityKind::DISALLOWED,
22
+ :timezone_validity => ValidityKind::OPTIONAL)
23
+ end
24
+
25
+ it 'should be an instance of CDateTime' do
26
+ @c_date_time.should be_an_instance_of CDateTime
27
+ end
28
+
29
+ it 'type is ISO8601_DATE_TIME' do
30
+ @c_date_time.type.should == 'ISO8601_DATE_TIME'
31
+ end
32
+
33
+ it 'hour_validity should be assigned properly' do
34
+ @c_date_time.hour_validity.should be_equal ValidityKind::MANDATORY
35
+ end
36
+
37
+ it 'should raise ArgumentError if hour_validity is DISALLOWED and minute_validity is not DISALLOWED' do
38
+ lambda {
39
+ @c_date_time.hour_validity = ValidityKind::DISALLOWED
40
+ }.should raise_error ArgumentError
41
+ end
42
+
43
+ it 'range is properly assigned, lower value is 1995-04-19T01:01:22' do
44
+ @c_date_time.range.lower.value.should == '1995-04-19T01:01:22'
45
+ end
46
+
47
+
48
+ it 'should not raise ArgumentError if hour_validity is DISALLOWED and minute_validity is DISALLOWED' do
49
+ @c_date_time.second_validity = ValidityKind::DISALLOWED
50
+ @c_date_time.minute_validity = ValidityKind::DISALLOWED
51
+ lambda {
52
+ @c_date_time.hour_validity = ValidityKind::DISALLOWED
53
+ }.should_not raise_error ArgumentError
54
+ end
55
+
56
+ it 'should raise ArgumentError if hour_validity is OPTIONAL and minute_validity is MANDATORY' do
57
+ lambda {
58
+ @c_date_time.hour_validity = ValidityKind::OPTIONAL
59
+ }.should raise_error ArgumentError
60
+ end
61
+
62
+ it 'should not raise ArgumentError if hour_validity is OPTIONAL and minute_validity is OPTIONAL' do
63
+ @c_date_time.minute_validity = ValidityKind::OPTIONAL
64
+ lambda {
65
+ @c_date_time.hour_validity = ValidityKind::OPTIONAL
66
+ }.should_not raise_error ArgumentError
67
+ end
68
+
69
+ it 'should not raise Argument Error if hour_validity is OPTIONAL and minute_validity is DISALLOWED' do
70
+ @c_date_time.second_validity = ValidityKind::DISALLOWED
71
+ @c_date_time.minute_validity = ValidityKind::DISALLOWED
72
+ lambda {
73
+ @c_date_time.hour_validity = ValidityKind::OPTIONAL
74
+ }.should_not raise_error ArgumentError
75
+ end
76
+
77
+ it 'should raise ArgumentError if day_validity is DISALLOWED and hour_validity is not DISALLOWED' do
78
+ lambda {
79
+ @c_date_time.day_validity = ValidityKind::DISALLOWED
80
+ }.should raise_error ArgumentError
81
+ end
82
+
83
+ it 'should not raise ArgumentError if day_validity is DISALLOWED and hour_validity is DISALLOWED' do
84
+ @c_date_time.second_validity = ValidityKind::DISALLOWED
85
+ @c_date_time.minute_validity = ValidityKind::DISALLOWED
86
+ @c_date_time.hour_validity = ValidityKind::DISALLOWED
87
+ lambda {
88
+ @c_date_time.day_validity = ValidityKind::DISALLOWED
89
+ }.should_not raise_error ArgumentError
90
+ end
91
+
92
+ it 'should raise ArgumentError if day_validity is OPTIONAL and hour_validity is MANDATORY' do
93
+ lambda {
94
+ @c_date_time.day_validity = ValidityKind::OPTIONAL
95
+ }.should raise_error ArgumentError
96
+ end
97
+
98
+ it 'should not raise ArgumentError if day_validity OPTIONAL and hour_validity is OPTIONAL' do
99
+ @c_date_time.second_validity = ValidityKind::DISALLOWED
100
+ @c_date_time.minute_validity = ValidityKind::DISALLOWED
101
+ @c_date_time.hour_validity = ValidityKind::OPTIONAL
102
+ lambda {
103
+ @c_date_time.day_validity = ValidityKind::OPTIONAL
104
+ }.should_not raise_error ArgumentError
105
+ end
106
+
107
+ it 'should not raise ArgumentError if day_validity OPTIONAL and hour_validity is DISALLOWED' do
108
+ @c_date_time.second_validity = ValidityKind::DISALLOWED
109
+ @c_date_time.minute_validity = ValidityKind::DISALLOWED
110
+ @c_date_time.hour_validity = ValidityKind::DISALLOWED
111
+ lambda {
112
+ @c_date_time.day_validity = ValidityKind::OPTIONAL
113
+ }.should_not raise_error ArgumentError
114
+ end
115
+
116
+ describe 'pattern constraint' do
117
+ before(:all) do
118
+ @c_date_timep = CDateTime.new(:pattern => 'yyyy-mm-dd hh:mm:ss')
119
+ end
120
+
121
+ it 'pattern is yyyy-mm-dd hh:mm:ss' do
122
+ @c_date_timep.pattern.should == 'yyyy-mm-dd hh:mm:ss'
123
+ end
124
+ end
125
+
126
+ describe 'list constraint' do
127
+ before(:all) do
128
+ @c_date_timel = CDateTime.new(:list =>
129
+ [DvDateTime.new(:value => '2010-01-25T01:23:45.1')])
130
+ end
131
+
132
+ it 'first item of list is 2010-01-25T01:23:45.1' do
133
+ @c_date_timel.list[0].value.should == '2010-01-25T01:23:45.1'
134
+ end
135
+ end
136
+ end
@@ -0,0 +1,41 @@
1
+ require File.dirname(__FILE__) + '/../../../../../../spec_helper'
2
+ include OpenEHR::RM::DataTypes::Quantity::DateTime
3
+ include OpenEHR::AssumedLibraryTypes
4
+ include OpenEHR::AM::Archetype::ConstraintModel::Primitive
5
+
6
+ describe CDuration do
7
+ before(:all) do
8
+ assumed_value = DvDuration.new(:value => 'P2Y')
9
+ default_value = DvDuration.new(:value => 'P3M')
10
+ range = Interval.new(:upper => assumed_value, :lower => default_value)
11
+ @c_duration = CDuration.new(:assumed_value => assumed_value,
12
+ :default_value => default_value,
13
+ :range => range)
14
+ end
15
+
16
+ it 'should be an instance of CDuration' do
17
+ @c_duration.should be_an_instance_of CDuration
18
+ end
19
+
20
+ it 'type is ISO8601_DURATION' do
21
+ @c_duration.type.should == 'ISO8601_DURATION'
22
+ end
23
+
24
+ it 'upper range is 2 years' do
25
+ @c_duration.range.upper.value.should == 'P2Y'
26
+ end
27
+
28
+ it 'lower range is 3 months year' do
29
+ @c_duration.range.lower.value.should == 'P3M'
30
+ end
31
+
32
+ context 'list constraint' do
33
+ before(:all) do
34
+ @c_duration = CDuration.new(:list => [DvDuration.new(:value => 'PT0s')])
35
+ end
36
+
37
+ it '1st item of the list value is PT0s' do
38
+ @c_duration.list[0].value.should == 'PT0s'
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,67 @@
1
+ require File.dirname(__FILE__) + '/../../../../../../spec_helper'
2
+ include OpenEHR::AM::Archetype::ConstraintModel::Primitive
3
+ include OpenEHR::AssumedLibraryTypes
4
+
5
+ describe CInteger do
6
+ before(:each) do
7
+ @c_integer = CInteger.new(:default_value => 3,
8
+ :assumed_value => 2,
9
+ :type => 'Integer',
10
+ :list => [1,2])
11
+ end
12
+
13
+ it 'should be an instance of CInteger' do
14
+ @c_integer.should be_an_instance_of CInteger
15
+ end
16
+
17
+ it 'type is DvInteger' do
18
+ @c_integer.type.should == 'Integer'
19
+ end
20
+
21
+ it 'should raise ArgumentError if both range and list are nil' do
22
+ lambda {
23
+ @c_integer.list = nil
24
+ }.should raise_error ArgumentError
25
+ end
26
+
27
+ describe 'list method' do
28
+ it 'constructor should assign list properly' do
29
+ @c_integer.list.should == [1,2]
30
+ end
31
+
32
+ it 'list method should re-assign properly' do
33
+ @c_integer.list = [2,3]
34
+ @c_integer.list.should == [2,3]
35
+ end
36
+
37
+ it 'should be raise ArgumentError if both list and range are not nil' do
38
+ lambda {
39
+ @c_integer.range = Interval.new(:lower => 1,:upper =>3)
40
+ }.should raise_error ArgumentError
41
+ end
42
+ end
43
+
44
+ describe 'range mathod' do
45
+ before(:each) do
46
+ @c_integer =
47
+ CInteger.new(:default_value => 2,
48
+ :assumed_value => 3,
49
+ :range => Interval.new(:lower => 0, :upper => 5))
50
+ end
51
+
52
+ it 'constructor should assign range properly' do
53
+ @c_integer.range.lower.should be_equal 0
54
+ end
55
+
56
+ it 'range method should re-assigne properly' do
57
+ @c_integer.range = Interval.new(:lower => 20)
58
+ @c_integer.range.lower.should be_equal 20
59
+ end
60
+
61
+ it 'should raise ArgumentError if bhot range and list are not nil' do
62
+ lambda {
63
+ @c_integer.list = [10,100]
64
+ }.should raise_error ArgumentError
65
+ end
66
+ end
67
+ end