us_core_test_kit 0.4.6 → 0.4.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (21) hide show
  1. checksums.yaml +4 -4
  2. data/lib/us_core_test_kit/fhir_resource_navigation.rb +9 -3
  3. data/lib/us_core_test_kit/generated/v3.1.1/metadata.yml +9 -1
  4. data/lib/us_core_test_kit/generated/v3.1.1/patient/metadata.yml +9 -1
  5. data/lib/us_core_test_kit/generated/v3.1.1/patient/patient_must_support_test.rb +5 -1
  6. data/lib/us_core_test_kit/generated/v4.0.0/metadata.yml +9 -3
  7. data/lib/us_core_test_kit/generated/v4.0.0/patient/metadata.yml +9 -3
  8. data/lib/us_core_test_kit/generated/v4.0.0/patient/patient_must_support_test.rb +2 -2
  9. data/lib/us_core_test_kit/generated/v5.0.1/condition_encounter_diagnosis/metadata.yml +4 -4
  10. data/lib/us_core_test_kit/generated/v5.0.1/condition_problems_health_concerns/metadata.yml +4 -4
  11. data/lib/us_core_test_kit/generated/v5.0.1/metadata.yml +17 -11
  12. data/lib/us_core_test_kit/generated/v5.0.1/patient/metadata.yml +9 -3
  13. data/lib/us_core_test_kit/generated/v5.0.1/patient/patient_must_support_test.rb +2 -4
  14. data/lib/us_core_test_kit/generator/must_support_metadata_extractor_us_core_3.rb +23 -0
  15. data/lib/us_core_test_kit/generator/must_support_metadata_extractor_us_core_4.rb +24 -4
  16. data/lib/us_core_test_kit/generator/must_support_metadata_extractor_us_core_5.rb +5 -0
  17. data/lib/us_core_test_kit/generator/search_definition_metadata_extractor.rb +52 -4
  18. data/lib/us_core_test_kit/igs/us_core_501/StructureDefinition-condition-assertedDate.json +280 -0
  19. data/lib/us_core_test_kit/search_test.rb +1 -1
  20. data/lib/us_core_test_kit/version.rb +1 -1
  21. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 827607a65eeb7956db852bbf500ad1d9d55f03403e6eb9075d2adb6186e69b2f
4
- data.tar.gz: efabaf62e09af2fed1de8a5e15e5bcc104ff744dbcfe4976577774a92700a700
3
+ metadata.gz: 9580bce91af645498d5ca61297a7900bfd2ed2abd400ae55308c2f209a4e14ff
4
+ data.tar.gz: 2945d9afa14d016011f3c84a2d4d035ec1bfa05117a1b5d20aa6d549fb368a05
5
5
  SHA512:
6
- metadata.gz: 07a7bffbc53564983eb5c28944f98983108abf34be06f96eafff061edfc6bc4f800db1634b7e2414d452c063e926a97d834429c762825c0d72dd83eae58eb3be
7
- data.tar.gz: 4dcfe3c97fb35c3319f466936a3c09ea84d9c887b02d487ce1b0a14de2e999c0097b9d6d55e9e319f10f102693b0e58d8ccdcdb26861e35b51c39cdb35a3c931
6
+ metadata.gz: 134c8e48cc4731b4be03739b99ab90011c30de23d379699db6b91cc993f8f0d5fee1b52f9f0c1759c383d1a87bfa2fbef008c60eec9b3ef21261e0908efd9f66
7
+ data.tar.gz: c9deea8845664b41cb335ffa428edeeabe26ad94cd11cd69ae0832a892fcfb13f3b910a54a29cb8e775c8d9e14b8fcaddd6a949bb1ae465eee3c881d1a68be20
@@ -6,7 +6,7 @@ module USCoreTestKit
6
6
  elements = Array.wrap(elements)
7
7
  return elements if path.blank?
8
8
 
9
- paths = path.split('.')
9
+ paths = path.split(/(?<!hl7)\./)
10
10
  segment = paths.first
11
11
  remaining_path = paths.drop(1).join('.')
12
12
 
@@ -33,7 +33,7 @@ module USCoreTestKit
33
33
  return elements.first
34
34
  end
35
35
 
36
- path_segments = path.split('.')
36
+ path_segments = path.split(/(?<!hl7)\./)
37
37
  segment = path_segments.shift.delete_suffix('[x]').to_sym
38
38
 
39
39
  no_elements_present =
@@ -63,7 +63,13 @@ module USCoreTestKit
63
63
  end
64
64
 
65
65
  def get_next_value(element, property)
66
- element.send(property)
66
+ extension_url = property[/(?<=where\(url=').*(?='\))/]
67
+
68
+ if extension_url.present?
69
+ element.url == extension_url ? element : nil
70
+ else
71
+ element.send(property)
72
+ end
67
73
  rescue NoMethodError
68
74
  nil
69
75
  end
@@ -6040,9 +6040,17 @@
6040
6040
  - :path: address.city
6041
6041
  - :path: address.state
6042
6042
  - :path: address.postalCode
6043
- - :path: address.period
6044
6043
  - :path: communication
6045
6044
  - :path: communication.language
6045
+ :choices:
6046
+ - :paths:
6047
+ - address.period.end
6048
+ - address.use
6049
+ :uscdi_only: true
6050
+ - :paths:
6051
+ - name.period.end
6052
+ - name.use
6053
+ :uscdi_only: true
6046
6054
  :mandatory_elements:
6047
6055
  - Patient.identifier
6048
6056
  - Patient.identifier.system
@@ -171,9 +171,17 @@
171
171
  - :path: address.city
172
172
  - :path: address.state
173
173
  - :path: address.postalCode
174
- - :path: address.period
175
174
  - :path: communication
176
175
  - :path: communication.language
176
+ :choices:
177
+ - :paths:
178
+ - address.period.end
179
+ - address.use
180
+ :uscdi_only: true
181
+ - :paths:
182
+ - name.period.end
183
+ - name.use
184
+ :uscdi_only: true
177
185
  :mandatory_elements:
178
186
  - Patient.identifier
179
187
  - Patient.identifier.system
@@ -15,7 +15,6 @@ module USCoreTestKit
15
15
  * Patient.address
16
16
  * Patient.address.city
17
17
  * Patient.address.line
18
- * Patient.address.period
19
18
  * Patient.address.postalCode
20
19
  * Patient.address.state
21
20
  * Patient.birthDate
@@ -35,6 +34,11 @@ module USCoreTestKit
35
34
  * Patient.telecom.system
36
35
  * Patient.telecom.use
37
36
  * Patient.telecom.value
37
+
38
+ For ONC USCDI requirements, each Patient must support the following additional elements:
39
+
40
+ * Patient.address.period.end or Patient.address.use
41
+ * Patient.name.period.end or Patient.name.use
38
42
  )
39
43
 
40
44
  id :us_core_v311_patient_must_support_test
@@ -6543,17 +6543,23 @@
6543
6543
  - :path: address.city
6544
6544
  - :path: address.state
6545
6545
  - :path: address.postalCode
6546
- - :path: address.period
6547
6546
  - :path: communication.language
6548
6547
  :uscdi_only: true
6549
6548
  - :path: name.suffix
6550
6549
  :uscdi_only: true
6551
- - :path: name.period.end
6552
- :uscdi_only: true
6553
6550
  - :path: telecom
6554
6551
  :uscdi_only: true
6555
6552
  - :path: communication
6556
6553
  :uscdi_only: true
6554
+ :choices:
6555
+ - :paths:
6556
+ - address.period.end
6557
+ - address.use
6558
+ :uscdi_only: true
6559
+ - :paths:
6560
+ - name.period.end
6561
+ - name.use
6562
+ :uscdi_only: true
6557
6563
  :mandatory_elements:
6558
6564
  - Patient.identifier
6559
6565
  - Patient.identifier.system
@@ -176,17 +176,23 @@
176
176
  - :path: address.city
177
177
  - :path: address.state
178
178
  - :path: address.postalCode
179
- - :path: address.period
180
179
  - :path: communication.language
181
180
  :uscdi_only: true
182
181
  - :path: name.suffix
183
182
  :uscdi_only: true
184
- - :path: name.period.end
185
- :uscdi_only: true
186
183
  - :path: telecom
187
184
  :uscdi_only: true
188
185
  - :path: communication
189
186
  :uscdi_only: true
187
+ :choices:
188
+ - :paths:
189
+ - address.period.end
190
+ - address.use
191
+ :uscdi_only: true
192
+ - :paths:
193
+ - name.period.end
194
+ - name.use
195
+ :uscdi_only: true
190
196
  :mandatory_elements:
191
197
  - Patient.identifier
192
198
  - Patient.identifier.system
@@ -15,7 +15,6 @@ module USCoreTestKit
15
15
  * Patient.address
16
16
  * Patient.address.city
17
17
  * Patient.address.line
18
- * Patient.address.period
19
18
  * Patient.address.postalCode
20
19
  * Patient.address.state
21
20
  * Patient.birthDate
@@ -29,12 +28,13 @@ module USCoreTestKit
29
28
 
30
29
  For ONC USCDI requirements, each Patient must support the following additional elements:
31
30
 
31
+ * Patient.address.period.end or Patient.address.use
32
32
  * Patient.communication
33
33
  * Patient.communication.language
34
34
  * Patient.extension:birthsex
35
35
  * Patient.extension:ethnicity
36
36
  * Patient.extension:race
37
- * Patient.name.period.end
37
+ * Patient.name.period.end or Patient.name.use
38
38
  * Patient.name.suffix
39
39
  * Patient.telecom
40
40
  * Patient.telecom.system
@@ -120,9 +120,9 @@
120
120
  :multiple_or: MAY
121
121
  :asserted-date:
122
122
  :paths:
123
- - extension
123
+ - extension.where(url='http://hl7.org/fhir/StructureDefinition/condition-assertedDate').valueDateTime
124
124
  :full_paths:
125
- - Condition.extension
125
+ - Condition.extension.where(url='http://hl7.org/fhir/StructureDefinition/condition-assertedDate').valueDateTime
126
126
  :comparators:
127
127
  :eq: MAY
128
128
  :ne: MAY
@@ -134,8 +134,8 @@
134
134
  :eb: MAY
135
135
  :ap: MAY
136
136
  :values: []
137
- :type: Extension
138
- :contains_multiple: true
137
+ :type: dateTime
138
+ :contains_multiple: false
139
139
  :multiple_or: MAY
140
140
  :code:
141
141
  :paths:
@@ -121,9 +121,9 @@
121
121
  :multiple_or: MAY
122
122
  :asserted-date:
123
123
  :paths:
124
- - extension
124
+ - extension.where(url='http://hl7.org/fhir/StructureDefinition/condition-assertedDate').valueDateTime
125
125
  :full_paths:
126
- - Condition.extension
126
+ - Condition.extension.where(url='http://hl7.org/fhir/StructureDefinition/condition-assertedDate').valueDateTime
127
127
  :comparators:
128
128
  :eq: MAY
129
129
  :ne: MAY
@@ -135,8 +135,8 @@
135
135
  :eb: MAY
136
136
  :ap: MAY
137
137
  :values: []
138
- :type: Extension
139
- :contains_multiple: true
138
+ :type: dateTime
139
+ :contains_multiple: false
140
140
  :multiple_or: MAY
141
141
  :code:
142
142
  :paths:
@@ -669,9 +669,9 @@
669
669
  :multiple_or: MAY
670
670
  :asserted-date:
671
671
  :paths:
672
- - extension
672
+ - extension.where(url='http://hl7.org/fhir/StructureDefinition/condition-assertedDate').valueDateTime
673
673
  :full_paths:
674
- - Condition.extension
674
+ - Condition.extension.where(url='http://hl7.org/fhir/StructureDefinition/condition-assertedDate').valueDateTime
675
675
  :comparators:
676
676
  :eq: MAY
677
677
  :ne: MAY
@@ -683,8 +683,8 @@
683
683
  :eb: MAY
684
684
  :ap: MAY
685
685
  :values: []
686
- :type: Extension
687
- :contains_multiple: true
686
+ :type: dateTime
687
+ :contains_multiple: false
688
688
  :multiple_or: MAY
689
689
  :code:
690
690
  :paths:
@@ -976,9 +976,9 @@
976
976
  :multiple_or: MAY
977
977
  :asserted-date:
978
978
  :paths:
979
- - extension
979
+ - extension.where(url='http://hl7.org/fhir/StructureDefinition/condition-assertedDate').valueDateTime
980
980
  :full_paths:
981
- - Condition.extension
981
+ - Condition.extension.where(url='http://hl7.org/fhir/StructureDefinition/condition-assertedDate').valueDateTime
982
982
  :comparators:
983
983
  :eq: MAY
984
984
  :ne: MAY
@@ -990,8 +990,8 @@
990
990
  :eb: MAY
991
991
  :ap: MAY
992
992
  :values: []
993
- :type: Extension
994
- :contains_multiple: true
993
+ :type: dateTime
994
+ :contains_multiple: false
995
995
  :multiple_or: MAY
996
996
  :code:
997
997
  :paths:
@@ -8780,13 +8780,10 @@
8780
8780
  - :path: address.city
8781
8781
  - :path: address.state
8782
8782
  - :path: address.postalCode
8783
- - :path: address.period
8784
8783
  - :path: communication.language
8785
8784
  :uscdi_only: true
8786
8785
  - :path: name.suffix
8787
8786
  :uscdi_only: true
8788
- - :path: name.period.end
8789
- :uscdi_only: true
8790
8787
  - :path: telecom
8791
8788
  :uscdi_only: true
8792
8789
  - :path: communication
@@ -8797,6 +8794,15 @@
8797
8794
  - :path: name.use
8798
8795
  :fixed_value: old
8799
8796
  :uscdi_only: true
8797
+ :choices:
8798
+ - :paths:
8799
+ - address.period.end
8800
+ - address.use
8801
+ :uscdi_only: true
8802
+ - :paths:
8803
+ - name.period.end
8804
+ - name.use
8805
+ :uscdi_only: true
8800
8806
  :mandatory_elements:
8801
8807
  - Patient.identifier
8802
8808
  - Patient.identifier.system
@@ -179,13 +179,10 @@
179
179
  - :path: address.city
180
180
  - :path: address.state
181
181
  - :path: address.postalCode
182
- - :path: address.period
183
182
  - :path: communication.language
184
183
  :uscdi_only: true
185
184
  - :path: name.suffix
186
185
  :uscdi_only: true
187
- - :path: name.period.end
188
- :uscdi_only: true
189
186
  - :path: telecom
190
187
  :uscdi_only: true
191
188
  - :path: communication
@@ -196,6 +193,15 @@
196
193
  - :path: name.use
197
194
  :fixed_value: old
198
195
  :uscdi_only: true
196
+ :choices:
197
+ - :paths:
198
+ - address.period.end
199
+ - address.use
200
+ :uscdi_only: true
201
+ - :paths:
202
+ - name.period.end
203
+ - name.use
204
+ :uscdi_only: true
199
205
  :mandatory_elements:
200
206
  - Patient.identifier
201
207
  - Patient.identifier.system
@@ -15,7 +15,6 @@ module USCoreTestKit
15
15
  * Patient.address
16
16
  * Patient.address.city
17
17
  * Patient.address.line
18
- * Patient.address.period
19
18
  * Patient.address.postalCode
20
19
  * Patient.address.state
21
20
  * Patient.birthDate
@@ -29,16 +28,15 @@ module USCoreTestKit
29
28
 
30
29
  For ONC USCDI requirements, each Patient must support the following additional elements:
31
30
 
32
- * Patient.address.use
31
+ * Patient.address.period.end or Patient.address.use
33
32
  * Patient.communication
34
33
  * Patient.communication.language
35
34
  * Patient.extension:birthsex
36
35
  * Patient.extension:ethnicity
37
36
  * Patient.extension:genderIdentity
38
37
  * Patient.extension:race
39
- * Patient.name.period.end
38
+ * Patient.name.period.end or Patient.name.use
40
39
  * Patient.name.suffix
41
- * Patient.name.use
42
40
  * Patient.telecom
43
41
  * Patient.telecom.system
44
42
  * Patient.telecom.use
@@ -10,6 +10,7 @@ module USCoreTestKit
10
10
 
11
11
  def handle_special_cases
12
12
  add_must_support_choices
13
+ remove_patient_address_period
13
14
  remove_document_reference_custodian
14
15
  end
15
16
 
@@ -21,11 +22,33 @@ module USCoreTestKit
21
22
  choices << { paths: ['udiCarrier.carrierAIDC', 'udiCarrier.carrierHRF'] }
22
23
  when 'DocumentReference'
23
24
  choices << { paths: ['content.attachment.data', 'content.attachment.url'] }
25
+ when 'Patient'
26
+ # FHIR-40299 adds USCDI MustSupport choices for:
27
+ # * address.period.end and address.use,
28
+ # * name.period.end and name.use
29
+ choices << {
30
+ paths: ['address.period.end', 'address.use'],
31
+ uscdi_only: true
32
+ }
33
+
34
+ choices << {
35
+ paths: ['name.period.end', 'name.use'],
36
+ uscdi_only: true
37
+ }
24
38
  end
25
39
 
26
40
  must_supports[:choices] = choices if choices.present?
27
41
  end
28
42
 
43
+ # FHIR-40299 removes Patient.address.period from MustSupport,
44
+ def remove_patient_address_period
45
+ return unless profile.type == 'Patient'
46
+
47
+ must_supports[:elements].delete_if do |element|
48
+ element[:path] == 'address.period'
49
+ end
50
+ end
51
+
29
52
  # US Core clarified that server implmentation is not required to support DocumentReference.custodian (FHIR-28393)
30
53
  def remove_document_reference_custodian
31
54
  return unless profile.type == 'DocumentReference'
@@ -1,3 +1,5 @@
1
+ require_relative 'must_support_metadata_extractor_us_core_3'
2
+
1
3
  module USCoreTestKit
2
4
  class Generator
3
5
  class MustSupportMetadataExtractorUsCore4
@@ -8,8 +10,13 @@ module USCoreTestKit
8
10
  self.must_supports = must_supports
9
11
  end
10
12
 
13
+ def us_core_3_extractor
14
+ @us_core_3_extractor ||= MustSupportMetadataExtractorUsCore3.new(profile, must_supports)
15
+ end
16
+
11
17
  def handle_special_cases
12
18
  add_must_support_choices
19
+ remove_patient_address_period
13
20
  add_device_distinct_identifier
14
21
  add_patient_uscdi_elements
15
22
  end
@@ -25,11 +32,28 @@ module USCoreTestKit
25
32
  choices << { paths: ['location.location', 'serviceProvider'] }
26
33
  when 'MedicationRequest'
27
34
  choices << { paths: ['reportedBoolean', 'reportedReference'] }
35
+ when 'Patient'
36
+ # FHIR-40299 adds USCDI MustSupport choices for:
37
+ # * address.period.end and address.use,
38
+ # * name.period.end and name.use
39
+ choices << {
40
+ paths: ['address.period.end', 'address.use'],
41
+ uscdi_only: true
42
+ }
43
+
44
+ choices << {
45
+ paths: ['name.period.end', 'name.use'],
46
+ uscdi_only: true
47
+ }
28
48
  end
29
49
 
30
50
  must_supports[:choices] = choices if choices.present?
31
51
  end
32
52
 
53
+ def remove_patient_address_period
54
+ us_core_3_extractor.remove_patient_address_period
55
+ end
56
+
33
57
  def add_device_distinct_identifier
34
58
  if profile.type == 'Device'
35
59
  # FHIR-36303 US Core 4.0.0 mistakenly removed MS from Device.distinctIdentifier
@@ -63,10 +87,6 @@ module USCoreTestKit
63
87
  path: 'name.suffix',
64
88
  uscdi_only: true
65
89
  }
66
- must_supports[:elements] << {
67
- path: 'name.period.end',
68
- uscdi_only: true
69
- }
70
90
  must_supports[:elements] << {
71
91
  path: 'telecom',
72
92
  uscdi_only: true
@@ -17,6 +17,7 @@ module USCoreTestKit
17
17
 
18
18
  def handle_special_cases
19
19
  add_must_support_choices
20
+ remove_patient_address_period
20
21
  add_patient_uscdi_elements
21
22
  add_value_set_expansion
22
23
  remove_survey_questionnaire_response
@@ -48,6 +49,10 @@ module USCoreTestKit
48
49
  end
49
50
  end
50
51
 
52
+ def remove_patient_address_period
53
+ us_core_4_extractor.remove_patient_address_period
54
+ end
55
+
51
56
  def add_patient_uscdi_elements
52
57
  return unless profile.type == 'Patient'
53
58
 
@@ -37,22 +37,58 @@ module USCoreTestKit
37
37
  def full_paths
38
38
  @full_paths ||=
39
39
  begin
40
- path = param.expression.gsub(/.where\((.*)/, '')
40
+ path = param.expression.gsub(/.where\(resolve\((.*)/, '').gsub(/url = '/, 'url=\'')
41
41
  path = path[1..-2] if path.start_with?('(') && path.end_with?(')')
42
42
  path.scan(/[. ]as[( ]([^)]*)[)]?/).flatten.map do |as_type|
43
43
  path.gsub!(/[. ]as[( ](#{as_type}[^)]*)[)]?/, as_type.upcase_first) if as_type.present?
44
44
  end
45
- path.split('|')
45
+
46
+ full_paths = path.split('|')
47
+
48
+ # There is a bug in US Core 5 asserted-date search parameter. See FHIR-40573
49
+ if param.respond_to?(:version) && param.version == '5.0.1' && name == 'asserted-date'
50
+ remove_additional_extension_from_asserted_date(full_paths)
51
+ end
52
+
53
+ full_paths
46
54
  end
47
55
  end
48
56
 
57
+ def remove_additional_extension_from_asserted_date(full_paths)
58
+ full_paths.each do |full_path|
59
+ next unless full_path.include?('http://hl7.org/fhir/StructureDefinition/condition-assertedDate')
60
+ full_path.gsub!(/\).extension./, ').')
61
+ end
62
+ end
63
+
49
64
  def paths
50
65
  @paths ||= full_paths.map { |a_path| a_path.gsub("#{resource}.", '') }
51
66
  end
52
67
 
68
+ def extensions
69
+ @extensions ||= full_paths.select { |a_path| a_path.include?('extension.where') }
70
+ .map { |a_path| { url: a_path[/(?<=extension.where\(url=').*(?='\))/] }}
71
+ .presence
72
+ end
73
+
53
74
  def profile_element
54
75
  @profile_element ||=
55
- profile_elements.find { |element| full_paths.include?(element.id) }
76
+ (
77
+ profile_elements.find { |element| full_paths.include?(element.id) } ||
78
+ extension_definition&.differential&.element&.find { |element| element.id == 'Extension.value[x]'}
79
+ )
80
+ end
81
+
82
+ def extension_definition
83
+ @extension_definition ||=
84
+ begin
85
+ ext_definition = nil
86
+ extensions&.each do |ext_metadata|
87
+ ext_definition = ig_resources.profile_by_url(ext_metadata[:url])
88
+ break if ext_definition.present?
89
+ end
90
+ ext_definition
91
+ end
56
92
  end
57
93
 
58
94
  def comparator_expectation_extensions
@@ -90,7 +126,19 @@ module USCoreTestKit
90
126
  end
91
127
 
92
128
  def contains_multiple?
93
- profile_element&.max == '*'
129
+ if profile_element.present?
130
+ if profile_element.id.start_with?('Extension') && extension_definition.present?
131
+ # Find the extension instance in a US Core profile
132
+ target_element = profile_elements.find do |element|
133
+ element.type.any? { |type| type.code == "Extension" && type.profile.include?(extension_definition.url) }
134
+ end
135
+ target_element&.max == '*'
136
+ else
137
+ profile_element.max == '*'
138
+ end
139
+ else
140
+ false
141
+ end
94
142
  end
95
143
 
96
144
  def chain_extensions
@@ -0,0 +1,280 @@
1
+ {
2
+ "resourceType": "StructureDefinition",
3
+ "id": "condition-assertedDate",
4
+ "extension": [
5
+ {
6
+ "url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-wg",
7
+ "valueCode": "pc"
8
+ },
9
+ {
10
+ "url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm",
11
+ "valueInteger": 1
12
+ }
13
+ ],
14
+ "url": "http://hl7.org/fhir/StructureDefinition/condition-assertedDate",
15
+ "version": "4.0.1",
16
+ "name": "assertedDate",
17
+ "title": "assertedDate",
18
+ "status": "draft",
19
+ "date": "2015-02-21",
20
+ "publisher": "Health Level Seven, Inc. - FHIR WG",
21
+ "contact": [
22
+ {
23
+ "telecom": [
24
+ {
25
+ "system": "url",
26
+ "value": "HL7"
27
+ }
28
+ ]
29
+ }
30
+ ],
31
+ "description": "The date on which the existence of the Condition was first asserted or acknowledged.",
32
+ "fhirVersion": "4.0.1",
33
+ "mapping": [
34
+ {
35
+ "identity": "rim",
36
+ "uri": "http://hl7.org/v3",
37
+ "name": "RIM Mapping"
38
+ }
39
+ ],
40
+ "kind": "complex-type",
41
+ "abstract": false,
42
+ "context": [
43
+ {
44
+ "type": "element",
45
+ "expression": "Condition"
46
+ }
47
+ ],
48
+ "type": "Extension",
49
+ "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Extension",
50
+ "derivation": "constraint",
51
+ "snapshot": {
52
+ "element": [
53
+ {
54
+ "id": "Extension",
55
+ "path": "Extension",
56
+ "short": "Date the condition was first asserted",
57
+ "definition": "The date on which the existence of the Condition was first asserted or acknowledged.",
58
+ "comment": "The assertedDate is in the context of the recording practitioner and might not be the same as the recordedDate.",
59
+ "min": 0,
60
+ "max": "1",
61
+ "base": {
62
+ "path": "Extension",
63
+ "min": 0,
64
+ "max": "*"
65
+ },
66
+ "condition": [
67
+ "ele-1"
68
+ ],
69
+ "constraint": [
70
+ {
71
+ "key": "ele-1",
72
+ "severity": "error",
73
+ "human": "All FHIR elements must have a @value or children",
74
+ "expression": "hasValue() or (children().count() > id.count())",
75
+ "xpath": "@value|f:*|h:div",
76
+ "source": "http://hl7.org/fhir/StructureDefinition/Element"
77
+ },
78
+ {
79
+ "key": "ext-1",
80
+ "severity": "error",
81
+ "human": "Must have either extensions or value[x], not both",
82
+ "expression": "extension.exists() != value.exists()",
83
+ "xpath": "exists(f:extension)!=exists(f:*[starts-with(local-name(.), 'value')])",
84
+ "source": "http://hl7.org/fhir/StructureDefinition/Extension"
85
+ }
86
+ ],
87
+ "isModifier": false
88
+ },
89
+ {
90
+ "id": "Extension.id",
91
+ "path": "Extension.id",
92
+ "representation": [
93
+ "xmlAttr"
94
+ ],
95
+ "short": "Unique id for inter-element referencing",
96
+ "definition": "Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.",
97
+ "min": 0,
98
+ "max": "1",
99
+ "base": {
100
+ "path": "Element.id",
101
+ "min": 0,
102
+ "max": "1"
103
+ },
104
+ "type": [
105
+ {
106
+ "extension": [
107
+ {
108
+ "url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type",
109
+ "valueUrl": "string"
110
+ }
111
+ ],
112
+ "code": "http://hl7.org/fhirpath/System.String"
113
+ }
114
+ ],
115
+ "isModifier": false,
116
+ "isSummary": false,
117
+ "mapping": [
118
+ {
119
+ "identity": "rim",
120
+ "map": "n/a"
121
+ }
122
+ ]
123
+ },
124
+ {
125
+ "id": "Extension.extension",
126
+ "path": "Extension.extension",
127
+ "slicing": {
128
+ "discriminator": [
129
+ {
130
+ "type": "value",
131
+ "path": "url"
132
+ }
133
+ ],
134
+ "description": "Extensions are always sliced by (at least) url",
135
+ "rules": "open"
136
+ },
137
+ "short": "Extension",
138
+ "definition": "An Extension",
139
+ "min": 0,
140
+ "max": "0",
141
+ "base": {
142
+ "path": "Element.extension",
143
+ "min": 0,
144
+ "max": "*"
145
+ },
146
+ "type": [
147
+ {
148
+ "code": "Extension"
149
+ }
150
+ ],
151
+ "constraint": [
152
+ {
153
+ "key": "ele-1",
154
+ "severity": "error",
155
+ "human": "All FHIR elements must have a @value or children",
156
+ "expression": "hasValue() or (children().count() > id.count())",
157
+ "xpath": "@value|f:*|h:div",
158
+ "source": "http://hl7.org/fhir/StructureDefinition/Element"
159
+ },
160
+ {
161
+ "key": "ext-1",
162
+ "severity": "error",
163
+ "human": "Must have either extensions or value[x], not both",
164
+ "expression": "extension.exists() != value.exists()",
165
+ "xpath": "exists(f:extension)!=exists(f:*[starts-with(local-name(.), \"value\")])",
166
+ "source": "http://hl7.org/fhir/StructureDefinition/Extension"
167
+ }
168
+ ],
169
+ "isModifier": false,
170
+ "isSummary": false
171
+ },
172
+ {
173
+ "id": "Extension.url",
174
+ "path": "Extension.url",
175
+ "representation": [
176
+ "xmlAttr"
177
+ ],
178
+ "short": "identifies the meaning of the extension",
179
+ "definition": "Source of the definition for the extension code - a logical name or a URL.",
180
+ "comment": "The definition may point directly to a computable or human-readable definition of the extensibility codes, or it may be a logical URI as declared in some other specification. The definition SHALL be a URI for the Structure Definition defining the extension.",
181
+ "min": 1,
182
+ "max": "1",
183
+ "base": {
184
+ "path": "Extension.url",
185
+ "min": 1,
186
+ "max": "1"
187
+ },
188
+ "type": [
189
+ {
190
+ "extension": [
191
+ {
192
+ "url": "http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type",
193
+ "valueUrl": "uri"
194
+ }
195
+ ],
196
+ "code": "http://hl7.org/fhirpath/System.String"
197
+ }
198
+ ],
199
+ "fixedUri": "http://hl7.org/fhir/StructureDefinition/condition-assertedDate",
200
+ "isModifier": false,
201
+ "isSummary": false,
202
+ "mapping": [
203
+ {
204
+ "identity": "rim",
205
+ "map": "N/A"
206
+ }
207
+ ]
208
+ },
209
+ {
210
+ "id": "Extension.value[x]",
211
+ "path": "Extension.value[x]",
212
+ "short": "Value of extension",
213
+ "definition": "Value of extension - must be one of a constrained set of the data types (see [Extensibility](http://hl7.org/fhir/extensibility.html) for a list).",
214
+ "min": 1,
215
+ "max": "1",
216
+ "base": {
217
+ "path": "Extension.value[x]",
218
+ "min": 0,
219
+ "max": "1"
220
+ },
221
+ "type": [
222
+ {
223
+ "code": "dateTime"
224
+ }
225
+ ],
226
+ "constraint": [
227
+ {
228
+ "key": "ele-1",
229
+ "severity": "error",
230
+ "human": "All FHIR elements must have a @value or children",
231
+ "expression": "hasValue() or (children().count() > id.count())",
232
+ "xpath": "@value|f:*|h:div",
233
+ "source": "http://hl7.org/fhir/StructureDefinition/Element"
234
+ }
235
+ ],
236
+ "isModifier": false,
237
+ "isSummary": false,
238
+ "mapping": [
239
+ {
240
+ "identity": "rim",
241
+ "map": "N/A"
242
+ }
243
+ ]
244
+ }
245
+ ]
246
+ },
247
+ "differential": {
248
+ "element": [
249
+ {
250
+ "id": "Extension",
251
+ "path": "Extension",
252
+ "short": "Date the condition was first asserted",
253
+ "definition": "The date on which the existence of the Condition was first asserted or acknowledged.",
254
+ "comment": "The assertedDate is in the context of the recording practitioner and might not be the same as the recordedDate.",
255
+ "min": 0,
256
+ "max": "1"
257
+ },
258
+ {
259
+ "id": "Extension.extension",
260
+ "path": "Extension.extension",
261
+ "max": "0"
262
+ },
263
+ {
264
+ "id": "Extension.url",
265
+ "path": "Extension.url",
266
+ "fixedUri": "http://hl7.org/fhir/StructureDefinition/condition-assertedDate"
267
+ },
268
+ {
269
+ "id": "Extension.value[x]",
270
+ "path": "Extension.value[x]",
271
+ "min": 1,
272
+ "type": [
273
+ {
274
+ "code": "dateTime"
275
+ }
276
+ ]
277
+ }
278
+ ]
279
+ }
280
+ }
@@ -620,7 +620,7 @@ module USCoreTestKit
620
620
  end
621
621
  end
622
622
 
623
- break if search_value.present?
623
+ break if search_value.present?
624
624
  end
625
625
 
626
626
  escaped_value = search_value&.gsub(',', '\\,')
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module USCoreTestKit
4
- VERSION = '0.4.6'
4
+ VERSION = '0.4.7'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: us_core_test_kit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.6
4
+ version: 0.4.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen MacVicar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-03 00:00:00.000000000 Z
11
+ date: 2023-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: inferno_core
@@ -1303,6 +1303,7 @@ files:
1303
1303
  - lib/us_core_test_kit/igs/us_core_311/StructureDefinition-resprate.json
1304
1304
  - lib/us_core_test_kit/igs/us_core_400.tgz
1305
1305
  - lib/us_core_test_kit/igs/us_core_501.tgz
1306
+ - lib/us_core_test_kit/igs/us_core_501/StructureDefinition-condition-assertedDate.json
1306
1307
  - lib/us_core_test_kit/must_support_test.rb
1307
1308
  - lib/us_core_test_kit/provenance_validator.rb
1308
1309
  - lib/us_core_test_kit/read_test.rb