open_ehr 0.6.1

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 (253) hide show
  1. data/.document +5 -0
  2. data/Gemfile +14 -0
  3. data/Gemfile.lock +43 -0
  4. data/Guardfile +9 -0
  5. data/History.txt +4 -0
  6. data/Manifest.txt +16 -0
  7. data/PostInstall.txt +9 -0
  8. data/README.rdoc +66 -0
  9. data/Rakefile +49 -0
  10. data/VERSION +1 -0
  11. data/doc/README_rdoc.html +148 -0
  12. data/doc/created.rid +2 -0
  13. data/doc/images/brick.png +0 -0
  14. data/doc/images/brick_link.png +0 -0
  15. data/doc/images/bug.png +0 -0
  16. data/doc/images/bullet_black.png +0 -0
  17. data/doc/images/bullet_toggle_minus.png +0 -0
  18. data/doc/images/bullet_toggle_plus.png +0 -0
  19. data/doc/images/date.png +0 -0
  20. data/doc/images/find.png +0 -0
  21. data/doc/images/loadingAnimation.gif +0 -0
  22. data/doc/images/macFFBgHack.png +0 -0
  23. data/doc/images/package.png +0 -0
  24. data/doc/images/page_green.png +0 -0
  25. data/doc/images/page_white_text.png +0 -0
  26. data/doc/images/page_white_width.png +0 -0
  27. data/doc/images/plugin.png +0 -0
  28. data/doc/images/ruby.png +0 -0
  29. data/doc/images/tag_green.png +0 -0
  30. data/doc/images/wrench.png +0 -0
  31. data/doc/images/wrench_orange.png +0 -0
  32. data/doc/images/zoom.png +0 -0
  33. data/doc/index.html +54 -0
  34. data/doc/js/darkfish.js +116 -0
  35. data/doc/js/jquery.js +32 -0
  36. data/doc/js/quicksearch.js +114 -0
  37. data/doc/js/thickbox-compressed.js +10 -0
  38. data/doc/openehr_terminology.xml +2700 -0
  39. data/doc/rdoc.css +706 -0
  40. data/lib/#open_ehr.rb# +11 -0
  41. data/lib/open_ehr/am/archetype/archetype_description/archetype_description.rb +21 -0
  42. data/lib/open_ehr/am/archetype/assertion.rb +190 -0
  43. data/lib/open_ehr/am/archetype/constraint_model/primitive.rb +296 -0
  44. data/lib/open_ehr/am/archetype/constraint_model.rb +340 -0
  45. data/lib/open_ehr/am/archetype/ontology.rb +97 -0
  46. data/lib/open_ehr/am/archetype.rb +134 -0
  47. data/lib/open_ehr/am/open_ehr_profile/data_types/basic.rb +29 -0
  48. data/lib/open_ehr/am/open_ehr_profile/data_types/quantity.rb +19 -0
  49. data/lib/open_ehr/am/open_ehr_profile/data_types/text.rb +12 -0
  50. data/lib/open_ehr/am.rb +8 -0
  51. data/lib/open_ehr/assumed_library_types.rb +627 -0
  52. data/lib/open_ehr/parser/xml_perser.rb +13 -0
  53. data/lib/open_ehr/parser.rb +19 -0
  54. data/lib/open_ehr/rm/common/archetyped.rb +182 -0
  55. data/lib/open_ehr/rm/common/change_control.rb +332 -0
  56. data/lib/open_ehr/rm/common/directory.rb +29 -0
  57. data/lib/open_ehr/rm/common/generic.rb +216 -0
  58. data/lib/open_ehr/rm/common/resource.rb +154 -0
  59. data/lib/open_ehr/rm/common.rb +14 -0
  60. data/lib/open_ehr/rm/composition/content/entry.rb +246 -0
  61. data/lib/open_ehr/rm/composition/content/navigation.rb +31 -0
  62. data/lib/open_ehr/rm/composition/content.rb +22 -0
  63. data/lib/open_ehr/rm/composition.rb +103 -0
  64. data/lib/open_ehr/rm/data_structures/history.rb +117 -0
  65. data/lib/open_ehr/rm/data_structures/item_structure/representation.rb +63 -0
  66. data/lib/open_ehr/rm/data_structures/item_structure.rb +216 -0
  67. data/lib/open_ehr/rm/data_structures.rb +25 -0
  68. data/lib/open_ehr/rm/data_types/basic.rb +108 -0
  69. data/lib/open_ehr/rm/data_types/charset.lst +818 -0
  70. data/lib/open_ehr/rm/data_types/charset_extract.rb +24 -0
  71. data/lib/open_ehr/rm/data_types/encapsulated.rb +98 -0
  72. data/lib/open_ehr/rm/data_types/quantity/date_time.rb +229 -0
  73. data/lib/open_ehr/rm/data_types/quantity.rb +403 -0
  74. data/lib/open_ehr/rm/data_types/text.rb +168 -0
  75. data/lib/open_ehr/rm/data_types/time_specification.rb +75 -0
  76. data/lib/open_ehr/rm/data_types/uri.rb +82 -0
  77. data/lib/open_ehr/rm/data_types.rb +14 -0
  78. data/lib/open_ehr/rm/demographic.rb +269 -0
  79. data/lib/open_ehr/rm/ehr.rb +162 -0
  80. data/lib/open_ehr/rm/integration.rb +27 -0
  81. data/lib/open_ehr/rm/security.rb +12 -0
  82. data/lib/open_ehr/rm/support/assumed_types.rb +81 -0
  83. data/lib/open_ehr/rm/support/definition.rb +15 -0
  84. data/lib/open_ehr/rm/support/identification.rb +408 -0
  85. data/lib/open_ehr/rm/support/measurement.rb +17 -0
  86. data/lib/open_ehr/rm/support/terminology.rb +135 -0
  87. data/lib/open_ehr/rm/support.rb +14 -0
  88. data/lib/open_ehr/rm.rb +16 -0
  89. data/lib/open_ehr/serializer.rb +272 -0
  90. data/lib/open_ehr/terminology/open_ehr_terminology.rb +41 -0
  91. data/lib/open_ehr/terminology.rb +7 -0
  92. data/lib/open_ehr/writer.rb +12 -0
  93. data/lib/open_ehr.rb +11 -0
  94. data/spec/lib/open_ehr/am/archetype/archetype_spec.rb +98 -0
  95. data/spec/lib/open_ehr/am/archetype/assertion/assertion_spec.rb +60 -0
  96. data/spec/lib/open_ehr/am/archetype/assertion/assertion_variable_spec.rb +30 -0
  97. data/spec/lib/open_ehr/am/archetype/assertion/expr_binary_operator.rb +40 -0
  98. data/spec/lib/open_ehr/am/archetype/assertion/expr_item_spec.rb +28 -0
  99. data/spec/lib/open_ehr/am/archetype/assertion/expr_leaf_spec.rb +34 -0
  100. data/spec/lib/open_ehr/am/archetype/assertion/expr_operator_spec.rb +25 -0
  101. data/spec/lib/open_ehr/am/archetype/assertion/expr_unary_operator_spec.rb +26 -0
  102. data/spec/lib/open_ehr/am/archetype/assertion/operator_kind_spec.rb +110 -0
  103. data/spec/lib/open_ehr/am/archetype/constraint_model/archetype_constraint_spec.rb +56 -0
  104. data/spec/lib/open_ehr/am/archetype/constraint_model/archetype_internal_ref_spec.rb +36 -0
  105. data/spec/lib/open_ehr/am/archetype/constraint_model/archetype_slot_spec.rb +61 -0
  106. data/spec/lib/open_ehr/am/archetype/constraint_model/c_attribute_spec.rb +59 -0
  107. data/spec/lib/open_ehr/am/archetype/constraint_model/c_complex_object_spec.rb +39 -0
  108. data/spec/lib/open_ehr/am/archetype/constraint_model/c_defined_object_spec.rb +53 -0
  109. data/spec/lib/open_ehr/am/archetype/constraint_model/c_domain_type_spec.rb +25 -0
  110. data/spec/lib/open_ehr/am/archetype/constraint_model/c_multiple_attribute_spec.rb +29 -0
  111. data/spec/lib/open_ehr/am/archetype/constraint_model/c_object_spec.rb +61 -0
  112. data/spec/lib/open_ehr/am/archetype/constraint_model/c_primitive_object_spec.rb +33 -0
  113. data/spec/lib/open_ehr/am/archetype/constraint_model/c_reference_object_spec.rb +17 -0
  114. data/spec/lib/open_ehr/am/archetype/constraint_model/c_single_attribute_spec.rb +28 -0
  115. data/spec/lib/open_ehr/am/archetype/constraint_model/cardinality_spec.rb +68 -0
  116. data/spec/lib/open_ehr/am/archetype/constraint_model/constraint_ref_spec.rb +29 -0
  117. data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_boolean_spec.rb +52 -0
  118. data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_date_spec.rb +80 -0
  119. data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_date_time_spec.rb +106 -0
  120. data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_duration_spec.rb +69 -0
  121. data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_integer_spec.rb +62 -0
  122. data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_primitive_spec.rb +39 -0
  123. data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_real_spec.rb +14 -0
  124. data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_string_spec.rb +69 -0
  125. data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_time_spec.rb +79 -0
  126. data/spec/lib/open_ehr/am/archetype/ontology/archetype_ontology_spec.rb +59 -0
  127. data/spec/lib/open_ehr/am/archetype/ontology/archetype_term_spec.rb +43 -0
  128. data/spec/lib/open_ehr/am/archetype/validity_kind_spec.rb +42 -0
  129. data/spec/lib/open_ehr/assumed_library_types/interval_spec.rb +140 -0
  130. data/spec/lib/open_ehr/assumed_library_types/iso8601_date_spec.rb +236 -0
  131. data/spec/lib/open_ehr/assumed_library_types/iso8601_date_time_spec.rb +47 -0
  132. data/spec/lib/open_ehr/assumed_library_types/iso8601_duration_spec.rb +150 -0
  133. data/spec/lib/open_ehr/assumed_library_types/iso8601_time_spec.rb +234 -0
  134. data/spec/lib/open_ehr/assumed_library_types/iso8601_timezone_spec.rb +57 -0
  135. data/spec/lib/open_ehr/assumed_library_types/time_definitions_spec.rb +136 -0
  136. data/spec/lib/open_ehr/rm/common/archetyped/archetyped_spec.rb +50 -0
  137. data/spec/lib/open_ehr/rm/common/archetyped/feeder_audit_details_spec.rb +60 -0
  138. data/spec/lib/open_ehr/rm/common/archetyped/feeder_audit_spec.rb +51 -0
  139. data/spec/lib/open_ehr/rm/common/archetyped/link_spec.rb +42 -0
  140. data/spec/lib/open_ehr/rm/common/archetyped/locatable_spec.rb +89 -0
  141. data/spec/lib/open_ehr/rm/common/archetyped/pathable_spec.rb +42 -0
  142. data/spec/lib/open_ehr/rm/common/change_control/contribution_spec.rb +56 -0
  143. data/spec/lib/open_ehr/rm/common/change_control/imported_version_spec.rb +63 -0
  144. data/spec/lib/open_ehr/rm/common/change_control/original_version_spec.rb +71 -0
  145. data/spec/lib/open_ehr/rm/common/change_control/version_spec.rb +92 -0
  146. data/spec/lib/open_ehr/rm/common/change_control/versioned_object_spec.rb +285 -0
  147. data/spec/lib/open_ehr/rm/common/directory/folder_spec.rb +26 -0
  148. data/spec/lib/open_ehr/rm/common/generic/attestation_spec.rb +62 -0
  149. data/spec/lib/open_ehr/rm/common/generic/audit_details_spec.rb +51 -0
  150. data/spec/lib/open_ehr/rm/common/generic/participation_spec.rb +36 -0
  151. data/spec/lib/open_ehr/rm/common/generic/party_identified_spec.rb +64 -0
  152. data/spec/lib/open_ehr/rm/common/generic/party_proxy_spec.rb +18 -0
  153. data/spec/lib/open_ehr/rm/common/generic/party_related_spec.rb +24 -0
  154. data/spec/lib/open_ehr/rm/common/generic/revision_history_item_spec.rb +43 -0
  155. data/spec/lib/open_ehr/rm/common/generic/revision_history_spec.rb +45 -0
  156. data/spec/lib/open_ehr/rm/common/resource/authored_resource_spec.rb +68 -0
  157. data/spec/lib/open_ehr/rm/common/resource/resource_description_item_spec.rb +105 -0
  158. data/spec/lib/open_ehr/rm/common/resource/resource_description_spec.rb +74 -0
  159. data/spec/lib/open_ehr/rm/common/resource/translation_details_spec.rb +35 -0
  160. data/spec/lib/open_ehr/rm/composition/composition_spec.rb +92 -0
  161. data/spec/lib/open_ehr/rm/composition/content/content_item_spec.rb +14 -0
  162. data/spec/lib/open_ehr/rm/composition/content/entry/action_spec.rb +69 -0
  163. data/spec/lib/open_ehr/rm/composition/content/entry/activity_spec.rb +61 -0
  164. data/spec/lib/open_ehr/rm/composition/content/entry/admin_entry_spec.rb +38 -0
  165. data/spec/lib/open_ehr/rm/composition/content/entry/care_entry_spec.rb +37 -0
  166. data/spec/lib/open_ehr/rm/composition/content/entry/entry_spec.rb +88 -0
  167. data/spec/lib/open_ehr/rm/composition/content/entry/evaluation_spec.rb +37 -0
  168. data/spec/lib/open_ehr/rm/composition/content/entry/instruction_details_spec.rb +51 -0
  169. data/spec/lib/open_ehr/rm/composition/content/entry/instruction_spec.rb +62 -0
  170. data/spec/lib/open_ehr/rm/composition/content/entry/ism_transition_spec.rb +46 -0
  171. data/spec/lib/open_ehr/rm/composition/content/entry/observation_spec.rb +45 -0
  172. data/spec/lib/open_ehr/rm/composition/content/navigation/section_spec.rb +32 -0
  173. data/spec/lib/open_ehr/rm/composition/event_context_spec.rb +88 -0
  174. data/spec/lib/open_ehr/rm/data_structures/data_structure_spec.rb +21 -0
  175. data/spec/lib/open_ehr/rm/data_structures/history/event_spec.rb +44 -0
  176. data/spec/lib/open_ehr/rm/data_structures/history/history_spec.rb +67 -0
  177. data/spec/lib/open_ehr/rm/data_structures/history/interval_event_spec.rb +43 -0
  178. data/spec/lib/open_ehr/rm/data_structures/item_structure/item_list_spec.rb +53 -0
  179. data/spec/lib/open_ehr/rm/data_structures/item_structure/item_single_spec.rb +29 -0
  180. data/spec/lib/open_ehr/rm/data_structures/item_structure/item_table_spec.rb +147 -0
  181. data/spec/lib/open_ehr/rm/data_structures/item_structure/item_tree_spec.rb +48 -0
  182. data/spec/lib/open_ehr/rm/data_structures/item_structure/representation/cluster_spec.rb +26 -0
  183. data/spec/lib/open_ehr/rm/data_structures/item_structure/representation/element_spec.rb +22 -0
  184. data/spec/lib/open_ehr/rm/data_types/basic/data_value_spec.rb +17 -0
  185. data/spec/lib/open_ehr/rm/data_types/basic/dv_boolean_spec.rb +29 -0
  186. data/spec/lib/open_ehr/rm/data_types/basic/dv_identifier_spec.rb +108 -0
  187. data/spec/lib/open_ehr/rm/data_types/basic/dv_state_spec.rb +44 -0
  188. data/spec/lib/open_ehr/rm/data_types/encapsulated/dv_encapsulated_spec.rb +42 -0
  189. data/spec/lib/open_ehr/rm/data_types/encapsulated/dv_multimedia_spec.rb +79 -0
  190. data/spec/lib/open_ehr/rm/data_types/encapsulated/dv_parsable_spec.rb +34 -0
  191. data/spec/lib/open_ehr/rm/data_types/quantity/date_time/dv_date_spec.rb +64 -0
  192. data/spec/lib/open_ehr/rm/data_types/quantity/date_time/dv_date_time_spec.rb +25 -0
  193. data/spec/lib/open_ehr/rm/data_types/quantity/date_time/dv_tempral_spec.rb +24 -0
  194. data/spec/lib/open_ehr/rm/data_types/quantity/date_time/dv_time_spec.rb +37 -0
  195. data/spec/lib/open_ehr/rm/data_types/quantity/dv_absolute_quantity_spec.rb +35 -0
  196. data/spec/lib/open_ehr/rm/data_types/quantity/dv_amount_spec.rb +105 -0
  197. data/spec/lib/open_ehr/rm/data_types/quantity/dv_count_spec.rb +12 -0
  198. data/spec/lib/open_ehr/rm/data_types/quantity/dv_interval_spec.rb +17 -0
  199. data/spec/lib/open_ehr/rm/data_types/quantity/dv_ordered_spec.rb +60 -0
  200. data/spec/lib/open_ehr/rm/data_types/quantity/dv_ordinal_spec.rb +74 -0
  201. data/spec/lib/open_ehr/rm/data_types/quantity/dv_proportion_spec.rb +162 -0
  202. data/spec/lib/open_ehr/rm/data_types/quantity/dv_quantified_spec.rb +36 -0
  203. data/spec/lib/open_ehr/rm/data_types/quantity/dv_quantity_spec.rb +78 -0
  204. data/spec/lib/open_ehr/rm/data_types/quantity/proportion_kind_spec.rb +24 -0
  205. data/spec/lib/open_ehr/rm/data_types/quantity/reference_range_spec.rb +43 -0
  206. data/spec/lib/open_ehr/rm/data_types/text/code_phrase_spec.rb +23 -0
  207. data/spec/lib/open_ehr/rm/data_types/text/dv_paragraph_spec.rb +13 -0
  208. data/spec/lib/open_ehr/rm/data_types/text/dv_text_spec.rb +57 -0
  209. data/spec/lib/open_ehr/rm/data_types/text/term_mapping_spec.rb +59 -0
  210. data/spec/lib/open_ehr/rm/data_types/uri/dv_ehr_uri_spec.rb +21 -0
  211. data/spec/lib/open_ehr/rm/data_types/uri/dv_uri_spec.rb +36 -0
  212. data/spec/lib/open_ehr/rm/demographic/actor_spec.rb +79 -0
  213. data/spec/lib/open_ehr/rm/demographic/address_spec.rb +33 -0
  214. data/spec/lib/open_ehr/rm/demographic/capability_spec.rb +37 -0
  215. data/spec/lib/open_ehr/rm/demographic/contact_spec.rb +45 -0
  216. data/spec/lib/open_ehr/rm/demographic/party_identity_spec.rb +32 -0
  217. data/spec/lib/open_ehr/rm/demographic/party_relationship_spec.rb +84 -0
  218. data/spec/lib/open_ehr/rm/demographic/party_spec.rb +133 -0
  219. data/spec/lib/open_ehr/rm/demographic/role_spec.rb +58 -0
  220. data/spec/lib/open_ehr/rm/ehr/ehr_access_spec.rb +33 -0
  221. data/spec/lib/open_ehr/rm/ehr/ehr_spec.rb +139 -0
  222. data/spec/lib/open_ehr/rm/ehr/ehr_status_spec.rb +52 -0
  223. data/spec/lib/open_ehr/rm/ehr/versioned_composition_spec.rb +33 -0
  224. data/spec/lib/open_ehr/rm/integration/generic_entry_spec.rb +31 -0
  225. data/spec/lib/open_ehr/rm/support/identification/access_group_ref_spec.rb +19 -0
  226. data/spec/lib/open_ehr/rm/support/identification/archetype_id_spec.rb +152 -0
  227. data/spec/lib/open_ehr/rm/support/identification/generic_id_spec.rb +33 -0
  228. data/spec/lib/open_ehr/rm/support/identification/hier_object_id_spec.rb +12 -0
  229. data/spec/lib/open_ehr/rm/support/identification/internet_id_spec.rb +12 -0
  230. data/spec/lib/open_ehr/rm/support/identification/iso_oid_spec.rb +12 -0
  231. data/spec/lib/open_ehr/rm/support/identification/locatable_ref_spec.rb +34 -0
  232. data/spec/lib/open_ehr/rm/support/identification/object_id_spec.rb +24 -0
  233. data/spec/lib/open_ehr/rm/support/identification/object_ref_spec.rb +33 -0
  234. data/spec/lib/open_ehr/rm/support/identification/object_version_id_spec.rb +60 -0
  235. data/spec/lib/open_ehr/rm/support/identification/party_ref_spec.rb +29 -0
  236. data/spec/lib/open_ehr/rm/support/identification/template_id_spec.rb +12 -0
  237. data/spec/lib/open_ehr/rm/support/identification/terminology_id_spec.rb +33 -0
  238. data/spec/lib/open_ehr/rm/support/identification/uid_based_id_spec.rb +50 -0
  239. data/spec/lib/open_ehr/rm/support/identification/uid_spec.rb +29 -0
  240. data/spec/lib/open_ehr/rm/support/identification/version_tree_id_spec.rb +104 -0
  241. data/spec/lib/open_ehr/rm/support/measurement_service_spec.rb +7 -0
  242. data/spec/lib/open_ehr/rm/support/terminology_service_spec.rb +24 -0
  243. data/spec/lib/open_ehr/serializer/adl-test-entry.most_minimal.test.adl +20 -0
  244. data/spec/lib/open_ehr/serializer/adl_serializer_spec.rb +47 -0
  245. data/spec/lib/open_ehr/serializer/openEHR-EHR-SECTION.test.v1.adl +38 -0
  246. data/spec/lib/open_ehr/serializer/openEHR-EHR-SECTION.test.v1.xml +58 -0
  247. data/spec/lib/open_ehr/serializer/sample_archetype_spec.rb +44 -0
  248. data/spec/lib/open_ehr/serializer/xml_serializer_spec.rb +49 -0
  249. data/spec/lib/open_ehr/terminology/open_ehr_terminology_spec.rb +40 -0
  250. data/spec/rcov.opts +1 -0
  251. data/spec/spec.opts +5 -0
  252. data/spec/spec_helper.rb +54 -0
  253. metadata +401 -0
@@ -0,0 +1,133 @@
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
+ lambda {
70
+ @party.identities = Set.new
71
+ }
72
+ end
73
+
74
+ it 'type should be alias of name' do
75
+ @party.type.value.should == 'PARTY'
76
+ end
77
+
78
+ it 'contacts should be assigned properly' do
79
+ @party.contacts.size.should be_equal 3
80
+ end
81
+
82
+ it 'should raise ArgumentError with empty contacts' do
83
+ lambda {
84
+ @party.contacts = Set.new
85
+ }.should raise_error ArgumentError
86
+ end
87
+
88
+ it 'relationships should be assigned properly' do
89
+ target_ids = Set.new
90
+ @party.relationships.each do |rel|
91
+ target_ids << rel.target.id.value
92
+ end
93
+ target_ids.should == %w{03 04 05 06}.to_set
94
+ end
95
+
96
+ it 'should not raise ArgumentError with nil relationships' do
97
+ lambda {
98
+ @party.relationships = nil
99
+ }.should_not raise_error ArgumentError
100
+ end
101
+
102
+ it 'should raise ArgumentError with empty relationships' do
103
+ lambda {
104
+ @party.relationships = Set.new
105
+ }.should raise_error ArgumentError
106
+ end
107
+
108
+ it 'invaild relationship raise ArgumentError' do
109
+ invalid_id = stub(ObjectID, :value => '10')
110
+ invalid_source = stub(PartyRef, :id => invalid_id)
111
+ invalid_rel = stub(PartyRelationship, :source => invalid_source)
112
+ lambda {
113
+ @party.relationships = [invalid_rel].to_set
114
+ }.should raise_error ArgumentError
115
+ end
116
+
117
+ it 'reverse relationship should be assigned properly' do
118
+ @party.reverse_relationships.size.should be_equal 5
119
+ end
120
+
121
+ it 'reverse_relationships should not be empty' do
122
+ lambda {
123
+ @party.reverse_relationships = Set.new
124
+ }.should raise_error ArgumentError
125
+ end
126
+
127
+ it 'should validate reverse_relationships'
128
+
129
+ it 'details should be assigned properly' do
130
+ @party.details.archetype_node_id.should == 'at0005'
131
+ end
132
+ end
133
+
@@ -0,0 +1,58 @@
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
+
7
+ describe Role do
8
+ before(:each) do
9
+ name = DvText.new(:value => 'role')
10
+ uid = HierObjectID.new(:value => '01')
11
+ identities = stub(Set, :empty? => false)
12
+ capabilities = stub(Array, :size => 2, :empty? => false)
13
+ lower = DvDate.new(:value => '2009-11-21')
14
+ time_validity = stub(DvInterval, :lower => lower)
15
+ performer = stub(PartyRef, :type => 'ROLE')
16
+ @role = Role.new(:archetype_node_id => 'at0000',
17
+ :name => name,
18
+ :uid => uid,
19
+ :identities => identities,
20
+ :performer => performer,
21
+ :capabilities => capabilities,
22
+ :time_validity => time_validity)
23
+ end
24
+
25
+ it 'should be an instance of Role' do
26
+ @role.should be_an_instance_of Role
27
+ end
28
+
29
+ it 'performer should assigned properly' do
30
+ @role.performer.type.should == 'ROLE'
31
+ end
32
+
33
+ it 'should raise ArgumentError with nil performer' do
34
+ lambda {
35
+ @role.performer = nil
36
+ }.should raise_error ArgumentError
37
+ end
38
+
39
+ it 'capabilities should be assigned properly' do
40
+ @role.capabilities.size.should be_equal 2
41
+ end
42
+
43
+ it 'should raise ArgumentError with empty capabilities' do
44
+ lambda {
45
+ @role.capabilities = [ ]
46
+ }.should raise_error ArgumentError
47
+ end
48
+
49
+ it 'should not raise ArgumentError with nil capabilities' do
50
+ lambda {
51
+ @role.capabilities = nil
52
+ }.should_not raise_error ArgumentError
53
+ end
54
+
55
+ it 'time_validity should be properly assigned' do
56
+ @role.time_validity.lower.value.should == '2009-11-21'
57
+ end
58
+ end
@@ -0,0 +1,33 @@
1
+ require File.dirname(__FILE__) + '/../../../../spec_helper'
2
+ include OpenEHR::RM::EHR
3
+ include OpenEHR::RM::Security
4
+ include OpenEHR::RM::DataTypes::Text
5
+
6
+ describe EHRAccess do
7
+ before(:each) do
8
+ name = DvText.new(:value => 'EHRAccess')
9
+ settings = stub(AccessControlSettings)
10
+ @ehr_access = EHRAccess.new(:archetype_node_id => 'at0001',
11
+ :name => name,
12
+ :settings => settings,
13
+ :scheme => 'SSL')
14
+ end
15
+
16
+ it 'should be an instance of EHRAccess' do
17
+ @ehr_access.should be_an_instance_of EHRAccess
18
+ end
19
+
20
+ it 'settings should be assigned, but Security package is not determined' do
21
+ @ehr_access.settings.should_not be_nil
22
+ end
23
+
24
+ it 'schema should be assigned properly' do
25
+ @ehr_access.scheme.should == 'SSL'
26
+ end
27
+
28
+ it 'should raise ArgumentError with nil schema' do
29
+ lambda {
30
+ @ehr_access.scheme = nil
31
+ }.should raise_error ArgumentError
32
+ end
33
+ end
@@ -0,0 +1,139 @@
1
+ require File.dirname(__FILE__) + '/../../../../spec_helper'
2
+ include OpenEHR::RM::EHR
3
+ include OpenEHR::RM::Support::Identification
4
+ include OpenEHR::RM::DataTypes::Quantity::DateTime
5
+
6
+ describe EHR do
7
+ before(:each) do
8
+ system_id = HierObjectID.new(:value => 'ABC::DEF')
9
+ ehr_id = HierObjectID.new(:value => 'GHI::JKL')
10
+ time_created = DvDateTime.new(:value => '2009-11-14T19:01:11')
11
+ ehr_access = stub(ObjectRef, :type => 'VERSIONED_EHR_ACCESS')
12
+ ehr_status = stub(ObjectRef, :type => 'VERSIONED_EHR_STATUS')
13
+ contribution1 = stub(ObjectRef, :type => 'CONTRIBUTION')
14
+ contribution2 = stub(ObjectRef, :type => 'CONTRIBUTION')
15
+ contributions = [contribution1, contribution2]
16
+ directory = stub(ObjectRef, :type => 'VERSIONED_FOLDER')
17
+ composition1 = stub(ObjectRef, :type => 'VERSIONED_COMPOSITION')
18
+ composition2 = stub(ObjectRef, :type => 'VERSIONED_COMPOSITION')
19
+ composition3 = stub(ObjectRef, :type => 'VERSIONED_COMPOSITION')
20
+ compositions = [composition1, composition2, composition3]
21
+ @ehr = EHR.new(:system_id => system_id,
22
+ :ehr_id => ehr_id,
23
+ :time_created => time_created,
24
+ :contributions => contributions,
25
+ :ehr_access => ehr_access,
26
+ :ehr_status => ehr_status,
27
+ :directory => directory,
28
+ :compositions => compositions)
29
+ end
30
+
31
+ it 'should be an instance of EHR' do
32
+ @ehr.should be_an_instance_of EHR
33
+ end
34
+
35
+ it 'system_id should be assigned properly' do
36
+ @ehr.system_id.value.should == 'ABC::DEF'
37
+ end
38
+
39
+ it 'should raise ArgumentError with nil system_id' do
40
+ lambda {
41
+ @ehr.system_id = nil
42
+ }.should raise_error ArgumentError
43
+ end
44
+
45
+ it 'ehr_id should be assigned properly' do
46
+ @ehr.ehr_id.value.should == 'GHI::JKL'
47
+ end
48
+
49
+ it 'should raise ArgumentError with nil ehr_id' do
50
+ lambda {
51
+ @ehr.ehr_id = nil
52
+ }.should raise_error ArgumentError
53
+ end
54
+
55
+ it 'time_created should be assigned properly' do
56
+ @ehr.time_created.value.should == '2009-11-14T19:01:11'
57
+ end
58
+
59
+ it 'should raise ArgumentError with nil time_created' do
60
+ lambda {
61
+ @ehr.time_created = nil
62
+ }.should raise_error ArgumentError
63
+ end
64
+
65
+ it 'contributions should properly assigned' do
66
+ @ehr.contributions.size.should be_equal 2
67
+ end
68
+
69
+ it 'type contributions should be CONTRIBUTION' do
70
+ contributions = [stub(ObjectRef, :type => 'PARTY')]
71
+ lambda {
72
+ @ehr.contributions = contributions
73
+ }.should raise_error ArgumentError
74
+ end
75
+
76
+ it 'should raise ArgumentError with nil contributions' do
77
+ lambda {
78
+ @ehr.contributions = nil
79
+ }.should raise_error ArgumentError
80
+ end
81
+
82
+ it 'ehr_access should be assigned properly' do
83
+ @ehr.ehr_access.type.should == 'VERSIONED_EHR_ACCESS'
84
+ end
85
+
86
+ it 'should raise ArgumentError with nil ehr_access' do
87
+ lambda {
88
+ @ehr.ehr_access = nil
89
+ }.should raise_error ArgumentError
90
+ end
91
+
92
+ it 'should raise ArguemntError with invalid ehr_access type' do
93
+ lambda {
94
+ @ehr.ehr_access = stub(ObjectRef, :type => 'VERSIONED_EHR_STATUS')
95
+ }.should raise_error ArgumentError
96
+ end
97
+
98
+ it 'ehr_status should be assigned properly' do
99
+ @ehr.ehr_status.type.should == 'VERSIONED_EHR_STATUS'
100
+ end
101
+
102
+ it 'should raise ArgumentError with nil ehr_status' do
103
+ lambda {
104
+ @ehr.ehr_status = nil
105
+ }.should raise_error ArgumentError
106
+ end
107
+
108
+ it 'should raise ArgumentError with invalid ehr_statsu type' do
109
+ lambda {
110
+ @ehr.ehr_status = stub(ObjectRef, :type => 'VERSIONED_EHR_ACCESS')
111
+ }.should raise_error ArgumentError
112
+ end
113
+
114
+ it 'should assigned compositions properly' do
115
+ @ehr.compositions.size.should be_equal 3
116
+ end
117
+
118
+ it 'should raise ArgumentError with nil compositions' do
119
+ lambda {
120
+ @ehr.compositions = nil
121
+ }.should raise_error ArgumentError
122
+ end
123
+
124
+ it 'should raise ArgumentError with invalid type composition' do
125
+ lambda {
126
+ @ehr.compositions = [stub(ObjectRef, :type => 'INVALID_COMPOSITION')]
127
+ }.should raise_error ArgumentError
128
+ end
129
+
130
+ it 'should assigned directory properly' do
131
+ @ehr.directory.type.should == 'VERSIONED_FOLDER'
132
+ end
133
+
134
+ it 'should raise ArgumentError with invalid type' do
135
+ lambda {
136
+ @ehr.directory = stub(ObjectRef, :type => 'INVALID_FOLDER')
137
+ }.should raise_error ArgumentError
138
+ end
139
+ end
@@ -0,0 +1,52 @@
1
+ require File.dirname(__FILE__) + '/../../../../spec_helper'
2
+ include OpenEHR::RM::EHR
3
+ include OpenEHR::RM::Common::Generic
4
+ include OpenEHR::RM::DataTypes::Text
5
+ include OpenEHR::RM::Support::Identification
6
+ include OpenEHR::RM::DataStructures::ItemStructure
7
+
8
+ describe EHRStatus do
9
+ before(:each) do
10
+ external_ref = stub(PartyRef, :namespace => 'ehr status')
11
+ subject = PartySelf.new(:external_ref => external_ref)
12
+ other_details = stub(ItemStructure, :archetype_node_id => 'at0005')
13
+ @ehr_status = EHRStatus.new(:archetype_node_id => 'at0001',
14
+ :name => DvText.new(:value => 'ehrstatus'),
15
+ :subject => subject,
16
+ :is_queryable => false,
17
+ :is_modifiable => true,
18
+ :other_details => other_details)
19
+ end
20
+
21
+ it 'should be an instance of EHRStatus' do
22
+ @ehr_status.should be_an_instance_of EHRStatus
23
+ end
24
+
25
+ it 'subject should be assigned properly' do
26
+ @ehr_status.subject.external_ref.namespace.should == 'ehr status'
27
+ end
28
+
29
+ it 'should raise ArgumentError with nil subject' do
30
+ lambda {
31
+ @ehr_status.subject = nil
32
+ }.should raise_error ArgumentError
33
+ end
34
+
35
+ it 'is_queryable should be properly assigned' do
36
+ @ehr_status.is_queryable?.should be_false
37
+ end
38
+
39
+ it 'is_modifiable should be assigned properly' do
40
+ @ehr_status.is_modifiable?.should be_true
41
+ end
42
+
43
+ it 'other_details should be assigned properly' do
44
+ @ehr_status.other_details.archetype_node_id.should == 'at0005'
45
+ end
46
+
47
+ it 'should raise ArgumentError when parant is not nil' do
48
+ lambda {
49
+ @ehr_status.parent = 'parent'
50
+ }.should raise_error ArgumentError
51
+ end
52
+ end
@@ -0,0 +1,33 @@
1
+ require File.dirname(__FILE__) + '/../../../../spec_helper'
2
+ include OpenEHR::RM::EHR
3
+ include OpenEHR::RM::Composition
4
+ include OpenEHR::RM::Common::ChangeControl
5
+ include OpenEHR::RM::DataTypes::Text
6
+ include OpenEHR::RM::DataTypes::Quantity::DateTime
7
+
8
+ describe VersionedComposition do
9
+ before(:each) do
10
+ composition1 = stub(Composition, :archetype_node_id => 'at0002',
11
+ :is_persistent? => true)
12
+ version1 = stub(Version, :data => composition1)
13
+ composition2 = stub(Composition, :archetype_node_id => 'at0002',
14
+ :is_persistent? => false)
15
+ version2 = stub(Version, :data => composition2)
16
+ uid = HierObjectID.new(:value => 'opeehr.jp::350')
17
+ owner_id = stub(ObjectRef, :type => 'EHR')
18
+ time_created = DvDateTime.new(:value => '2009-11-16T15:14:33')
19
+ @versioned_composition =
20
+ VersionedComposition.new(:uid => uid,
21
+ :owner_id => owner_id,
22
+ :time_created => time_created,
23
+ :all_versions => [version1, version2])
24
+ end
25
+
26
+ it 'should be an instance of VersionedComposition' do
27
+ @versioned_composition.should be_an_instance_of VersionedComposition
28
+ end
29
+
30
+ it 'is_persistent? should be evaluated by first version' do
31
+ @versioned_composition.is_persistent?.should be_true
32
+ end
33
+ end
@@ -0,0 +1,31 @@
1
+ require File.dirname(__FILE__) + '/../../../../spec_helper'
2
+ include OpenEHR::RM::Integration
3
+ include OpenEHR::RM::DataStructures::ItemStructure
4
+ include OpenEHR::RM::DataTypes::Text
5
+
6
+ describe GenericEntry do
7
+ before(:each) do
8
+ data = stub(ItemTree, :archetype_node_id => 'at0003')
9
+ name = DvText.new(:value => 'generic entry')
10
+ @generic_entry = GenericEntry.new(:archetype_node_id => 'at0001',
11
+ :name => name,
12
+ :data => data)
13
+ end
14
+
15
+ it 'should be an instance of GenericEntry' do
16
+ @generic_entry.should be_an_instance_of GenericEntry
17
+ end
18
+
19
+ it 'data should be assigned properly' do
20
+ @generic_entry.data.archetype_node_id.should == 'at0003'
21
+ end
22
+
23
+ it 'should raise ArgumentError when data are nil' do
24
+ lambda {
25
+ @generic_entry.data = nil
26
+ }.should raise_error ArgumentError
27
+ end
28
+ end
29
+
30
+
31
+
@@ -0,0 +1,19 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::RM::Support::Identification
3
+
4
+ describe AccessGroupRef do
5
+ before(:each) do
6
+ object_id = ObjectID.new(:value => 'deadbeefbabe')
7
+ @access_group_ref = AccessGroupRef.new(:id => object_id,
8
+ :type => 'ACCESS_GROUP',
9
+ :namespace => 'unknown')
10
+ end
11
+
12
+ it 'should be an instance of AccessGroupRef' do
13
+ @access_group_ref.should be_an_instance_of AccessGroupRef
14
+ end
15
+
16
+ it 'type should be equal ACCESS_GROUP' do
17
+ @access_group_ref.type.should == 'ACCESS_GROUP'
18
+ end
19
+ end
@@ -0,0 +1,152 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::RM::Support::Identification
3
+
4
+ describe ArchetypeID do
5
+ before(:each) do
6
+ @archetype_id = ArchetypeID.new(:value => 'openEHR-EHR-SECTION.physical_examination-prenatal.v2')
7
+ end
8
+
9
+ it 'should be an instance of ArchetypeID' do
10
+ @archetype_id.should be_an_instance_of ArchetypeID
11
+ end
12
+
13
+ it 's value should be equal
14
+ openEHR-EHR-SECTION.physical_examination-prenatal.v2' do
15
+ @archetype_id.value.should ==
16
+ 'openEHR-EHR-SECTION.physical_examination-prenatal.v2'
17
+ end
18
+ it 's qualified_rm_entity should be openEHR-EHR-SECTION' do
19
+ @archetype_id.qualified_rm_entity.should == 'openEHR-EHR-SECTION'
20
+ end
21
+
22
+ it 's rm_originator should be openEHR' do
23
+ @archetype_id.rm_originator.should == 'openEHR'
24
+ end
25
+
26
+ it 's rm_name should be EHR' do
27
+ @archetype_id.rm_name.should == 'EHR'
28
+ end
29
+
30
+ it 'rm_entity should be SECTION' do
31
+ @archetype_id.rm_entity.should == 'SECTION'
32
+ end
33
+
34
+ it 's domain_concept should be physical_examination-prenatal' do
35
+ @archetype_id.domain_concept.should == 'physical_examination-prenatal'
36
+ end
37
+
38
+ it 's concept name should be physical_examination' do
39
+ @archetype_id.concept_name.should == 'physical_examination'
40
+ end
41
+
42
+ it 's specialisation should be prenatal' do
43
+ @archetype_id.specialisation.should == 'prenatal'
44
+ end
45
+
46
+ it 's version_id should == v2' do
47
+ @archetype_id.version_id.should == 'v2'
48
+ end
49
+
50
+ it 'should raise ArgumentError with wrong id format' do
51
+ lambda {
52
+ ArchetypeID.new(:value =>'wrong-format')
53
+ }.should raise_error ArgumentError
54
+ end
55
+
56
+ it 'should raise ArgumentError with nil concept name' do
57
+ lambda {
58
+ @archetype_id.concept_name = nil
59
+ }.should raise_error ArgumentError
60
+ end
61
+
62
+ it 'should raise ArgumentError with wrong domain concept format' do
63
+ lambda {
64
+ @archetype_id.domain_concept = '0123'
65
+ }.should raise_error ArgumentError
66
+ end
67
+
68
+ it 'should raise ArgumentError with empty rm_entity' do
69
+ lambda {
70
+ @archetype_id.rm_entity = ''
71
+ }.should raise_error ArgumentError
72
+ end
73
+
74
+ it 'should raise ArgumentError with nil rm_entity' do
75
+ lambda {
76
+ @archetype_id.rm_entity = nil
77
+ }.should raise_error ArgumentError
78
+ end
79
+
80
+ it 'should raise ArgumentError with empty rm_originator' do
81
+ lambda {
82
+ @archetype_id.rm_originator = ''
83
+ }.should raise_error ArgumentError
84
+ end
85
+
86
+ it 'should raise ArgumentError with nil rm_originator' do
87
+ lambda {
88
+ @archetype_id.rm_originator = nil
89
+ }.should raise_error ArgumentError
90
+ end
91
+
92
+ it 'should raise ArgumentError with empty specialisation' do
93
+ lambda {
94
+ @archetype_id.specialisation = ''
95
+ }.should raise_error ArgumentError
96
+ end
97
+
98
+ it 'should not raise ArgumentError with nil specialisation' do
99
+ lambda {
100
+ @archetype_id.specialisation = nil
101
+ }.should_not raise_error ArgumentError
102
+ end
103
+
104
+ describe 'another constructor' do
105
+ before(:each) do
106
+ @archetype_id = ArchetypeID.new(:rm_originator => 'openEHR',
107
+ :rm_name => 'EHR',
108
+ :rm_entity => 'EVALUATION',
109
+ :concept_name => 'clinical_synopsis',
110
+ :version_id => 'v1')
111
+ end
112
+
113
+ it 'should be an instance of ArchetypeID' do
114
+ @archetype_id.should be_an_instance_of ArchetypeID
115
+ end
116
+
117
+ it 'domain_concept should be clinical_synopsis' do
118
+ @archetype_id.domain_concept.should == 'clinical_synopsis'
119
+ end
120
+ end
121
+
122
+ describe 'domain concept' do
123
+ before(:each) do
124
+ @archetype_id.domain_concept = 'progress_note-naturopathy'
125
+ end
126
+
127
+ it 'concept_name should be progress note' do
128
+ @archetype_id.concept_name.should == 'progress_note'
129
+ end
130
+
131
+ it 'specialisation should be naturopathy' do
132
+ @archetype_id.specialisation === 'naturopathy'
133
+ end
134
+
135
+ it 'should raise ArgumentError empty domain concept' do
136
+ lambda {
137
+ @archetype_id.domain_concept = ''
138
+ }.should raise_error ArgumentError
139
+ end
140
+
141
+ it 'should raise ArgumentError nil domain concept' do
142
+ lambda {
143
+ @archetype_id.domain_concept = nil
144
+ }.should raise_error ArgumentError
145
+ end
146
+
147
+ it 's specialisation may be empty' do
148
+ @archetype_id.domain_concept = 'clinical_synopsis'
149
+ @archetype_id.concept_name.should == 'clinical_synopsis'
150
+ end
151
+ end
152
+ end
@@ -0,0 +1,33 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::RM::Support::Identification
3
+
4
+ describe GenericID do
5
+ before(:each) do
6
+ @generic_id = GenericID.new(:value => '791-0245',
7
+ :scheme => 'ZIP')
8
+ end
9
+
10
+ it 'should be an instance of GenericID' do
11
+ @generic_id.should be_an_instance_of GenericID
12
+ end
13
+
14
+ it 's value should be 791-0245' do
15
+ @generic_id.value.should == '791-0245'
16
+ end
17
+
18
+ it 's scheme should be ZIP' do
19
+ @generic_id.scheme.should == 'ZIP'
20
+ end
21
+
22
+ it 'should raise ArgumentError with nil scheme' do
23
+ lambda {
24
+ @generic_id.scheme = nil
25
+ }.should raise_error ArgumentError
26
+ end
27
+
28
+ it 'should raise ArgumentError with empty scheme' do
29
+ lambda {
30
+ @generic_id.scheme = ''
31
+ }.should raise_error ArgumentError
32
+ end
33
+ end