From 898d1fddc628a12e5b7d55a725af15cbdca7a43e Mon Sep 17 00:00:00 2001 From: Lucas Tucker Date: Fri, 27 Mar 2026 18:41:43 -0400 Subject: [PATCH 1/3] Add Simulation Verification flags to tests --- Gemfile.lock | 174 ++++++++++-------- ...overage_to_link_minimal_data_validation.rb | 3 +- ...overage_to_link_must_support_validation.rb | 3 +- ...tch_request_local_references_validation.rb | 3 +- .../multiple_member_matches_group.rb | 3 +- .../no_member_matches_group.rb | 3 +- .../workflow_member_match_group.rb | 6 +- 7 files changed, 114 insertions(+), 81 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 5e8fc9b..60184e5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -19,16 +19,16 @@ GEM minitest (>= 5.1) tzinfo (~> 2.0) zeitwerk (~> 2.3) - addressable (2.8.7) - public_suffix (>= 2.0.2, < 7.0) + addressable (2.8.9) + public_suffix (>= 2.0.2, < 8.0) aes_key_wrap (1.1.0) base62-rb (0.3.1) base64 (0.3.0) bcp47 (0.3.3) i18n - bigdecimal (3.2.2) + bigdecimal (3.3.1) bindata (2.5.1) - bitarray (1.3.1) + bitarray (1.3.2) bloomer (1.0.0) bitarray msgpack @@ -43,12 +43,13 @@ GEM rubyzip (~> 2.3.2) smart_app_launch_test_kit (~> 1.0) tls_test_kit (~> 1.0) - byebug (12.0.0) + byebug (13.0.0) + reline (>= 0.6.0) coderay (1.1.3) colorize (0.8.1) concurrent-ruby (1.3.4) - connection_pool (2.5.3) - crack (1.0.0) + connection_pool (3.0.2) + crack (1.0.1) bigdecimal rexml csv (3.3.5) @@ -56,14 +57,15 @@ GEM database_cleaner-sequel (1.99.0) database_cleaner (~> 1.99.0) sequel - date (3.4.1) + date (3.5.1) date_time_precision (0.8.1) - debug (1.10.0) + debug (1.11.1) irb (~> 1.10) reline (>= 0.3.8) diff-lcs (1.6.2) domain_name (0.6.20240107) dotenv (2.8.1) + drb (2.2.3) dry-auto_inject (1.0.1) dry-core (~> 1.0) zeitwerk (~> 2.6) @@ -81,13 +83,15 @@ GEM dry-configurable (~> 1.0, < 2) dry-core (~> 1.0, < 2) dry-inflector (~> 1.0, < 2) - dry-transformer (1.0.1) + dry-transformer (1.1.0) + bigdecimal zeitwerk (~> 2.6) - factory_bot (6.5.1) + erb (6.0.2) + factory_bot (6.5.6) activesupport (>= 6.1.0) - faker (3.5.1) + faker (3.6.1) i18n (>= 1.8.11, < 2) - faraday (1.10.4) + faraday (1.10.5) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) @@ -103,23 +107,23 @@ GEM faraday-em_synchrony (1.0.1) faraday-excon (1.1.0) faraday-httpclient (1.0.1) - faraday-multipart (1.1.1) + faraday-multipart (1.2.0) multipart-post (~> 2.0) faraday-net_http (1.0.2) faraday-net_http_persistent (1.2.0) faraday-patron (1.0.0) faraday-rack (1.0.0) - faraday-retry (1.0.3) + faraday-retry (1.0.4) faraday_middleware (1.2.1) faraday (~> 1.0) - fhir_client (6.0.0) + fhir_client (6.1.0) activesupport (>= 3) addressable (>= 2.3) fhir_dstu2_models (>= 1.1.1) fhir_models (>= 5.0.0) fhir_stu3_models (>= 3.1.1) nokogiri (>= 1.10.4) - oauth2 (~> 1.1) + oauth2 (~> 2.0) rack (>= 1.5) rest-client (~> 2.0) tilt (>= 1.1) @@ -148,20 +152,23 @@ GEM mustermann (~> 1.0) mustermann-contrib (~> 1.0) rack (~> 2.0) - hanami-utils (2.2.0) + hanami-utils (2.3.0) + bigdecimal (~> 3.1) concurrent-ruby (~> 1.0) dry-core (~> 1.0, < 2) dry-transformer (~> 1.0, < 2) hansi (0.2.1) - hashdiff (1.1.2) + hashdiff (1.2.1) + hashie (5.1.0) + logger http-accept (1.7.0) - http-cookie (1.0.8) + http-cookie (1.1.0) domain_name (~> 0.5) httpclient (2.9.0) mutex_m - i18n (1.14.7) + i18n (1.14.8) concurrent-ruby (~> 1.0) - inferno_core (1.0.3) + inferno_core (1.1.1) activesupport (~> 6.1.7.5) base62-rb (= 0.3.1) blueprinter (= 0.25.2) @@ -192,11 +199,12 @@ GEM sequel (~> 5.42.0) sidekiq (~> 7.2.4) sqlite3 (~> 1.4) - thor (~> 1.2.1) + thor (~> 1.4) tty-markdown (~> 0.7.1) - io-console (0.8.0) - irb (1.15.2) + io-console (0.8.2) + irb (1.17.0) pp (>= 0.6.0) + prism (>= 1.3.0) rdoc (>= 4.0.0) reline (>= 0.4.2) json-jwt (1.15.3.1) @@ -206,20 +214,21 @@ GEM httpclient jwt (2.10.2) base64 - kramdown (2.5.1) - rexml (>= 3.3.9) + kramdown (2.5.2) + rexml (>= 3.4.4) kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) + logger (1.7.0) method_source (1.1.0) mime-types (3.4.1) mime-types-data (~> 3.2015) - mime-types-data (3.2025.0715) - mini_portile2 (2.8.9) - minitest (5.25.5) + mime-types-data (3.2026.0317) + minitest (6.0.2) + drb (~> 2.0) + prism (~> 1.5) msgpack (1.8.0) - multi_json (1.17.0) - multi_xml (0.7.2) - bigdecimal (~> 3.1) + multi_xml (0.8.1) + bigdecimal (>= 3.1, < 5) multipart-post (2.4.1) mustermann (1.1.2) ruby2_keywords (~> 0.0.1) @@ -229,78 +238,87 @@ GEM mutex_m (0.3.0) ndjson (1.0.0) netrc (0.11.0) - nio4r (2.7.4) - nokogiri (1.18.9) - mini_portile2 (~> 2.8.2) + nio4r (2.7.5) + nokogiri (1.19.2-aarch64-linux-gnu) + racc (~> 1.4) + nokogiri (1.19.2-aarch64-linux-musl) + racc (~> 1.4) + nokogiri (1.19.2-arm-linux-gnu) racc (~> 1.4) - nokogiri (1.18.9-aarch64-linux-gnu) + nokogiri (1.19.2-arm-linux-musl) racc (~> 1.4) - nokogiri (1.18.9-arm-linux-gnu) + nokogiri (1.19.2-arm64-darwin) racc (~> 1.4) - nokogiri (1.18.9-arm64-darwin) + nokogiri (1.19.2-x86_64-darwin) racc (~> 1.4) - nokogiri (1.18.9-x86_64-darwin) + nokogiri (1.19.2-x86_64-linux-gnu) racc (~> 1.4) - nokogiri (1.18.9-x86_64-linux-gnu) + nokogiri (1.19.2-x86_64-linux-musl) racc (~> 1.4) - oauth2 (1.4.11) - faraday (>= 0.17.3, < 3.0) - jwt (>= 1.0, < 3.0) - multi_json (~> 1.3) + oauth2 (2.0.18) + faraday (>= 0.17.3, < 4.0) + jwt (>= 1.0, < 4.0) + logger (~> 1.2) multi_xml (~> 0.5) rack (>= 1.2, < 4) + snaky_hash (~> 2.0, >= 2.0.3) + version_gem (~> 1.1, >= 1.1.9) oj (3.11.0) pastel (0.8.0) tty-color (~> 0.5) - pp (0.6.2) + pp (0.6.3) prettyprint prettyprint (0.2.0) - pry (0.15.2) + prism (1.9.0) + pry (0.16.0) coderay (~> 1.1) method_source (~> 1.0) - pry-byebug (3.11.0) - byebug (~> 12.0) - pry (>= 0.13, < 0.16) - psych (5.2.6) + reline (>= 0.6.0) + pry-byebug (3.12.0) + byebug (~> 13.0) + pry (>= 0.13, < 0.17) + psych (5.3.1) date stringio - public_suffix (6.0.2) + public_suffix (7.0.5) puma (5.6.9) nio4r (~> 2.0) racc (1.8.1) - rack (2.2.17) + rack (2.2.22) rack-test (2.2.0) rack (>= 1.3) - rake (13.3.0) - rdoc (6.13.1) + rake (13.3.1) + rdoc (7.2.0) + erb psych (>= 4.0.0) - redis-client (0.25.1) + tsort + redis-client (0.28.0) connection_pool - reline (0.6.1) + reline (0.6.3) io-console (~> 0.5) rest-client (2.1.0) http-accept (>= 1.7.0, < 2.0) http-cookie (>= 1.0.2, < 2.0) mime-types (>= 1.16, < 4.0) netrc (~> 0.8) - rexml (3.4.1) + rexml (3.4.4) roo (2.10.1) nokogiri (~> 1) rubyzip (>= 1.3.0, < 3.0.0) - rouge (4.6.0) - rspec (3.13.0) + rouge (4.7.0) + rspec (3.13.2) rspec-core (~> 3.13.0) rspec-expectations (~> 3.13.0) rspec-mocks (~> 3.13.0) - rspec-core (3.13.3) + rspec-core (3.13.6) rspec-support (~> 3.13.0) - rspec-expectations (3.13.4) + rspec-expectations (3.13.5) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-mocks (3.13.4) + rspec-mocks (3.13.8) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-support (3.13.3) + rspec-support (3.13.7) ruby2_keywords (0.0.5) rubyzip (2.3.2) sequel (5.42.0) @@ -314,22 +332,25 @@ GEM json-jwt (~> 1.15.3) jwt (~> 2.6) tls_test_kit (~> 1.0) + snaky_hash (2.0.3) + hashie (>= 0.1.0, < 6) + version_gem (>= 1.1.8, < 3) sqlite3 (1.7.3-aarch64-linux) sqlite3 (1.7.3-arm-linux) sqlite3 (1.7.3-arm64-darwin) - sqlite3 (1.7.3-x86-linux) sqlite3 (1.7.3-x86_64-darwin) sqlite3 (1.7.3-x86_64-linux) - stringio (3.1.7) + stringio (3.2.0) strings (0.2.1) strings-ansi (~> 0.2) unicode-display_width (>= 1.5, < 3.0) unicode_utils (~> 1.4) strings-ansi (0.2.0) - thor (1.2.2) - tilt (2.6.1) + thor (1.5.0) + tilt (2.7.0) tls_test_kit (1.0.0) inferno_core (~> 1.0, >= 1.0.2) + tsort (0.2.0) tty-color (0.6.0) tty-markdown (0.7.2) kramdown (>= 1.16.2, < 3.0) @@ -346,23 +367,28 @@ GEM jwt (~> 2.3) unicode-display_width (2.6.0) unicode_utils (1.4.0) - us_core_test_kit (1.0.0) + us_core_test_kit (1.1.1) inferno_core (~> 1.0, >= 1.0.2) smart_app_launch_test_kit (~> 1.0) tls_test_kit (~> 1.0) - webmock (3.25.1) + version_gem (1.1.9) + webmock (3.26.2) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - zeitwerk (2.7.3) + zeitwerk (2.7.5) PLATFORMS aarch64-linux + aarch64-linux-gnu + aarch64-linux-musl arm-linux + arm-linux-gnu + arm-linux-musl arm64-darwin - x86-linux x86_64-darwin - x86_64-linux + x86_64-linux-gnu + x86_64-linux-musl DEPENDENCIES database_cleaner-sequel (~> 1.8) @@ -376,4 +402,4 @@ DEPENDENCIES webmock (~> 3.11) BUNDLED WITH - 2.5.17 + 2.5.22 diff --git a/lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_minimal_data_validation.rb b/lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_minimal_data_validation.rb index d28dd36..211eb98 100644 --- a/lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_minimal_data_validation.rb +++ b/lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_minimal_data_validation.rb @@ -29,7 +29,7 @@ module PDexPayerServer class CoverageToLinkMinimalDataValidation < Inferno::Test id :pdex_coverage_to_link_minimal_validation - title '[USER INPUT VALIDATION] CoverageToLink parameter should not include any data elements not marked as mustSupport' + title 'CoverageToLink parameter should not include any data elements not marked as mustSupport' optional description %{ This test will skip if there is no CoverageToLink parameter in the member match request input for one match. @@ -43,6 +43,7 @@ class CoverageToLinkMinimalDataValidation < Inferno::Test See [notes](https://hl7.org/fhir/us/davinci-hrex/STU1/OperationDefinition-member-match.html#notes) in HRex Implementation Guide, as required by PDex Implementation Guide. } + simulation_verification input :member_match_request diff --git a/lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_must_support_validation.rb b/lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_must_support_validation.rb index 45c26e8..dee019d 100644 --- a/lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_must_support_validation.rb +++ b/lib/davinci_pdex_test_kit/pdex_payer_server/coverage_to_link_must_support_validation.rb @@ -30,9 +30,10 @@ module PDexPayerServer class CoverageToLinkMustSupportValidation < Inferno::Test id :pdex_coverage_to_link_ms_validation - title '[USER INPUT VALIDATION] CoverageToLink parameter is optional for generic FHIR clients, but required for Payer systems.' + title 'CoverageToLink parameter is optional for generic FHIR clients, but required for Payer systems.' description 'See [CoverageToLink parameter documentation](https://hl7.org/fhir/us/davinci-hrex/STU1/OperationDefinition-member-match.html).' optional + simulation_verification input :member_match_request diff --git a/lib/davinci_pdex_test_kit/pdex_payer_server/member_match_request_local_references_validation.rb b/lib/davinci_pdex_test_kit/pdex_payer_server/member_match_request_local_references_validation.rb index e416d8f..a1960bf 100644 --- a/lib/davinci_pdex_test_kit/pdex_payer_server/member_match_request_local_references_validation.rb +++ b/lib/davinci_pdex_test_kit/pdex_payer_server/member_match_request_local_references_validation.rb @@ -29,7 +29,7 @@ module PDexPayerServer class MemberMatchRequestLocalReferencesValidation < Inferno::Test id :pdex_member_match_local_ref_validation - title '[USER INPUT VALIDATION] Member match request only uses local references' + title 'Member match request only uses local references' description %{ This test confirms that all Patient references inside the Consent and CoverageToMatch parameters are local references to the MemberPatient @@ -37,6 +37,7 @@ class MemberMatchRequestLocalReferencesValidation < Inferno::Test [resolving parameter references](https://hl7.org/fhir/us/davinci-hrex/STU1/OperationDefinition-member-match.html#resolving-parameter-references) from the HRex 1.0.0. Implementation Guide. } + simulation_verification input :member_match_request diff --git a/lib/davinci_pdex_test_kit/pdex_payer_server/multiple_member_matches_group.rb b/lib/davinci_pdex_test_kit/pdex_payer_server/multiple_member_matches_group.rb index 5b8dc59..1434b09 100644 --- a/lib/davinci_pdex_test_kit/pdex_payer_server/multiple_member_matches_group.rb +++ b/lib/davinci_pdex_test_kit/pdex_payer_server/multiple_member_matches_group.rb @@ -22,13 +22,14 @@ class MultipleMemberMatchesGroup < Inferno::TestGroup test from: :pdex_member_match_profile_validation do id :pdex_multiple_match_profile_validation config(group_config) - title '[USER INPUT VALIDATION] Member match request for multiple matches is valid' + title 'Member match request for multiple matches is valid' description %{ This test validates the conformity of the user input to the [HRex Member Match Request Profile](https://hl7.org/fhir/us/davinci-hrex/STU1/StructureDefinition-hrex-parameters-member-match-in.html), ensuring subsequent tests can accurately simulate content. It also checks conformance to the [Parameters Resource](https://hl7.org/fhir/R4/parameters.html), mandatory elements, and terminology. It also checks that the Patient reference with the Consent and CoverageToMatch parameters are local references. } + simulation_verification # Inherits end diff --git a/lib/davinci_pdex_test_kit/pdex_payer_server/no_member_matches_group.rb b/lib/davinci_pdex_test_kit/pdex_payer_server/no_member_matches_group.rb index f4faf76..a3768ec 100644 --- a/lib/davinci_pdex_test_kit/pdex_payer_server/no_member_matches_group.rb +++ b/lib/davinci_pdex_test_kit/pdex_payer_server/no_member_matches_group.rb @@ -23,13 +23,14 @@ class NoMemberMatchesGroup < Inferno::TestGroup id :pdex_no_match_profile_validation config(group_config) - title '[USER INPUT VALIDATION] Member match request for no matches is valid' + title 'Member match request for no matches is valid' description %{ Regardless of having no intended matches, this test validates the conformity of the user input to the [HRex Member Match Request Profile](https://hl7.org/fhir/us/davinci-hrex/STU1/StructureDefinition-hrex-parameters-member-match-in.html), ensuring subsequent tests can accurately simulate content. It also checks conformance to the [Parameters Resource](https://hl7.org/fhir/R4/parameters.html), mandatory elements, and terminology. It also checks that the Patient reference with the Consent and CoverageToMatch parameters are local references. } + simulation_verification end test from: :pdex_member_match_local_ref_validation, config: group_config diff --git a/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_member_match_group.rb b/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_member_match_group.rb index e87abb8..ce55dbd 100644 --- a/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_member_match_group.rb +++ b/lib/davinci_pdex_test_kit/pdex_payer_server/workflow_member_match_group.rb @@ -61,18 +61,20 @@ class WorkflowMemberMatchGroup < Inferno::TestGroup test from: :pdex_member_match_profile_validation do id :pdex_one_match_profile_validation - title '[USER INPUT VALIDATION] Member match request for exactly one match is valid' + title 'Member match request for exactly one match is valid' description %{ This test validates the conformity of the user input to the [HRex Member Match Request Profile](https://hl7.org/fhir/us/davinci-hrex/STU1/StructureDefinition-hrex-parameters-member-match-in.html), ensuring subsequent tests can accurately simulate content. It also checks conformance to the [Parameters Resource](https://hl7.org/fhir/R4/parameters.html), mandatory elements, and terminology. } + simulation_verification end test from: :pdex_member_match_local_ref_validation do id :pdex_member_match_local_ref - title '[USER INPUT VALIDATION] Member match request only uses local references' + title 'Member match request only uses local references' + simulation_verification end test from: :pdex_coverage_to_link_minimal_validation From e5176f614c71789db52d8aafcc1903728c0e8406 Mon Sep 17 00:00:00 2001 From: Lucas Tucker Date: Mon, 30 Mar 2026 16:58:12 -0400 Subject: [PATCH 2/3] Updated gemfile to use new inferno_core gem --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 60184e5..4b834e7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -168,7 +168,7 @@ GEM mutex_m i18n (1.14.8) concurrent-ruby (~> 1.0) - inferno_core (1.1.1) + inferno_core (1.1.2) activesupport (~> 6.1.7.5) base62-rb (= 0.3.1) blueprinter (= 0.25.2) From eae3a93997e3a187536cfa543f7f0bd6cf5b0866 Mon Sep 17 00:00:00 2001 From: Lucas Tucker Date: Tue, 31 Mar 2026 17:03:03 -0400 Subject: [PATCH 3/3] Ensure newest inferno_core gem --- Gemfile.lock | 2 +- davinci_pdex_test_kit.gemspec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 4b834e7..a30158c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -5,7 +5,7 @@ PATH bulk_data_test_kit (~> 0.13.0) faraday (~> 1.10.4) faraday_middleware (~> 1.2.1) - inferno_core (~> 1.0, >= 1.0.2) + inferno_core (~> 1.0, >= 1.1.2) smart_app_launch_test_kit (~> 1.0) udap_security_test_kit (~> 0.12.0) us_core_test_kit (~> 1.0) diff --git a/davinci_pdex_test_kit.gemspec b/davinci_pdex_test_kit.gemspec index e1bb3bc..921ffbb 100644 --- a/davinci_pdex_test_kit.gemspec +++ b/davinci_pdex_test_kit.gemspec @@ -9,7 +9,7 @@ Gem::Specification.new do |spec| spec.description = 'Test Kit for the Da Vinci Payer Data Exchange (PDex) FHIR Implementation Guide' spec.homepage = 'https://github.com/inferno-framework/davinci-pdex-test-kit/' spec.license = 'Apache-2.0' - spec.add_runtime_dependency 'inferno_core', '~> 1.0', '>= 1.0.2' + spec.add_runtime_dependency 'inferno_core', '~> 1.0', '>= 1.1.2' spec.add_runtime_dependency 'us_core_test_kit', '~> 1.0' spec.add_runtime_dependency 'bulk_data_test_kit', '~> 0.13.0' spec.add_runtime_dependency 'faraday', '~> 1.10.4'