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,147 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+
3
+ include OpenEHR::RM::DataStructures::ItemStructure
4
+ include OpenEHR::RM::DataStructures::ItemStructure::Representation
5
+ include OpenEHR::RM::DataTypes::Text
6
+
7
+ def row(args)
8
+ return args.collect do |n|
9
+ Element.new(:name => DvText.new(:value => n),
10
+ :archetype_node_id => 'test')
11
+ end
12
+ end
13
+
14
+ def cluster_builder(name,rows)
15
+ return Cluster.new(:name => DvText.new(:value => name),
16
+ :archetype_node_id => 'test',
17
+ :items => rows)
18
+ end
19
+
20
+ describe ItemTable do
21
+ before(:each) do
22
+ row1 = row(%w{one two three})
23
+ row2 = row(%w{four five six})
24
+ rows = [row1, row2].collect{|r| cluster_builder('cluster',r)}
25
+ @item_table = ItemTable.new(:name => DvText.new(:value => 'item table'),
26
+ :archetype_node_id => 'test',
27
+ :rows => rows)
28
+ end
29
+
30
+ it 'should be an instance of ItemTable' do
31
+ @item_table.should be_an_instance_of ItemTable
32
+ end
33
+
34
+ it 's row count should be 2' do
35
+ @item_table.row_count.should be_equal 2
36
+ end
37
+
38
+ it 's row_count should be 0 when rows are nil' do
39
+ @item_table.rows = nil
40
+ @item_table.row_count.should be_equal 0
41
+ end
42
+
43
+ it 's column_count should be 3' do
44
+ @item_table.column_count.should be_equal 3
45
+ end
46
+
47
+ it 'column_count should be 0 when @rows == nil' do
48
+ @item_table.rows = nil
49
+ @item_table.column_count.should be_equal 0
50
+ end
51
+
52
+ it 's row_names should be cluster cluster' do
53
+ @item_table.row_names.should == %w{cluster cluster}.collect{|n|
54
+ DvText.new(:value => n)}
55
+ end
56
+
57
+ it 's row_names should be empty when items are nil' do
58
+ @item_table.rows = nil
59
+ @item_table.row_names.should == []
60
+ end
61
+
62
+ it 's column_names should one two three' do
63
+ @item_table.column_names.should == %w{one two three}.collect{|s|
64
+ DvText.new(:value => s)}
65
+ end
66
+
67
+ it 's column_names should empty when items aer nil' do
68
+ @item_table.rows = nil
69
+ @item_table.column_names.should == []
70
+ end
71
+
72
+ it 's ith_row(integer) should be ith row' do
73
+ @item_table.ith_row(2).items[1].name.value.should == 'five'
74
+ end
75
+
76
+ it 'should be invalid index under 0' do
77
+ lambda {@item_table.ith_row(0) }.should raise_error(ArgumentError)
78
+ end
79
+
80
+ it 'should be true because it has_row_with_name cluster' do
81
+ @item_table.has_row_with_name?('one').should be_true
82
+ end
83
+
84
+ it 'should be true because it does not have_row_with_name key' do
85
+ @item_table.has_row_with_name?('two').should_not be_true
86
+ end
87
+
88
+ it 'should raise argument error key is nil' do
89
+ lambda {@item_table.has_row_with_name?(nil)
90
+ }.should raise_error(ArgumentError)
91
+ end
92
+
93
+ it 'should raise argument error key is empty' do
94
+ lambda {@item_table.has_row_with_name?('')
95
+ }.should raise_error(ArgumentError)
96
+ end
97
+
98
+ it 'should be true because it has_column_with_name one' do
99
+ @item_table.has_column_with_name?('one').should be_true
100
+ end
101
+
102
+ it 'should be false it has_column with name ten' do
103
+ @item_table.has_column_with_name?('ten').should be_false
104
+ end
105
+
106
+ it 'second row should be named_row four' do
107
+ @item_table.named_row('four').items[1].name.value = 'five'
108
+ end
109
+
110
+ it 'should be true if row has key' do
111
+ @item_table.has_row_with_key?(Set['one','two']).should be_true
112
+ end
113
+
114
+ it 'should not be true if row has not key' do
115
+ @item_table.has_row_with_key?(Set['two','five']).should be_false
116
+ end
117
+
118
+ it 'should be a first row that has one' do
119
+ @item_table.row_with_key(Set['one', 'two']).items[0].name.value.should =='one'
120
+ end
121
+
122
+ it 'should raise argument error if row has no key' do
123
+ lambda {
124
+ @item_table.row_with_key(Set['two','five'])}.should raise_error(ArgumentError)
125
+ end
126
+
127
+ it 'should be element at cell ij' do
128
+ @item_table.element_at_cell_ij(2,2).name.value.should == 'five'
129
+ end
130
+
131
+ it 'should not be element at cell with wrong ij' do
132
+ @item_table.element_at_cell_ij(2,3).name.value.should_not == 'five'
133
+ end
134
+
135
+ it 'should be two element at named cell by row column' do
136
+ @item_table.element_at_named_cell('cluster', 'three').name.value == 'three'
137
+ end
138
+
139
+ it 'should return nil when rows are nil' do
140
+ @item_table.rows = nil
141
+ @item_table.row_count.should be_equal 0
142
+ end
143
+
144
+ it 'should be first row as hierachy' do
145
+ @item_table.as_hierarchy.name.value.should == 'cluster'
146
+ end
147
+ end
@@ -0,0 +1,48 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+
3
+ include OpenEHR::RM::DataStructures::ItemStructure
4
+ include OpenEHR::RM::DataStructures::ItemStructure::Representation
5
+ include OpenEHR::RM::DataTypes::Text
6
+
7
+ describe ItemTree do
8
+ before(:each) do
9
+ i = 1
10
+ items = %w{one two three}.collect do |name|
11
+ i += 1
12
+ Element.new(:name => DvText.new(:value => name),
13
+ :archetype_node_id => 'at000' + i.to_s)
14
+ end
15
+ name = DvText.new(:value => 'item tree')
16
+ @item_tree = ItemTree.new(:name => name,
17
+ :archetype_node_id => 'at0001',
18
+ :items => items)
19
+ end
20
+
21
+ it 'should be an instance of ItemTree' do
22
+ @item_tree.should be_an_instance_of ItemTree
23
+ end
24
+
25
+ it 'first item name should be one' do
26
+ @item_tree.items[0].name.value.should == 'one'
27
+ end
28
+
29
+ it 'has valid element path' do
30
+ @item_tree.has_element_path?('at0002').should be_true
31
+ end
32
+
33
+ it 'should return false with wrong node' do
34
+ @item_tree.has_element_path?('at0005').should be_false
35
+ end
36
+
37
+ it 'path at002 should return two' do
38
+ @item_tree.element_at_path('at0003').name.value.should == 'two'
39
+ end
40
+
41
+ it 'path at005 should return nil' do
42
+ @item_tree.element_at_path('at0005').should be_nil
43
+ end
44
+
45
+ it 'should returns ItemTree as Cluster' do
46
+ @item_tree.as_hierarchy.name.value.should == 'item tree'
47
+ end
48
+ end
@@ -0,0 +1,26 @@
1
+ require File.dirname(__FILE__) + '/../../../../../../spec_helper'
2
+ include OpenEHR::RM::DataStructures::ItemStructure::Representation
3
+ include OpenEHR::RM::DataTypes::Text
4
+
5
+ describe Cluster do
6
+ before(:each) do
7
+ item = stub(Item)
8
+ @cluster = Cluster.new(:archetype_node_id => 'at0001',
9
+ :name => DvText.new(:value => 'cluster'),
10
+ :items => [item, item])
11
+ end
12
+
13
+ it 'should be an isntance of Cluster' do
14
+ @cluster.should be_an_instance_of Cluster
15
+ end
16
+
17
+ it 'item size should be 2' do
18
+ @cluster.items.size.should == 2
19
+ end
20
+
21
+ it 'should raise ArgumentError with empty items' do
22
+ lambda {
23
+ @cluster.items = []
24
+ }.should raise_error ArgumentError
25
+ end
26
+ end
@@ -0,0 +1,22 @@
1
+ require File.dirname(__FILE__) + '/../../../../../../spec_helper'
2
+ include OpenEHR::RM::DataStructures::ItemStructure::Representation
3
+ include OpenEHR::RM::DataTypes::Text
4
+
5
+ describe Element do
6
+ before(:each) do
7
+ value = DvText.new(:value => 'test')
8
+ @element = Element.new(:archetype_node_id => 'at0001',
9
+ :name => DvText.new(:value => 'element'),
10
+ :value => value)
11
+ end
12
+
13
+ it 'should be an instance of Element' do
14
+ @element.should be_an_instance_of Element
15
+ end
16
+
17
+ it 'value should be assigned as test' do
18
+ @element.value.value.should == 'test'
19
+ end
20
+
21
+ it 'nullflavor should be assigned'
22
+ end
@@ -0,0 +1,17 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+
3
+ include OpenEHR::RM::DataTypes::Basic
4
+
5
+ describe DataValue do
6
+ before(:each) do
7
+ @data_value = DataValue.new(:value => 'ANY')
8
+ end
9
+
10
+ it 'should be an instance of DataValue' do
11
+ @data_value.should be_an_instance_of DataValue
12
+ end
13
+
14
+ it 's value should be stub' do
15
+ @data_value.value.should == 'ANY'
16
+ end
17
+ end
@@ -0,0 +1,29 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::RM::DataTypes::Basic
3
+
4
+
5
+ describe DvBoolean do
6
+ before(:each) do
7
+ @dv_boolean = DvBoolean.new(:value => "TRUE")
8
+ end
9
+
10
+ it 'should be an instance of DvBoolean' do
11
+ @dv_boolean.should be_an_instance_of DvBoolean
12
+ end
13
+
14
+ it 'should be true' do
15
+ @dv_boolean.value.should be_true
16
+ @dv_boolean.value?.should be_true
17
+ end
18
+
19
+ it 's value assigned false, then it should not be false' do
20
+ @dv_boolean.value = false
21
+ @dv_boolean.value.should_not be_true
22
+ end
23
+
24
+ it 'raise ArgumentError' do
25
+ lambda {
26
+ @dv_boolean.value = nil
27
+ }.should raise_error(ArgumentError)
28
+ end
29
+ end
@@ -0,0 +1,108 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::RM::DataTypes::Basic
3
+ include OpenEHR::RM::DataTypes::Text
4
+
5
+ describe DvIdentifier do
6
+ before(:each) do
7
+ @dv_identifier = DvIdentifier.new(:issuer => 'Ruby Hospital',
8
+ :assigner => 'Information office',
9
+ :id => '0123456-0',
10
+ :type =>'personal id')
11
+ end
12
+
13
+ it 'should be an instance of DvIdentifier' do
14
+ @dv_identifier.should be_an_instance_of DvIdentifier
15
+ end
16
+
17
+ it 's issuer should be Ruby hospital' do
18
+ @dv_identifier.issuer.should == 'Ruby Hospital'
19
+ end
20
+
21
+ it 's assigner should be Information office' do
22
+ @dv_identifier.assigner.should == 'Information office'
23
+ end
24
+
25
+ it 's id should be 0123456-0' do
26
+ @dv_identifier.id.should == '0123456-0'
27
+ end
28
+
29
+ it 's type should be personal id' do
30
+ @dv_identifier.type.should == 'personal id'
31
+ end
32
+
33
+ it 's issuer should be change to other hospital' do
34
+ lambda {
35
+ @dv_identifier.issuer = 'Other Hospital'
36
+ }.should change(@dv_identifier, :issuer).
37
+ from('Ruby Hospital').to('Other Hospital')
38
+ end
39
+
40
+ it 'raise ArgumentError for nil issuer' do
41
+ lambda {
42
+ @dv_identifier.issuer = nil
43
+ }.should raise_error(ArgumentError)
44
+ end
45
+
46
+ it 'raise ArgumentError for empty issuer' do
47
+ lambda {
48
+ @dv_identifier.issuer = ''
49
+ }.should raise_error(ArgumentError)
50
+ end
51
+
52
+ it 's assigner should change from Information office to Service office' do
53
+ lambda {
54
+ @dv_identifier.assigner = 'Service office'
55
+ }.should change{@dv_identifier.assigner}.
56
+ from('Information office').to('Service office')
57
+ end
58
+
59
+ it 'raise ArgumentError for nil assigner' do
60
+ lambda {
61
+ @dv_identifier.assigner = nil
62
+ }.should raise_error(ArgumentError)
63
+ end
64
+
65
+ it 'raise ArgumentError for empty assigner' do
66
+ lambda {
67
+ @dv_identifier.assigner = ''
68
+ }.should raise_error(ArgumentError)
69
+ end
70
+
71
+ it 's id should change from 0123456-0 to TEST-0987' do
72
+ lambda {
73
+ @dv_identifier.id = 'TEST-0987'
74
+ }.should change(@dv_identifier, :id).
75
+ from('0123456-0').to('TEST-0987')
76
+ end
77
+
78
+ it 'raise ArgumentError for nil id' do
79
+ lambda {
80
+ @dv_identifier.id = nil
81
+ }.should raise_error(ArgumentError)
82
+ end
83
+
84
+ it 'raise ArgumentError for empty id' do
85
+ lambda {
86
+ @dv_identifier.id = ''
87
+ }.should raise_error(ArgumentError)
88
+ end
89
+
90
+ it 's type should change form personal id to test id' do
91
+ lambda {
92
+ @dv_identifier.type = "test id"
93
+ }.should change(@dv_identifier, :type).
94
+ from('personal id').to('test id')
95
+ end
96
+
97
+ it 'raise ArgumentError for nil type' do
98
+ lambda {
99
+ @dv_identifier.type = nil
100
+ }.should raise_error(ArgumentError)
101
+ end
102
+
103
+ it 'raise ArgumentError for empty issuer' do
104
+ lambda {
105
+ @dv_identifier.type = ''
106
+ }.should raise_error(ArgumentError)
107
+ end
108
+ end
@@ -0,0 +1,44 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::RM::DataTypes::Basic
3
+ include OpenEHR::RM::Support::Identification
4
+ include OpenEHR::RM::DataTypes::Text
5
+
6
+ describe DvState do
7
+ before(:each) do
8
+ @terminology_id = TerminologyID.new(:value => 'openher')
9
+ code_phrase = CodePhrase.new(:code_string => '524',
10
+ :terminology_id => @terminology_id)
11
+ dv_coded_text = DvCodedText.new(:value => "initial",
12
+ :defining_code => code_phrase)
13
+ @dv_state = DvState.new(:value => dv_coded_text,
14
+ :is_terminal => false)
15
+ end
16
+
17
+ it 'should be an instance of DvState' do
18
+ @dv_state.should be_an_instance_of DvState
19
+ end
20
+
21
+ it 's value should be initial' do
22
+ @dv_state.value.value.should == 'initial'
23
+ end
24
+
25
+ it 'should change other value assigned' do
26
+ code_phrase = CodePhrase.new(:code_string => '526',
27
+ :terminology_id => @terminology_id)
28
+ dv_coded_text = DvCodedText.new(:value =>'planned',
29
+ :defining_code => code_phrase)
30
+ lambda {
31
+ @dv_state.value = dv_coded_text
32
+ }.should change{@dv_state.value.value}.from('initial').to('planned')
33
+ end
34
+
35
+ it 'is not terminal' do
36
+ @dv_state.is_terminal?.should be_false
37
+ end
38
+
39
+ it 'should change to terminal' do
40
+ lambda {
41
+ @dv_state.is_terminal = true
42
+ }.should change(@dv_state, :is_terminal?).from(false).to(true)
43
+ end
44
+ end
@@ -0,0 +1,42 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::RM::DataTypes::Encapsulated
3
+ include OpenEHR::RM::DataTypes::Text
4
+
5
+ describe DvEncapsulated do
6
+ before(:each) do
7
+ dummy = 'test'
8
+ charset = stub(CodePhrase, :code_string => 'UTF-8')
9
+ language = stub(CodePhrase, :code_string => 'ja')
10
+ @dv_encapsulated = DvEncapsulated.new(:value => dummy,
11
+ :charset => charset,
12
+ :language => language)
13
+ end
14
+
15
+ it 's value should be test' do
16
+ @dv_encapsulated.value.should == 'test'
17
+ end
18
+
19
+ it 's size should be 4' do
20
+ @dv_encapsulated.size.should be_equal 4
21
+ end
22
+
23
+ it 's charset should be utf-8' do
24
+ @dv_encapsulated.charset.code_string.should == 'UTF-8'
25
+ end
26
+
27
+ it 's langage should be ja' do
28
+ @dv_encapsulated.language.code_string.should == 'ja'
29
+ end
30
+
31
+ it 'should raise ArgumentError when language is invalid' do
32
+ wrong_lang = stub(CodePhrase, :code_string => 'jj')
33
+ lambda {@dv_encapsulated.language = wrong_lang}.
34
+ should raise_error(ArgumentError)
35
+ end
36
+
37
+ it 'should raise ArgumentError when charset is invalid' do
38
+ wrong_charset = stub(CodePhrase, :code_string => 'UBK')
39
+ lambda {@dv_encapsulated.charset = wrong_charset}.
40
+ should raise_error(ArgumentError)
41
+ end
42
+ end
@@ -0,0 +1,79 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::RM::DataTypes::Encapsulated
3
+ include OpenEHR::RM::DataTypes::Text
4
+ include OpenEHR::RM::DataTypes::URI
5
+ include OpenEHR::RM::Support::Identification
6
+
7
+ describe DvMultimedia do
8
+ before(:each) do
9
+ media_type = stub(CodePhrase, :code_string => 'text/xml')
10
+ charset = stub(CodePhrase, :code_string => 'UTF-8')
11
+ uri = stub(DvUri, :value => 'http://openehr.jp/')
12
+ data = Array['123412', '123112']
13
+ compression_algorithm = stub(CodePhrase, :code_string => 'gzip')
14
+ integrity_check = Array['123456789ABCDEF','DEADBEEF']
15
+ integrity_check_algorithm = stub(CodePhrase, :code_string => 'SHA-1')
16
+ alternate_text = 'test'
17
+ @dv_multimedia = DvMultimedia.new(:value => '<xml>test</xml>',
18
+ :media_type => media_type,
19
+ :charset => charset,
20
+ :uri => uri,
21
+ :data => data,
22
+ :compression_algorithm => compression_algorithm,
23
+ :integrity_check => integrity_check,
24
+ :integrity_check_algorithm => integrity_check_algorithm,
25
+ :alternate_text => alternate_text)
26
+ end
27
+
28
+ it 'should be an instance of DvMultimedia' do
29
+ @dv_multimedia.should be_an_instance_of DvMultimedia
30
+ end
31
+
32
+ it 's value should be <xml>test</xml>' do
33
+ @dv_multimedia.value.should == '<xml>test</xml>'
34
+ end
35
+
36
+ it 's media_type should be text/xml' do
37
+ @dv_multimedia.media_type.code_string.should == 'text/xml'
38
+ end
39
+
40
+ it 's size should be equal 15' do
41
+ @dv_multimedia.size.should be_equal 15
42
+ end
43
+
44
+ it 's charset should be UTF-8' do
45
+ @dv_multimedia.charset.code_string.should == 'UTF-8'
46
+ end
47
+
48
+ it 's uri value should be http://openehr.jp/ ' do
49
+ @dv_multimedia.uri.value.should == 'http://openehr.jp/'
50
+ end
51
+
52
+ it 's data[0] should be 123412' do
53
+ @dv_multimedia.data[0].should == '123412'
54
+ end
55
+
56
+ it 's compression_algorithm should be gzip' do
57
+ @dv_multimedia.compression_algorithm.code_string.should == 'gzip'
58
+ end
59
+
60
+ it 's integrity_check[1] should be DEADBEEF' do
61
+ @dv_multimedia.integrity_check[1].should == 'DEADBEEF'
62
+ end
63
+
64
+ it 's integrity_check_algorithm should be SHA-1' do
65
+ @dv_multimedia.integrity_check_algorithm.code_string.should == 'SHA-1'
66
+ end
67
+
68
+ it 's alternate text should be test' do
69
+ @dv_multimedia.alternate_text.should == 'test'
70
+ end
71
+
72
+ it 'has_integrity_check should be true'
73
+
74
+ it 'is compressed should be true'
75
+
76
+ it 'is_external should be true'
77
+
78
+ it 'is_internal should be false'
79
+ end
@@ -0,0 +1,34 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::RM::DataTypes::Encapsulated
3
+ include OpenEHR::RM::DataTypes::Text
4
+
5
+ describe DvParsable do
6
+ before(:each) do
7
+ @dv_parsable = DvParsable.new(:value => 'test',
8
+ :formalism => 'plain/text')
9
+ end
10
+
11
+ it 'should be an instance of DvParsable' do
12
+ @dv_parsable.should be_an_instance_of DvParsable
13
+ end
14
+
15
+ it 'value should be test' do
16
+ @dv_parsable.value.should == 'test'
17
+ end
18
+
19
+ it 's size should be 4' do
20
+ @dv_parsable.size.should be_equal 4
21
+ end
22
+
23
+ it 's formalism should be plain/text' do
24
+ @dv_parsable.formalism.should == 'plain/text'
25
+ end
26
+
27
+ it 'should raise ArgumentError formalism nil' do
28
+ lambda {@dv_parsable.formalism = nil}.should raise_error(ArgumentError)
29
+ end
30
+
31
+ it 'should raise ArgumentError formalism empty' do
32
+ lambda {@dv_parsable.formalism = ''}.should raise_error(ArgumentError)
33
+ end
34
+ end
@@ -0,0 +1,64 @@
1
+ require File.dirname(__FILE__) + '/../../../../../../spec_helper'
2
+ include OpenEHR::RM::DataTypes::Quantity::DateTime
3
+
4
+ describe DvDate do
5
+ before(:each) do
6
+ @dv_date = DvDate.new(:value => '2009-09-28')
7
+ end
8
+
9
+ it 'should be an instance of DvDate' do
10
+ @dv_date.should be_an_instance_of DvDate
11
+ end
12
+
13
+ it 'value should be' do
14
+ @dv_date.value.should == '2009-09-28'
15
+ end
16
+
17
+ it 'year should be 2009' do
18
+ @dv_date.year.should be_equal 2009
19
+ end
20
+
21
+ it 'month should be 9' do
22
+ @dv_date.month.should be_equal 9
23
+ end
24
+
25
+ it 'day should be 28' do
26
+ @dv_date.day.should be_equal 28
27
+ end
28
+
29
+ it 'magnitude should 734045' do
30
+ @dv_date.magnitude.should == 734045
31
+ end
32
+
33
+ it 'diff should P0Y0M1W11D' do
34
+ diff_date = DvDate.new(:value => '2009-10-09')
35
+ @dv_date.diff(diff_date).value.should == 'P0Y0M1W11D'
36
+ end
37
+
38
+ it 'should process leap year' do
39
+ @dv_date.value = '2004-02-28'
40
+ diff_date = DvDate.new(:value => '2004-03-01')
41
+ @dv_date.diff(diff_date).value.should == 'P0Y0M0W2D'
42
+ end
43
+
44
+ it 'should process year'do
45
+ diff_date = DvDate.new(:value => '2007-12-31')
46
+ @dv_date.diff(diff_date).value.should == 'P1Y8M4W28D'
47
+ end
48
+
49
+ it 'should be P0Y11M4W31D' do
50
+ diff_date = DvDate.new(:value => '2008-09-30')
51
+ @dv_date.diff(diff_date).value.should == 'P0Y11M4W29D'
52
+ end
53
+
54
+ it 'should be P1Y0M0W1D' do
55
+ diff_date = DvDate.new(:value => '2010-09-29')
56
+ @dv_date.diff(diff_date).value.should == 'P1Y0M0W1D'
57
+ end
58
+
59
+ it 'should be P0Y0M0W1D' do
60
+ past_date = DvDate.new(:value => '2009-12-31')
61
+ future_date=DvDate.new(:value => '2010-01-01')
62
+ past_date.diff(future_date).value.should == 'P0Y0M0W1D'
63
+ end
64
+ end