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.
- data/.document +5 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +43 -0
- data/Guardfile +9 -0
- data/History.txt +4 -0
- data/Manifest.txt +16 -0
- data/PostInstall.txt +9 -0
- data/README.rdoc +66 -0
- data/Rakefile +49 -0
- data/VERSION +1 -0
- data/doc/README_rdoc.html +148 -0
- data/doc/created.rid +2 -0
- data/doc/images/brick.png +0 -0
- data/doc/images/brick_link.png +0 -0
- data/doc/images/bug.png +0 -0
- data/doc/images/bullet_black.png +0 -0
- data/doc/images/bullet_toggle_minus.png +0 -0
- data/doc/images/bullet_toggle_plus.png +0 -0
- data/doc/images/date.png +0 -0
- data/doc/images/find.png +0 -0
- data/doc/images/loadingAnimation.gif +0 -0
- data/doc/images/macFFBgHack.png +0 -0
- data/doc/images/package.png +0 -0
- data/doc/images/page_green.png +0 -0
- data/doc/images/page_white_text.png +0 -0
- data/doc/images/page_white_width.png +0 -0
- data/doc/images/plugin.png +0 -0
- data/doc/images/ruby.png +0 -0
- data/doc/images/tag_green.png +0 -0
- data/doc/images/wrench.png +0 -0
- data/doc/images/wrench_orange.png +0 -0
- data/doc/images/zoom.png +0 -0
- data/doc/index.html +54 -0
- data/doc/js/darkfish.js +116 -0
- data/doc/js/jquery.js +32 -0
- data/doc/js/quicksearch.js +114 -0
- data/doc/js/thickbox-compressed.js +10 -0
- data/doc/openehr_terminology.xml +2700 -0
- data/doc/rdoc.css +706 -0
- data/lib/#open_ehr.rb# +11 -0
- data/lib/open_ehr/am/archetype/archetype_description/archetype_description.rb +21 -0
- data/lib/open_ehr/am/archetype/assertion.rb +190 -0
- data/lib/open_ehr/am/archetype/constraint_model/primitive.rb +296 -0
- data/lib/open_ehr/am/archetype/constraint_model.rb +340 -0
- data/lib/open_ehr/am/archetype/ontology.rb +97 -0
- data/lib/open_ehr/am/archetype.rb +134 -0
- data/lib/open_ehr/am/open_ehr_profile/data_types/basic.rb +29 -0
- data/lib/open_ehr/am/open_ehr_profile/data_types/quantity.rb +19 -0
- data/lib/open_ehr/am/open_ehr_profile/data_types/text.rb +12 -0
- data/lib/open_ehr/am.rb +8 -0
- data/lib/open_ehr/assumed_library_types.rb +627 -0
- data/lib/open_ehr/parser/xml_perser.rb +13 -0
- data/lib/open_ehr/parser.rb +19 -0
- data/lib/open_ehr/rm/common/archetyped.rb +182 -0
- data/lib/open_ehr/rm/common/change_control.rb +332 -0
- data/lib/open_ehr/rm/common/directory.rb +29 -0
- data/lib/open_ehr/rm/common/generic.rb +216 -0
- data/lib/open_ehr/rm/common/resource.rb +154 -0
- data/lib/open_ehr/rm/common.rb +14 -0
- data/lib/open_ehr/rm/composition/content/entry.rb +246 -0
- data/lib/open_ehr/rm/composition/content/navigation.rb +31 -0
- data/lib/open_ehr/rm/composition/content.rb +22 -0
- data/lib/open_ehr/rm/composition.rb +103 -0
- data/lib/open_ehr/rm/data_structures/history.rb +117 -0
- data/lib/open_ehr/rm/data_structures/item_structure/representation.rb +63 -0
- data/lib/open_ehr/rm/data_structures/item_structure.rb +216 -0
- data/lib/open_ehr/rm/data_structures.rb +25 -0
- data/lib/open_ehr/rm/data_types/basic.rb +108 -0
- data/lib/open_ehr/rm/data_types/charset.lst +818 -0
- data/lib/open_ehr/rm/data_types/charset_extract.rb +24 -0
- data/lib/open_ehr/rm/data_types/encapsulated.rb +98 -0
- data/lib/open_ehr/rm/data_types/quantity/date_time.rb +229 -0
- data/lib/open_ehr/rm/data_types/quantity.rb +403 -0
- data/lib/open_ehr/rm/data_types/text.rb +168 -0
- data/lib/open_ehr/rm/data_types/time_specification.rb +75 -0
- data/lib/open_ehr/rm/data_types/uri.rb +82 -0
- data/lib/open_ehr/rm/data_types.rb +14 -0
- data/lib/open_ehr/rm/demographic.rb +269 -0
- data/lib/open_ehr/rm/ehr.rb +162 -0
- data/lib/open_ehr/rm/integration.rb +27 -0
- data/lib/open_ehr/rm/security.rb +12 -0
- data/lib/open_ehr/rm/support/assumed_types.rb +81 -0
- data/lib/open_ehr/rm/support/definition.rb +15 -0
- data/lib/open_ehr/rm/support/identification.rb +408 -0
- data/lib/open_ehr/rm/support/measurement.rb +17 -0
- data/lib/open_ehr/rm/support/terminology.rb +135 -0
- data/lib/open_ehr/rm/support.rb +14 -0
- data/lib/open_ehr/rm.rb +16 -0
- data/lib/open_ehr/serializer.rb +272 -0
- data/lib/open_ehr/terminology/open_ehr_terminology.rb +41 -0
- data/lib/open_ehr/terminology.rb +7 -0
- data/lib/open_ehr/writer.rb +12 -0
- data/lib/open_ehr.rb +11 -0
- data/spec/lib/open_ehr/am/archetype/archetype_spec.rb +98 -0
- data/spec/lib/open_ehr/am/archetype/assertion/assertion_spec.rb +60 -0
- data/spec/lib/open_ehr/am/archetype/assertion/assertion_variable_spec.rb +30 -0
- data/spec/lib/open_ehr/am/archetype/assertion/expr_binary_operator.rb +40 -0
- data/spec/lib/open_ehr/am/archetype/assertion/expr_item_spec.rb +28 -0
- data/spec/lib/open_ehr/am/archetype/assertion/expr_leaf_spec.rb +34 -0
- data/spec/lib/open_ehr/am/archetype/assertion/expr_operator_spec.rb +25 -0
- data/spec/lib/open_ehr/am/archetype/assertion/expr_unary_operator_spec.rb +26 -0
- data/spec/lib/open_ehr/am/archetype/assertion/operator_kind_spec.rb +110 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/archetype_constraint_spec.rb +56 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/archetype_internal_ref_spec.rb +36 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/archetype_slot_spec.rb +61 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/c_attribute_spec.rb +59 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/c_complex_object_spec.rb +39 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/c_defined_object_spec.rb +53 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/c_domain_type_spec.rb +25 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/c_multiple_attribute_spec.rb +29 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/c_object_spec.rb +61 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/c_primitive_object_spec.rb +33 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/c_reference_object_spec.rb +17 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/c_single_attribute_spec.rb +28 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/cardinality_spec.rb +68 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/constraint_ref_spec.rb +29 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_boolean_spec.rb +52 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_date_spec.rb +80 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_date_time_spec.rb +106 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_duration_spec.rb +69 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_integer_spec.rb +62 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_primitive_spec.rb +39 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_real_spec.rb +14 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_string_spec.rb +69 -0
- data/spec/lib/open_ehr/am/archetype/constraint_model/primitive/c_time_spec.rb +79 -0
- data/spec/lib/open_ehr/am/archetype/ontology/archetype_ontology_spec.rb +59 -0
- data/spec/lib/open_ehr/am/archetype/ontology/archetype_term_spec.rb +43 -0
- data/spec/lib/open_ehr/am/archetype/validity_kind_spec.rb +42 -0
- data/spec/lib/open_ehr/assumed_library_types/interval_spec.rb +140 -0
- data/spec/lib/open_ehr/assumed_library_types/iso8601_date_spec.rb +236 -0
- data/spec/lib/open_ehr/assumed_library_types/iso8601_date_time_spec.rb +47 -0
- data/spec/lib/open_ehr/assumed_library_types/iso8601_duration_spec.rb +150 -0
- data/spec/lib/open_ehr/assumed_library_types/iso8601_time_spec.rb +234 -0
- data/spec/lib/open_ehr/assumed_library_types/iso8601_timezone_spec.rb +57 -0
- data/spec/lib/open_ehr/assumed_library_types/time_definitions_spec.rb +136 -0
- data/spec/lib/open_ehr/rm/common/archetyped/archetyped_spec.rb +50 -0
- data/spec/lib/open_ehr/rm/common/archetyped/feeder_audit_details_spec.rb +60 -0
- data/spec/lib/open_ehr/rm/common/archetyped/feeder_audit_spec.rb +51 -0
- data/spec/lib/open_ehr/rm/common/archetyped/link_spec.rb +42 -0
- data/spec/lib/open_ehr/rm/common/archetyped/locatable_spec.rb +89 -0
- data/spec/lib/open_ehr/rm/common/archetyped/pathable_spec.rb +42 -0
- data/spec/lib/open_ehr/rm/common/change_control/contribution_spec.rb +56 -0
- data/spec/lib/open_ehr/rm/common/change_control/imported_version_spec.rb +63 -0
- data/spec/lib/open_ehr/rm/common/change_control/original_version_spec.rb +71 -0
- data/spec/lib/open_ehr/rm/common/change_control/version_spec.rb +92 -0
- data/spec/lib/open_ehr/rm/common/change_control/versioned_object_spec.rb +285 -0
- data/spec/lib/open_ehr/rm/common/directory/folder_spec.rb +26 -0
- data/spec/lib/open_ehr/rm/common/generic/attestation_spec.rb +62 -0
- data/spec/lib/open_ehr/rm/common/generic/audit_details_spec.rb +51 -0
- data/spec/lib/open_ehr/rm/common/generic/participation_spec.rb +36 -0
- data/spec/lib/open_ehr/rm/common/generic/party_identified_spec.rb +64 -0
- data/spec/lib/open_ehr/rm/common/generic/party_proxy_spec.rb +18 -0
- data/spec/lib/open_ehr/rm/common/generic/party_related_spec.rb +24 -0
- data/spec/lib/open_ehr/rm/common/generic/revision_history_item_spec.rb +43 -0
- data/spec/lib/open_ehr/rm/common/generic/revision_history_spec.rb +45 -0
- data/spec/lib/open_ehr/rm/common/resource/authored_resource_spec.rb +68 -0
- data/spec/lib/open_ehr/rm/common/resource/resource_description_item_spec.rb +105 -0
- data/spec/lib/open_ehr/rm/common/resource/resource_description_spec.rb +74 -0
- data/spec/lib/open_ehr/rm/common/resource/translation_details_spec.rb +35 -0
- data/spec/lib/open_ehr/rm/composition/composition_spec.rb +92 -0
- data/spec/lib/open_ehr/rm/composition/content/content_item_spec.rb +14 -0
- data/spec/lib/open_ehr/rm/composition/content/entry/action_spec.rb +69 -0
- data/spec/lib/open_ehr/rm/composition/content/entry/activity_spec.rb +61 -0
- data/spec/lib/open_ehr/rm/composition/content/entry/admin_entry_spec.rb +38 -0
- data/spec/lib/open_ehr/rm/composition/content/entry/care_entry_spec.rb +37 -0
- data/spec/lib/open_ehr/rm/composition/content/entry/entry_spec.rb +88 -0
- data/spec/lib/open_ehr/rm/composition/content/entry/evaluation_spec.rb +37 -0
- data/spec/lib/open_ehr/rm/composition/content/entry/instruction_details_spec.rb +51 -0
- data/spec/lib/open_ehr/rm/composition/content/entry/instruction_spec.rb +62 -0
- data/spec/lib/open_ehr/rm/composition/content/entry/ism_transition_spec.rb +46 -0
- data/spec/lib/open_ehr/rm/composition/content/entry/observation_spec.rb +45 -0
- data/spec/lib/open_ehr/rm/composition/content/navigation/section_spec.rb +32 -0
- data/spec/lib/open_ehr/rm/composition/event_context_spec.rb +88 -0
- data/spec/lib/open_ehr/rm/data_structures/data_structure_spec.rb +21 -0
- data/spec/lib/open_ehr/rm/data_structures/history/event_spec.rb +44 -0
- data/spec/lib/open_ehr/rm/data_structures/history/history_spec.rb +67 -0
- data/spec/lib/open_ehr/rm/data_structures/history/interval_event_spec.rb +43 -0
- data/spec/lib/open_ehr/rm/data_structures/item_structure/item_list_spec.rb +53 -0
- data/spec/lib/open_ehr/rm/data_structures/item_structure/item_single_spec.rb +29 -0
- data/spec/lib/open_ehr/rm/data_structures/item_structure/item_table_spec.rb +147 -0
- data/spec/lib/open_ehr/rm/data_structures/item_structure/item_tree_spec.rb +48 -0
- data/spec/lib/open_ehr/rm/data_structures/item_structure/representation/cluster_spec.rb +26 -0
- data/spec/lib/open_ehr/rm/data_structures/item_structure/representation/element_spec.rb +22 -0
- data/spec/lib/open_ehr/rm/data_types/basic/data_value_spec.rb +17 -0
- data/spec/lib/open_ehr/rm/data_types/basic/dv_boolean_spec.rb +29 -0
- data/spec/lib/open_ehr/rm/data_types/basic/dv_identifier_spec.rb +108 -0
- data/spec/lib/open_ehr/rm/data_types/basic/dv_state_spec.rb +44 -0
- data/spec/lib/open_ehr/rm/data_types/encapsulated/dv_encapsulated_spec.rb +42 -0
- data/spec/lib/open_ehr/rm/data_types/encapsulated/dv_multimedia_spec.rb +79 -0
- data/spec/lib/open_ehr/rm/data_types/encapsulated/dv_parsable_spec.rb +34 -0
- data/spec/lib/open_ehr/rm/data_types/quantity/date_time/dv_date_spec.rb +64 -0
- data/spec/lib/open_ehr/rm/data_types/quantity/date_time/dv_date_time_spec.rb +25 -0
- data/spec/lib/open_ehr/rm/data_types/quantity/date_time/dv_tempral_spec.rb +24 -0
- data/spec/lib/open_ehr/rm/data_types/quantity/date_time/dv_time_spec.rb +37 -0
- data/spec/lib/open_ehr/rm/data_types/quantity/dv_absolute_quantity_spec.rb +35 -0
- data/spec/lib/open_ehr/rm/data_types/quantity/dv_amount_spec.rb +105 -0
- data/spec/lib/open_ehr/rm/data_types/quantity/dv_count_spec.rb +12 -0
- data/spec/lib/open_ehr/rm/data_types/quantity/dv_interval_spec.rb +17 -0
- data/spec/lib/open_ehr/rm/data_types/quantity/dv_ordered_spec.rb +60 -0
- data/spec/lib/open_ehr/rm/data_types/quantity/dv_ordinal_spec.rb +74 -0
- data/spec/lib/open_ehr/rm/data_types/quantity/dv_proportion_spec.rb +162 -0
- data/spec/lib/open_ehr/rm/data_types/quantity/dv_quantified_spec.rb +36 -0
- data/spec/lib/open_ehr/rm/data_types/quantity/dv_quantity_spec.rb +78 -0
- data/spec/lib/open_ehr/rm/data_types/quantity/proportion_kind_spec.rb +24 -0
- data/spec/lib/open_ehr/rm/data_types/quantity/reference_range_spec.rb +43 -0
- data/spec/lib/open_ehr/rm/data_types/text/code_phrase_spec.rb +23 -0
- data/spec/lib/open_ehr/rm/data_types/text/dv_paragraph_spec.rb +13 -0
- data/spec/lib/open_ehr/rm/data_types/text/dv_text_spec.rb +57 -0
- data/spec/lib/open_ehr/rm/data_types/text/term_mapping_spec.rb +59 -0
- data/spec/lib/open_ehr/rm/data_types/uri/dv_ehr_uri_spec.rb +21 -0
- data/spec/lib/open_ehr/rm/data_types/uri/dv_uri_spec.rb +36 -0
- data/spec/lib/open_ehr/rm/demographic/actor_spec.rb +79 -0
- data/spec/lib/open_ehr/rm/demographic/address_spec.rb +33 -0
- data/spec/lib/open_ehr/rm/demographic/capability_spec.rb +37 -0
- data/spec/lib/open_ehr/rm/demographic/contact_spec.rb +45 -0
- data/spec/lib/open_ehr/rm/demographic/party_identity_spec.rb +32 -0
- data/spec/lib/open_ehr/rm/demographic/party_relationship_spec.rb +84 -0
- data/spec/lib/open_ehr/rm/demographic/party_spec.rb +133 -0
- data/spec/lib/open_ehr/rm/demographic/role_spec.rb +58 -0
- data/spec/lib/open_ehr/rm/ehr/ehr_access_spec.rb +33 -0
- data/spec/lib/open_ehr/rm/ehr/ehr_spec.rb +139 -0
- data/spec/lib/open_ehr/rm/ehr/ehr_status_spec.rb +52 -0
- data/spec/lib/open_ehr/rm/ehr/versioned_composition_spec.rb +33 -0
- data/spec/lib/open_ehr/rm/integration/generic_entry_spec.rb +31 -0
- data/spec/lib/open_ehr/rm/support/identification/access_group_ref_spec.rb +19 -0
- data/spec/lib/open_ehr/rm/support/identification/archetype_id_spec.rb +152 -0
- data/spec/lib/open_ehr/rm/support/identification/generic_id_spec.rb +33 -0
- data/spec/lib/open_ehr/rm/support/identification/hier_object_id_spec.rb +12 -0
- data/spec/lib/open_ehr/rm/support/identification/internet_id_spec.rb +12 -0
- data/spec/lib/open_ehr/rm/support/identification/iso_oid_spec.rb +12 -0
- data/spec/lib/open_ehr/rm/support/identification/locatable_ref_spec.rb +34 -0
- data/spec/lib/open_ehr/rm/support/identification/object_id_spec.rb +24 -0
- data/spec/lib/open_ehr/rm/support/identification/object_ref_spec.rb +33 -0
- data/spec/lib/open_ehr/rm/support/identification/object_version_id_spec.rb +60 -0
- data/spec/lib/open_ehr/rm/support/identification/party_ref_spec.rb +29 -0
- data/spec/lib/open_ehr/rm/support/identification/template_id_spec.rb +12 -0
- data/spec/lib/open_ehr/rm/support/identification/terminology_id_spec.rb +33 -0
- data/spec/lib/open_ehr/rm/support/identification/uid_based_id_spec.rb +50 -0
- data/spec/lib/open_ehr/rm/support/identification/uid_spec.rb +29 -0
- data/spec/lib/open_ehr/rm/support/identification/version_tree_id_spec.rb +104 -0
- data/spec/lib/open_ehr/rm/support/measurement_service_spec.rb +7 -0
- data/spec/lib/open_ehr/rm/support/terminology_service_spec.rb +24 -0
- data/spec/lib/open_ehr/serializer/adl-test-entry.most_minimal.test.adl +20 -0
- data/spec/lib/open_ehr/serializer/adl_serializer_spec.rb +47 -0
- data/spec/lib/open_ehr/serializer/openEHR-EHR-SECTION.test.v1.adl +38 -0
- data/spec/lib/open_ehr/serializer/openEHR-EHR-SECTION.test.v1.xml +58 -0
- data/spec/lib/open_ehr/serializer/sample_archetype_spec.rb +44 -0
- data/spec/lib/open_ehr/serializer/xml_serializer_spec.rb +49 -0
- data/spec/lib/open_ehr/terminology/open_ehr_terminology_spec.rb +40 -0
- data/spec/rcov.opts +1 -0
- data/spec/spec.opts +5 -0
- data/spec/spec_helper.rb +54 -0
- metadata +401 -0
@@ -0,0 +1,272 @@
|
|
1
|
+
$:.unshift(File.dirname(__FILE__))
|
2
|
+
require 'rexml/document'
|
3
|
+
require 'builder'
|
4
|
+
|
5
|
+
module OpenEHR
|
6
|
+
module Serializer
|
7
|
+
NL = "\r\n"
|
8
|
+
INDENT = ' '
|
9
|
+
|
10
|
+
class BaseSerializer
|
11
|
+
def initialize(archetype)
|
12
|
+
@archetype = archetype
|
13
|
+
end
|
14
|
+
|
15
|
+
def serialize
|
16
|
+
return self.merge
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class ADLSerializer < BaseSerializer
|
21
|
+
def header
|
22
|
+
hd = 'archetype'
|
23
|
+
unless @archetype.adl_version.nil?
|
24
|
+
hd << " (adl_version = #{@archetype.adl_version})"
|
25
|
+
end
|
26
|
+
hd << NL+INDENT + "#{@archetype.archetype_id.value}"+NL*2
|
27
|
+
hd << 'concept'+NL+ INDENT+"[#{@archetype.concept}]"+NL
|
28
|
+
hd << NL+'language'+NL+INDENT+'original_language = <['+
|
29
|
+
@archetype.original_language.terminology_id.value+'::'+
|
30
|
+
@archetype.original_language.code_string+']>'+NL
|
31
|
+
return hd
|
32
|
+
end
|
33
|
+
|
34
|
+
def description
|
35
|
+
desc = ''
|
36
|
+
if @archetype.description
|
37
|
+
ad = @archetype.description
|
38
|
+
desc << 'description' + NL
|
39
|
+
desc << INDENT + 'original_author = <' + NL
|
40
|
+
ad.original_author.each do |k,v|
|
41
|
+
desc << INDENT+INDENT+'["'+k+'"] = <"'+v+'">'+NL
|
42
|
+
end
|
43
|
+
desc << INDENT+'>'+NL
|
44
|
+
desc << INDENT+'lifecycle_state = <"'+ad.lifecycle_state+'">'+NL
|
45
|
+
desc << INDENT+'details = <'+NL
|
46
|
+
ad.details.each do |lang,item|
|
47
|
+
desc << INDENT*2+'["'+lang+'"] = <'+NL
|
48
|
+
desc << INDENT*3+'language = <['+
|
49
|
+
item.language.terminology_id.value+'::'+
|
50
|
+
item.language.code_string+']>'+NL
|
51
|
+
desc << INDENT*3+'purpose = <"'+item.purpose+'">'+NL
|
52
|
+
if item.keywords then
|
53
|
+
desc << INDENT*3+'keywords = <'
|
54
|
+
item.keywords.each do |word|
|
55
|
+
desc << '"'+word+'",'
|
56
|
+
end
|
57
|
+
desc.chop! << '>'+NL
|
58
|
+
end
|
59
|
+
desc << INDENT*3+'use = <"'+item.use+'">'+NL if item.use
|
60
|
+
desc << INDENT*3+'misuse = <"'+item.misuse+'">'+NL if item.misuse
|
61
|
+
desc << INDENT*3+'copyright = <"'+item.copyright+'">'+NL if item.copyright
|
62
|
+
if item.original_resource_uri
|
63
|
+
desc << INDENT*3 + 'original_resource_uri = <'
|
64
|
+
item.original_resource_uri.each do |k,v|
|
65
|
+
desc << INDENT*4+'["'+k+'"] = <"'+v+'">'+NL
|
66
|
+
end
|
67
|
+
desc << INDENT*3+'>'+NL
|
68
|
+
end
|
69
|
+
if item.other_details
|
70
|
+
desc << INDENT*3 + 'other_details = <'
|
71
|
+
item.original_resource_uri.each do |k,v|
|
72
|
+
desc << INDENT*4+'["'+k+'"] = <"'+v+'">'+NL
|
73
|
+
end
|
74
|
+
desc << INDENT*3+'>'+NL
|
75
|
+
end
|
76
|
+
desc << INDENT*2+'>'+NL
|
77
|
+
end
|
78
|
+
desc << INDENT+'>'+NL
|
79
|
+
end
|
80
|
+
return desc
|
81
|
+
end
|
82
|
+
|
83
|
+
def definition
|
84
|
+
ad = @archetype.definition
|
85
|
+
definition = 'definition'+NL
|
86
|
+
definition << INDENT+ad.rm_type_name+"[#{ad.node_id}] matches {"
|
87
|
+
if ad.any_allowed?
|
88
|
+
definition << '*}'+NL
|
89
|
+
else
|
90
|
+
definition << NL
|
91
|
+
if ad.attributes
|
92
|
+
attributes = ad.attributes
|
93
|
+
indents = 2
|
94
|
+
while attributes
|
95
|
+
definition << INDENT*indents+attributes.rm_type_name
|
96
|
+
definition << "[#{attributes.node_id}] "
|
97
|
+
definition << existence(attributes.existence)
|
98
|
+
definition << " matches {"
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def ontology
|
105
|
+
ao = @archetype.ontology
|
106
|
+
ontology = 'ontology'+NL
|
107
|
+
ontology << INDENT + 'term_definitions = <' + NL
|
108
|
+
ao.term_definitions.each do |lang, items|
|
109
|
+
ontology << INDENT*2 + "[\"#{lang}\"] = <" + NL
|
110
|
+
ontology << INDENT*3 + 'items = <' + NL
|
111
|
+
items.each do |item|
|
112
|
+
ontology << INDENT*4 + "[\"#{item.code}\"] = <" + NL
|
113
|
+
item.items.each do |name, desc|
|
114
|
+
ontology << INDENT*5 + "#{name} = <\"#{desc}\">" +NL
|
115
|
+
end
|
116
|
+
ontology << INDENT*4 + '>'+NL
|
117
|
+
end
|
118
|
+
ontology << INDENT*3 + '>' + NL
|
119
|
+
ontology << INDENT*2 + '>' + NL
|
120
|
+
end
|
121
|
+
ontology << INDENT + '>' + NL
|
122
|
+
end
|
123
|
+
|
124
|
+
def merge
|
125
|
+
return header + NL + description + NL + definition + NL + ontology
|
126
|
+
end
|
127
|
+
|
128
|
+
private
|
129
|
+
def c_object
|
130
|
+
end
|
131
|
+
|
132
|
+
def existence(existence)
|
133
|
+
"existence matches {#{existence.lower}..#{existence.upper}}"
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
class XMLSerializer < BaseSerializer
|
138
|
+
def header
|
139
|
+
header = ''
|
140
|
+
xml = Builder::XmlMarkup.new(:indent => 2, :target => header)
|
141
|
+
xml.archetype_id do
|
142
|
+
xml.value @archetype.archetype_id.value
|
143
|
+
end
|
144
|
+
xml.concept @archetype.concept
|
145
|
+
xml.original_language do
|
146
|
+
xml.terminology_id do
|
147
|
+
xml.value @archetype.original_language.terminology_id.value
|
148
|
+
end
|
149
|
+
xml.code_string @archetype.original_language.code_string
|
150
|
+
end
|
151
|
+
return header
|
152
|
+
end
|
153
|
+
|
154
|
+
def description
|
155
|
+
desc = ''
|
156
|
+
xml = Builder::XmlMarkup.new(:indent => 2, :target => desc)
|
157
|
+
ad = @archetype.description
|
158
|
+
if ad
|
159
|
+
xml.description do
|
160
|
+
ad.original_author.each do |key,value|
|
161
|
+
xml.original_author(value,"id"=>key)
|
162
|
+
end
|
163
|
+
if ad.other_contributors
|
164
|
+
ad.other_contributors.each do |co|
|
165
|
+
xml.other_contributors co
|
166
|
+
end
|
167
|
+
end
|
168
|
+
xml.lifecycle_state ad.lifecycle_state
|
169
|
+
xml.details do
|
170
|
+
ad.details.each do |lang, item|
|
171
|
+
xml.language do
|
172
|
+
xml.terminology_id do
|
173
|
+
xml.value item.language.terminology_id.value
|
174
|
+
end
|
175
|
+
xml.code_string lang
|
176
|
+
end
|
177
|
+
xml.purpose item.purpose
|
178
|
+
if item.keywords then
|
179
|
+
item.keywords.each do |word|
|
180
|
+
xml.keywords word
|
181
|
+
end
|
182
|
+
end
|
183
|
+
xml.use item.use if item.use
|
184
|
+
xml.misuse item.misuse if item.misuse
|
185
|
+
xml.copyright item.copyright if item.copyright
|
186
|
+
if ad.other_details
|
187
|
+
ad.other_details.each do |key,value|
|
188
|
+
xml.other_details(value, "id"=>key)
|
189
|
+
end
|
190
|
+
end
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
194
|
+
end
|
195
|
+
return desc
|
196
|
+
end
|
197
|
+
|
198
|
+
def definition
|
199
|
+
definition = ''
|
200
|
+
ad = @archetype.definition
|
201
|
+
xml = Builder::XmlMarkup.new(:indent => 2, :target => definition)
|
202
|
+
xml.definition do
|
203
|
+
xml.rm_type_name ad.rm_type_name
|
204
|
+
xml.occurrence do
|
205
|
+
oc = ad.occurrences
|
206
|
+
xml.lower_included oc.lower_included? unless oc.lower_included?.nil?
|
207
|
+
xml.upper_included oc.upper_included? unless oc.upper_included?.nil?
|
208
|
+
xml.lower_unbounded oc.lower_unbounded?
|
209
|
+
xml.upper_unbounded oc.upper_unbounded?
|
210
|
+
xml.lower oc.lower
|
211
|
+
xml.upper oc.lower
|
212
|
+
end
|
213
|
+
xml.node_id ad.node_id
|
214
|
+
end
|
215
|
+
return definition
|
216
|
+
end
|
217
|
+
|
218
|
+
def ontology
|
219
|
+
ontology = ''
|
220
|
+
ao = @archetype.ontology
|
221
|
+
xml = Builder::XmlMarkup.new(:indent => 2, :target => ontology)
|
222
|
+
xml.ontology do
|
223
|
+
xml.specialisation_depth ao.specialisation_depth
|
224
|
+
xml.term_definitions do
|
225
|
+
ao.term_definitions.each do |lang, terms|
|
226
|
+
xml.language lang
|
227
|
+
xml.terms do
|
228
|
+
terms.each do |term|
|
229
|
+
xml.code term.code
|
230
|
+
xml.items do
|
231
|
+
term.items.each do |key, value|
|
232
|
+
xml.item do
|
233
|
+
xml.key key
|
234
|
+
xml.value value
|
235
|
+
end
|
236
|
+
end
|
237
|
+
end
|
238
|
+
end
|
239
|
+
end
|
240
|
+
end
|
241
|
+
end
|
242
|
+
end
|
243
|
+
end
|
244
|
+
|
245
|
+
def merge
|
246
|
+
archetype = "<?xml version='1.0' encoding='UTF-8'?>" + NL +
|
247
|
+
"<archetype xmlns=\"http://schemas.openehr.org/v1\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">" + NL +
|
248
|
+
header + description + definition +
|
249
|
+
ontology + '</archetype>'
|
250
|
+
return archetype
|
251
|
+
end
|
252
|
+
end
|
253
|
+
end
|
254
|
+
end
|
255
|
+
|
256
|
+
class Publisher
|
257
|
+
def initialize(serializer)
|
258
|
+
@serializer = serializer
|
259
|
+
end
|
260
|
+
|
261
|
+
def publish(writer)
|
262
|
+
writer.out(@serializer.serialize)
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
266
|
+
class Writer
|
267
|
+
def initialize(target)
|
268
|
+
@target = target
|
269
|
+
end
|
270
|
+
def out
|
271
|
+
end
|
272
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'xmlsimple'
|
3
|
+
#require 'ActiveSupport'
|
4
|
+
|
5
|
+
module OpenEHR
|
6
|
+
module Terminology
|
7
|
+
class OpenEHRTerminology
|
8
|
+
def initialize
|
9
|
+
@terms = XmlSimple.xml_in(File.open('doc/openehr_terminology.xml'))
|
10
|
+
end
|
11
|
+
|
12
|
+
def languages
|
13
|
+
@terms['Language']
|
14
|
+
end
|
15
|
+
|
16
|
+
def primary_rubrics
|
17
|
+
@terms['PrimaryRubric']
|
18
|
+
end
|
19
|
+
|
20
|
+
def concepts
|
21
|
+
@terms['Concept']
|
22
|
+
end
|
23
|
+
|
24
|
+
def groupers
|
25
|
+
@terms['Grouper']
|
26
|
+
end
|
27
|
+
|
28
|
+
def grouped_concepts
|
29
|
+
@terms['GroupedConcept']
|
30
|
+
end
|
31
|
+
|
32
|
+
def terminology_identifiers
|
33
|
+
@terms['TerminologyIdentifiers']
|
34
|
+
end
|
35
|
+
|
36
|
+
def territories
|
37
|
+
@terms['Territory']
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/open_ehr.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
$:.unshift(File.dirname(__FILE__)) unless
|
2
|
+
$:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
|
3
|
+
|
4
|
+
module OpenEHR
|
5
|
+
VERSION = '0.6.0'
|
6
|
+
autoload :AssumedLibraryTypes, 'open_ehr/assumed_library_types'
|
7
|
+
autoload :RM, 'open_ehr/rm'
|
8
|
+
autoload :AM, 'open_ehr/am'
|
9
|
+
autoload :Terminology, 'open_ehr/terminology'
|
10
|
+
autoload :Serializer, 'open_ehr/serializer'
|
11
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../../spec_helper'
|
2
|
+
include OpenEHR::AM::Archetype
|
3
|
+
include OpenEHR::AM::Archetype::ConstraintModel
|
4
|
+
include OpenEHR::AM::Archetype::Ontology
|
5
|
+
include OpenEHR::RM::DataTypes::Text
|
6
|
+
include OpenEHR::RM::Common::Resource
|
7
|
+
include OpenEHR::RM::Support::Identification
|
8
|
+
|
9
|
+
describe Archetype do
|
10
|
+
before(:each) do
|
11
|
+
original_language = stub(CodePhrase, :code_string => 'ja')
|
12
|
+
archetype_id = ArchetypeID.new(:value => 'openEHR-EHR-SECTION.physical_examination-prenatal.v2')
|
13
|
+
definition = stub(CComplexObject, :rm_type_name => 'SECTION')
|
14
|
+
ontology = stub(ArchetypeOntology, :specialisation_depth => 1)
|
15
|
+
uid = HierObjectID.new(:value => 'ABCD::1')
|
16
|
+
parent_archetype_id = ArchetypeID.new(:value => 'openEHR-EHR-SECTION.physical_examination.v1')
|
17
|
+
invariants = stub(Set, :size => 2)
|
18
|
+
@archetype = Archetype.new(:original_language => original_language,
|
19
|
+
:adl_version => '1.4',
|
20
|
+
:archetype_id => archetype_id,
|
21
|
+
:concept => 'at0000',
|
22
|
+
:definition => definition,
|
23
|
+
:ontology => ontology,
|
24
|
+
:uid => uid,
|
25
|
+
:parent_archetype_id => parent_archetype_id,
|
26
|
+
:invariants => invariants)
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should be an instance of Archetype' do
|
30
|
+
@archetype.should be_an_instance_of Archetype
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'adl_version should be assigned properly' do
|
34
|
+
@archetype.adl_version.should == '1.4'
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'archetype_id should be assigned prorperly' do
|
38
|
+
@archetype.archetype_id.value.should == 'openEHR-EHR-SECTION.physical_examination-prenatal.v2'
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'should raise ArgumentError when archetype_id is nil' do
|
42
|
+
lambda {
|
43
|
+
@archetype.archetype_id = nil
|
44
|
+
}.should raise_error ArgumentError
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'uid should be assigned properly' do
|
48
|
+
@archetype.uid.value.should == 'ABCD::1'
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'concept should be assigned properly' do
|
52
|
+
@archetype.concept.should == 'at0000'
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'should raise ArgumentError when concept is nil' do
|
56
|
+
lambda {
|
57
|
+
@archetype.concept = nil
|
58
|
+
}.should raise_error ArgumentError
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'parent_archetype_id should be assigned properly' do
|
62
|
+
@archetype.parent_archetype_id.value.should == 'openEHR-EHR-SECTION.physical_examination.v1'
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'definition should be assigned properly' do
|
66
|
+
@archetype.definition.rm_type_name.should == 'SECTION'
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'should raise ArgumentError when definition is nil' do
|
70
|
+
lambda {
|
71
|
+
@archetype.definition = nil
|
72
|
+
}.should raise_error ArgumentError
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'ontology should be assigned properly' do
|
76
|
+
@archetype.ontology.specialisation_depth.should be_equal 1
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'should raise ArgumentError when ontology is nil' do
|
80
|
+
lambda {
|
81
|
+
@archetype.ontology = nil
|
82
|
+
}.should raise_error ArgumentError
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'invariants should be assigned properly' do
|
86
|
+
@archetype.invariants.size.should be_equal 2
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'version should be extracted form id' do
|
90
|
+
@archetype.version.should == 'v2'
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'short concept name should be extracted from archetype id' do
|
94
|
+
@archetype.short_concept_name.should == 'physical_examination'
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'concept name should be extracted from ontology'
|
98
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../../../spec_helper'
|
2
|
+
include OpenEHR::AM::Archetype::Assertion
|
3
|
+
|
4
|
+
describe Assertion do
|
5
|
+
before(:each) do
|
6
|
+
expression = stub(ExprItem, :type => 'Boolean')
|
7
|
+
$string_expression = "/[at0001]/speed[at0002]/kilometres/magnitude = " +
|
8
|
+
"/[at0003]/speed[at0004]/miles/magnitude * 1.6"
|
9
|
+
variables = stub(Array, :size => 2)
|
10
|
+
@assertion = OpenEHR::AM::Archetype::Assertion::Assertion.new(:tag => 'validity',
|
11
|
+
:expression => expression,
|
12
|
+
:string_expression => $string_expression,
|
13
|
+
:variables => variables)
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should be an instance of Assertion' do
|
17
|
+
@assertion.should be_an_instance_of OpenEHR::AM::Archetype::Assertion::Assertion
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'expression should be assigned properly' do
|
21
|
+
@assertion.expression.type.should == 'Boolean'
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should raise ArgumentError when expression is nil' do
|
25
|
+
lambda {
|
26
|
+
@assertion.expression = nil
|
27
|
+
}.should raise_error ArgumentError
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should raise ArgumentError when expression type is not Boolean' do
|
31
|
+
invalid_expression = stub(ExprItem, :type => 'Real')
|
32
|
+
lambda {
|
33
|
+
@assertion.expression = invalid_expression
|
34
|
+
}.should raise_error ArgumentError
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'tag should be assigned properly' do
|
38
|
+
@assertion.tag.should == 'validity'
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'tag should not be empty' do
|
42
|
+
lambda {
|
43
|
+
@assertion.tag = ''
|
44
|
+
}.should raise_error ArgumentError
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'should not raise ArgumentError when tag = nil' do
|
48
|
+
lambda {
|
49
|
+
@assertion.tag = nil
|
50
|
+
}.should_not raise_error ArgumentError
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'string_expression should be assigned properly' do
|
54
|
+
@assertion.string_expression.should == $string_expression
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'variables should be assigned properly' do
|
58
|
+
@assertion.variables.size.should be_equal 2
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../../../spec_helper'
|
2
|
+
include OpenEHR::AM::Archetype::Assertion
|
3
|
+
|
4
|
+
describe AssertionVariable do
|
5
|
+
before(:each) do
|
6
|
+
@assertion_variable =
|
7
|
+
AssertionVariable.new(:name => 'test',
|
8
|
+
:definition => 'examine spec')
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'name should be assigned properly' do
|
12
|
+
@assertion_variable.name.should == 'test'
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should raise ArgumentError when name is nil' do
|
16
|
+
lambda {
|
17
|
+
@assertion_variable.name = nil
|
18
|
+
}.should raise_error ArgumentError
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'definition should be assigned properly' do
|
22
|
+
@assertion_variable.definition.should == 'examine spec'
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should raise ArgumentError if definiton is nil' do
|
26
|
+
lambda {
|
27
|
+
@assertion_variable.definition = nil
|
28
|
+
}.should raise_error ArgumentError
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../../../spec_helper'
|
2
|
+
include OpenEHR::AM::Archetype::Assertion
|
3
|
+
|
4
|
+
describe ExprBinaryOperator do
|
5
|
+
before(:each) do
|
6
|
+
operator = OperatorKind.new(:value => 2001)
|
7
|
+
right_operand = ExprItem.new(:type => 'Real')
|
8
|
+
left_operand = stub(ExprItem, :item => 'ANY')
|
9
|
+
@expr_binary_operator =
|
10
|
+
ExprBinaryOperator.new(:type => 'Integer',
|
11
|
+
:item => 'ANY',
|
12
|
+
:reference_type => 'operator',
|
13
|
+
:operator => operator,
|
14
|
+
:precedence_overridden => true,
|
15
|
+
:right_operand => right_operand,
|
16
|
+
:left_operand => left_operand)
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
it 'right_operand should be assigned properly' do
|
21
|
+
@expr_binary_operator.right_operand.type.should == 'Real'
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should raise ArgumentError when right_operand is nil' do
|
25
|
+
lambda {
|
26
|
+
@expr_binary_operator.right_operand = nil
|
27
|
+
}.should raise_error ArgumentError
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'left_operand should be assigned properly' do
|
31
|
+
@expr_binary_operator.left_operand.item.should == 'ANY'
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'should raise ArgumentError when left_oprand is nil' do
|
35
|
+
lambda {
|
36
|
+
@expr_binary_operator.left_operand = nil
|
37
|
+
}.should raise_error ArgumentError
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../../../spec_helper'
|
2
|
+
include OpenEHR::AM::Archetype::Assertion
|
3
|
+
|
4
|
+
describe ExprItem do
|
5
|
+
before(:each) do
|
6
|
+
@expr_item = ExprItem.new(:type => 'Real')
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'should be an instance of ExprItem' do
|
10
|
+
@expr_item.should be_an_instance_of ExprItem
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'type should be assigned properly' do
|
14
|
+
@expr_item.type.should == 'Real'
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should raise ArgumentError when type is nil' do
|
18
|
+
lambda {
|
19
|
+
@expr_item.type = nil
|
20
|
+
}.should raise_error ArgumentError
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should raise ArgumentError when type is empty' do
|
24
|
+
lambda {
|
25
|
+
@expr_item.type = ''
|
26
|
+
}.should raise_error ArgumentError
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../../../spec_helper'
|
2
|
+
include OpenEHR::AM::Archetype::Assertion
|
3
|
+
|
4
|
+
describe ExprLeaf do
|
5
|
+
before(:each) do
|
6
|
+
@expr_leaf = ExprLeaf.new(:type => 'Boolean',
|
7
|
+
:item => 'ANY',
|
8
|
+
:reference_type => 'DV_TEXT')
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should be an instance of ExprLeaf' do
|
12
|
+
@expr_leaf.should be_an_instance_of ExprLeaf
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'item should be assigned properly' do
|
16
|
+
@expr_leaf.item.should == 'ANY'
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should raise ArgumentError when item is nil' do
|
20
|
+
lambda {
|
21
|
+
@expr_leaf.item = nil
|
22
|
+
}.should raise_error ArgumentError
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'reference_type should be assigned properly' do
|
26
|
+
@expr_leaf.reference_type.should == 'DV_TEXT'
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should raise ArgumentError when reference_type is nil' do
|
30
|
+
lambda {
|
31
|
+
@expr_leaf.reference_type = nil
|
32
|
+
}.should raise_error ArgumentError
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../../../spec_helper'
|
2
|
+
include OpenEHR::AM::Archetype::Assertion
|
3
|
+
|
4
|
+
describe ExprOperator do
|
5
|
+
before(:each) do
|
6
|
+
operator = OperatorKind.new(:value => 2001)
|
7
|
+
@expr_operator = ExprOperator.new(:type => 'Integer',
|
8
|
+
:item => 'ANY',
|
9
|
+
:reference_type => 'operator',
|
10
|
+
:operator => operator,
|
11
|
+
:precedence_overridden => true)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should be an instance of ExprOperator' do
|
15
|
+
@expr_operator.should be_an_instance_of ExprOperator
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'operator should be assigned properly' do
|
19
|
+
@expr_operator.operator.value.should be_equal 2001
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'precedence_overridden should be assigned properly' do
|
23
|
+
@expr_operator.precedence_overridden.should be_true
|
24
|
+
end
|
25
|
+
end
|