openehr 2.3.0 → 2.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 10d6fc971443c1c8014d60bebd609c71757870ba0bb0d710cc35f014981b7ca1
4
- data.tar.gz: 93b4ce3dd288a4943c0b4112d6ec9cb55ee1438d0411f66a7c47d5d26ea8b4b9
3
+ metadata.gz: 9d2c2f002014051bc668449dbd7a7c79c2a75d4664d702670e80a9307b43ffb4
4
+ data.tar.gz: 374eccbd5be4cb9b76de4563a4648e5e2f346828a1abbe3988c6280de4278ecb
5
5
  SHA512:
6
- metadata.gz: cdb1ec0e04bda30a3d15fed92ef940f0a4aacde6f4e6570f8f5c5f6b0c6e14320166f88834c0a657a1b37d6973edc63650ce641bc1f43d92043289a90b95f5ed
7
- data.tar.gz: 4b42fece35848e073eb3111d5f7abd8b85d02986799433df8330ff65bbbf5c1b8d979cf2d16bee175d4faf4d908c7cf78479a8dd9adfa3c2c6035c84a51d59a5
6
+ metadata.gz: 7f5d3125c74f02accf2a6149ddfd7cfb5d79040184b1668de32a5850bf35a1464c2d448d140e865aa9e132adf3d8c93aca0d857a10c2ce96f54af2180a973c17
7
+ data.tar.gz: f0707a9dc5ed67e5ba4277177c1b5b3fe8e053251ca04f06f0abf326038d430a669dd5988de8793d4486dcae087f44d11f139c23b89df2f9409ee6195c9738d4
@@ -42,6 +42,27 @@ module OpenEHR
42
42
  end
43
43
  end
44
44
  end
45
+
46
+ # C_CODE_REFERENCE is defined by Template.xsd (Template OM) as a
47
+ # C_CODE_PHRASE extension carrying a referenceSetUri. nil is accepted
48
+ # for tolerant parsing of real artifacts. valid_value? is inherited:
49
+ # without a terminology service, this class cannot expand the URI's
50
+ # reference set and must retain CCodePhrase's permissive behavior.
51
+ class CCodeReference < CCodePhrase
52
+ attr_reader :reference_set_uri
53
+
54
+ def initialize(args = { })
55
+ super
56
+ self.reference_set_uri = args[:reference_set_uri]
57
+ end
58
+
59
+ def reference_set_uri=(reference_set_uri)
60
+ if !reference_set_uri.nil? && reference_set_uri.empty?
61
+ raise ArgumentError, 'invalid reference_set_uri'
62
+ end
63
+ @reference_set_uri = reference_set_uri
64
+ end
65
+ end
45
66
  end # of Text
46
67
  end # of Data_Types
47
68
  end # of OpenEHR Profile
@@ -65,7 +65,18 @@ module OpenEHR
65
65
  child_node = Node.new(node)
66
66
  child_node.path = node.path
67
67
  child_node.id = node.id
68
- send child.attributes['type'].text.downcase, child, child_node
68
+ type_name = child.attributes['type'].text
69
+ handler = type_name.downcase
70
+ if respond_to?(handler, true)
71
+ send handler, child, child_node
72
+ else
73
+ # children is open to vendor/newer-model constraint extensions;
74
+ # the other xsi:type dispatch sites are schema-closed. Preserve
75
+ # the C_OBJECT core here, while warning that type-specific
76
+ # constraints are dropped and validation becomes more permissive.
77
+ warn "openehr parser: unknown constraint type \"#{type_name}\" at #{child_node.path}; treating as C_COMPLEX_OBJECT (type-specific constraints dropped)"
78
+ c_complex_object(child, child_node)
79
+ end
69
80
  end
70
81
  end
71
82
 
@@ -11,6 +11,20 @@ module OpenEHR
11
11
  private
12
12
 
13
13
  def c_code_phrase(attr_xml, node)
14
+ OpenEHR::AM::OpenEHRProfile::DataTypes::Text::CCodePhrase.new(
15
+ code_phrase_constraint_args(attr_xml, node)
16
+ )
17
+ end
18
+
19
+ def c_code_reference(attr_xml, node)
20
+ args = code_phrase_constraint_args(attr_xml, node)
21
+ args[:code_list] = nil if args[:code_list] && args[:code_list].empty?
22
+ uri = attr_xml.at('referenceSetUri')&.text&.strip
23
+ args[:reference_set_uri] = uri unless uri.nil? || uri.empty?
24
+ OpenEHR::AM::OpenEHRProfile::DataTypes::Text::CCodeReference.new(args)
25
+ end
26
+
27
+ def code_phrase_constraint_args(attr_xml, node)
14
28
  terminology_id_node = attr_xml.at('terminology_id/value')
15
29
  terminology_id = terminology_id_node ? OpenEHR::RM::Support::Identification::TerminologyID.new(value: terminology_id_node.text.strip) : nil
16
30
 
@@ -21,13 +35,13 @@ module OpenEHR
21
35
  occurrences_node = attr_xml.at('occurrences')
22
36
  occurrences_obj = occurrences_node ? occurrences(occurrences_node) : nil
23
37
 
24
- OpenEHR::AM::OpenEHRProfile::DataTypes::Text::CCodePhrase.new(
38
+ {
25
39
  terminology_id: terminology_id,
26
40
  code_list: code_list,
27
41
  path: node.path,
28
42
  occurrences: occurrences_obj,
29
43
  rm_type_name: 'CODE_PHRASE'
30
- )
44
+ }
31
45
  end
32
46
 
33
47
  # The <property> element is optional in real templates; return nil rather
@@ -1,3 +1,3 @@
1
1
  module OpenEHR
2
- VERSION = "2.3.0"
2
+ VERSION = "2.3.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openehr
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 2.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shinji KOBAYASHI