ips_test_kit 0.10.0 → 0.10.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4e86f29cf253decfc836349577f8c260ff624bb76c4642aeea1a4262ceb6994e
4
- data.tar.gz: 4812208a92bc49d10b6db07ad2bef89578e53a567449647dd5c58bdd9269f802
3
+ metadata.gz: 1bf1e1afde4fe4c962c01345f752d36f1880cdf3ce82eb9cb8841daf0272e977
4
+ data.tar.gz: 251446a0ac6e0b99f59fda08da687691379bf44715f52bf4e9cbda288e608f58
5
5
  SHA512:
6
- metadata.gz: 1b296999166bd2ebabf1898967620ce8ab608a273965fa8809095155bd4c5a9dd4785b9e4abe909b0fbe36f705a7a4d7cbe18fc3224d7cb7818f8b66d18b6844
7
- data.tar.gz: 29122051ea1f641245bb7797f06f3f760197c3e7dd792e5ca5442815af35c1176ee7f9c485050b2fb9ba41d8fa3488990652b1d4099f5290f7adbd83ce04c87b
6
+ metadata.gz: a2069617050a4c57f988895c77f811532688593df278cb0ebf9c9363359e520544ae5c13d2b25355557ced8be9e07d7dfc34e47d539958f13d957b54ec1ea454
7
+ data.tar.gz: 8fa079fcf40b882ba93c53216b5d99b9947b00cee6597c6a921213e3ee5b5f19abca7f2331203bf445ef9dbb8dcdf50c0f57122b975543328d6baa8c6f5c761c
@@ -1,3 +1,6 @@
1
+ require_relative './summary_operation_return_bundle'
2
+ require_relative './summary_operation_support'
3
+ require_relative './summary_operation_valid_composition'
1
4
  module IPS
2
5
  class SummaryOperation < Inferno::TestGroup
3
6
  title 'Summary Operation Tests'
@@ -8,77 +11,11 @@ module IPS
8
11
  id :ips_summary_operation
9
12
  run_as_group
10
13
 
11
- test do
12
- title 'IPS Server declares support for $summary operation in CapabilityStatement'
13
- description %(
14
- The IPS Server declares support for Patient/[id]/$summary operation in its server CapabilityStatement
15
- )
16
-
17
- run do
18
- fhir_get_capability_statement
19
- assert_response_status(200)
20
-
21
- operations = resource.rest&.flat_map do |rest|
22
- rest.resource
23
- &.select { |r| r.type == 'Patient' && r.respond_to?(:operation) }
24
- &.flat_map(&:operation)
25
- end&.compact
26
-
27
- operation_defined = operations.any? do |operation|
28
- operation.definition == 'http://hl7.org/fhir/uv/ips/OperationDefinition/summary' ||
29
- ['summary', 'patient-summary'].include?(operation.name.downcase)
30
- end
31
-
32
- assert operation_defined, 'Server CapabilityStatement did not declare support for $summary operation in Patient resource.'
33
- end
34
- end
35
-
36
- test do
37
- title 'IPS Server returns Bundle resource for Patient/[id]/$summary GET operation'
38
- description %(
39
- IPS Server returns a valid IPS Bundle resource as successful result of
40
- $summary operation.
41
-
42
- This test currently only issues a GET request for the summary due to a
43
- limitation in Inferno in issuing POST requests that omit a Content-Type
44
- header when the body is empty. Inferno currently adds a `Content-Type:
45
- application/x-www-form-urlencoded` header when issuing a POST with no
46
- body, which causes issues in known reference implementations.
47
-
48
- A future update to this test suite should include a required POST
49
- request as well as an optional GET request for this content.
50
- )
14
+ test from: :ips_summary_operation_support
51
15
 
52
- input :patient_id
53
- makes_request :summary_operation
16
+ test from: :ips_summary_operation_return_bundle
54
17
 
55
- run do
56
- fhir_operation("Patient/#{patient_id}/$summary", name: :summary_operation, operation_method: :get)
57
- assert_response_status(200)
58
- assert_resource_type(:bundle)
59
- assert_valid_resource(profile_url: 'http://hl7.org/fhir/uv/ips/StructureDefinition/Bundle-uv-ips')
60
- end
61
- end
62
-
63
- test do
64
- title 'IPS Server returns Bundle resource containing valid IPS Composition entry'
65
- description %(
66
- IPS Server return valid IPS Composition resource in the Bundle as first entry
67
- )
68
- # link 'http://hl7.org/fhir/uv/ips/StructureDefinition-Composition-uv-ips.html'
69
- uses_request :summary_operation
70
-
71
- run do
72
- skip_if !resource.is_a?(FHIR::Bundle), 'No Bundle returned from document operation'
73
-
74
- assert resource.entry.length.positive?, 'Bundle has no entries'
75
-
76
- first_resource = resource.entry.first.resource
77
-
78
- assert first_resource.is_a?(FHIR::Composition), 'The first entry in the Bundle is not a Composition'
79
- assert_valid_resource(resource: first_resource, profile_url: 'http://hl7.org/fhir/uv/ips/StructureDefinition/Composition-uv-ips')
80
- end
81
- end
18
+ test from: :ips_summary_operation_valid_composition
82
19
 
83
20
  test do
84
21
  title 'IPS Server returns Bundle resource containing valid IPS MedicationStatement entry'
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module IPS
4
+ class SummaryOperationReturnBundle < Inferno::Test
5
+ title 'IPS Server returns Bundle resource for Patient/[id]/$summary GET operation'
6
+ description %(
7
+ IPS Server returns a valid IPS Bundle resource as successful result of
8
+ $summary operation.
9
+
10
+ This test currently only issues a GET request for the summary due to a
11
+ limitation in Inferno in issuing POST requests that omit a Content-Type
12
+ header when the body is empty. Inferno currently adds a `Content-Type:
13
+ application/x-www-form-urlencoded` header when issuing a POST with no
14
+ body, which causes issues in known reference implementations.
15
+
16
+ A future update to this test suite should include a required POST
17
+ request as well as an optional GET request for this content.
18
+ )
19
+ id :ips_summary_operation_return_bundle
20
+
21
+ input :patient_id
22
+ makes_request :summary_operation
23
+
24
+ class << self
25
+ def profile_url
26
+ @profile_url ||= config.options[:ips_bundle_profile_url] || 'http://hl7.org/fhir/uv/ips/StructureDefinition/Bundle-uv-ips'
27
+ end
28
+ end
29
+
30
+ run do
31
+ fhir_operation("Patient/#{patient_id}/$summary", name: :summary_operation, operation_method: :get)
32
+ assert_response_status(200)
33
+ assert_resource_type(:bundle)
34
+ assert_valid_resource(profile_url: self.class.profile_url)
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module IPS
4
+ class SummaryOperationSupport < Inferno::Test
5
+ title 'IPS Server declares support for $summary operation in CapabilityStatement'
6
+ description %(
7
+ The IPS Server declares support for Patient/[id]/$summary operation in its server CapabilityStatement
8
+ )
9
+ id :ips_summary_operation_support
10
+
11
+ class << self
12
+ def ips_summary_operation_definition_url
13
+ @ips_summary_operation_definition_url ||= config.options[:ips_summary_operation_definition_url] || 'http://hl7.org/fhir/uv/ips/OperationDefinition/summary'
14
+ end
15
+ end
16
+
17
+ run do
18
+ fhir_get_capability_statement
19
+ assert_response_status(200)
20
+
21
+ operations = resource.rest&.flat_map do |rest|
22
+ rest.resource
23
+ &.select { |r| r.type == 'Patient' && r.respond_to?(:operation) }
24
+ &.flat_map(&:operation)
25
+ end&.compact
26
+
27
+ operation_defined = operations.any? do |operation|
28
+ operation.definition == self.class.ips_summary_operation_definition_url ||
29
+ %w[summary patient-summary].include?(operation.name.downcase)
30
+ end
31
+
32
+ assert operation_defined,
33
+ 'Server CapabilityStatement did not declare support for $summary operation in Patient resource.'
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module IPS
4
+ class SummaryOperationValidComposition < Inferno::Test
5
+ title 'IPS Server returns Bundle resource containing valid IPS Composition entry'
6
+ description 'IPS Server return valid IPS Composition resource in the Bundle as first entry'
7
+ id :ips_summary_operation_valid_composition
8
+ uses_request :summary_operation
9
+
10
+ class << self
11
+ def profile_url
12
+ @profile_url ||= config.options[:ips_composition_profile_url] || 'http://hl7.org/fhir/uv/ips/StructureDefinition/Composition-uv-ips'
13
+ end
14
+ end
15
+
16
+ run do
17
+ skip_if !resource.is_a?(FHIR::Bundle), 'No Bundle returned from document operation'
18
+ assert resource.entry.length.positive?, 'Bundle has no entries'
19
+
20
+ first_resource = resource.entry.first.resource
21
+
22
+ assert first_resource.is_a?(FHIR::Composition), 'The first entry in the Bundle is not a Composition'
23
+ assert_valid_resource(resource: first_resource, profile_url: self.class.profile_url)
24
+ end
25
+ end
26
+ end
data/lib/ips/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module IPS
2
- VERSION = '0.10.0'.freeze
2
+ VERSION = '0.10.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ips_test_kit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.10.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - MITRE
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-06-05 00:00:00.000000000 Z
11
+ date: 2024-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: inferno_core
@@ -120,6 +120,9 @@ files:
120
120
  - lib/ips/procedure.rb
121
121
  - lib/ips/specimen.rb
122
122
  - lib/ips/summary_operation.rb
123
+ - lib/ips/summary_operation_return_bundle.rb
124
+ - lib/ips/summary_operation_support.rb
125
+ - lib/ips/summary_operation_valid_composition.rb
123
126
  - lib/ips/version.rb
124
127
  - lib/ips_test_kit.rb
125
128
  homepage: https://github.com/inferno-framework/ips-test-kit
@@ -143,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
146
  - !ruby/object:Gem::Version
144
147
  version: '0'
145
148
  requirements: []
146
- rubygems_version: 3.3.7
149
+ rubygems_version: 3.5.9
147
150
  signing_key:
148
151
  specification_version: 4
149
152
  summary: IPS Tests