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,59 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::RM::DataTypes::Text
3
+
4
+ describe TermMapping do
5
+ before(:each) do
6
+ target_stub = stub(DvCodedText, :value => 'TEST')
7
+ purpose_stub = stub(DvCodedText, :value => 'automated')
8
+ @term_mapping = TermMapping.new(:target => target_stub,
9
+ :match => '=',
10
+ :purpose => purpose_stub)
11
+ end
12
+
13
+ it 'should means equivalent' do
14
+ @term_mapping.should be_equivalent
15
+ end
16
+
17
+ it 'should means narrower' do
18
+ @term_mapping.match = '<'
19
+ @term_mapping.should be_narrower
20
+ end
21
+
22
+ it 'should means broader' do
23
+ @term_mapping.match = '>'
24
+ @term_mapping.should be_broader
25
+ end
26
+
27
+ it 'should means unknown' do
28
+ @term_mapping.match = '?'
29
+ @term_mapping.should be_unknown
30
+ end
31
+
32
+ it 'should be valid match code >' do
33
+ TermMapping.is_valid_mach_code?('>').should be_true
34
+ end
35
+
36
+ it 'should be valid match code =' do
37
+ TermMapping.is_valid_mach_code?('=').should be_true
38
+ end
39
+
40
+ it 'should be valid match code <' do
41
+ TermMapping.is_valid_mach_code?('<').should be_true
42
+ end
43
+
44
+ it 'should be valid match code ?' do
45
+ TermMapping.is_valid_mach_code?('?').should be_true
46
+ end
47
+
48
+ it 'should be not valid code /' do
49
+ TermMapping.is_valid_mach_code?('/').should_not be_true
50
+ end
51
+
52
+ it 's purpose should == automated' do
53
+ @term_mapping.purpose.value.should == 'automated'
54
+ end
55
+
56
+ it 'should raise ArgumentError when match is not valid' do
57
+ lambda {@term_mapping.match = '/'}.should raise_error(ArgumentError)
58
+ end
59
+ end
@@ -0,0 +1,21 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::RM::DataTypes::URI
3
+
4
+ describe DvEhrUri do
5
+ before(:each) do
6
+ @dv_ehr_uri = DvEhrUri.new(:value => 'ehr://test/87284370-2D4B-4e3d-A3F3-F303D2F4F34B@2005-08-02T04:30:00')
7
+ end
8
+
9
+ it 'should be an instance of EhrUri' do
10
+ @dv_ehr_uri.should be_an_instance_of DvEhrUri
11
+ end
12
+
13
+ it 's value should be valid' do
14
+ @dv_ehr_uri.value.should ==
15
+ 'ehr://test/87284370-2D4B-4e3d-A3F3-F303D2F4F34B@2005-08-02T04:30:00'
16
+ end
17
+
18
+ it 's scheme should be ehr' do
19
+ @dv_ehr_uri.scheme.should == 'ehr'
20
+ end
21
+ end
@@ -0,0 +1,36 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::RM::DataTypes::URI
3
+
4
+ describe DvUri do
5
+ before(:each) do
6
+ @dv_uri = DvUri.new(:value =>
7
+ "http://www.openehr.jp/changeset/test?cmd=93#file0")
8
+ end
9
+
10
+ it 's fragment_id should be file0' do
11
+ @dv_uri.fragment_id.should == 'file0'
12
+ end
13
+
14
+ it 's path should be /changeset/test' do
15
+ @dv_uri.path.should == '/changeset/test'
16
+ end
17
+
18
+ it 's query should be cmd=93' do
19
+ @dv_uri.query.should == 'cmd=93'
20
+ end
21
+
22
+ it 's scheme should be http' do
23
+ @dv_uri.scheme.should == 'http'
24
+ end
25
+
26
+ it 's value should be http://www.openehr.jp/changeset/test?cmd=93#file0' do
27
+ @dv_uri.value.should == 'http://www.openehr.jp/changeset/test?cmd=93#file0'
28
+ end
29
+
30
+ it 's value change' do
31
+ lambda {
32
+ @dv_uri.value="svn://www.openehr.jp/openehr-jp/"
33
+ }.should change(@dv_uri, :value).to('svn://www.openehr.jp/openehr-jp/')
34
+ end
35
+ end
36
+
@@ -0,0 +1,79 @@
1
+ require File.dirname(__FILE__) + '/../../../../spec_helper'
2
+ include OpenEHR::RM::Demographic
3
+ include OpenEHR::RM::DataTypes::Text
4
+ include OpenEHR::RM::Support::Identification
5
+
6
+ describe Actor do
7
+ before(:each) do
8
+ name = DvText.new(:value => 'actor')
9
+ uid = HierObjectID.new(:value => '01')
10
+ identities = stub(Set, :empty? => false)
11
+ roles = stub(Set, :size => 2, :empty? => false)
12
+ languages = stub(Array, :size => 3, :empty? => false)
13
+ @actor = Actor.new(:archetype_node_id => 'at0000',
14
+ :name => name,
15
+ :uid => uid,
16
+ :identities => identities,
17
+ :roles => roles,
18
+ :languages => languages)
19
+ end
20
+
21
+ it 'should be an instance of Actor' do
22
+ @actor.should be_an_instance_of Actor
23
+ end
24
+
25
+ it 'roles should be assigned properly' do
26
+ @actor.roles.size.should be_equal 2
27
+ end
28
+
29
+ it 'should raise ArgumentError with empty roles' do
30
+ lambda {
31
+ @actor.roles = Set.new
32
+ }.should raise_error ArgumentError
33
+ end
34
+
35
+ it 'should not raise ArgumentError with nil roles' do
36
+ lambda {
37
+ @actor.roles = nil
38
+ }.should_not raise_error ArgumentError
39
+ end
40
+
41
+ it 'languages should be assigned properly' do
42
+ @actor.languages.size.should be_equal 3
43
+ end
44
+
45
+ it 'should raise ArgumentError with empty languages' do
46
+ lambda {
47
+ @actor.languages = Set.new
48
+ }.should raise_error ArgumentError
49
+ end
50
+
51
+ it 'should not raise ArgumentError with nil languages' do
52
+ lambda {
53
+ @actor.languages = nil
54
+ }.should_not raise_error ArgumentError
55
+ end
56
+
57
+ describe 'has_legal_identity' do
58
+ before(:each) do
59
+ @dummy_purpose = DvText.new(:value => 'dummy')
60
+ @dummy_identity = stub(PartyIdentity, :purpose => @dummy_purpose)
61
+ end
62
+
63
+ it 'should not have legal identity' do
64
+ identity = stub(PartyIdentity, :purpose => @dummy_purpose)
65
+ identities = [identity, @dummy_identity].to_set
66
+ @actor.identities = identities
67
+ @actor.has_legal_identity?.should be_false
68
+ end
69
+
70
+ it 'should have legal identity' do
71
+ legal_purpose = DvText.new(:value => 'legal identity')
72
+ legal_identity = stub(PartyIdentity, :purpose => legal_purpose)
73
+ identities = [@dummy_identity, legal_identity].to_set
74
+ @actor.identities = identities
75
+ @actor.has_legal_identity?.should be_true
76
+ end
77
+ end
78
+ end
79
+
@@ -0,0 +1,33 @@
1
+ require File.dirname(__FILE__) + '/../../../../spec_helper'
2
+ include OpenEHR::RM::Demographic
3
+ include OpenEHR::RM::DataTypes::Text
4
+ include OpenEHR::RM::DataStructures::ItemStructure
5
+
6
+ describe Address do
7
+ before(:each) do
8
+ name = DvText.new(:value => 'address')
9
+ details = stub(ItemStructure, :archetype_node_id => 'at0001')
10
+ @address = Address.new(:archetype_node_id => 'at0000',
11
+ :name => name,
12
+ :details => details)
13
+ end
14
+
15
+ it 'should be an instance of Address' do
16
+ @address.should be_an_instance_of Address
17
+ end
18
+
19
+ it 'type is inherit from name' do
20
+ @address.type.value.should == 'address'
21
+ end
22
+
23
+ it 'details should be assigned properly' do
24
+ @address.details.archetype_node_id.should == 'at0001'
25
+ end
26
+
27
+ it 'should raise ArgumentError with nil details' do
28
+ lambda {
29
+ @address.details = nil
30
+ }.should raise_error ArgumentError
31
+ end
32
+ end
33
+
@@ -0,0 +1,37 @@
1
+ require File.dirname(__FILE__) + '/../../../../spec_helper'
2
+ include OpenEHR::RM::Demographic
3
+ include OpenEHR::RM::DataTypes::Text
4
+ include OpenEHR::RM::DataTypes::Quantity::DateTime
5
+ include OpenEHR::RM::Support::Identification
6
+ include OpenEHR::RM::DataStructures::ItemStructure
7
+
8
+ describe Capability do
9
+ before(:each) do
10
+ name = DvText.new(:value => 'party relation')
11
+ credentials = stub(ItemStructure, :archetype_node_id => 'at0001')
12
+ lower = DvDate.new(:value => '2009-11-21')
13
+ time_validity = stub(DvInterval, :lower => lower)
14
+ @capability = Capability.new(:archetype_node_id => 'at0000',
15
+ :name => name,
16
+ :credentials => credentials,
17
+ :time_validity => time_validity)
18
+ end
19
+
20
+ it 'should be an instance of Capability' do
21
+ @capability.should be_an_instance_of Capability
22
+ end
23
+
24
+ it 'credential should be assigned properly' do
25
+ @capability.credentials.archetype_node_id.should == 'at0001'
26
+ end
27
+
28
+ it 'should raise ArgumentError when nil assigned to credentials' do
29
+ lambda {
30
+ @capability.credentials = nil
31
+ }.should raise_error ArgumentError
32
+ end
33
+
34
+ it 'time_validity should be assigned properly' do
35
+ @capability.time_validity.lower.value.should == '2009-11-21'
36
+ end
37
+ end
@@ -0,0 +1,45 @@
1
+ require File.dirname(__FILE__) + '/../../../../spec_helper'
2
+ include OpenEHR::RM::Demographic
3
+ include OpenEHR::RM::DataTypes::Quantity::DateTime
4
+ include OpenEHR::RM::DataTypes::Text
5
+
6
+ describe Contact do
7
+ before(:each) do
8
+ name = DvText.new(:value => 'contact')
9
+ addresses = stub(Array, :size => 2, :empty? => false)
10
+ upper = DvDate.new(:value => '2009-11-20')
11
+ time_validity = stub(DvInterval, :upper => upper)
12
+ @contact = Contact.new(:archetype_node_id => 'at0000',
13
+ :name => name,
14
+ :addresses => addresses,
15
+ :time_validity => time_validity)
16
+ end
17
+
18
+ it 'should be an instance of Contact' do
19
+ @contact.should be_an_instance_of Contact
20
+ end
21
+
22
+ it 'addresses should be assigned properly' do
23
+ @contact.addresses.size.should == 2
24
+ end
25
+
26
+ it 'should raise ArgumentError with nil address' do
27
+ lambda {
28
+ @contact.addresses = nil
29
+ }.should raise_error ArgumentError
30
+ end
31
+
32
+ it 'should raise ArgumentError with empty addresses' do
33
+ lambda {
34
+ @contact.addresses = [ ]
35
+ }.should raise_error ArgumentError
36
+ end
37
+
38
+ it 'time_validity should be assigned properly' do
39
+ @contact.time_validity.upper.value.should == '2009-11-20'
40
+ end
41
+
42
+ it 'purpose should be inherit as name' do
43
+ @contact.purpose.value.should == 'contact'
44
+ end
45
+ end
@@ -0,0 +1,32 @@
1
+ require File.dirname(__FILE__) + '/../../../../spec_helper'
2
+ include OpenEHR::RM::Demographic
3
+ include OpenEHR::RM::DataTypes::Text
4
+ include OpenEHR::RM::DataStructures::ItemStructure
5
+
6
+ describe PartyIdentity do
7
+ before(:each) do
8
+ name = DvText.new(:value => 'test')
9
+ details = stub(ItemStructure, :archetype_node_id => 'at0002')
10
+ @party_identity = PartyIdentity.new(:archetype_node_id => 'at0001',
11
+ :name => name,
12
+ :details => details)
13
+ end
14
+
15
+ it 'should be an instance of PartyIdentity' do
16
+ @party_identity.should be_an_instance_of PartyIdentity
17
+ end
18
+
19
+ it 'details should be assigned properly' do
20
+ @party_identity.details.archetype_node_id.should == 'at0002'
21
+ end
22
+
23
+ it 'should raise ArgumentError with nil details' do
24
+ lambda {
25
+ @party_identity.details = nil
26
+ }.should raise_error ArgumentError
27
+ end
28
+
29
+ it 'purpose should return as same as name' do
30
+ @party_identity.purpose.value.should == 'test'
31
+ end
32
+ end
@@ -0,0 +1,84 @@
1
+ require File.dirname(__FILE__) + '/../../../../spec_helper'
2
+ include OpenEHR::RM::Demographic
3
+ include OpenEHR::RM::DataTypes::Text
4
+ include OpenEHR::RM::DataTypes::Quantity::DateTime
5
+ include OpenEHR::RM::Support::Identification
6
+ include OpenEHR::RM::DataStructures::ItemStructure
7
+
8
+ describe PartyRelationship do
9
+ before(:each) do
10
+ name = DvText.new(:value => 'party relation')
11
+ uid = HierObjectID.new(:value => '01')
12
+ details = stub(ItemStructure, :archetype_node_id => 'at0002')
13
+ upper = DvDate.new(:value => '2009-11-21')
14
+ time_validity = stub(DvInterval, :upper => upper)
15
+ source_id = ObjectID.new(:value => '01')
16
+ source = stub(PartyRef, :id => source_id, :type => 'source')
17
+ target_id = ObjectID.new(:value => '02')
18
+ target = stub(PartyRef, :id => target_id)
19
+ @party_relationship =
20
+ PartyRelationship.new(:archetype_node_id => 'at0000',
21
+ :name => name,
22
+ :uid => uid,
23
+ :details => details,
24
+ :time_validity => time_validity,
25
+ :source => source,
26
+ :target => target)
27
+ end
28
+
29
+ it 'should be an instance of PartyRelationship' do
30
+ @party_relationship.should be_an_instance_of PartyRelationship
31
+ end
32
+
33
+ it 'uid should be assigned properly' do
34
+ @party_relationship.uid.value.should == '01'
35
+ end
36
+
37
+ it 'should raise ArgumentError when nil assigned to uid' do
38
+ lambda {
39
+ @party_relationship.uid = nil
40
+ }.should raise_error ArgumentError
41
+ end
42
+
43
+ it 'details should be assigned properly' do
44
+ @party_relationship.details.archetype_node_id.should == 'at0002'
45
+ end
46
+
47
+ it 'time_validity should be assigned properly' do
48
+ @party_relationship.time_validity.upper.value.should == '2009-11-21'
49
+ end
50
+
51
+ it 'source should be_assigned properly' do
52
+ @party_relationship.source.type.should == 'source'
53
+ end
54
+
55
+ it 'should raise ArgumentError when source is assinged nil' do
56
+ lambda {
57
+ @party_relationship.source = nil
58
+ }.should raise_error ArgumentError
59
+ end
60
+
61
+ it 'should raise ArgumentError when source is not matched with source' do
62
+ invalid_id = ObjectID.new(:value => '10')
63
+ invalid_source = stub(PartyRef, :id => invalid_id)
64
+ lambda {
65
+ @party_relationship.source = invalid_source
66
+ }.should raise_error ArgumentError
67
+ end
68
+
69
+ it 'target should be assined properly' do
70
+ @party_relationship.target.id.value.should == '02'
71
+ end
72
+
73
+ it 'should raise ArgumentError with target is assigned by nil' do
74
+ lambda {
75
+ @party_relationship.target =nil
76
+ }.should raise_error ArgumentError
77
+ end
78
+
79
+ it 'type should be inherited of name' do
80
+ @party_relationship.type.value.should == 'party relation'
81
+ end
82
+ end
83
+
84
+
@@ -0,0 +1,131 @@
1
+ require File.dirname(__FILE__) + '/../../../../spec_helper'
2
+ include OpenEHR::RM::Demographic
3
+ include OpenEHR::RM::DataTypes::Text
4
+ include OpenEHR::RM::Support::Identification
5
+ include OpenEHR::RM::DataStructures::ItemStructure
6
+
7
+ describe Party do
8
+ before(:each) do
9
+ name = DvText.new(:value => 'PARTY')
10
+ uid = HierObjectID.new(:value => '01')
11
+ identities = stub(Set, :empty? => false, :size => 2)
12
+ contacts = stub(Set, :size => 3, :empty? => false)
13
+ cur_id = stub(ObjectID, :value => '01')
14
+ cur_source = stub(PartyRef, :id => cur_id)
15
+ id1 = stub(ObjectID, :value => '03')
16
+ targ1 = stub(PartyRef, :id => id1)
17
+ rel1 = stub(PartyRelationship, :source => cur_source,
18
+ :target => targ1)
19
+ id2 = stub(ObjectID, :value => '04')
20
+ targ2 = stub(PartyRef, :id => id2)
21
+ rel2 = stub(PartyRelationship, :source => cur_source,
22
+ :target => targ2)
23
+ id3 = stub(ObjectID, :value => '05')
24
+ targ3 = stub(PartyRef, :id => id3)
25
+ rel3 = stub(PartyRelationship, :source => cur_source,
26
+ :target => targ3)
27
+ id4 = stub(ObjectID, :value => '06')
28
+ targ4 = stub(PartyRef, :id => id4)
29
+ rel4 = stub(PartyRelationship, :source => cur_source,
30
+ :target => targ4)
31
+ relationships = [rel1, rel2, rel3, rel4].to_set
32
+ reverse_relationships = stub(Set, :empty? => false, :size => 5)
33
+ details = stub(ItemStructure, :archetype_node_id => 'at0005')
34
+ @party = Party.new(:archetype_node_id => 'at0001',
35
+ :name => name,
36
+ :uid => uid,
37
+ :identities => identities,
38
+ :contacts => contacts,
39
+ :relationships => relationships,
40
+ :reverse_relationships => reverse_relationships,
41
+ :details => details)
42
+ end
43
+
44
+ it 'should be an instance of Party' do
45
+ @party.should be_an_instance_of Party
46
+ end
47
+
48
+ it 'uid should be assigned properly' do
49
+ @party.uid.value.should == '01'
50
+ end
51
+
52
+ it 'should raise ArgumentError with nil uid' do
53
+ lambda {
54
+ @party.uid = nil
55
+ }.should raise_error ArgumentError
56
+ end
57
+
58
+ it 'identities should be assigned properly' do
59
+ @party.identities.size.should be_equal 2
60
+ end
61
+
62
+ it 'should raise ArgumentError when nil identities are assigned' do
63
+ lambda {
64
+ @party.identities = nil
65
+ }.should raise_error ArgumentError
66
+ end
67
+
68
+ it 'should raise ArgumentError when identities are empty' do
69
+ expect {@party.identities = Set.new}.to raise_error
70
+ end
71
+
72
+ it 'type should be alias of name' do
73
+ @party.type.value.should == 'PARTY'
74
+ end
75
+
76
+ it 'contacts should be assigned properly' do
77
+ @party.contacts.size.should be_equal 3
78
+ end
79
+
80
+ it 'should raise ArgumentError with empty contacts' do
81
+ lambda {
82
+ @party.contacts = Set.new
83
+ }.should raise_error ArgumentError
84
+ end
85
+
86
+ it 'relationships should be assigned properly' do
87
+ target_ids = Set.new
88
+ @party.relationships.each do |rel|
89
+ target_ids << rel.target.id.value
90
+ end
91
+ target_ids.should == %w{03 04 05 06}.to_set
92
+ end
93
+
94
+ it 'should not raise ArgumentError with nil relationships' do
95
+ lambda {
96
+ @party.relationships = nil
97
+ }.should_not raise_error ArgumentError
98
+ end
99
+
100
+ it 'should raise ArgumentError with empty relationships' do
101
+ lambda {
102
+ @party.relationships = Set.new
103
+ }.should raise_error ArgumentError
104
+ end
105
+
106
+ it 'invaild relationship raise ArgumentError' do
107
+ invalid_id = stub(ObjectID, :value => '10')
108
+ invalid_source = stub(PartyRef, :id => invalid_id)
109
+ invalid_rel = stub(PartyRelationship, :source => invalid_source)
110
+ lambda {
111
+ @party.relationships = [invalid_rel].to_set
112
+ }.should raise_error ArgumentError
113
+ end
114
+
115
+ it 'reverse relationship should be assigned properly' do
116
+ @party.reverse_relationships.size.should be_equal 5
117
+ end
118
+
119
+ it 'reverse_relationships should not be empty' do
120
+ lambda {
121
+ @party.reverse_relationships = Set.new
122
+ }.should raise_error ArgumentError
123
+ end
124
+
125
+ it 'should validate reverse_relationships'
126
+
127
+ it 'details should be assigned properly' do
128
+ @party.details.archetype_node_id.should == 'at0005'
129
+ end
130
+ end
131
+