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,216 @@
1
+ # This module is a implementation of the bellow UML
2
+ # http://www.openehr.org/uml/release-1.0.1/Browsable/_9_5_1_76d0249_1140169202660_257304_813Report.html
3
+ # Related to the ticket #62
4
+ include OpenEHR::RM::Support::Identification
5
+ include OpenEHR::RM::DataTypes::Basic
6
+ module OpenEHR
7
+ module RM
8
+ module Common
9
+ module Generic
10
+ class AuditDetails
11
+ attr_reader :system_id, :committer, :time_committed, :change_type
12
+ attr_accessor :description
13
+
14
+ def initialize(args = { })
15
+ self.system_id = args[:system_id]
16
+ self.committer = args[:committer]
17
+ self.time_committed = args[:time_committed]
18
+ self.change_type = args[:change_type]
19
+ self.description = args[:description]
20
+ end
21
+
22
+ def system_id=(system_id)
23
+ if system_id.nil? or system_id.empty?
24
+ raise ArgumentError, 'system_id is mandatory'
25
+ end
26
+ @system_id = system_id
27
+ end
28
+
29
+ def committer=(committer)
30
+ raise ArgumentError, 'committer is mandatory' if committer.nil?
31
+ @committer = committer
32
+ end
33
+
34
+ def time_committed=(time_committed)
35
+ if time_committed.nil?
36
+ raise ArgumentError, 'time_committed is mandatory'
37
+ end
38
+ @time_committed = time_committed
39
+ end
40
+
41
+ def change_type=(change_type)
42
+ raise ArgumentError, 'change_type is mandatory' if change_type.nil?
43
+ @change_type = change_type
44
+ end
45
+ end
46
+
47
+ class RevisionHistory
48
+ attr_reader :items
49
+
50
+ def initialize(args = { })
51
+ self.items = args[:items]
52
+ end
53
+
54
+ def items=(items)
55
+ if items.nil? or items.empty?
56
+ raise ArgumentError, 'item(s) is/are mandatory'
57
+ end
58
+ @items = items
59
+ end
60
+
61
+ def most_recent_version
62
+ return @items.last.version_id.value
63
+ end
64
+
65
+ def most_recent_version_time_committed
66
+ return @items.last.audits.first.time_committed.value
67
+ end
68
+ end # of RevisionHistory
69
+
70
+ class RevisionHistoryItem
71
+ attr_reader :version_id, :audits
72
+
73
+ def initialize(args = { })
74
+ self.version_id = args[:version_id]
75
+ self.audits = args[:audits]
76
+ end
77
+
78
+ def audits=(audits)
79
+ if audits.nil? or audits.empty?
80
+ raise ArgumentError, 'audits is mandatory'
81
+ end
82
+ @audits = audits
83
+ end
84
+
85
+ def version_id=(version_id)
86
+ raise ArgumentError, 'version_id is mandatory' if version_id.nil?
87
+ @version_id = version_id
88
+ end
89
+ end # of RevisionHistory_Item
90
+
91
+ class PartyProxy
92
+ attr_accessor :external_ref
93
+
94
+ def initialize(args = { })
95
+ self.external_ref = args[:external_ref]
96
+ end
97
+ end
98
+
99
+ class PartySelf < PartyProxy
100
+
101
+ end
102
+
103
+ class PartyIdentified < PartyProxy
104
+ attr_reader :name, :identifier
105
+
106
+ def initialize(args = { })
107
+ if args[:external_ref].nil? && args[:name].nil? &&
108
+ args[:identifier].nil?
109
+ raise ArgumentError, 'cannot identified'
110
+ end
111
+ self.name = args[:name]
112
+ self.identifier = args[:identifier]
113
+ super(args)
114
+ end
115
+
116
+ def name=(name)
117
+ if name.nil? && @external_ref.nil? && @identifier.nil?
118
+ raise ArgumentError, 'cannot identified'
119
+ end
120
+ raise ArgumentError, 'invaild name' unless name.nil? || !name.empty?
121
+ @name = name
122
+ end
123
+
124
+ def identifier=(identifier)
125
+ if @name.nil? && @external_ref.nil? && identifier.nil?
126
+ raise ArgumentError, 'cannot identified'
127
+ end
128
+ if !identifier.nil? && identifier.empty?
129
+ raise ArgumentError, 'invaild identifier'
130
+ end
131
+ @identifier = identifier
132
+ end
133
+
134
+ def external_ref=(external_ref)
135
+ if @name.nil? && @identifier.nil? && external_ref.nil?
136
+ raise ArgumentError, 'invalid external_ref'
137
+ end
138
+ @external_ref = external_ref
139
+ end
140
+ end
141
+
142
+ class PartyRelated < PartyIdentified
143
+ attr_reader :relationship
144
+ def initialize(args = { })
145
+ super(args)
146
+ self.relationship = args[:relationship]
147
+ end
148
+
149
+ def relationship=(relationship)
150
+ if relationship.nil?
151
+ raise ArgumentError, 'relationship must not be nil'
152
+ end
153
+ @relationship = relationship
154
+ end
155
+ end
156
+
157
+ class Participation
158
+ attr_reader :performer, :function, :mode
159
+ attr_accessor :time
160
+
161
+ def initialize(args ={ })
162
+ self.performer = args[:performer]
163
+ self.function = args[:function]
164
+ self.mode = args[:mode]
165
+ self.time = args[:time]
166
+ end
167
+
168
+ def performer=(performer)
169
+ raise ArgumentError, 'performer is mandatory' if performer.nil?
170
+ @performer = performer
171
+ end
172
+
173
+ def function=(function)
174
+ raise ArgumentError, 'function is mandatory' if function.nil?
175
+ @function = function
176
+ end
177
+
178
+ def mode=(mode)
179
+ raise ArgumentError, 'mode is mandatory' if mode.nil?
180
+ @mode = mode
181
+ end
182
+ end
183
+
184
+ class Attestation < AuditDetails
185
+ attr_reader :reason
186
+ attr_accessor :proof, :attested_view, :is_pending, :items
187
+
188
+ def initialize(args = { })
189
+ super(args)
190
+ self.reason = args[:reason]
191
+ self.proof = args[:proof]
192
+ self.items = args[:items]
193
+ self.attested_view = args[:attested_view]
194
+ self.is_pending = args[:is_pending]
195
+ end
196
+
197
+ def reason=(reason)
198
+ raise ArgumentError, 'reason is mandatory' if reason.nil?
199
+ @reason = reason
200
+ end
201
+
202
+ def items=(items)
203
+ if !items.nil? && items.empty?
204
+ raise ArgumentError, 'items should not be empty'
205
+ end
206
+ @items = items
207
+ end
208
+
209
+ def is_pending?
210
+ return is_pending
211
+ end
212
+ end
213
+ end # of Generic
214
+ end # of Common
215
+ end # of RM
216
+ end # of OpenEHR
@@ -0,0 +1,154 @@
1
+ require 'set'
2
+ module OpenEHR
3
+ module RM
4
+ module Common
5
+ module Resource
6
+ class AuthoredResource
7
+ attr_reader :original_language, :translations
8
+ attr_accessor :description, :revision_history
9
+
10
+ def initialize(args = { })
11
+ self.original_language = args[:original_language]
12
+ self.translations = args[:translations]
13
+ self.revision_history = args[:revision_history]
14
+ self.description = args[:description]
15
+ end
16
+
17
+ def original_language=(original_language)
18
+ if original_language.nil?
19
+ raise ArgumentError, 'original language is mandatory'
20
+ end
21
+ @original_language = original_language
22
+ end
23
+
24
+ def translations=(translations)
25
+ if !translations.nil? && translations.empty?
26
+ raise ArgumentError, 'translation is empty'
27
+ end
28
+ @translations = translations
29
+ end
30
+
31
+ def current_revision
32
+ @revision_history.most_recent_version
33
+ end
34
+
35
+ def languages_available
36
+ return Set.new(@translations.keys) << original_language.code_string
37
+ end
38
+
39
+ def is_controlled?
40
+ return !@revision_history.nil?
41
+ end
42
+ end
43
+
44
+ class TranslationDetails
45
+ attr_reader :language, :author
46
+ attr_accessor :accreditation, :other_details
47
+
48
+ def initialize(args = {})
49
+ self.language = args[:language]
50
+ self.author = args[:author]
51
+ self.accreditation = args[:accreditation]
52
+ self.other_details = args[:other_details]
53
+ end
54
+
55
+ def language=(language)
56
+ raise ArgumentError, 'language is mandatory' if language.nil?
57
+ @language = language
58
+ end
59
+
60
+ def author=(author)
61
+ raise ArgumentError, 'author is mandatory' if author.nil?
62
+ @author = author
63
+ end
64
+ end
65
+
66
+ class ResourceDescription
67
+ attr_reader :original_author, :lifecycle_state, :details
68
+ attr_accessor :other_contributors, :resource_package_uri,
69
+ :other_details, :parent_resource
70
+
71
+ def initialize(args = {})
72
+ self.original_author = args[:original_author]
73
+ self.lifecycle_state = args[:lifecycle_state]
74
+ self.details = args[:details]
75
+ self.other_contributors = args[:other_contributors]
76
+ self.resource_package_uri = args[:resource_package_uri]
77
+ self.other_details = args[:other_details]
78
+ self.parent_resource = args[:parent_resource]
79
+ end
80
+
81
+ def original_author=(original_author)
82
+ if original_author.nil? || original_author.empty?
83
+ raise ArgumentError, 'original_author is mandatory'
84
+ end
85
+ @original_author = original_author
86
+ end
87
+
88
+ def lifecycle_state=(lifecycle_state)
89
+ if lifecycle_state.nil? || lifecycle_state.empty?
90
+ raise ArgumentError, 'lifecycle_state is malformatted'
91
+ end
92
+ @lifecycle_state = lifecycle_state
93
+ end
94
+
95
+ def details=(details)
96
+ if details.nil? || details.empty?
97
+ raise ArgumentError, 'nil or empty details'
98
+ end
99
+ @details = details
100
+ end
101
+ end
102
+
103
+ class ResourceDescriptionItem
104
+ attr_reader :language, :purpose, :use, :misuse, :copyright
105
+ attr_accessor :keywords, :original_resource_uri, :other_details
106
+
107
+ def initialize(args = { })
108
+ self.language = args[:language]
109
+ self.purpose = args[:purpose]
110
+ self.keywords = args[:keywords]
111
+ self.use = args[:use]
112
+ self.misuse = args[:misuse]
113
+ self.copyright = args[:copyright]
114
+ self.original_resource_uri = args[:original_resource_uri]
115
+ self.other_details = args[:other_details]
116
+ end
117
+
118
+ def language=(language)
119
+ raise ArgumentError, 'language is mandatory' if language.nil?
120
+ @language = language
121
+ end
122
+
123
+ def purpose=(purpose)
124
+ if purpose.nil? || purpose.empty?
125
+ raise ArgumentError, 'purpose is mandatory'
126
+ end
127
+ @purpose = purpose
128
+ end
129
+
130
+ def use=(use)
131
+ if !use.nil? && use.empty?
132
+ raise ArgumentError, 'use is invalid'
133
+ end
134
+ @use = use
135
+ end
136
+
137
+ def misuse=(misuse)
138
+ if !misuse.nil? && misuse.empty?
139
+ raise ArgumentError, 'misuse is invalid'
140
+ end
141
+ @misuse = misuse
142
+ end
143
+
144
+ def copyright=(copyright)
145
+ if !copyright.nil? && copyright.empty?
146
+ raise ArgumentError, 'copyright is invalid'
147
+ end
148
+ @copyright = copyright
149
+ end
150
+ end
151
+ end # end of Resouce
152
+ end # end of module Common
153
+ end # end of module RM
154
+ end # end of module OpenEHR
@@ -0,0 +1,14 @@
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+
4
+ module OpenEHR
5
+ module RM
6
+ module Common
7
+ autoload :Archetyped, 'common/archetyped'
8
+ autoload :ChangeControl, 'common/change_control'
9
+ autoload :Directory, 'common/directory'
10
+ autoload :Generic, 'common/generic.rb'
11
+ autoload :Resource, 'common/resource'
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,246 @@
1
+ # rm::composition::content::entry
2
+ # entry module
3
+ # http://www.openehr.org/uml/release-1.0.1/Browsable/_9_0_76d0249_1109264528523_312165_346Report.html
4
+ # refs #56
5
+ include OpenEHR::RM::Composition::Content
6
+
7
+ module OpenEHR
8
+ module RM
9
+ module Composition
10
+ module Content
11
+ module Entry
12
+ class Entry < ContentItem
13
+ attr_reader :language, :encoding, :subject
14
+ attr_accessor :provider, :other_participations, :workflow_id
15
+ def initialize(args = { })
16
+ super(args)
17
+ self.language = args[:language]
18
+ self.encoding = args[:encoding]
19
+ self.subject = args[:subject]
20
+ self.provider = args[:provider]
21
+ self.other_participations = args[:other_participations]
22
+ self.workflow_id = args[:workflow_id]
23
+ end
24
+
25
+ def language=(language)
26
+ raise ArgumentError, 'language is mandatory' if language.nil?
27
+ @language = language
28
+ end
29
+
30
+ def encoding=(encoding)
31
+ raise ArgumentError, 'encoding is mandatory' if encoding.nil?
32
+ @encoding = encoding
33
+ end
34
+
35
+ def subject=(subject)
36
+ raise ArgumentError, 'subject is mandatory' if subject.nil?
37
+ @subject = subject
38
+ end
39
+
40
+ def subject_is_self?
41
+ return @subject.instance_of? PartySelf
42
+ end
43
+ end
44
+
45
+ class AdminEntry < Entry
46
+ attr_reader :data
47
+
48
+ def initialize(args = { })
49
+ super(args)
50
+ self.data = args[:data]
51
+ end
52
+
53
+ def data=(data)
54
+ raise ArgumentError, 'data are mandatory' if data.nil?
55
+ @data = data
56
+ end
57
+ end
58
+ class CareEntry < Entry
59
+ attr_accessor :protocol, :guideline_id
60
+
61
+ def initialize(args = { })
62
+ super(args)
63
+ self.protocol = args[:protocol]
64
+ self.guideline_id = args[:guideline_id]
65
+ end
66
+ end
67
+
68
+ class Observation < CareEntry
69
+ attr_reader :data
70
+ attr_accessor :state
71
+
72
+ def initialize(args = { })
73
+ super(args)
74
+ self.data = args[:data]
75
+ self.state = args[:state]
76
+ end
77
+
78
+ def data=(data)
79
+ raise ArgumentError, 'data are mandatory' if data.nil?
80
+ @data = data
81
+ end
82
+ end
83
+
84
+ class Evaluation < CareEntry
85
+ attr_reader :data
86
+
87
+ def initialize(args = { })
88
+ super(args)
89
+ self.data = args[:data]
90
+ end
91
+
92
+ def data=(data)
93
+ raise ArgumentError, 'data are mandatory' if data.nil?
94
+ @data = data
95
+ end
96
+ end
97
+
98
+ class Instruction < CareEntry
99
+ attr_reader :narrative, :activities
100
+ attr_accessor :expiry_time, :wf_definition
101
+
102
+ def initialize(args = { })
103
+ super(args)
104
+ self.narrative = args[:narrative]
105
+ self.activities = args[:activities]
106
+ self.expiry_time = args[:expiry_time]
107
+ self.wf_definition = args[:wf_definition]
108
+ end
109
+
110
+ def narrative=(narrative)
111
+ if narrative.nil?
112
+ raise ArgumentError, 'narrative is mandatory'
113
+ end
114
+ @narrative = narrative
115
+ end
116
+
117
+ def activities=(activities)
118
+ if !activities.nil? && activities.empty?
119
+ raise ArgumentError, 'activities should not be empty'
120
+ end
121
+ @activities = activities
122
+ end
123
+ end
124
+
125
+ class Activity < Locatable
126
+ attr_reader :description, :timing, :action_archetype_id
127
+
128
+ def initialize(args = { })
129
+ super(args)
130
+ self.description = args[:description]
131
+ self.timing = args[:timing]
132
+ self.action_archetype_id = args[:action_archetype_id]
133
+ end
134
+
135
+ def description=(description)
136
+ if description.nil?
137
+ raise ArgumentError, 'description is mandatory'
138
+ end
139
+ @description = description
140
+ end
141
+
142
+ def timing=(timing)
143
+ if timing.nil?
144
+ raise ArgumentError, 'timing is mandatory'
145
+ end
146
+ @timing = timing
147
+ end
148
+ end
149
+
150
+ def action_archetype_id=(action_archetype_id)
151
+ if action_archetype_id.nil? || action_archetype_id.empty?
152
+ raise ArgumentError, 'action_archetype_id is mandatory'
153
+ end
154
+ @action_archetype_id = action_archetype_id
155
+ end
156
+
157
+ class Action < CareEntry
158
+ attr_reader :time, :description, :ism_transition
159
+ attr_accessor :instruction_details
160
+
161
+ def initialize(args = { })
162
+ super(args)
163
+ self.description = args[:description]
164
+ self.time = args[:time]
165
+ self.ism_transition = args[:ism_transition]
166
+ self.instruction_details = args[:instruction_details]
167
+ end
168
+
169
+ def time=(time)
170
+ if time.nil?
171
+ raise ArgumentError, 'time is mandatory'
172
+ end
173
+ @time = time
174
+ end
175
+
176
+ def description=(description)
177
+ if description.nil?
178
+ raise ArgumentError, 'description is mandatory'
179
+ end
180
+ @description = description
181
+ end
182
+
183
+ def ism_transition=(ism_transition)
184
+ if ism_transition.nil?
185
+ raise ArgumentError
186
+ end
187
+ @ism_transition = ism_transition
188
+ end
189
+ end
190
+
191
+ class InstructionDetails < Pathable
192
+ attr_reader :instruction_id, :activity_id
193
+ attr_accessor :wf_details
194
+
195
+ def initialize(args = { })
196
+ super(args)
197
+ self.instruction_id = args[:instruction_id]
198
+ self.activity_id = args[:activity_id]
199
+ self.wf_details = args[:wf_details]
200
+ end
201
+
202
+ def instruction_id=(instruction_id)
203
+ if instruction_id.nil?
204
+ raise ArgumentError, 'instruction_id is mandatory'
205
+ end
206
+ @instruction_id = instruction_id
207
+ end
208
+
209
+ def activity_id=(activity_id)
210
+ if activity_id.nil? || activity_id.empty?
211
+ raise ArgumentError, 'activity_id is mandatory'
212
+ end
213
+ @activity_id = activity_id
214
+ end
215
+ end
216
+
217
+ class IsmTransition < Pathable
218
+ attr_reader :current_state, :transition
219
+ attr_accessor :careflow_step
220
+
221
+ def initialize(args = { })
222
+ super(args)
223
+ self.current_state = args[:current_state]
224
+ self.transition = args[:transition]
225
+ self.careflow_step = args[:careflow_step]
226
+ end
227
+
228
+ def current_state=(current_state)
229
+ if current_state.nil?
230
+ raise ArgumentError, 'current_state is mandatory'
231
+ end
232
+ @current_state = current_state
233
+ end
234
+
235
+ def transition=(transition)
236
+ if transition.nil?
237
+ raise ArgumentError, 'transition is mandatory'
238
+ end
239
+ @transition = transition
240
+ end
241
+ end
242
+ end # of Entry
243
+ end # of Content
244
+ end # of Composition
245
+ end # of RM
246
+ end # of OpenEHR
@@ -0,0 +1,31 @@
1
+ # rm::composition::content::navigation
2
+ # navigation module
3
+ # http://www.openehr.org/uml/release-1.0.1/Browsable/_9_0_76d0249_1109264528523_312165_346Report.html
4
+ # refs #56
5
+ include OpenEHR::RM::Composition::Content
6
+
7
+ module OpenEHR
8
+ module RM
9
+ module Composition
10
+ module Content
11
+ module Navigation
12
+ class Section < ContentItem
13
+ attr_reader :items
14
+
15
+ def initialize(args = { })
16
+ super(args)
17
+ self.items = args[:items]
18
+ end
19
+
20
+ def items=(items)
21
+ if !items.nil? && items.empty?
22
+ raise ArgumentError, 'items should not be empty'
23
+ end
24
+ @items = items
25
+ end
26
+ end
27
+ end
28
+ end # end of Content
29
+ end # end of Composition
30
+ end # end of RM
31
+ end # end of OpenEHR
@@ -0,0 +1,22 @@
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+ # rm::composition::content
4
+ # content module
5
+ # http://www.openehr.org/uml/release-1.0.1/Browsable/_9_5_1_76d0249_1140524925046_706492_3290Report.html
6
+ # refs #58
7
+ include OpenEHR::RM::Common::Archetyped
8
+
9
+ module OpenEHR
10
+ module RM
11
+ module Composition
12
+ module Content
13
+ autoload :Navigation, 'content/navigation'
14
+ autoload :Entry, 'content/entry'
15
+
16
+ class ContentItem < Locatable
17
+
18
+ end
19
+ end # end of Content
20
+ end # end of Composition
21
+ end # end of RM
22
+ end # end of OpenEHR