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,150 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+ include OpenEHR::AssumedLibraryTypes
3
+
4
+ describe ISO8601Duration do
5
+ before(:each) do
6
+ @iso8601duration = ISO8601Duration.new('P1Y2M3W4DT5H6M7.8S')
7
+ end
8
+
9
+ it 'should be an instance of ISO8601Duration' do
10
+ @iso8601duration.should be_an_instance_of ISO8601Duration
11
+ end
12
+
13
+ it 'years should be 1' do
14
+ @iso8601duration.years.should be_equal 1
15
+ end
16
+
17
+ it 'months should be 2' do
18
+ @iso8601duration.months.should be_equal 2
19
+ end
20
+
21
+ it 'weeks should be 3' do
22
+ @iso8601duration.weeks.should be_equal 3
23
+ end
24
+
25
+ it 'days should be 4' do
26
+ @iso8601duration.days.should be_equal 4
27
+ end
28
+
29
+ it 'hours should be 5' do
30
+ @iso8601duration.hours.should be_equal 5
31
+ end
32
+
33
+ it 'minutes should be 6' do
34
+ @iso8601duration.minutes.should be_equal 6
35
+ end
36
+
37
+ it 'seconds should be 7' do
38
+ @iso8601duration.seconds.should be_equal 7
39
+ end
40
+
41
+ it 'fractional_seconds should be .8' do
42
+ @iso8601duration.fractional_second.should == 0.8
43
+ end
44
+
45
+ it 'should be equal P1Y2M3W4DT5H6M7.8S as string' do
46
+ @iso8601duration.as_string.should == 'P1Y2M3W4DT5H6M7.8S'
47
+ end
48
+
49
+ it 'should not raise ArgumentError with 0 yaers' do
50
+ lambda {
51
+ @iso8601duration.years = 0
52
+ }.should_not raise_error ArgumentError
53
+ end
54
+
55
+ it 'should raise ArgumentError with -1 yaers' do
56
+ lambda {
57
+ @iso8601duration.years = -1
58
+ }.should raise_error ArgumentError
59
+ end
60
+
61
+ it 'should not raise ArgumentError with 0 months' do
62
+ lambda {
63
+ @iso8601duration.months = 0
64
+ }.should_not raise_error ArgumentError
65
+ end
66
+
67
+ it 'should raise ArgumentError with -1 months' do
68
+ lambda {
69
+ @iso8601duration.months = -1
70
+ }.should raise_error ArgumentError
71
+ end
72
+
73
+ it 'should not raise ArgumentError with 0 weeks' do
74
+ lambda {
75
+ @iso8601duration.weeks = 0
76
+ }.should_not raise_error ArgumentError
77
+ end
78
+
79
+ it 'should raise ArgumentError with -1 weeks' do
80
+ lambda {
81
+ @iso8601duration.weeks = -1
82
+ }.should raise_error ArgumentError
83
+ end
84
+
85
+ it 'should not raise ArgumentError with 0 days' do
86
+ lambda {
87
+ @iso8601duration.days = 0
88
+ }.should_not raise_error ArgumentError
89
+ end
90
+
91
+ it 'should raise ArgumentError with -1 days' do
92
+ lambda {
93
+ @iso8601duration.days = -1
94
+ }.should raise_error ArgumentError
95
+ end
96
+
97
+ it 'should not raise ArgumentError with 0 hours' do
98
+ lambda {
99
+ @iso8601duration.hours = 0
100
+ }.should_not raise_error ArgumentError
101
+ end
102
+
103
+ it 'should raise ArgumentError with -1 hours' do
104
+ lambda {
105
+ @iso8601duration.hours = -1
106
+ }.should raise_error ArgumentError
107
+ end
108
+
109
+ it 'should not raise ArgumentError with 0 minutes' do
110
+ lambda {
111
+ @iso8601duration.minutes = 0
112
+ }.should_not raise_error ArgumentError
113
+ end
114
+
115
+ it 'should raise ArgumentError with -1 minutes' do
116
+ lambda {
117
+ @iso8601duration.minutes = -1
118
+ }.should raise_error ArgumentError
119
+ end
120
+
121
+ it 'should not raise ArgumentError with 0 seconds' do
122
+ lambda {
123
+ @iso8601duration.seconds = 0
124
+ }.should_not raise_error ArgumentError
125
+ end
126
+
127
+ it 'should raise ArgumentError with -1 seconds' do
128
+ lambda {
129
+ @iso8601duration.seconds = -1
130
+ }.should raise_error ArgumentError
131
+ end
132
+
133
+ it 'should not raise ArgumentError with 0 fractional_second' do
134
+ lambda {
135
+ @iso8601duration.fractional_second = 0
136
+ }.should_not raise_error ArgumentError
137
+ end
138
+
139
+ it 'should raise ArgumentError with -1 fractional_second' do
140
+ lambda {
141
+ @iso8601duration.fractional_second = -1
142
+ }.should raise_error ArgumentError
143
+ end
144
+
145
+ it 'should raise ArgumentError with 1.0 fractional_second' do
146
+ lambda {
147
+ @iso8601duration.fractional_second = 1.0
148
+ }.should raise_error ArgumentError
149
+ end
150
+ end
@@ -0,0 +1,234 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+ include OpenEHR::AssumedLibraryTypes
3
+
4
+ describe ISO8601Time do
5
+ before(:each) do
6
+ @iso8601time = ISO8601Time.new('15:55:37.32+0900')
7
+ end
8
+
9
+ it 'should be an instance of ISO8601Time' do
10
+ @iso8601time.should be_an_instance_of ISO8601Time
11
+ end
12
+
13
+ it 's hour should be 15' do
14
+ @iso8601time.hour.should == 15
15
+ end
16
+
17
+ it 's minute should be 55' do
18
+ @iso8601time.minute.should == 55
19
+ end
20
+
21
+ it 's second should be 37'do
22
+ @iso8601time.second.should == 37
23
+ end
24
+
25
+ it 's fractional second should be 0.32' do
26
+ @iso8601time.fractional_second == 0.32
27
+ end
28
+
29
+ it 'have fractional_second' do
30
+ @iso8601time.should have_fractional_second
31
+ end
32
+
33
+ it 's time zone should +0900' do
34
+ @iso8601time.timezone == '+0900'
35
+ end
36
+
37
+ it 'should be 15:55:37.32+0900 as_string' do
38
+ @iso8601time.as_string.should == '15:55:37.32+0900'
39
+ end
40
+
41
+ it 'decimal sign should not be comma' do
42
+ @iso8601time.is_decimal_sign_comma?.should_not be_true
43
+ end
44
+
45
+ it 'should be extended' do
46
+ @iso8601time.is_extended?.should be_true
47
+ end
48
+
49
+ it 'should not be partial' do
50
+ @iso8601time.is_partial?.should_not be true
51
+ end
52
+
53
+ describe 'hour behavior' do
54
+ it 'should raise ArgumentError with nil hour' do
55
+ lambda {
56
+ @iso8601time.hour = nil
57
+ }.should raise_error ArgumentError
58
+ end
59
+
60
+ it 'should not raise ArgumentError with -1 hour' do
61
+ lambda {
62
+ @iso8601time.hour = -1
63
+ }.should raise_error ArgumentError
64
+ end
65
+
66
+ it 'should not raise ArgumentError with 0 hour' do
67
+ lambda {
68
+ @iso8601time.hour = 0
69
+ }.should_not raise_error ArgumentError
70
+ end
71
+
72
+ it 'should not raise ArgumentError with 23 hour' do
73
+ lambda {
74
+ @iso8601time.hour = 23
75
+ }.should_not raise_error ArgumentError
76
+ end
77
+
78
+ it 'should not raise ArgumentError with 24 hour' do
79
+ lambda {
80
+ @iso8601time.hour = 24
81
+ }.should raise_error ArgumentError
82
+ end
83
+ end
84
+
85
+ describe 'minute behavior' do
86
+ it 'should raise ArgumentError with -1 miniute' do
87
+ lambda {
88
+ @iso8601time.minute = -1
89
+ }.should raise_error ArgumentError
90
+ end
91
+
92
+ it 'should not raise ArgumentError with 0 minute' do
93
+ lambda {
94
+ @iso8601time.minute = 0
95
+ }.should_not raise_error ArgumentError
96
+ end
97
+
98
+ it 'should not raise ArgumentError with 59 minute' do
99
+ lambda {
100
+ @iso8601time.minute = 59
101
+ }.should_not raise_error ArgumentError
102
+ end
103
+
104
+ it 'should raise ArgumentError with 60 minute' do
105
+ lambda {
106
+ @iso8601time.minute = 60
107
+ }.should raise_error ArgumentError
108
+ end
109
+ end
110
+
111
+ describe 'second behavior' do
112
+ it 'should raise ArgumentError with -1 miniute' do
113
+ lambda {
114
+ @iso8601time.second = -1
115
+ }.should raise_error ArgumentError
116
+ end
117
+
118
+ it 'should not raise ArgumentError with 0 second' do
119
+ lambda {
120
+ @iso8601time.second = 0
121
+ }.should_not raise_error ArgumentError
122
+ end
123
+
124
+ it 'should not raise ArgumentError with 59 second' do
125
+ lambda {
126
+ @iso8601time.second = 59
127
+ }.should_not raise_error ArgumentError
128
+ end
129
+
130
+ it 'should raise ArgumentError with 60 second' do
131
+ lambda {
132
+ @iso8601time.second = 60
133
+ }.should raise_error ArgumentError
134
+ end
135
+ end
136
+
137
+ describe 'fractional second behavior' do
138
+ it 'should raise ArgumentError less than -0.0' do
139
+ lambda {
140
+ @iso8601time.fractional_second = -0.1
141
+ }.should raise_error ArgumentError
142
+ end
143
+
144
+ it 'should raise ArgumentError more than 1.0' do
145
+ lambda {
146
+ @iso8601time.fractional_second = 1.0
147
+ }.should raise_error ArgumentError
148
+ end
149
+ end
150
+
151
+ describe 'timezone behavior' do
152
+ it 'should raise ArgumentError with invalid timezone' do
153
+ lambda {
154
+ @iso8601time.timezone = '+AbD:111'
155
+ }.should raise_error ArgumentError
156
+ end
157
+
158
+ it 'should allow ArgumentError with nil timezone' do
159
+ lambda {
160
+ @iso8601time.timezone = nil
161
+ }.should_not raise_error ArgumentError
162
+ end
163
+ end
164
+
165
+ describe 'constructor behavior' do
166
+ it 'should_not raise ArgumentError with 21:18:09.01' do
167
+ lambda {
168
+ ISO8601Time.new('21:18:09.01')
169
+ }.should_not raise_error ArgumentError
170
+ end
171
+
172
+ it 'should_not raise ArgumentError with 21:18:09' do
173
+ lambda {
174
+ ISO8601Time.new('21:18:09')
175
+ }.should_not raise_error ArgumentError
176
+ end
177
+
178
+ it 'should_not raise ArgumentError with 21:18' do
179
+ lambda {
180
+ ISO8601Time.new('21:18')
181
+ }.should_not raise_error ArgumentError
182
+ end
183
+
184
+ it 'should_not raise ArgumentError with 21' do
185
+ lambda {
186
+ ISO8601Time.new('21')
187
+ }.should_not raise_error ArgumentError
188
+ end
189
+
190
+ it 'should raise ArgumentError with malformation' do
191
+ lambda {
192
+ ISO8601Time.new('ABDCD')
193
+ }.should raise_error ArgumentError
194
+ end
195
+ end
196
+
197
+ describe 'ISO8601 time validation' do
198
+ it 'should be valid iso8601 Time' do
199
+ ISO8601Time.should be_valid_iso8601_time '21:24:30.05+09:00'
200
+ end
201
+
202
+ it 'should not be valid with over 24 hour' do
203
+ ISO8601Time.should_not be_valid_iso8601_time '24:24:30.05+09:00'
204
+ end
205
+
206
+ it 'should be valid with over 24:00:00' do
207
+ ISO8601Time.should be_valid_iso8601_time '24:00:00.00'
208
+ end
209
+
210
+ it 'should not vaild with under 0 hour' do
211
+ ISO8601Time.should_not be_valid_iso8601_time '-1:24:30.05+09:00'
212
+ end
213
+
214
+ it 'should not valid with more than 60 minutes' do
215
+ ISO8601Time.should_not be_valid_iso8601_time '21:60:30'
216
+ end
217
+
218
+ it 'should not valid with more than 60 seconds' do
219
+ ISO8601Time.should_not be_valid_iso8601_time '21:34:60'
220
+ end
221
+
222
+ it 'should not valid with invalid hour in timezone' do
223
+ ISO8601Time.should_not be_valid_iso8601_time '21:24:30.05+24:00'
224
+ end
225
+
226
+ it 'should not valid with invalid minute in timezone' do
227
+ ISO8601Time.should_not be_valid_iso8601_time '21:24:30.05+22:60'
228
+ end
229
+
230
+ it 'should not valid with invalid minute in timezone' do
231
+ ISO8601Time.should_not be_valid_iso8601_time '21:24:30.05TAABZ'
232
+ end
233
+ end
234
+ end
@@ -0,0 +1,57 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+ include OpenEHR::AssumedLibraryTypes
3
+
4
+ describe ISO8601Timezone do
5
+ before(:each) do
6
+ @iso8601timezone = ISO8601Timezone.new('+0900')
7
+ end
8
+
9
+ it 'should be an instance of ISO8601Timezone' do
10
+ @iso8601timezone.should be_an_instance_of ISO8601Timezone
11
+ end
12
+
13
+ it 'sign should be +1' do
14
+ @iso8601timezone.sign.should == +1
15
+ end
16
+
17
+ it 'hour should be 9' do
18
+ @iso8601timezone.hour.should == 9
19
+ end
20
+
21
+ it 'minute should be 0' do
22
+ @iso8601timezone.minute.should == 0
23
+ end
24
+
25
+ it 'should be +0900 as string' do
26
+ @iso8601timezone.as_string.should == '+0900'
27
+ end
28
+
29
+ it 'should not be gmt' do
30
+ @iso8601timezone.is_gmt?.should_not be_true
31
+ end
32
+
33
+ it 'should raise ArgumentError with invalid format' do
34
+ lambda {
35
+ ISO8601Timezone.new('ABCDE')
36
+ }.should raise_error ArgumentError
37
+ end
38
+
39
+ it 'should allow - sign' do
40
+ @iso8601timezone = ISO8601Timezone.new('-5000')
41
+ @iso8601timezone.as_string.should == '-5000'
42
+ end
43
+
44
+ describe 'GMT' do
45
+ before(:each) do
46
+ @iso8601timezone = ISO8601Timezone.new('Z')
47
+ end
48
+
49
+ it 'should racognize UTC as Z' do
50
+ @iso8601timezone.as_string.should == '+0000'
51
+ end
52
+
53
+ it 'should be gmt(almost)' do
54
+ @iso8601timezone.is_gmt?.should be_true
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,136 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+ include OpenEHR::AssumedLibraryTypes
3
+
4
+ describe TimeDefinitions do
5
+ describe 'year behavior' do
6
+ it 'should more than zero in openEHR specification' do
7
+ TimeDefinitions.should be_valid_year 0
8
+ end
9
+
10
+ it '-1 should not be valid year' do
11
+ TimeDefinitions.should_not be_valid_year -1
12
+ end
13
+
14
+ it 'nil year should be invaild' do
15
+ TimeDefinitions.should_not be_valid_year nil
16
+ end
17
+ end
18
+
19
+
20
+ describe 'month behavior' do
21
+ (1..12).each do |month|
22
+ it "should valid #{month}" do
23
+ TimeDefinitions.should be_valid_month month
24
+ end
25
+ end
26
+
27
+ it '0th month should be invalid' do
28
+ TimeDefinitions.should_not be_valid_month 0
29
+ end
30
+
31
+ it '13th month should be invalid' do
32
+ TimeDefinitions.should_not be_valid_month 13
33
+ end
34
+ end
35
+
36
+ describe 'day behavior' do
37
+ it '0 day should not be valid day' do
38
+ TimeDefinitions.should_not be_valid_day(1,2,0)
39
+ end
40
+
41
+ it '32 day should not be valid day' do
42
+ TimeDefinitions.should_not be_valid_day(1,2,32)
43
+ end
44
+
45
+ it 'should be valid 2009-09-19' do
46
+ TimeDefinitions.should be_valid_day(2009,9,19)
47
+ end
48
+
49
+ it 'should be invalid 2009 nil 19' do
50
+ TimeDefinitions.should_not be_valid_day(2009, nil,19)
51
+ end
52
+
53
+ it 'should be invalid nil 09 19' do
54
+ TimeDefinitions.should_not be_valid_day(nil, 9, 19)
55
+ end
56
+
57
+ it 'should be valid 2009 09' do
58
+ TimeDefinitions.should be_valid_day(2009,9,nil)
59
+ end
60
+ end
61
+
62
+ describe 'hour behavior' do
63
+ it 'should be valid hour 0,0,0' do
64
+ TimeDefinitions.should be_valid_hour(0,0,0)
65
+ end
66
+
67
+ it 'should be valid hour 12,59,59' do
68
+ TimeDefinitions.should be_valid_hour(12,59,59)
69
+ end
70
+
71
+ it 'should not be valid hour 12,60,59' do
72
+ TimeDefinitions.should_not be_valid_hour(12,60,59)
73
+ end
74
+
75
+ it 'should not be valid hour 12,59,60' do
76
+ TimeDefinitions.should_not be_valid_hour(12,59,60)
77
+ end
78
+
79
+ it 'should be valid hour 24,0,0' do
80
+ TimeDefinitions.should be_valid_hour(24,0,0)
81
+ end
82
+
83
+ it 'should not be valid hour 24,0,1' do
84
+ TimeDefinitions.should_not be_valid_hour(24,0,1)
85
+ end
86
+
87
+
88
+ it 'should be vaild hour 12,1' do
89
+ TimeDefinitions.should be_valid_hour(12,1)
90
+ end
91
+
92
+ it 'should not be valid hour 12,nil,1' do
93
+ TimeDefinitions.should be_valid_hour(12,nil,1)
94
+ end
95
+
96
+ it 'should be valid hour 12' do
97
+ TimeDefinitions.should be_valid_hour(12)
98
+ end
99
+ end
100
+
101
+ describe 'minute limit' do
102
+ it 'should be more than 0' do
103
+ TimeDefinitions.should be_valid_minute 0
104
+ end
105
+
106
+ it 'should be not less than 0' do
107
+ TimeDefinitions.should_not be_valid_minute -1
108
+ end
109
+
110
+ it 'should less than 60' do
111
+ TimeDefinitions.should be_valid_minute 59
112
+ end
113
+
114
+ it 'should not valid minute 60' do
115
+ TimeDefinitions.should_not be_valid_minute 60
116
+ end
117
+ end
118
+
119
+ describe 'second limit' do
120
+ it 'should be more than 0' do
121
+ TimeDefinitions.should be_valid_second 0
122
+ end
123
+
124
+ it 'should be not less than 0' do
125
+ TimeDefinitions.should_not be_valid_second -1
126
+ end
127
+
128
+ it 'should less than 60' do
129
+ TimeDefinitions.should be_valid_second 59
130
+ end
131
+
132
+ it 'should not valid minute 60' do
133
+ TimeDefinitions.should_not be_valid_second 60
134
+ end
135
+ end
136
+ end
@@ -0,0 +1,50 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::RM::Common::Archetyped
3
+ include OpenEHR::RM::Support::Identification
4
+
5
+ describe Archetyped do
6
+ before(:each) do
7
+ archetype_id = ArchetypeID.new(:value =>
8
+ 'openEHR-EHR-SECTION.physical_examination.v2')
9
+ template_id = TemplateID.new(:value =>
10
+ 'uk.nhs.cfh:openehr-EHR-COMPOSITION.admission_ed.v5')
11
+ @archetyped = Archetyped.new(:archetype_id => archetype_id,
12
+ :rm_version => '1.2.4',
13
+ :template_id => template_id)
14
+ end
15
+
16
+ it 'should be an instance of Archetyped' do
17
+ @archetyped.should be_an_instance_of Archetyped
18
+ end
19
+
20
+ it 'archetype id concept rm_name should be EHR' do
21
+ @archetyped.archetype_id.rm_name.should == 'EHR'
22
+ end
23
+
24
+ it 'rm_version should 1.2.4' do
25
+ @archetyped.rm_version.should == '1.2.4'
26
+ end
27
+
28
+ it 'template_id.value should be uk.nhs.cfh:openehr-EHR-COMPOSITION.admission_ed.v5' do
29
+ @archetyped.template_id.value.should ==
30
+ 'uk.nhs.cfh:openehr-EHR-COMPOSITION.admission_ed.v5'
31
+ end
32
+
33
+ it 'should raise ArgumentError with nil rm_version' do
34
+ lambda {
35
+ @archetyped.rm_version = nil
36
+ }.should raise_error ArgumentError
37
+ end
38
+
39
+ it 'should raise ArgumentError with empty rm_version' do
40
+ lambda {
41
+ @archetyped.rm_version = ''
42
+ }.should raise_error ArgumentError
43
+ end
44
+
45
+ it 'should raise ArgumentError with nil ArchetypeID' do
46
+ lambda {
47
+ @archetyped.archetype_id = nil
48
+ }.should raise_error ArgumentError
49
+ end
50
+ end
@@ -0,0 +1,60 @@
1
+ require File.dirname(__FILE__) + '/../../../../../spec_helper'
2
+ include OpenEHR::RM::Common::Archetyped
3
+ include OpenEHR::RM::Common::Generic
4
+ include OpenEHR::RM::DataTypes::Quantity::DateTime
5
+
6
+ describe FeederAuditDetails do
7
+ before(:each) do
8
+ provider = stub(PartyIdentified, :name => 'NERV')
9
+ location = stub(PartyIdentified, :name => '3rd Tokyo')
10
+ time = stub(DvDateTime, :value => '2009-09-28T19:40')
11
+ subject = stub(PartyProxy, :type => 'PARTY')
12
+ @feeder_audit_details =
13
+ FeederAuditDetails.new(:system_id => 'MELCHIOR',
14
+ :provider => provider,
15
+ :location => location,
16
+ :time => time,
17
+ :subject => subject,
18
+ :version_id => '0.5.0')
19
+ end
20
+
21
+ it 'should be an instance of FeederAuditDetails' do
22
+ @feeder_audit_details.should be_an_instance_of FeederAuditDetails
23
+ end
24
+
25
+ it 'system_id should be MELCHIOR' do
26
+ @feeder_audit_details.system_id.should == 'MELCHIOR'
27
+ end
28
+
29
+ it 'provider.name should be NERV' do
30
+ @feeder_audit_details.provider.name.should == 'NERV'
31
+ end
32
+
33
+ it 'location.name should be 3rd Tokyo' do
34
+ @feeder_audit_details.location.name.should == '3rd Tokyo'
35
+ end
36
+
37
+ it 'time.value should be 2009-09-28T19:40' do
38
+ @feeder_audit_details.time.value.should == '2009-09-28T19:40'
39
+ end
40
+
41
+ it 'subject.type should be PARTY' do
42
+ @feeder_audit_details.subject.type.should == 'PARTY'
43
+ end
44
+
45
+ it 'version_id should be 0.5.0' do
46
+ @feeder_audit_details.version_id.should == '0.5.0'
47
+ end
48
+
49
+ it 'should reise ArgumentError with nil system_id' do
50
+ lambda {
51
+ @feeder_audit_details.system_id = nil
52
+ }.should raise_error ArgumentError
53
+ end
54
+
55
+ it 'should raise ArgumentError with empty syste_id' do
56
+ lambda {
57
+ @feeder_audit_details.system_id = ''
58
+ }.should raise_error ArgumentError
59
+ end
60
+ end