diff --git a/Gemfile.lock b/Gemfile.lock index c212251..0d6e27d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - davinci_pas_test_kit (0.9.0) + davinci_pas_test_kit (0.9.1) inferno_core (~> 0.4.34) GEM @@ -183,11 +183,11 @@ GEM kramdown (2.4.0) rexml language_server-protocol (3.17.0.3) - method_source (1.0.0) + method_source (1.1.0) mime-types (3.5.2) mime-types-data (~> 3.2015) mime-types-data (3.2024.0305) - mini_portile2 (2.8.5) + mini_portile2 (2.8.6) minitest (5.22.3) multi_json (1.15.0) multi_xml (0.6.0) diff --git a/README.md b/README.md index 0150865..12e20a1 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ feedback on the tests. Future versions of these tests may validate other requirements and may change how these are tested. Additional details on the IG requirements that underlie this test kit, including those -that are not currently tested, can be found in [this spreadsheet](docs/PAS%20Requirements%20Interpretation.xlsx). The spreadsheet includes +that are not currently tested, can be found in [this spreadsheet](lib/davinci_pas_test_kit/docs/PAS%20Requirements%20Interpretation.xlsx). The spreadsheet includes - a list of requirements extracted from the IG. - the requirements tested by this DRAFT test kit. @@ -38,11 +38,12 @@ that are not currently tested, can be found in [this spreadsheet](docs/PAS%20Req ## Test Scope and Limitations Neither the server nor client test suite included test the full scope of the PAS IG. -Documentation within the tests include details on what is currently tested -and what is out of scope and why. Start a session with either test kit or see the description in these files -([server](lib/davinci_pas_test_kit/generated/v2.0.1/server_suite.rb), -[client](lib/davinci_pas_test_kit/client_suite.rb)) for details beyond what -is included here. +Documentation of what is currently tested and what is out of scope and why can be +found in the suite descriptions when the tests are run, or within this repository +for the [server](lib/davinci_pas_test_kit/docs/server_suite_description_v201.md#testing-limitations) +and [client](lib/davinci_pas_test_kit/docs/client_suite_description_v201.md#testing-limitations). + +### In-Scope Requirements At a high-level, in-scope requirements include: @@ -53,18 +54,20 @@ At a high-level, in-scope requirements include: - The ability of the system to produce and receive (currently server tests only) all PAS-defined profiles and their must support elements. -Out of scope details that are not yet tested include: +### Out-of-Scope Requirements + +Out of scope requirements from the IG that are not yet tested include: -- Subscriptions -- Prior Authorization update workflows -- Requests for additional information handled through the CDex framework -- PDF, CDA, and JPG attachments -- US Core profile support for supporting information -- (Server) Inquiry matching and subsetting logic -- (Server) Inquiry requests from non-submitting systems -- (Server) Collection of metrics -- (Client) The ability to handle responses containing all PAS-defined profiles and must support elements -- (Client) Most details requiring manual review of the client system, e.g., the requirement that clinicians can update details of the prior authorization request before submitting them +- Subscriptions (see details [here](https://hl7.org/fhir/us/davinci-pas/STU2/specification.html#subscription)) +- Prior Authorization update workflows (see details [here](https://hl7.org/fhir/us/davinci-pas/STU2/specification.html#updating-authorization-requests)) +- Requests for additional information handled through the CDex framework (see details [here](https://hl7.org/fhir/us/davinci-pas/STU2/additionalinfo.html)) +- PDF, CDA, and JPG attachments (see details in the 3rd paragraph [here](https://hl7.org/fhir/us/davinci-pas/STU2/specification.html#prior-authorization-submission)) +- US Core profile support for supporting information (see details [here](https://hl7.org/fhir/us/davinci-pas/STU2/specification.html#integration-with-other-implementation-guides)) +- (Server) Inquiry matching and subsetting logic (see details in the 2nd paragraph and 2 bullet [here](https://hl7.org/fhir/us/davinci-pas/STU2/specification.html#prior-authorization-inquiries)) +- (Server) Inquiry requests from non-submitting systems (see details in the 3rd paragraph [here](https://hl7.org/fhir/us/davinci-pas/STU2/specification.html#pended-authorization-responses)) +- (Server) Collection and dissemination of metrics (see details [here](https://hl7.org/fhir/us/davinci-pas/STU2/metrics.html)) +- (Client) The ability to handle responses containing all PAS-defined profiles and must support elements (see details under the 3rd bullet [here](https://hl7.org/fhir/us/davinci-pas/STU2/background.html#must-support)) +- (Client) Most details requiring manual review of the client system, e.g., the requirement that clinicians can update details of the prior authorization request before submitting them (see details in the 1st paragraph [here](https://hl7.org/fhir/us/davinci-pas/STU2/usecases.html#submit-prior-authorization)) ### Limitations @@ -93,13 +96,14 @@ the test home pages include instructions for trying out the tests, including ([code on github](https://github.com/HL7-DaVinci/prior-auth)) - For client testing: a [sample postman collection](config/PAS%20Test%20Kit%20Client%20Test%20Demo.postman_collection.json) -Start a session with either test kit or see the description in these files -([server](lib/davinci_pas_test_kit/generated/v2.0.1/server_suite.rb), -[client](lib/davinci_pas_test_kit/client_suite.rb)) for detailed instructions. +Detailed instructions can be found in the suite descriptions when the tests +are run, or within this repository for the +[server](lib/davinci_pas_test_kit/docs/server_suite_description_v201.md#running-the-tests) and +[client](lib/davinci_pas_test_kit/docs/client_suite_description_v201.md#running-the-tests). ### ONC Hosted Instance -You can run these tests via the [ONC Inferno](https://inferno.healthit.gov/test-kits/) website by choosing the “Da Vinci Prior Authorization Support (PAS) v2.0.1” test kit. +You can run the PAS test kit via the [ONC Inferno](https://inferno.healthit.gov/test-kits/davinci-pas/) website by choosing the “Da Vinci Prior Authorization Support (PAS) v2.0.1” test kit. ### Local Inferno Instance @@ -113,7 +117,7 @@ You can run these tests via the [ONC Inferno](https://inferno.healthit.gov/test- We welcome feedback on the tests, including but not limited to the following areas: - Validation logic, such as potential bugs, lax checks, and unexpected failures. -- Requirements coverage, such as requirements that have been missed, tests that necessitate features that the IG does not require, or other issues with the [interpretation](docs/Plan%20Net%20Requirements%20Interpretation.xlsx) of the IG's requirements. +- Requirements coverage, such as requirements that have been missed, tests that necessitate features that the IG does not require, or other issues with the [interpretation](lib/davinci_pas_test_kit/docs/PAS%20Requirements%20Interpretation.xlsx) of the IG's requirements. - User experience, such as confusing or missing information in the test UI. Please report any issues with this set of tests in the issues section of this repository. diff --git a/davinci_pas_test_kit.gemspec b/davinci_pas_test_kit.gemspec index c1ecae5..3f6b154 100644 --- a/davinci_pas_test_kit.gemspec +++ b/davinci_pas_test_kit.gemspec @@ -22,6 +22,7 @@ Gem::Specification.new do |spec| Dir['lib/**/*.rb'], Dir['lib/**/*.json'], Dir['lib/**/*.yml'], + Dir['lib/**/*.md'], 'LICENSE' ].flatten diff --git a/lib/davinci_pas_test_kit/client_suite.rb b/lib/davinci_pas_test_kit/client_suite.rb index f042155..f83f632 100644 --- a/lib/davinci_pas_test_kit/client_suite.rb +++ b/lib/davinci_pas_test_kit/client_suite.rb @@ -20,175 +20,7 @@ class ClientSuite < Inferno::TestSuite id :davinci_pas_client_suite_v201 title 'Da Vinci PAS Client Suite v2.0.1' version VERSION - description %( - The Da Vinci PAS Test Kit Client Suite validates the conformance of client - systems to the STU 2 version of the HL7® FHIR® - [Da Vinci Prior Authorization Support Implementation Guide](https://hl7.org/fhir/us/davinci-pas/STU2/). - - ## Scope - - These tests are a **DRAFT** intended to allow PAS client implementers to perform - preliminary checks of their clients against PAS IG requirements and [provide - feedback](https://github.com/inferno-framework/davinci-pas-test-kit/issues) - on the tests. Future versions of these tests may validate other - requirements and may change the test validation logic. - - ## Test Methodology - - Inferno will simulate a PAS server for the client under test to interact with. The client - will be expected to initiate requests to the server and demonstrate its ability to react - to the returned responses. Over the course of these interactions, - Inferno will seek to observe conformant handling of PAS requirements, including - - The ability of the client to initiate and react to - - The approval of a prior authorization request - - The denial of a prior authorization request - - The pending of a prior authorization request and a subsequent final decision - - The ability of the client to provide data covering the full scope of required by PAS, including - - The ability to send prior auth requests and inquiries with all PAS profiles and all must support elements on - those profiles - - The ability to handle responses that contain all PAS profiles and all must support elements on those - profiles (not included in the current version of these tests) - - Because X12 details, including coded values indicating details like “denied” and “pended”, - are not public, Inferno is not currently able to generate a full set of responses to requests - or otherwise provide details on specific codes used to represent those concepts - and is limited to responses that look similar to the examples in the IG (e.g., [here](https://hl7.org/fhir/us/davinci-pas/STU2/Bundle-ReferralAuthorizationResponseBundleExample.html)). - Thus, - - - In order to demonstrate specific workflows, namely pend and denial, users will need to provide the expected - response for Inferno to send back - - The current tests do not return to the client all PAS profiles and must support elements to confirm support. - - For further details on limitations of these tests, see the *Testing Limitations* section below. - - All requests and responses will be checked for conformance to the PAS - IG requirements individually and used in aggregate to determine whether - required features and functionality are present. HL7® FHIR® resources are - validated with the Java validator using `tx.fhir.org` as the terminology server. - - ## Running the Tests - - ### Quick Start - - For Inferno to simulate a server that always returns approved responses, it needs - only to know the bearer token that the client will send on requests, for which there are two options. - - 1. If you want to choose your own bearer token, then - 1. Select the "2. PAS Client Validation" test from the list on the left. - 2. Click the '*Run All Tests*' button on the right. - 3. In the "access_token" field, enter the bearer token that will be sent by the client under test (as part - of the Authorization header - Bearer: ). - 4. Click the '*Submit*' button at the bottom of the dialog. - 2. If you want to use a client_id to obtain an access token, then - 1. Click the '*Run All Tests*' button on the right. - 2. Provide the client's registered id "client_id" field of the input (NOTE, Inferno doesn't support the - registration API, so this must be obtained from another system or configured manually). - 3. Click the '*Submit*' button at the bottom of the dialog. - 4. Make a token request that includes the specified client id to the - `/custom/davinci_pas_client_suite_v201/mock_auth/token` endpoint to get - an access token to use on the request of the requests. - - In either case, the tests will continue from that point, requesting the user to - direct the client to make certain requests to demonstrate PAS client capabilities. - - Note: authentication options for these tests have not been finalized and are subject to change. - - ### Complete Setup - - The *Quick Start* approach does not test pended or deny workflows. To test these, provide a - json-encoded FHIR bundle in the "Claim pended response JSON" and "Claim deny response JSON" input field after - clicking the '*Run All Tests*' button. These responses will be echoed back when a request - is made during the corresponding test. - - ### Postman-based Demo - - If you do not have a PAS client but would like to try the tests out, you can use - [this postman collection](https://raw.githubusercontent.com/inferno-framework/davinci-pas-test-kit/blob/main/config/PAS%20Test%20Kit%20Client%20Test%20Demo.postman_collection.json) - to make requests against Inferno. The following requests and example responses from that collection can be used. - - - Configuration - - *Deny Response* example under the *Homecare Prior Authorization Request*: use as the value of the - "Claim denied response JSON" input field. NOTE: this contains a placeholder code `DENIEDCODE` for the - X12 code representing the denied status. Replace with the X12-specified code before providing to Inferno - to accurately replicate a denial workflow for the client under test. - - *Pend Response* example under the *Medical Services Prior Authorization Request*: use as the value of the - "Claim pended response JSON" input field. NOTE: this contains a placeholder code `PENDEDCODE` for the - X12 code representing the pended status. Replace with the X12-specified code before providing to Inferno - to accurately replicate a pend workflow for the client under test. - - Submissions - - *mock token*: for submitting a client id to get back an access token to use on the rest of the tests. Set the - collection's access_token variable to the result. - - *Referral Prior Authorization Request*: use for the "Approval" workflow test submission. - - *Medical Services Prior Authorization Request*: use for the "Pended" workflow test submission. - - *Medical Services Inquiry Request*: use for the "Pended" workflow test inquiry. - - No additional requests are present to submit as a part of the must support tests, so - testers can simply click the link to indicate they are done submitting requests. Note - that the requests within the Postman client are not expected to fully pass the tests as they - do not contain all must support items. - - ## Testing Limitations - - ### Private X12 details - - HIPAA [requires](https://hl7.org/fhir/us/davinci-pas/STU2/regulations.html) electronic prior authorization - processing to use the X12 278 standard. While recent CMS rule-making suggests that [this requirement - will not be enforced in the future](https://www.cms.gov/newsroom/fact-sheets/cms-interoperability-and-prior-authorization-final-rule-cms-0057-f), - the current PAS IG relies heavily on X12. As the IG authors note at the - top of the [IG home page](https://hl7.org/fhir/us/davinci-pas/STU2/index.html): - - > Note that this implementation guide is intended to support mapping between FHIR and X12 transactions. To respect - > X12 intellectual property, all mapping and X12-specific terminology information will be solely published by X12 - > and made available in accordance with X12 rules - which may require membership and/or payment. Please see this - > [Da Vinci External Reference page](https://confluence.hl7.org/display/DVP/Da+Vinci+Reference+to+External+Standards+and+Terminologies) - > for details on how to get this mapping. - > - > There are many situationally required fields that are specified in the X12 TRN03 guide that do not have guidance - > in this Implementation Guide. Implementers need to consult the X12 PAS guides to know the requirements for these - > fields. - > - > Several of the profiles will require use of terminologies that are part of X12 which we anticipate being made - > publicly available. At such time as this occurs, the implementation guide will be updated to bind to these as - > external terminologies. - - The implications of this reliance on proprietary information that is not publicly available means that this test - kit: - - - Cannot verify the correct usage of X12-based terminology: terminology requirements for all elements bound to X12 - value sets will not be validated. - - Cannot verify the meaning of codes: validation that a given response conveys something specific, e.g., approval - or pending, is not performed. - - Cannot verify matching semantics on inquiries: no checking of the identity of the ClaimResponse returned for an - inquiry, e.g., that it matches the input or the original request. - - These limitations may be removed in future versions of these tests. In the meantime, testers should consider these - requirements to be verified through attestation and should not represent their systems to have passed these tests - if these requirements are not met. - - ### Underspecified Subscription Details - - The current PAS specification around subscriptions and notifications - is not detailed enough to support testing. Notably, - - There are no examples of what a notification payload looks like - - There is no instruction on how to turn the notification payload into an inquiry - - Once these details have been clarified, validation of the notification workflows - will be added to these tests. - - ### Future Details - - The PAS IG places additional requirements on clients that are not currently tested by this test kit, including - - - Prior Authorization update workflows - - Requests for additional information handled through the CDex framework - - PDF, CDA, and JPG attachments - - US Core profile support for supporting information - - The ability to handle responses containing all PAS-defined profiles and must support elements - - Most details requiring manual review of the client system, e.g., the requirement that clinicians can update - details of the prior authorization request before submitting them - - These and any other requirements found in the PAS IG may be tested in future versions of these tests. - ) + description File.read(File.join(__dir__, 'docs', 'client_suite_description_v201.md')) links [ { diff --git a/lib/davinci_pas_test_kit/custom_groups/v2.0.1/claim_status/pas_claim_status_test.rb b/lib/davinci_pas_test_kit/custom_groups/v2.0.1/claim_response_decision/pas_claim_response_decision_test.rb similarity index 72% rename from lib/davinci_pas_test_kit/custom_groups/v2.0.1/claim_status/pas_claim_status_test.rb rename to lib/davinci_pas_test_kit/custom_groups/v2.0.1/claim_response_decision/pas_claim_response_decision_test.rb index 879cbdb..1edbb02 100644 --- a/lib/davinci_pas_test_kit/custom_groups/v2.0.1/claim_status/pas_claim_status_test.rb +++ b/lib/davinci_pas_test_kit/custom_groups/v2.0.1/claim_response_decision/pas_claim_response_decision_test.rb @@ -3,17 +3,20 @@ module DaVinciPASTestKit module DaVinciPASV201 - class PasClaimStatusTest < Inferno::Test + class PasClaimResponseDecisionTest < Inferno::Test # include URLs // used for attestation experiment - see below - id :prior_auth_claim_status - title 'Server returns the expected authorization response' + id :prior_auth_claim_response_decision_validation + title 'Server response includes the expected decision code in the ClaimResponse instance' description %( - This test aims to confirm that the status of the prior authorization matches - the anticipated status for the workflow under examination. - (NOT YET IMPLEMENTED) + This test aims to confirm that the decision in the returned ClaimResponse matches + the decision code required for the workflow under examination. + This test is not yet implemented due to limitations in the IG (see details + [here](https://github.com/inferno-framework/davinci-pas-test-kit/tree/lib/davinci_pas_test_kit/docs/server_suite_description_v201.md#testing-limitations)). + It is currently optional and will always be skipped, but will be implemented in the future. ) uses_request :pa_submit + optional # optional and skipped until implemented def status if use_case == 'approval' @@ -24,6 +27,7 @@ def status end run do + skip # Experiment with extraction of statuses and use in an attestation # Not used due to the following problems: # - no real clients to test with @@ -82,27 +86,6 @@ def status # ) # # end of experiment with attestation code - - # TODO: Implement subscription for pended: Inferno will subscribe to the server to receive notification - # when the submitted claim status will be updated. - if use_case == 'pended' - # rubocop:disable Layout/LineLength - wait( - identifier: use_case, - message: %( - Inferno has received a 'Pended' claim response as expected. - - Please - **[click - here](#{Inferno::Application['base_url']}/custom/davinci_pas_server_suite_v201/resume_after_notification?use_case=#{use_case})** - when the status of this claim has been finalized to inform Inferno to resume testing. - - Future versions of this test may implement automated monitoring - capabilities described in the implementation guide. - ) - ) - # rubocop:enable Layout/LineLength - end end end end diff --git a/lib/davinci_pas_test_kit/custom_groups/v2.0.1/must_support/pas_client_must_support_requirement_test.rb b/lib/davinci_pas_test_kit/custom_groups/v2.0.1/must_support/pas_client_must_support_requirement_test.rb index 1dc6741..a2fd5df 100644 --- a/lib/davinci_pas_test_kit/custom_groups/v2.0.1/must_support/pas_client_must_support_requirement_test.rb +++ b/lib/davinci_pas_test_kit/custom_groups/v2.0.1/must_support/pas_client_must_support_requirement_test.rb @@ -110,7 +110,7 @@ def grouped_resources @@resource_type = @resource_type = type # rubocop:disable Style/ClassVars perform_must_support_test(resources) end - validate_must_support + validate_must_support(false) end end end diff --git a/lib/davinci_pas_test_kit/custom_groups/v2.0.1/must_support/pas_server_must_support_requirement_test.rb b/lib/davinci_pas_test_kit/custom_groups/v2.0.1/must_support/pas_server_must_support_requirement_test.rb index b924bf0..a19748a 100644 --- a/lib/davinci_pas_test_kit/custom_groups/v2.0.1/must_support/pas_server_must_support_requirement_test.rb +++ b/lib/davinci_pas_test_kit/custom_groups/v2.0.1/must_support/pas_server_must_support_requirement_test.rb @@ -14,6 +14,9 @@ class PasServerMustSupportRequirementTest < Inferno::Test PAS Device Request, or PAS Nutrition Order) is observed with all of its must support elements ) description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. + Errors encountered will be treated as a skip instead of a failure. + The PAS IG includes four profiles for providing the specifics of the service or product requested in the prior authorization request. Any one of these profiles can be referenced in the must support element `Claim.item.extension:requestedService`: @@ -109,7 +112,7 @@ def grouped_resources @@resource_type = @resource_type = type # rubocop:disable Style/ClassVars perform_must_support_test(resources) end - validate_must_support + validate_must_support(true) end end end diff --git a/lib/davinci_pas_test_kit/custom_groups/v2.0.1/notification/pas_subscription_notification_test.rb b/lib/davinci_pas_test_kit/custom_groups/v2.0.1/notification/pas_subscription_notification_test.rb new file mode 100644 index 0000000..ba75a55 --- /dev/null +++ b/lib/davinci_pas_test_kit/custom_groups/v2.0.1/notification/pas_subscription_notification_test.rb @@ -0,0 +1,40 @@ +module DaVinciPASTestKit + module DaVinciPASV201 + class PasUpdateNotificationTest < Inferno::Test + id :prior_auth_claim_response_update_notification_validation + title 'Server notifies the client that the pended claim was updated.' + description %( + This test validates that the server can notify the client that a final + decision has been made about a pended claim so that the client can query + for the details. Currently, testers attest that the decision on the prior + authorization request has been finalized so that Inferno can check the rest of + the pended workflow. In the future, Inferno will validate that the server + can accept requests for a subscription and send notifications alerting the client + to the availability of updates to the prior authorization request (see details on this limitation + [here](https://github.com/inferno-framework/davinci-pas-test-kit/tree/lib/davinci_pas_test_kit/docs/server_suite_description_v201.md#testing-limitations)). + ) + + run do + # rubocop:disable Layout/LineLength + wait( + identifier: 'pended', + message: %( + Inferno has received a 'Pended' claim response indicating that a final decision + has not yet been made on the prior authorization request. + + Please + **[click + here](#{Inferno::Application['base_url']}/custom/davinci_pas_server_suite_v201/resume_after_notification?use_case=pended)** + when the status of this claim has been finalized to inform Inferno to resume testing. + + Future versions of this test will validate subscription-based notifications as + described within the implementation guide (see + [here](https://github.com/inferno-framework/davinci-pas-test-kit/tree/lib/davinci_pas_test_kit/docs/server_suite_description_v201.md#testing-limitations) + for more details on this current limitation). + ) + ) + # rubocop:enable Layout/LineLength + end + end + end +end diff --git a/docs/PAS Requirements Interpretation.xlsx b/lib/davinci_pas_test_kit/docs/PAS Requirements Interpretation.xlsx similarity index 100% rename from docs/PAS Requirements Interpretation.xlsx rename to lib/davinci_pas_test_kit/docs/PAS Requirements Interpretation.xlsx diff --git a/lib/davinci_pas_test_kit/docs/client_suite_description_v201.md b/lib/davinci_pas_test_kit/docs/client_suite_description_v201.md new file mode 100644 index 0000000..803c102 --- /dev/null +++ b/lib/davinci_pas_test_kit/docs/client_suite_description_v201.md @@ -0,0 +1,167 @@ +The Da Vinci PAS Test Kit Client Suite validates the conformance of client +systems to the STU 2 version of the HL7® FHIR® +[Da Vinci Prior Authorization Support Implementation Guide](https://hl7.org/fhir/us/davinci-pas/STU2/). + +## Scope + +These tests are a **DRAFT** intended to allow PAS client implementers to perform +preliminary checks of their clients against PAS IG requirements and [provide +feedback](https://github.com/inferno-framework/davinci-pas-test-kit/issues) +on the tests. Future versions of these tests may validate other +requirements and may change the test validation logic. + +## Test Methodology + +Inferno will simulate a PAS server for the client under test to interact with. The client +will be expected to initiate requests to the server and demonstrate its ability to react +to the returned responses. Over the course of these interactions, +Inferno will seek to observe conformant handling of PAS requirements, including +- The ability of the client to initiate and react to + - The approval of a prior authorization request + - The denial of a prior authorization request + - The pending of a prior authorization request and a subsequent final decision +- The ability of the client to provide data covering the full scope of required by PAS, including + - The ability to send prior auth requests and inquiries with all PAS profiles and all must support elements on + those profiles + - The ability to handle responses that contain all PAS profiles and all must support elements on those + profiles (not included in the current version of these tests) + +Because X12 details, including coded values indicating details like “denied” and “pended”, +are not public, Inferno is not currently able to generate a full set of responses to requests +or otherwise provide details on specific codes used to represent those concepts +and is limited to responses that look similar to the examples in the IG (e.g., [here](https://hl7.org/fhir/us/davinci-pas/STU2/Bundle-ReferralAuthorizationResponseBundleExample.html)). +Thus, + +- In order to demonstrate specific workflows, namely pend and denial, users will need to provide the expected +response for Inferno to send back +- The current tests do not return to the client all PAS profiles and must support elements to confirm support. + +For further details on limitations of these tests, see the *Testing Limitations* section below. + +All requests and responses will be checked for conformance to the PAS +IG requirements individually and used in aggregate to determine whether +required features and functionality are present. HL7® FHIR® resources are +validated with the Java validator using `tx.fhir.org` as the terminology server. + +## Running the Tests + +### Quick Start + +For Inferno to simulate a server that always returns approved responses, it needs +only to know the bearer token that the client will send on requests, for which there are two options. + +1. If you want to choose your own bearer token, then + 1. Select the "2. PAS Client Validation" test from the list on the left. + 2. Click the '*Run All Tests*' button on the right. + 3. In the "access_token" field, enter the bearer token that will be sent by the client under test (as part + of the Authorization header - Bearer: ). + 4. Click the '*Submit*' button at the bottom of the dialog. +2. If you want to use a client_id to obtain an access token, then + 1. Click the '*Run All Tests*' button on the right. + 2. Provide the client's registered id "client_id" field of the input (NOTE, Inferno doesn't support the + registration API, so this must be obtained from another system or configured manually). + 3. Click the '*Submit*' button at the bottom of the dialog. + 4. Make a token request that includes the specified client id to the + `/custom/davinci_pas_client_suite_v201/mock_auth/token` endpoint to get + an access token to use on the request of the requests. + +In either case, the tests will continue from that point, requesting the user to +direct the client to make certain requests to demonstrate PAS client capabilities. + +Note: authentication options for these tests have not been finalized and are subject to change. + +### Complete Setup + +The *Quick Start* approach does not test pended or deny workflows. To test these, provide a +json-encoded FHIR bundle in the "Claim pended response JSON" and "Claim deny response JSON" input field after +clicking the '*Run All Tests*' button. These responses will be echoed back when a request +is made during the corresponding test. + +### Postman-based Demo + +If you do not have a PAS client but would like to try the tests out, you can use +[this postman collection](https://github.com/inferno-framework/davinci-pas-test-kit/blob/main/config/PAS%20Test%20Kit%20Client%20Test%20Demo.postman_collection.json) +to make requests against Inferno. The following requests and example responses from that collection can be used. + +- Configuration +- *Deny Response* example under the *Homecare Prior Authorization Request*: use as the value of the + "Claim denied response JSON" input field. NOTE: this contains a placeholder code `DENIEDCODE` for the + X12 code representing the denied status. Replace with the X12-specified code before providing to Inferno + to accurately replicate a denial workflow for the client under test. +- *Pend Response* example under the *Medical Services Prior Authorization Request*: use as the value of the + "Claim pended response JSON" input field. NOTE: this contains a placeholder code `PENDEDCODE` for the + X12 code representing the pended status. Replace with the X12-specified code before providing to Inferno + to accurately replicate a pend workflow for the client under test. +- Submissions +- *mock token*: for submitting a client id to get back an access token to use on the rest of the tests. Set the + collection's access_token variable to the result. +- *Referral Prior Authorization Request*: use for the "Approval" workflow test submission. +- *Medical Services Prior Authorization Request*: use for the "Pended" workflow test submission. +- *Medical Services Inquiry Request*: use for the "Pended" workflow test inquiry. + +No additional requests are present to submit as a part of the must support tests, so +testers can simply click the link to indicate they are done submitting requests. Note +that the requests within the Postman client are not expected to fully pass the tests as they +do not contain all must support items. + +## Testing Limitations + +### Private X12 details + +HIPAA [requires](https://hl7.org/fhir/us/davinci-pas/STU2/regulations.html) electronic prior authorization +processing to use the X12 278 standard. While recent CMS rule-making suggests that [this requirement +will not be enforced in the future](https://www.cms.gov/newsroom/fact-sheets/cms-interoperability-and-prior-authorization-final-rule-cms-0057-f), +the current PAS IG relies heavily on X12. As the IG authors note at the +top of the [IG home page](https://hl7.org/fhir/us/davinci-pas/STU2/index.html): + +> Note that this implementation guide is intended to support mapping between FHIR and X12 transactions. To respect +> X12 intellectual property, all mapping and X12-specific terminology information will be solely published by X12 +> and made available in accordance with X12 rules - which may require membership and/or payment. Please see this +> [Da Vinci External Reference page](https://confluence.hl7.org/display/DVP/Da+Vinci+Reference+to+External+Standards+and+Terminologies) +> for details on how to get this mapping. +> +> There are many situationally required fields that are specified in the X12 TRN03 guide that do not have guidance +> in this Implementation Guide. Implementers need to consult the X12 PAS guides to know the requirements for these +> fields. +> +> Several of the profiles will require use of terminologies that are part of X12 which we anticipate being made +> publicly available. At such time as this occurs, the implementation guide will be updated to bind to these as +> external terminologies. + +The implications of this reliance on proprietary information that is not publicly available means that this test +kit: + +- Cannot verify the correct usage of X12-based terminology: terminology requirements for all elements bound to X12 +value sets will not be validated. +- Cannot verify the meaning of codes: validation that a given response conveys something specific, e.g., approval +or pending, is not performed. +- Cannot verify matching semantics on inquiries: no checking of the identity of the ClaimResponse returned for an +inquiry, e.g., that it matches the input or the original request. + +These limitations may be removed in future versions of these tests. In the meantime, testers should consider these +requirements to be verified through attestation and should not represent their systems to have passed these tests +if these requirements are not met. + +### Underspecified Subscription Details + +The current PAS specification around subscriptions and notifications +is not detailed enough to support testing. Notably, +- There are no examples of what a notification payload looks like +- There is no instruction on how to turn the notification payload into an inquiry + +Once these details have been clarified, validation of the notification workflows +will be added to these tests. + +### Future Details + +The PAS IG places additional requirements on clients that are not currently tested by this test kit, including + +- Prior Authorization update workflows +- Requests for additional information handled through the CDex framework +- PDF, CDA, and JPG attachments +- US Core profile support for supporting information +- The ability to handle responses containing all PAS-defined profiles and must support elements +- Most details requiring manual review of the client system, e.g., the requirement that clinicians can update +details of the prior authorization request before submitting them + +These and any other requirements found in the PAS IG may be tested in future versions of these tests. \ No newline at end of file diff --git a/lib/davinci_pas_test_kit/docs/server_suite_description_v201.md b/lib/davinci_pas_test_kit/docs/server_suite_description_v201.md new file mode 100644 index 0000000..66fe6bf --- /dev/null +++ b/lib/davinci_pas_test_kit/docs/server_suite_description_v201.md @@ -0,0 +1,150 @@ +The Da Vinci PAS Server Suite validates the conformance of server systems +to the STU 2 version of the HL7® FHIR® +[Da Vinci Prior Authorization Support Implementation Guide](https://hl7.org/fhir/us/davinci-pas/STU2/). + +## Scope + +These tests are a **DRAFT** intended to allow PAS server implementers to perform +preliminary checks of their servers against PAS IG requirements and [provide +feedback](https://github.com/inferno-framework/davinci-pas-test-kit/issues) +on the tests. Future versions of these tests may validate other +requirements and may change the test validation logic. + +## Test Methodology + +Inferno will simulate a client and make a series of prior authorization requests to the +server under test. Over the course of these requests, Inferno will seek to observe +conformant handling of PAS requirements, including +- The ability of the server to use PAS API interactions to communicate + - Approval of a prior authorization request + - Denial of a prior authorization request + - Pending of a prior authorization request and a subsequent final decision + - Inability to process a prior authorization request +- The ability of the server to handle the full scope of data required by PAS, including + - Ability to process prior auth requests and inquiries with all PAS profiles and all must support elements on those profiles + - Ability to return responses that demonstrate the use of all PAS profiles and all must support elements on those profiles + +Because the business logic that determines decisions and the elements populated in responses +Is outside of the PAS specification and will vary between implementers, testers +are required to provide the requests that Inferno will make to the server. + +All requests and responses will be checked for conformance to the PAS +IG requirements individually and used in aggregate to determine whether +required features and functionality are present. HL7® FHIR® resources are +validated with the Java validator using `tx.fhir.org` as the terminology server. + +These tests do not currently test the full scope of the IG. See the *Testing Limitations* section below +for more details about the current scope of the tests and the reasons that some details have been left out. + +## Running the Tests + +### Quick Start + +Execution of these tests require a significant amount of tester input in the +form of requests that Inferno will make against the server under test. + +If you would like to try out the tests using examples from the IG against the +[public reference server endpoint](https://prior-auth.davinci.hl7.org/fhir) ([code on github](https://github.com/HL7-DaVinci/prior-auth)), you can do so by +1. Selecting the *Prior Authorization Support Reference Implementation* option from the Preset dropdown in the upper left +2. Clicking the *Run All Tests* button in the upper right +3. Clicking the *Submit* button at the bottom of the input dialog + +You can run these tests using your own server by updating the "FHIR Server Endpoint URL" and "OAuth Credentials" inputs. + +Note that: +- the inputs for these tests are not complete and systems are not expected to pass the tests based on them. +- the public reference server has not been updated to reflect the STU2 version that these tests target, + so expect some additional failures when testing against it. + +## Test Configuration Details + +The details provided here supplement the documentation of individual fields in the input dialog +that appears when initiating a test run. + +### Server identification + +Requests will be made to the `/Claim/$submit` and `/Claim/$inquire` endpoints under the url provided in the "FHIR Server Endpoint URL" field. + +### Authentication + +The PAS IG states that + +> "PAS Servers **SHOULD** support server-server OAuth… In a future release of this guide, direction will limit the option to [require] server-server OAuth." + +The PAS test kit currently assumes that the handshake has already occurred and requires +that a bearer token be provided in the “OAuth Credentials / Access Token” configuration +field. Inferno will submit this token on all requests it makes to the server as a part of +executing the tests. A complete backend server authentication handshake may be supported +in future versions of the test kit. + +### Payload + +All other inputs are for providing bundles for Inferno to submit as a part of the tests. To avoid placing +requirements on the business logic, Inferno does not have standard requests to send as a part of the tests +and instead relies on the tester to provide the requests that Inferno will make. + +For single-request fields (e.g., “PAS Submit Request Payload for Approval Response”), the input must be a json-encoded FHIR bundle. + +For multiple-request fields (e.g., “Additional PAS Submit Request Payloads”), the input must be a json array of json-encoded FHIR bundles (e.g., [fhir-bundle-1, fhir-bundle-2, …] where each fhir-bundle-n is a full bundle). + +## Testing Limitations + +### Private X12 details + +HIPAA [requires](https://hl7.org/fhir/us/davinci-pas/STU2/regulations.html) electronic prior authorization +processing to use the X12 278 standard. While recent CMS rule-making suggests that [this requirement +will not be enforced in the future](https://www.cms.gov/newsroom/fact-sheets/cms-interoperability-and-prior-authorization-final-rule-cms-0057-f), +the current PAS IG relies heavily on X12. As the IG authors note at the +top of the [IG home page](https://hl7.org/fhir/us/davinci-pas/STU2/): + +> Note that this implementation guide is intended to support mapping between FHIR and X12 transactions. To respect +> X12 intellectual property, all mapping and X12-specific terminology information will be solely published by X12 +> and made available in accordance with X12 rules - which may require membership and/or payment. Please see this +> [Da Vinci External Reference page](https://confluence.hl7.org/display/DVP/Da+Vinci+Reference+to+External+Standards+and+Terminologies) +> for details on how to get this mapping. +> +> There are many situationally required fields that are specified in the X12 TRN03 guide that do not have guidance +> in this Implementation Guide. Implementers need to consult the X12 PAS guides to know the requirements for these +> fields. +> +> Several of the profiles will require use of terminologies that are part of X12 which we anticipate being made +> publicly available. At such time as this occurs, the implementation guide will be updated to bind to these as +> external terminologies. + +The implications of this reliance on proprietary information that is not publicly available means that this test +kit: + +- Cannot verify the correct usage of X12-based terminology: terminology requirements for all elements bound to X12 + value sets will not be validated. +- Cannot verify the meaning of codes: validation that a given response conveys something specific, e.g., approval + or pending, is not performed. +- Cannot verify matching semantics on inquiries: no checking of the identity of the ClaimResponse returned for an + inquiry, e.g., that it matches the input or the original request. + +These limitations may be removed in future versions of these tests. In the meantime, testers should consider these +requirements to be verified through attestation and should not represent their systems to have passed these tests +if these requirements are not met. + +### Underspecified Subscription Details + +The current PAS specification around subscriptions and notifications +is not detailed enough to support testing. Notably, +- There are no examples of what a notification payload looks like +- There is no instruction on how to turn the notification payload into an inquiry + +Once these details have been clarified, validation of the notification workflows +will be added to these tests. + +### Future Details + +The PAS IG places additional requirements on servers that are not currently tested by this test kit, including + +- Prior Authorization update workflows +- Requests for additional information handled through the CDex framework +- PDF, CDA, and JPG attachments +- US Core profile support for supporting information +- Inquiry matching and subsetting logic +- Inquiry requests from non-submitting systems +- Collection of metrics + +These and any other requirements found in the PAS IG may be tested in future versions of these tests. \ No newline at end of file diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/client_inquiry_request_beneficiary_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/client_inquiry_request_beneficiary_must_support_test.rb index bea3254..edfbb1d 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/client_inquiry_request_beneficiary_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/client_inquiry_request_beneficiary_must_support_test.rb @@ -53,6 +53,10 @@ def resource_type 'Patient' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -68,7 +72,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/client_submit_request_beneficiary_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/client_submit_request_beneficiary_must_support_test.rb index 7ae9bff..a9d090c 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/client_submit_request_beneficiary_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/client_submit_request_beneficiary_must_support_test.rb @@ -53,6 +53,10 @@ def resource_type 'Patient' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -68,7 +72,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_inquiry_request_beneficiary_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_inquiry_request_beneficiary_must_support_test.rb index 9f4b585..553c309 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_inquiry_request_beneficiary_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_inquiry_request_beneficiary_must_support_test.rb @@ -10,6 +10,8 @@ class ServerInquiryRequestBeneficiaryMustSupportTest < Inferno::Test title 'All must support elements for Profile PAS Beneficiary Patient are observed across all instances submitted' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. Errors encountered will be treated as a skip instead of a failure. + PAS server systems are required to be able to receive all must support elements on instances of all profiles included in requests, including instances of the PAS Beneficiary Patient Profile. @@ -53,6 +55,10 @@ def resource_type 'Patient' end + def user_input_validation + true + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -68,7 +74,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_inquiry_response_beneficiary_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_inquiry_response_beneficiary_must_support_test.rb index 655412d..304c644 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_inquiry_response_beneficiary_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_inquiry_response_beneficiary_must_support_test.rb @@ -53,6 +53,10 @@ def resource_type 'Patient' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -68,7 +72,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_submit_request_beneficiary_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_submit_request_beneficiary_must_support_test.rb index c210a72..bf8ed72 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_submit_request_beneficiary_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_submit_request_beneficiary_must_support_test.rb @@ -10,6 +10,8 @@ class ServerSubmitRequestBeneficiaryMustSupportTest < Inferno::Test title 'All must support elements for Profile PAS Beneficiary Patient are observed across all instances submitted' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. Errors encountered will be treated as a skip instead of a failure. + PAS server systems are required to be able to receive all must support elements on instances of all profiles included in requests, including instances of the PAS Beneficiary Patient Profile. @@ -53,6 +55,10 @@ def resource_type 'Patient' end + def user_input_validation + true + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -68,7 +74,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_submit_response_beneficiary_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_submit_response_beneficiary_must_support_test.rb index 9a85b80..bad04fa 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_submit_response_beneficiary_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_submit_response_beneficiary_must_support_test.rb @@ -53,6 +53,10 @@ def resource_type 'Patient' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -68,7 +72,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/claim/claim_operation_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/claim/claim_operation_test.rb index 1c0bf42..396680e 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/claim/claim_operation_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/claim/claim_operation_test.rb @@ -3,7 +3,7 @@ module DaVinciPASV201 class ClaimOperationTest < Inferno::Test id :pas_v201_claim_operation_test - title 'Claim/$submit Operation Test' + title 'Submission of a claim to the $submit operation succeeds' description %( Server SHALL support PAS Submit requests: a POST interaction to the /Claim/$submit endpoint. diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/claim_inquiry_operation_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/claim_inquiry_operation_test.rb index 7abf68c..89fb810 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/claim_inquiry_operation_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/claim_inquiry_operation_test.rb @@ -3,7 +3,7 @@ module DaVinciPASV201 class ClaimInquiryOperationTest < Inferno::Test id :pas_v201_claim_inquiry_operation_test - title 'Claim/$inquire Operation Test' + title 'Submission of a claim to the $inquire operation succeeds' description %( Server SHALL support PAS Inquiry requests: a POST interaction to the /Claim/$inquire endpoint. diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/client_inquiry_request_claim_inquiry_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/client_inquiry_request_claim_inquiry_must_support_test.rb index 1bbb16f..1d13930 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/client_inquiry_request_claim_inquiry_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/client_inquiry_request_claim_inquiry_must_support_test.rb @@ -73,6 +73,10 @@ def resource_type 'Claim' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -88,7 +92,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/server_inquiry_request_claim_inquiry_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/server_inquiry_request_claim_inquiry_must_support_test.rb index 762dd52..9c5cf56 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/server_inquiry_request_claim_inquiry_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/server_inquiry_request_claim_inquiry_must_support_test.rb @@ -10,6 +10,8 @@ class ServerInquiryRequestClaimInquiryMustSupportTest < Inferno::Test title 'All must support elements for Profile PAS Claim Inquiry are observed across all instances submitted' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. Errors encountered will be treated as a skip instead of a failure. + PAS server systems are required to be able to receive all must support elements on instances of all profiles included in requests, including instances of the PAS Claim Inquiry Profile. @@ -73,6 +75,10 @@ def resource_type 'Claim' end + def user_input_validation + true + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -88,7 +94,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/claim_update/client_submit_request_claim_update_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/claim_update/client_submit_request_claim_update_must_support_test.rb index cabea34..9e9139a 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/claim_update/client_submit_request_claim_update_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/claim_update/client_submit_request_claim_update_must_support_test.rb @@ -80,6 +80,10 @@ def resource_type 'Claim' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -95,7 +99,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/claim_update/server_submit_request_claim_update_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/claim_update/server_submit_request_claim_update_must_support_test.rb index 845bac6..8632538 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/claim_update/server_submit_request_claim_update_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/claim_update/server_submit_request_claim_update_must_support_test.rb @@ -10,6 +10,8 @@ class ServerSubmitRequestClaimUpdateMustSupportTest < Inferno::Test title 'All must support elements for Profile PAS Claim Update are observed across all instances submitted' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. Errors encountered will be treated as a skip instead of a failure. + PAS server systems are required to be able to receive all must support elements on instances of all profiles included in requests, including instances of the PAS Claim Update Profile. @@ -80,6 +82,10 @@ def resource_type 'Claim' end + def user_input_validation + true + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -95,7 +101,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/claiminquiryresponse/server_inquiry_response_claiminquiryresponse_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/claiminquiryresponse/server_inquiry_response_claiminquiryresponse_must_support_test.rb index 2adbc2e..3ed5cbd 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/claiminquiryresponse/server_inquiry_response_claiminquiryresponse_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/claiminquiryresponse/server_inquiry_response_claiminquiryresponse_must_support_test.rb @@ -51,6 +51,10 @@ def resource_type 'ClaimResponse' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -66,7 +70,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/claimresponse/server_submit_response_claimresponse_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/claimresponse/server_submit_response_claimresponse_must_support_test.rb index 3f13318..f5391af 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/claimresponse/server_submit_response_claimresponse_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/claimresponse/server_submit_response_claimresponse_must_support_test.rb @@ -53,6 +53,10 @@ def resource_type 'ClaimResponse' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -68,7 +72,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/client_tests/client_denial_pas_response_bundle_validation_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/client_tests/client_denial_pas_response_bundle_validation_test.rb index 2f55957..e4a9518 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/client_tests/client_denial_pas_response_bundle_validation_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/client_tests/client_denial_pas_response_bundle_validation_test.rb @@ -10,6 +10,9 @@ class ClientDenialPasResponseBundleValidationTest < Inferno::Test id :pas_client_v201_denial_pas_response_bundle_validation_test title '[USER INPUT VALIDATION] Response Bundle is valid' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. + Errors encountered will be treated as a skip instead of a failure. + This test validates the conformity of the user input to the [PAS Response Bundle](http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-response-bundle) structure. diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/client_tests/client_pended_pas_response_bundle_validation_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/client_tests/client_pended_pas_response_bundle_validation_test.rb index 21d8f29..a84d038 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/client_tests/client_pended_pas_response_bundle_validation_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/client_tests/client_pended_pas_response_bundle_validation_test.rb @@ -10,6 +10,9 @@ class ClientPendedPasResponseBundleValidationTest < Inferno::Test id :pas_client_v201_pended_pas_response_bundle_validation_test title '[USER INPUT VALIDATION] Response Bundle is valid' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. + Errors encountered will be treated as a skip instead of a failure. + This test validates the conformity of the user input to the [PAS Response Bundle](http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-response-bundle) structure. diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/communication_request/server_submit_response_communication_request_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/communication_request/server_submit_response_communication_request_must_support_test.rb index 45d59ba..7274030 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/communication_request/server_submit_response_communication_request_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/communication_request/server_submit_response_communication_request_must_support_test.rb @@ -36,6 +36,10 @@ def resource_type 'CommunicationRequest' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -51,7 +55,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/client_inquiry_request_coverage_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/client_inquiry_request_coverage_must_support_test.rb index d4d870d..495a128 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/client_inquiry_request_coverage_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/client_inquiry_request_coverage_must_support_test.rb @@ -33,6 +33,10 @@ def resource_type 'Coverage' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -48,7 +52,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/client_submit_request_coverage_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/client_submit_request_coverage_must_support_test.rb index a5af1c6..88b046f 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/client_submit_request_coverage_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/client_submit_request_coverage_must_support_test.rb @@ -33,6 +33,10 @@ def resource_type 'Coverage' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -48,7 +52,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/server_inquiry_request_coverage_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/server_inquiry_request_coverage_must_support_test.rb index 15459cb..ca2b16e 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/server_inquiry_request_coverage_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/server_inquiry_request_coverage_must_support_test.rb @@ -10,6 +10,8 @@ class ServerInquiryRequestCoverageMustSupportTest < Inferno::Test title 'All must support elements for Profile PAS Coverage are observed across all instances submitted' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. Errors encountered will be treated as a skip instead of a failure. + PAS server systems are required to be able to receive all must support elements on instances of all profiles included in requests, including instances of the PAS Coverage Profile. @@ -33,6 +35,10 @@ def resource_type 'Coverage' end + def user_input_validation + true + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -48,7 +54,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/server_submit_request_coverage_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/server_submit_request_coverage_must_support_test.rb index 7a16747..e34625c 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/server_submit_request_coverage_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/server_submit_request_coverage_must_support_test.rb @@ -10,6 +10,8 @@ class ServerSubmitRequestCoverageMustSupportTest < Inferno::Test title 'All must support elements for Profile PAS Coverage are observed across all instances submitted' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. Errors encountered will be treated as a skip instead of a failure. + PAS server systems are required to be able to receive all must support elements on instances of all profiles included in requests, including instances of the PAS Coverage Profile. @@ -33,6 +35,10 @@ def resource_type 'Coverage' end + def user_input_validation + true + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -48,7 +54,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/device_request/client_submit_request_device_request_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/device_request/client_submit_request_device_request_must_support_test.rb index 151deb8..433a387 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/device_request/client_submit_request_device_request_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/device_request/client_submit_request_device_request_must_support_test.rb @@ -29,6 +29,10 @@ def resource_type 'DeviceRequest' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -44,7 +48,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/device_request/server_submit_request_device_request_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/device_request/server_submit_request_device_request_must_support_test.rb index f02d3cc..a7e989a 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/device_request/server_submit_request_device_request_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/device_request/server_submit_request_device_request_must_support_test.rb @@ -10,6 +10,8 @@ class ServerSubmitRequestDeviceRequestMustSupportTest < Inferno::Test title 'All must support elements for Profile PAS Device Request are observed across all instances submitted' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. Errors encountered will be treated as a skip instead of a failure. + PAS server systems are required to be able to receive all must support elements on instances of all profiles included in requests, including instances of the PAS Device Request Profile. @@ -29,6 +31,10 @@ def resource_type 'DeviceRequest' end + def user_input_validation + true + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -44,7 +50,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/encounter/client_submit_request_encounter_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/encounter/client_submit_request_encounter_must_support_test.rb index d373101..c57e345 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/encounter/client_submit_request_encounter_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/encounter/client_submit_request_encounter_must_support_test.rb @@ -45,6 +45,10 @@ def resource_type 'Encounter' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -60,7 +64,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/encounter/server_submit_request_encounter_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/encounter/server_submit_request_encounter_must_support_test.rb index 9ff8069..4f8f0c4 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/encounter/server_submit_request_encounter_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/encounter/server_submit_request_encounter_must_support_test.rb @@ -10,6 +10,8 @@ class ServerSubmitRequestEncounterMustSupportTest < Inferno::Test title 'All must support elements for Profile PAS Encounter are observed across all instances submitted' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. Errors encountered will be treated as a skip instead of a failure. + PAS server systems are required to be able to receive all must support elements on instances of all profiles included in requests, including instances of the PAS Encounter Profile. @@ -45,6 +47,10 @@ def resource_type 'Encounter' end + def user_input_validation + true + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -60,7 +66,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/client_inquiry_request_insurer_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/client_inquiry_request_insurer_must_support_test.rb index 7bd9705..1396e74 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/client_inquiry_request_insurer_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/client_inquiry_request_insurer_must_support_test.rb @@ -38,6 +38,10 @@ def resource_type 'Organization' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -53,7 +57,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/client_submit_request_insurer_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/client_submit_request_insurer_must_support_test.rb index caaf3d5..d7be681 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/client_submit_request_insurer_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/client_submit_request_insurer_must_support_test.rb @@ -38,6 +38,10 @@ def resource_type 'Organization' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -53,7 +57,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_inquiry_request_insurer_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_inquiry_request_insurer_must_support_test.rb index 71b1759..f1cee0e 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_inquiry_request_insurer_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_inquiry_request_insurer_must_support_test.rb @@ -10,6 +10,8 @@ class ServerInquiryRequestInsurerMustSupportTest < Inferno::Test title 'All must support elements for Profile PAS Insurer Organization are observed across all instances submitted' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. Errors encountered will be treated as a skip instead of a failure. + PAS server systems are required to be able to receive all must support elements on instances of all profiles included in requests, including instances of the PAS Insurer Organization Profile. @@ -38,6 +40,10 @@ def resource_type 'Organization' end + def user_input_validation + true + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -53,7 +59,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_inquiry_response_insurer_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_inquiry_response_insurer_must_support_test.rb index 06c90d4..d802795 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_inquiry_response_insurer_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_inquiry_response_insurer_must_support_test.rb @@ -38,6 +38,10 @@ def resource_type 'Organization' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -53,7 +57,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_submit_request_insurer_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_submit_request_insurer_must_support_test.rb index 0a1d077..6895e86 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_submit_request_insurer_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_submit_request_insurer_must_support_test.rb @@ -10,6 +10,8 @@ class ServerSubmitRequestInsurerMustSupportTest < Inferno::Test title 'All must support elements for Profile PAS Insurer Organization are observed across all instances submitted' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. Errors encountered will be treated as a skip instead of a failure. + PAS server systems are required to be able to receive all must support elements on instances of all profiles included in requests, including instances of the PAS Insurer Organization Profile. @@ -38,6 +40,10 @@ def resource_type 'Organization' end + def user_input_validation + true + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -53,7 +59,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_submit_response_insurer_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_submit_response_insurer_must_support_test.rb index 77089a2..bf336f1 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_submit_response_insurer_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_submit_response_insurer_must_support_test.rb @@ -38,6 +38,10 @@ def resource_type 'Organization' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -53,7 +57,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/medication_request/client_submit_request_medication_request_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/medication_request/client_submit_request_medication_request_must_support_test.rb index 9c3568b..d877e28 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/medication_request/client_submit_request_medication_request_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/medication_request/client_submit_request_medication_request_must_support_test.rb @@ -39,6 +39,10 @@ def resource_type 'MedicationRequest' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -54,7 +58,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/medication_request/server_submit_request_medication_request_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/medication_request/server_submit_request_medication_request_must_support_test.rb index d73992c..fc0984b 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/medication_request/server_submit_request_medication_request_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/medication_request/server_submit_request_medication_request_must_support_test.rb @@ -10,6 +10,8 @@ class ServerSubmitRequestMedicationRequestMustSupportTest < Inferno::Test title 'All must support elements for Profile PAS Medication Request are observed across all instances submitted' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. Errors encountered will be treated as a skip instead of a failure. + PAS server systems are required to be able to receive all must support elements on instances of all profiles included in requests, including instances of the PAS Medication Request Profile. @@ -39,6 +41,10 @@ def resource_type 'MedicationRequest' end + def user_input_validation + true + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -54,7 +60,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/nutrition_order/client_submit_request_nutrition_order_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/nutrition_order/client_submit_request_nutrition_order_must_support_test.rb index 12626d7..4ca867d 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/nutrition_order/client_submit_request_nutrition_order_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/nutrition_order/client_submit_request_nutrition_order_must_support_test.rb @@ -31,6 +31,10 @@ def resource_type 'NutritionOrder' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -46,7 +50,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/nutrition_order/server_submit_request_nutrition_order_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/nutrition_order/server_submit_request_nutrition_order_must_support_test.rb index 3fe2589..b353f12 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/nutrition_order/server_submit_request_nutrition_order_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/nutrition_order/server_submit_request_nutrition_order_must_support_test.rb @@ -10,6 +10,8 @@ class ServerSubmitRequestNutritionOrderMustSupportTest < Inferno::Test title 'All must support elements for Profile PAS Nutrition Order are observed across all instances submitted' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. Errors encountered will be treated as a skip instead of a failure. + PAS server systems are required to be able to receive all must support elements on instances of all profiles included in requests, including instances of the PAS Nutrition Order Profile. @@ -31,6 +33,10 @@ def resource_type 'NutritionOrder' end + def user_input_validation + true + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -46,7 +52,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/client_inquiry_request_pas_inquiry_request_bundle_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/client_inquiry_request_pas_inquiry_request_bundle_must_support_test.rb index 490c5e4..331f95f 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/client_inquiry_request_pas_inquiry_request_bundle_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/client_inquiry_request_pas_inquiry_request_bundle_must_support_test.rb @@ -31,6 +31,10 @@ def resource_type 'Bundle' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -46,7 +50,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/server_inquiry_request_pas_inquiry_request_bundle_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/server_inquiry_request_pas_inquiry_request_bundle_must_support_test.rb index eb833a8..7dc2ebe 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/server_inquiry_request_pas_inquiry_request_bundle_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/server_inquiry_request_pas_inquiry_request_bundle_must_support_test.rb @@ -10,6 +10,8 @@ class ServerInquiryRequestPasInquiryRequestBundleMustSupportTest < Inferno::Test title 'All must support elements for Profile PAS Inquiry Request Bundle are observed across all instances submitted' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. Errors encountered will be treated as a skip instead of a failure. + PAS server systems are required to be able to receive all must support elements on instances of all profiles included in requests, including instances of the PAS Inquiry Request Bundle Profile. @@ -31,6 +33,10 @@ def resource_type 'Bundle' end + def user_input_validation + true + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -46,7 +52,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/server_pas_inquiry_request_bundle_validation_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/server_pas_inquiry_request_bundle_validation_test.rb index 44d8099..5ca8b89 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/server_pas_inquiry_request_bundle_validation_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/server_pas_inquiry_request_bundle_validation_test.rb @@ -8,9 +8,13 @@ class ServerPasInquiryRequestBundleValidationTest < Inferno::Test id :pas_server_v201_pas_inquiry_request_bundle_validation_test title '[USER INPUT VALIDATION] Inquiry Request Bundle is valid' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. + Errors encountered will be treated as a skip instead of a failure. + This test validates the conformity of the user input to the [PAS Inquiry Request Bundle](http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-inquiry-request-bundle) structure, ensuring subsequent tests can accurately simulate content. + It also checks that other conformance requirements defined in the [PAS Formal Specification](https://hl7.org/fhir/us/davinci-pas/STU2/specification.html), such as the presence of all referenced instances within the bundle and the diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_response_bundle/server_inquiry_response_pas_inquiry_response_bundle_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_response_bundle/server_inquiry_response_pas_inquiry_response_bundle_must_support_test.rb index 18d1402..2a7dc2f 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_response_bundle/server_inquiry_response_pas_inquiry_response_bundle_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_response_bundle/server_inquiry_response_pas_inquiry_response_bundle_must_support_test.rb @@ -30,6 +30,10 @@ def resource_type 'Bundle' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -45,7 +49,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_response_bundle/server_pas_inquiry_response_bundle_validation_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_response_bundle/server_pas_inquiry_response_bundle_validation_test.rb index 832a0ba..6c66416 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_response_bundle/server_pas_inquiry_response_bundle_validation_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_response_bundle/server_pas_inquiry_response_bundle_validation_test.rb @@ -11,6 +11,7 @@ class ServerPasInquiryResponseBundleValidationTest < Inferno::Test This test validates the conformity of the server's response to the [PAS Inquiry Response Bundle](http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-inquiry-response-bundle) structure. + It also checks that other conformance requirements defined in the [PAS Formal Specification](https://hl7.org/fhir/us/davinci-pas/STU2/specification.html), such as the presence of all referenced instances within the bundle and the diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/client_submit_request_pas_request_bundle_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/client_submit_request_pas_request_bundle_must_support_test.rb index b97d5eb..469fd69 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/client_submit_request_pas_request_bundle_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/client_submit_request_pas_request_bundle_must_support_test.rb @@ -31,6 +31,10 @@ def resource_type 'Bundle' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -46,7 +50,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/server_pas_request_bundle_validation_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/server_pas_request_bundle_validation_test.rb index 0c94397..5133fc3 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/server_pas_request_bundle_validation_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/server_pas_request_bundle_validation_test.rb @@ -8,9 +8,13 @@ class ServerPasRequestBundleValidationTest < Inferno::Test id :pas_server_v201_pas_request_bundle_validation_test title '[USER INPUT VALIDATION] Request Bundle is valid' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. + Errors encountered will be treated as a skip instead of a failure. + This test validates the conformity of the user input to the [PAS Request Bundle](http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-request-bundle) structure, ensuring subsequent tests can accurately simulate content. + It also checks that other conformance requirements defined in the [PAS Formal Specification](https://hl7.org/fhir/us/davinci-pas/STU2/specification.html), such as the presence of all referenced instances within the bundle and the diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/server_submit_request_pas_request_bundle_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/server_submit_request_pas_request_bundle_must_support_test.rb index dd0edc0..ab0d92b 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/server_submit_request_pas_request_bundle_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/server_submit_request_pas_request_bundle_must_support_test.rb @@ -10,6 +10,8 @@ class ServerSubmitRequestPasRequestBundleMustSupportTest < Inferno::Test title 'All must support elements for Profile PAS Request Bundle are observed across all instances submitted' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. Errors encountered will be treated as a skip instead of a failure. + PAS server systems are required to be able to receive all must support elements on instances of all profiles included in requests, including instances of the PAS Request Bundle Profile. @@ -31,6 +33,10 @@ def resource_type 'Bundle' end + def user_input_validation + true + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -46,7 +52,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_response_bundle/server_pas_response_bundle_validation_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_response_bundle/server_pas_response_bundle_validation_test.rb index 591b7a8..59bab9b 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_response_bundle/server_pas_response_bundle_validation_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_response_bundle/server_pas_response_bundle_validation_test.rb @@ -11,6 +11,7 @@ class ServerPasResponseBundleValidationTest < Inferno::Test This test validates the conformity of the server's response to the [PAS Response Bundle](http://hl7.org/fhir/us/davinci-pas/StructureDefinition/profile-pas-response-bundle) structure. + It also checks that other conformance requirements defined in the [PAS Formal Specification](https://hl7.org/fhir/us/davinci-pas/STU2/specification.html), such as the presence of all referenced instances within the bundle and the diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_response_bundle/server_submit_response_pas_response_bundle_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_response_bundle/server_submit_response_pas_response_bundle_must_support_test.rb index 05f7adf..1a30219 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_response_bundle/server_submit_response_pas_response_bundle_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_response_bundle/server_submit_response_pas_response_bundle_must_support_test.rb @@ -30,6 +30,10 @@ def resource_type 'Bundle' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -45,7 +49,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_approval_use_case_group.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_approval_use_case_group.rb index 48837c9..277a274 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_approval_use_case_group.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_approval_use_case_group.rb @@ -1,7 +1,7 @@ require_relative 'pas_request_bundle/server_pas_request_bundle_validation_test' require_relative 'claim/claim_operation_test' require_relative 'pas_response_bundle/server_pas_response_bundle_validation_test' -require_relative '../../custom_groups/v2.0.1/claim_status/pas_claim_status_test' +require_relative '../../custom_groups/v2.0.1/claim_response_decision/pas_claim_response_decision_test' module DaVinciPASTestKit module DaVinciPASV201 @@ -22,7 +22,7 @@ def use_case group do - title 'PAS Submit Operation' + title 'Server can respond to claims submitted for prior authorization' test from: :pas_server_v201_pas_request_bundle_validation_test do id :pas_server_v201_pas_request_bundle_validation_test_approval @@ -47,11 +47,7 @@ def use_case ) end test from: :pas_server_v201_pas_response_bundle_validation_test - end - group do - title 'PAS Status Check' - - test from: :prior_auth_claim_status + test from: :prior_auth_claim_response_decision_validation end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_denial_use_case_group.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_denial_use_case_group.rb index eb7f058..f029ed6 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_denial_use_case_group.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_denial_use_case_group.rb @@ -1,7 +1,7 @@ require_relative 'pas_request_bundle/server_pas_request_bundle_validation_test' require_relative 'claim/claim_operation_test' require_relative 'pas_response_bundle/server_pas_response_bundle_validation_test' -require_relative '../../custom_groups/v2.0.1/claim_status/pas_claim_status_test' +require_relative '../../custom_groups/v2.0.1/claim_response_decision/pas_claim_response_decision_test' module DaVinciPASTestKit module DaVinciPASV201 @@ -22,7 +22,7 @@ def use_case group do - title 'PAS Submit Operation' + title 'Server can respond to claims submitted for prior authorization' test from: :pas_server_v201_pas_request_bundle_validation_test do id :pas_server_v201_pas_request_bundle_validation_test_denial @@ -47,11 +47,7 @@ def use_case ) end test from: :pas_server_v201_pas_response_bundle_validation_test - end - group do - title 'PAS Status Check' - - test from: :prior_auth_claim_status + test from: :prior_auth_claim_response_decision_validation end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_must_support_use_case_group.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_must_support_use_case_group.rb index cd86683..9ea22c3 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_must_support_use_case_group.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_must_support_use_case_group.rb @@ -113,7 +113,7 @@ def use_case run_as_group group do - title 'PAS Submit Operation' + title 'Submission of claims to the $submit operation for must support validation' test from: :pas_server_v201_pas_request_bundle_validation_test do id :pas_server_v201_pas_request_bundle_validation_test_must_support @@ -205,7 +205,7 @@ def use_case run_as_group group do - title 'PAS Inquiry Operation' + title 'Submission of claims to the $inquire operation for must support validation' test from: :pas_server_v201_pas_inquiry_request_bundle_validation_test do id :pas_server_v201_pas_inquiry_request_bundle_validation_test_must_support diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_pended_use_case_group.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_pended_use_case_group.rb index 0a39784..97824b1 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_pended_use_case_group.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_pended_use_case_group.rb @@ -4,7 +4,8 @@ require_relative 'pas_inquiry_request_bundle/server_pas_inquiry_request_bundle_validation_test' require_relative 'claim_inquiry/claim_inquiry_operation_test' require_relative 'pas_inquiry_response_bundle/server_pas_inquiry_response_bundle_validation_test' -require_relative '../../custom_groups/v2.0.1/claim_status/pas_claim_status_test' +require_relative '../../custom_groups/v2.0.1/claim_response_decision/pas_claim_response_decision_test' +require_relative '../../custom_groups/v2.0.1/notification/pas_subscription_notification_test' module DaVinciPASTestKit module DaVinciPASV201 @@ -30,7 +31,7 @@ def use_case group do - title 'PAS Submit Operation' + title 'Server can respond to claims submitted for prior authorization' test from: :pas_server_v201_pas_request_bundle_validation_test do id :pas_server_v201_pas_request_bundle_validation_test_pended @@ -55,15 +56,12 @@ def use_case ) end test from: :pas_server_v201_pas_response_bundle_validation_test + test from: :prior_auth_claim_response_decision_validation end group do - title 'PAS Status Check' - - test from: :prior_auth_claim_status - end - group do - title 'PAS Inquiry Operation' + title 'Server can respond to claims submitted for inquiry' + test from: :prior_auth_claim_response_update_notification_validation test from: :pas_server_v201_pas_inquiry_request_bundle_validation_test test from: :pas_v201_claim_inquiry_operation_test do id :pas_v201_claim_inquiry_operation_test_pended diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/client_inquiry_request_practitioner_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/client_inquiry_request_practitioner_must_support_test.rb index f64a1a3..d2a5a56 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/client_inquiry_request_practitioner_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/client_inquiry_request_practitioner_must_support_test.rb @@ -31,6 +31,10 @@ def resource_type 'Practitioner' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -46,7 +50,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/client_submit_request_practitioner_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/client_submit_request_practitioner_must_support_test.rb index 44a968b..9f16a05 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/client_submit_request_practitioner_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/client_submit_request_practitioner_must_support_test.rb @@ -31,6 +31,10 @@ def resource_type 'Practitioner' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -46,7 +50,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_inquiry_request_practitioner_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_inquiry_request_practitioner_must_support_test.rb index ce31618..9de3ac6 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_inquiry_request_practitioner_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_inquiry_request_practitioner_must_support_test.rb @@ -10,6 +10,8 @@ class ServerInquiryRequestPractitionerMustSupportTest < Inferno::Test title 'All must support elements for Profile PAS Practitioner are observed across all instances submitted' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. Errors encountered will be treated as a skip instead of a failure. + PAS server systems are required to be able to receive all must support elements on instances of all profiles included in requests, including instances of the PAS Practitioner Profile. @@ -31,6 +33,10 @@ def resource_type 'Practitioner' end + def user_input_validation + true + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -46,7 +52,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_inquiry_response_practitioner_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_inquiry_response_practitioner_must_support_test.rb index 4e55af8..5a94dc0 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_inquiry_response_practitioner_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_inquiry_response_practitioner_must_support_test.rb @@ -31,6 +31,10 @@ def resource_type 'Practitioner' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -46,7 +50,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_submit_request_practitioner_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_submit_request_practitioner_must_support_test.rb index e2d45c4..d5fe81a 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_submit_request_practitioner_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_submit_request_practitioner_must_support_test.rb @@ -10,6 +10,8 @@ class ServerSubmitRequestPractitionerMustSupportTest < Inferno::Test title 'All must support elements for Profile PAS Practitioner are observed across all instances submitted' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. Errors encountered will be treated as a skip instead of a failure. + PAS server systems are required to be able to receive all must support elements on instances of all profiles included in requests, including instances of the PAS Practitioner Profile. @@ -31,6 +33,10 @@ def resource_type 'Practitioner' end + def user_input_validation + true + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -46,7 +52,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_submit_response_practitioner_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_submit_response_practitioner_must_support_test.rb index 036ac3f..b51acee 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_submit_response_practitioner_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_submit_response_practitioner_must_support_test.rb @@ -31,6 +31,10 @@ def resource_type 'Practitioner' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -46,7 +50,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/client_inquiry_request_practitioner_role_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/client_inquiry_request_practitioner_role_must_support_test.rb index 879bff0..7ec8e83 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/client_inquiry_request_practitioner_role_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/client_inquiry_request_practitioner_role_must_support_test.rb @@ -27,6 +27,10 @@ def resource_type 'PractitionerRole' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -42,7 +46,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/client_submit_request_practitioner_role_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/client_submit_request_practitioner_role_must_support_test.rb index a6a315e..66c4905 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/client_submit_request_practitioner_role_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/client_submit_request_practitioner_role_must_support_test.rb @@ -27,6 +27,10 @@ def resource_type 'PractitionerRole' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -42,7 +46,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_inquiry_request_practitioner_role_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_inquiry_request_practitioner_role_must_support_test.rb index a2cca2b..6ab514d 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_inquiry_request_practitioner_role_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_inquiry_request_practitioner_role_must_support_test.rb @@ -10,6 +10,8 @@ class ServerInquiryRequestPractitionerRoleMustSupportTest < Inferno::Test title 'All must support elements for Profile PAS PractitionerRole are observed across all instances submitted' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. Errors encountered will be treated as a skip instead of a failure. + PAS server systems are required to be able to receive all must support elements on instances of all profiles included in requests, including instances of the PAS PractitionerRole Profile. @@ -27,6 +29,10 @@ def resource_type 'PractitionerRole' end + def user_input_validation + true + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -42,7 +48,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_inquiry_response_practitioner_role_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_inquiry_response_practitioner_role_must_support_test.rb index b40921a..2af3d22 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_inquiry_response_practitioner_role_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_inquiry_response_practitioner_role_must_support_test.rb @@ -27,6 +27,10 @@ def resource_type 'PractitionerRole' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -42,7 +46,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_submit_request_practitioner_role_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_submit_request_practitioner_role_must_support_test.rb index 97cbd4b..757f65c 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_submit_request_practitioner_role_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_submit_request_practitioner_role_must_support_test.rb @@ -10,6 +10,8 @@ class ServerSubmitRequestPractitionerRoleMustSupportTest < Inferno::Test title 'All must support elements for Profile PAS PractitionerRole are observed across all instances submitted' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. Errors encountered will be treated as a skip instead of a failure. + PAS server systems are required to be able to receive all must support elements on instances of all profiles included in requests, including instances of the PAS PractitionerRole Profile. @@ -27,6 +29,10 @@ def resource_type 'PractitionerRole' end + def user_input_validation + true + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -42,7 +48,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_submit_response_practitioner_role_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_submit_response_practitioner_role_must_support_test.rb index f4b113d..e30f24d 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_submit_response_practitioner_role_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_submit_response_practitioner_role_must_support_test.rb @@ -27,6 +27,10 @@ def resource_type 'PractitionerRole' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -42,7 +46,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/client_inquiry_request_requestor_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/client_inquiry_request_requestor_must_support_test.rb index b9fdb73..9e94c10 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/client_inquiry_request_requestor_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/client_inquiry_request_requestor_must_support_test.rb @@ -41,6 +41,10 @@ def resource_type 'Organization' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -56,7 +60,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/client_submit_request_requestor_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/client_submit_request_requestor_must_support_test.rb index 3a3bfc1..b292110 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/client_submit_request_requestor_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/client_submit_request_requestor_must_support_test.rb @@ -41,6 +41,10 @@ def resource_type 'Organization' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -56,7 +60,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_inquiry_request_requestor_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_inquiry_request_requestor_must_support_test.rb index 4b28374..e5aaff8 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_inquiry_request_requestor_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_inquiry_request_requestor_must_support_test.rb @@ -10,6 +10,8 @@ class ServerInquiryRequestRequestorMustSupportTest < Inferno::Test title 'All must support elements for Profile PAS Requestor Organization are observed across all instances submitted' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. Errors encountered will be treated as a skip instead of a failure. + PAS server systems are required to be able to receive all must support elements on instances of all profiles included in requests, including instances of the PAS Requestor Organization Profile. @@ -41,6 +43,10 @@ def resource_type 'Organization' end + def user_input_validation + true + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -56,7 +62,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_inquiry_response_requestor_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_inquiry_response_requestor_must_support_test.rb index 10dc9dc..5f59643 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_inquiry_response_requestor_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_inquiry_response_requestor_must_support_test.rb @@ -41,6 +41,10 @@ def resource_type 'Organization' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -56,7 +60,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_submit_request_requestor_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_submit_request_requestor_must_support_test.rb index b377991..f7def11 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_submit_request_requestor_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_submit_request_requestor_must_support_test.rb @@ -10,6 +10,8 @@ class ServerSubmitRequestRequestorMustSupportTest < Inferno::Test title 'All must support elements for Profile PAS Requestor Organization are observed across all instances submitted' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. Errors encountered will be treated as a skip instead of a failure. + PAS server systems are required to be able to receive all must support elements on instances of all profiles included in requests, including instances of the PAS Requestor Organization Profile. @@ -41,6 +43,10 @@ def resource_type 'Organization' end + def user_input_validation + true + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -56,7 +62,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_submit_response_requestor_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_submit_response_requestor_must_support_test.rb index 409461f..1fb1113 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_submit_response_requestor_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_submit_response_requestor_must_support_test.rb @@ -41,6 +41,10 @@ def resource_type 'Organization' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -56,7 +60,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/server_suite.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/server_suite.rb index c8d5fc7..a5e2b0b 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/server_suite.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/server_suite.rb @@ -12,158 +12,7 @@ class ServerSuite < Inferno::TestSuite id :davinci_pas_server_suite_v201 title 'Da Vinci PAS Server Suite v2.0.1' version DaVinciPASTestKit::VERSION - description %( - The Da Vinci PAS Server Suite validates the conformance of server systems - to the STU 2 version of the HL7® FHIR® - [Da Vinci Prior Authorization Support Implementation Guide](https://hl7.org/fhir/us/davinci-pas/STU2/). - - ## Scope - - These tests are a **DRAFT** intended to allow PAS server implementers to perform - preliminary checks of their servers against PAS IG requirements and [provide - feedback](https://github.com/inferno-framework/davinci-pas-test-kit/issues) - on the tests. Future versions of these tests may validate other - requirements and may change the test validation logic. - - ## Test Methodology - - Inferno will simulate a client and make a series of prior authorization requests to the - server under test. Over the course of these requests, Inferno will seek to observe - conformant handling of PAS requirements, including - - The ability of the server to use PAS API interactions to communicate - - Approval of a prior authorization request - - Denial of a prior authorization request - - Pending of a prior authorization request and a subsequent final decision - - Inability to process a prior authorization request - - The ability of the server to handle the full scope of data required by PAS, including - - Ability to process prior auth requests and inquiries with all PAS profiles and all must support elements on those profiles - - Ability to return responses that demonstrate the use of all PAS profiles and all must support elements on those profiles - - Because the business logic that determines decisions and the elements populated in responses - Is outside of the PAS specification and will vary between implementers, testers - are required to provide the requests that Inferno will make to the server. - - All requests and responses will be checked for conformance to the PAS - IG requirements individually and used in aggregate to determine whether - required features and functionality are present. HL7® FHIR® resources are - validated with the Java validator using `tx.fhir.org` as the terminology server. - - These tests do not currently test the full scope of the IG. See the *Testing Limitations* section below - for more details about the current scope of the tests and the reasons that some details have been left out. - - ## Running the Tests - - ### Quick Start - - Execution of these tests require a significant amount of tester input in the - form of requests that Inferno will make against the server under test. - - If you would like to try out the tests using examples from the IG against the - [public reference server endpoint](https://prior-auth.davinci.hl7.org/fhir) ([code on github](https://github.com/HL7-DaVinci/prior-auth)), you can do so by - 1. Selecting the *Prior Authorization Support Reference Implementation* option from the Preset dropdown in the upper left - 2. Clicking the *Run All Tests* button in the upper right - 3. Clicking the *Submit* button at the bottom of the input dialog - - You can run these tests using your own server by updating the "FHIR Server Endpoint URL" and "OAuth Credentials" inputs. - - Note that: - - the inputs for these tests are not complete and systems are not expected to pass the tests based on them. - - the public reference server has not been updated to reflect the STU2 version that these tests target, - so expect some additional failures when testing against it. - - ## Test Configuration Details - - The details provided here supplement the documentation of individual fields in the input dialog - that appears when initiating a test run. - - ### Server identification - - Requests will be made to the `/Claim/$submit` and `/Claim/$inquire` endpoints under the url provided in the "FHIR Server Endpoint URL" field. - - ### Authentication - - The PAS IG states that - - > "PAS Servers **SHOULD** support server-server OAuth… In a future release of this guide, direction will limit the option to [require] server-server OAuth." - - The PAS test kit currently assumes that the handshake has already occurred and requires - that a bearer token be provided in the “OAuth Credentials / Access Token” configuration - field. Inferno will submit this token on all requests it makes to the server as a part of - executing the tests. A complete backend server authentication handshake may be supported - in future versions of the test kit. - - ### Payload - - All other inputs are for providing bundles for Inferno to submit as a part of the tests. To avoid placing - requirements on the business logic, Inferno does not have standard requests to send as a part of the tests - and instead relies on the tester to provide the requests that Inferno will make. - - For single-request fields (e.g., “PAS Submit Request Payload for Approval Response”), the input must be a json-encoded FHIR bundle. - - For multiple-request fields (e.g., “Additional PAS Submit Request Payloads”), the input must be a json array of json-encoded FHIR bundles (e.g., [fhir-bundle-1, fhir-bundle-2, …] where each fhir-bundle-n is a full bundle). - - ## Testing Limitations - - ### Private X12 details - - HIPAA [requires](https://hl7.org/fhir/us/davinci-pas/STU2/regulations.html) electronic prior authorization - processing to use the X12 278 standard. While recent CMS rule-making suggests that [this requirement - will not be enforced in the future](https://www.cms.gov/newsroom/fact-sheets/cms-interoperability-and-prior-authorization-final-rule-cms-0057-f), - the current PAS IG relies heavily on X12. As the IG authors note at the - top of the [IG home page](https://hl7.org/fhir/us/davinci-pas/STU2/): - - > Note that this implementation guide is intended to support mapping between FHIR and X12 transactions. To respect - > X12 intellectual property, all mapping and X12-specific terminology information will be solely published by X12 - > and made available in accordance with X12 rules - which may require membership and/or payment. Please see this - > [Da Vinci External Reference page](https://confluence.hl7.org/display/DVP/Da+Vinci+Reference+to+External+Standards+and+Terminologies) - > for details on how to get this mapping. - > - > There are many situationally required fields that are specified in the X12 TRN03 guide that do not have guidance - > in this Implementation Guide. Implementers need to consult the X12 PAS guides to know the requirements for these - > fields. - > - > Several of the profiles will require use of terminologies that are part of X12 which we anticipate being made - > publicly available. At such time as this occurs, the implementation guide will be updated to bind to these as - > external terminologies. - - The implications of this reliance on proprietary information that is not publicly available means that this test - kit: - - - Cannot verify the correct usage of X12-based terminology: terminology requirements for all elements bound to X12 - value sets will not be validated. - - Cannot verify the meaning of codes: validation that a given response conveys something specific, e.g., approval - or pending, is not performed. - - Cannot verify matching semantics on inquiries: no checking of the identity of the ClaimResponse returned for an - inquiry, e.g., that it matches the input or the original request. - - These limitations may be removed in future versions of these tests. In the meantime, testers should consider these - requirements to be verified through attestation and should not represent their systems to have passed these tests - if these requirements are not met. - - ### Underspecified Subscription Details - - The current PAS specification around subscriptions and notifications - is not detailed enough to support testing. Notably, - - There are no examples of what a notification payload looks like - - There is no instruction on how to turn the notification payload into an inquiry - - Once these details have been clarified, validation of the notification workflows - will be added to these tests. - - ### Future Details - - The PAS IG places additional requirements on servers that are not currently tested by this test kit, including - - - Prior Authorization update workflows - - Requests for additional information handled through the CDex framework - - PDF, CDA, and JPG attachments - - US Core profile support for supporting information - - Inquiry matching and subsetting logic - - Inquiry requests from non-submitting systems - - Collection of metrics - - These and any other requirements found in the PAS IG may be tested in future versions of these tests. - ) + description File.read(File.join(__dir__, '..', '..', 'docs', 'server_suite_description_v201.md')) links [ { @@ -209,7 +58,7 @@ class ServerSuite < Inferno::TestSuite oauth_credentials :smart_credentials end - # Used for attestation experiment - see pas_claim_status_test.rb + # Used for attestation experiment - see pas_claim_response_decision_test.rb # resume_test_route :get, RESUME_PASS_PATH do |request| # request.query_parameters['token'] # end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/service_request/client_submit_request_service_request_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/service_request/client_submit_request_service_request_must_support_test.rb index a7a8064..f085180 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/service_request/client_submit_request_service_request_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/service_request/client_submit_request_service_request_must_support_test.rb @@ -31,6 +31,10 @@ def resource_type 'ServiceRequest' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -46,7 +50,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/service_request/server_submit_request_service_request_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/service_request/server_submit_request_service_request_must_support_test.rb index a36afa3..46071fa 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/service_request/server_submit_request_service_request_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/service_request/server_submit_request_service_request_must_support_test.rb @@ -10,6 +10,8 @@ class ServerSubmitRequestServiceRequestMustSupportTest < Inferno::Test title 'All must support elements for Profile PAS Service Request are observed across all instances submitted' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. Errors encountered will be treated as a skip instead of a failure. + PAS server systems are required to be able to receive all must support elements on instances of all profiles included in requests, including instances of the PAS Service Request Profile. @@ -31,6 +33,10 @@ def resource_type 'ServiceRequest' end + def user_input_validation + true + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -46,7 +52,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/client_inquiry_request_subscriber_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/client_inquiry_request_subscriber_must_support_test.rb index ef7e8ec..3812361 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/client_inquiry_request_subscriber_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/client_inquiry_request_subscriber_must_support_test.rb @@ -52,6 +52,10 @@ def resource_type 'Patient' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -67,7 +71,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/client_submit_request_subscriber_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/client_submit_request_subscriber_must_support_test.rb index 33e8a01..6adec0f 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/client_submit_request_subscriber_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/client_submit_request_subscriber_must_support_test.rb @@ -52,6 +52,10 @@ def resource_type 'Patient' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -67,7 +71,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/server_inquiry_request_subscriber_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/server_inquiry_request_subscriber_must_support_test.rb index 19ce15a..e210a73 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/server_inquiry_request_subscriber_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/server_inquiry_request_subscriber_must_support_test.rb @@ -10,6 +10,8 @@ class ServerInquiryRequestSubscriberMustSupportTest < Inferno::Test title 'All must support elements for Profile PAS Subscriber Patient are observed across all instances submitted' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. Errors encountered will be treated as a skip instead of a failure. + PAS server systems are required to be able to receive all must support elements on instances of all profiles included in requests, including instances of the PAS Subscriber Patient Profile. @@ -52,6 +54,10 @@ def resource_type 'Patient' end + def user_input_validation + true + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -67,7 +73,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/server_submit_request_subscriber_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/server_submit_request_subscriber_must_support_test.rb index 8c60a74..191dc49 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/server_submit_request_subscriber_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/server_submit_request_subscriber_must_support_test.rb @@ -10,6 +10,8 @@ class ServerSubmitRequestSubscriberMustSupportTest < Inferno::Test title 'All must support elements for Profile PAS Subscriber Patient are observed across all instances submitted' description %( + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. Errors encountered will be treated as a skip instead of a failure. + PAS server systems are required to be able to receive all must support elements on instances of all profiles included in requests, including instances of the PAS Subscriber Patient Profile. @@ -52,6 +54,10 @@ def resource_type 'Patient' end + def user_input_validation + true + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -67,7 +73,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/task/server_inquiry_response_task_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/task/server_inquiry_response_task_must_support_test.rb index 01b137b..9e8afe6 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/task/server_inquiry_response_task_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/task/server_inquiry_response_task_must_support_test.rb @@ -39,6 +39,10 @@ def resource_type 'Task' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -54,7 +58,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generated/v2.0.1/task/server_submit_response_task_must_support_test.rb b/lib/davinci_pas_test_kit/generated/v2.0.1/task/server_submit_response_task_must_support_test.rb index a8e8869..ebc61b5 100644 --- a/lib/davinci_pas_test_kit/generated/v2.0.1/task/server_submit_response_task_must_support_test.rb +++ b/lib/davinci_pas_test_kit/generated/v2.0.1/task/server_submit_response_task_must_support_test.rb @@ -39,6 +39,10 @@ def resource_type 'Task' end + def user_input_validation + false + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -54,7 +58,7 @@ def resources_of_interest run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generator/group_generator.rb b/lib/davinci_pas_test_kit/generator/group_generator.rb index 964f9d0..38668b5 100644 --- a/lib/davinci_pas_test_kit/generator/group_generator.rb +++ b/lib/davinci_pas_test_kit/generator/group_generator.rb @@ -174,13 +174,14 @@ def inquiry_operation_test_ids end def approval_denial_test_ids - submit_request_validation_test_ids + submit_operation_test_ids + submit_response_validation_test_ids + submit_request_validation_test_ids + submit_operation_test_ids + + submit_response_validation_test_ids + [claim_response_decision_test_id] end def grouped_approval_denial_test_ids { - 'PAS Submit Operation' => approval_denial_test_ids, - 'PAS Status Check' => [claim_status_test_id] + 'Server can respond to claims submitted for prior authorization' => + approval_denial_test_ids } end @@ -190,11 +191,12 @@ def pended_test_ids end def grouped_pended_test_ids - inquiry_operation = inquiry_request_validation_test_ids + + inquiry_operation = [inquiry_notification_test_id] + + inquiry_request_validation_test_ids + inquiry_operation_test_ids + inquiry_response_validation_test_ids inquiry_tests = { - 'PAS Inquiry Operation' => inquiry_operation + 'Server can respond to claims submitted for inquiry' => inquiry_operation } grouped_approval_denial_test_ids.merge(inquiry_tests) @@ -214,12 +216,12 @@ def grouped_must_support_test_ids inquiry_response_validation_test_ids { '$submit Element Support' => { - 'PAS Submit Operation' => submit_tests, + 'Submission of claims to the $submit operation for must support validation' => submit_tests, '[USER INPUT VALIDATION] Submit Request Must Support' => submit_request_must_support_test_ids, 'Submit Response Must Support' => submit_response_must_support_test_ids }, '$inquire Element Support' => { - 'PAS Inquiry Operation' => inquiry_operation, + 'Submission of claims to the $inquire operation for must support validation' => inquiry_operation, '[USER INPUT VALIDATION] Inquiry Request Must Support' => inquiry_request_must_support_test_ids, 'Inquiry Response Must Support' => inquiry_response_must_support_test_ids } @@ -243,11 +245,14 @@ def common_test_file_list(test_ids) end def approval_denial_test_file_list - common_test_file_list(approval_denial_test_ids) << claim_status_file_name + common_test_file_list(approval_denial_test_ids) << claim_response_decision_file_name end def pended_test_file_list - common_test_file_list(pended_test_ids) << claim_status_file_name + common_test_file_list(pended_test_ids).push( + claim_response_decision_file_name, + subscription_notification_file_name + ) end def must_support_test_file_list @@ -296,12 +301,20 @@ def test_file_list end end - def claim_status_test_id - 'prior_auth_claim_status' + def claim_response_decision_test_id + 'prior_auth_claim_response_decision_validation' + end + + def inquiry_notification_test_id + 'prior_auth_claim_response_update_notification_validation' + end + + def claim_response_decision_file_name + "../../custom_groups/#{ig_metadata.ig_version}/claim_response_decision/pas_claim_response_decision_test" end - def claim_status_file_name - "../../custom_groups/#{ig_metadata.ig_version}/claim_status/pas_claim_status_test" + def subscription_notification_file_name + "../../custom_groups/#{ig_metadata.ig_version}/notification/pas_subscription_notification_test" end def rename_input?(test_id) diff --git a/lib/davinci_pas_test_kit/generator/operation_test_generator.rb b/lib/davinci_pas_test_kit/generator/operation_test_generator.rb index d4664a6..5c0fef6 100644 --- a/lib/davinci_pas_test_kit/generator/operation_test_generator.rb +++ b/lib/davinci_pas_test_kit/generator/operation_test_generator.rb @@ -119,7 +119,7 @@ def generate end def title - "Claim/$#{operation} Operation Test" + "Submission of a claim to the $#{operation} operation succeeds" end def description diff --git a/lib/davinci_pas_test_kit/generator/templates/must_support.rb.erb b/lib/davinci_pas_test_kit/generator/templates/must_support.rb.erb index 023eb2b..93d8adb 100644 --- a/lib/davinci_pas_test_kit/generator/templates/must_support.rb.erb +++ b/lib/davinci_pas_test_kit/generator/templates/must_support.rb.erb @@ -22,6 +22,8 @@ module DaVinciPASTestKit This test checks all identified instances of the <%= profile_name %> Profile on responses sent to the client to ensure that the following must support elements are observed:<% end %><% if system == 'server' && request_type.include?('request') %> + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. Errors encountered will be treated as a skip instead of a failure. + PAS server systems are required to be able to receive all must support elements on instances of all profiles included in <% request_type.include?('submit') ? 'Submit' : 'Inquiry' %> requests, including instances of the <%= profile_name %> Profile. @@ -44,6 +46,10 @@ module DaVinciPASTestKit '<%= resource_type %>' end + def user_input_validation + <% if system == 'server' && request_type.include?('request') %>true<% else %>false<% end %> + end + def self.metadata @metadata ||= Generator::GroupMetadata.new(YAML.load_file(File.join(__dir__, 'metadata.yml'), aliases: true)) end @@ -59,7 +65,7 @@ module DaVinciPASTestKit run do perform_must_support_test(resources_of_interest) - validate_must_support + validate_must_support(user_input_validation) end end end diff --git a/lib/davinci_pas_test_kit/generator/templates/suite.rb.erb b/lib/davinci_pas_test_kit/generator/templates/suite.rb.erb index c8083a9..6249b5c 100644 --- a/lib/davinci_pas_test_kit/generator/templates/suite.rb.erb +++ b/lib/davinci_pas_test_kit/generator/templates/suite.rb.erb @@ -9,158 +9,7 @@ module DaVinciPASTestKit id :<%= suite_id %> title '<%= title %>' version DaVinciPASTestKit::VERSION - description %( - The Da Vinci PAS Server Suite validates the conformance of server systems - to the STU 2 version of the HL7® FHIR® - [Da Vinci Prior Authorization Support Implementation Guide](<%= ig_link %>). - - ## Scope - - These tests are a **DRAFT** intended to allow PAS server implementers to perform - preliminary checks of their servers against PAS IG requirements and [provide - feedback](https://github.com/inferno-framework/davinci-pas-test-kit/issues) - on the tests. Future versions of these tests may validate other - requirements and may change the test validation logic. - - ## Test Methodology - - Inferno will simulate a client and make a series of prior authorization requests to the - server under test. Over the course of these requests, Inferno will seek to observe - conformant handling of PAS requirements, including - - The ability of the server to use PAS API interactions to communicate - - Approval of a prior authorization request - - Denial of a prior authorization request - - Pending of a prior authorization request and a subsequent final decision - - Inability to process a prior authorization request - - The ability of the server to handle the full scope of data required by PAS, including - - Ability to process prior auth requests and inquiries with all PAS profiles and all must support elements on those profiles - - Ability to return responses that demonstrate the use of all PAS profiles and all must support elements on those profiles - - Because the business logic that determines decisions and the elements populated in responses - Is outside of the PAS specification and will vary between implementers, testers - are required to provide the requests that Inferno will make to the server. - - All requests and responses will be checked for conformance to the PAS - IG requirements individually and used in aggregate to determine whether - required features and functionality are present. HL7® FHIR® resources are - validated with the Java validator using `tx.fhir.org` as the terminology server. - - These tests do not currently test the full scope of the IG. See the *Testing Limitations* section below - for more details about the current scope of the tests and the reasons that some details have been left out. - - ## Running the Tests - - ### Quick Start - - Execution of these tests require a significant amount of tester input in the - form of requests that Inferno will make against the server under test. - - If you would like to try out the tests using examples from the IG against the - [public reference server endpoint](https://prior-auth.davinci.hl7.org/fhir) ([code on github](https://github.com/HL7-DaVinci/prior-auth)), you can do so by - 1. Selecting the *Prior Authorization Support Reference Implementation* option from the Preset dropdown in the upper left - 2. Clicking the *Run All Tests* button in the upper right - 3. Clicking the *Submit* button at the bottom of the input dialog - - You can run these tests using your own server by updating the "FHIR Server Endpoint URL" and "OAuth Credentials" inputs. - - Note that: - - the inputs for these tests are not complete and systems are not expected to pass the tests based on them. - - the public reference server has not been updated to reflect the STU2 version that these tests target, - so expect some additional failures when testing against it. - - ## Test Configuration Details - - The details provided here supplement the documentation of individual fields in the input dialog - that appears when initiating a test run. - - ### Server identification - - Requests will be made to the `/Claim/$submit` and `/Claim/$inquire` endpoints under the url provided in the "FHIR Server Endpoint URL" field. - - ### Authentication - - The PAS IG states that - - > "PAS Servers **SHOULD** support server-server OAuth… In a future release of this guide, direction will limit the option to [require] server-server OAuth." - - The PAS test kit currently assumes that the handshake has already occurred and requires - that a bearer token be provided in the “OAuth Credentials / Access Token” configuration - field. Inferno will submit this token on all requests it makes to the server as a part of - executing the tests. A complete backend server authentication handshake may be supported - in future versions of the test kit. - - ### Payload - - All other inputs are for providing bundles for Inferno to submit as a part of the tests. To avoid placing - requirements on the business logic, Inferno does not have standard requests to send as a part of the tests - and instead relies on the tester to provide the requests that Inferno will make. - - For single-request fields (e.g., “PAS Submit Request Payload for Approval Response”), the input must be a json-encoded FHIR bundle. - - For multiple-request fields (e.g., “Additional PAS Submit Request Payloads”), the input must be a json array of json-encoded FHIR bundles (e.g., [fhir-bundle-1, fhir-bundle-2, …] where each fhir-bundle-n is a full bundle). - - ## Testing Limitations - - ### Private X12 details - - HIPAA [requires](https://hl7.org/fhir/us/davinci-pas/STU2/regulations.html) electronic prior authorization - processing to use the X12 278 standard. While recent CMS rule-making suggests that [this requirement - will not be enforced in the future](https://www.cms.gov/newsroom/fact-sheets/cms-interoperability-and-prior-authorization-final-rule-cms-0057-f), - the current PAS IG relies heavily on X12. As the IG authors note at the - top of the [IG home page](<%= ig_link %>): - - > Note that this implementation guide is intended to support mapping between FHIR and X12 transactions. To respect - > X12 intellectual property, all mapping and X12-specific terminology information will be solely published by X12 - > and made available in accordance with X12 rules - which may require membership and/or payment. Please see this - > [Da Vinci External Reference page](https://confluence.hl7.org/display/DVP/Da+Vinci+Reference+to+External+Standards+and+Terminologies) - > for details on how to get this mapping. - > - > There are many situationally required fields that are specified in the X12 TRN03 guide that do not have guidance - > in this Implementation Guide. Implementers need to consult the X12 PAS guides to know the requirements for these - > fields. - > - > Several of the profiles will require use of terminologies that are part of X12 which we anticipate being made - > publicly available. At such time as this occurs, the implementation guide will be updated to bind to these as - > external terminologies. - - The implications of this reliance on proprietary information that is not publicly available means that this test - kit: - - - Cannot verify the correct usage of X12-based terminology: terminology requirements for all elements bound to X12 - value sets will not be validated. - - Cannot verify the meaning of codes: validation that a given response conveys something specific, e.g., approval - or pending, is not performed. - - Cannot verify matching semantics on inquiries: no checking of the identity of the ClaimResponse returned for an - inquiry, e.g., that it matches the input or the original request. - - These limitations may be removed in future versions of these tests. In the meantime, testers should consider these - requirements to be verified through attestation and should not represent their systems to have passed these tests - if these requirements are not met. - - ### Underspecified Subscription Details - - The current PAS specification around subscriptions and notifications - is not detailed enough to support testing. Notably, - - There are no examples of what a notification payload looks like - - There is no instruction on how to turn the notification payload into an inquiry - - Once these details have been clarified, validation of the notification workflows - will be added to these tests. - - ### Future Details - - The PAS IG places additional requirements on servers that are not currently tested by this test kit, including - - - Prior Authorization update workflows - - Requests for additional information handled through the CDex framework - - PDF, CDA, and JPG attachments - - US Core profile support for supporting information - - Inquiry matching and subsetting logic - - Inquiry requests from non-submitting systems - - Collection of metrics - - These and any other requirements found in the PAS IG may be tested in future versions of these tests. - ) + description File.read(File.join(__dir__, '..', '..', 'docs', 'server_suite_description_<%= ig_metadata.reformatted_version %>.md')) links [ { @@ -206,7 +55,7 @@ module DaVinciPASTestKit oauth_credentials :smart_credentials end - # Used for attestation experiment - see pas_claim_status_test.rb + # Used for attestation experiment - see pas_claim_response_decision_test.rb # resume_test_route :get, RESUME_PASS_PATH do |request| # request.query_parameters['token'] # end diff --git a/lib/davinci_pas_test_kit/generator/validation_test_generator.rb b/lib/davinci_pas_test_kit/generator/validation_test_generator.rb index 9e57424..2ac68f3 100644 --- a/lib/davinci_pas_test_kit/generator/validation_test_generator.rb +++ b/lib/davinci_pas_test_kit/generator/validation_test_generator.rb @@ -141,6 +141,7 @@ def user_input? def description <<~DESCRIPTION + #{description_user_input_validation if user_input?} #{system == 'server' ? description_intro_server : description_intro_client} It verifies the presence of mandatory elements and that elements with required bindings contain appropriate values. CodeableConcept element @@ -158,6 +159,7 @@ def description_intro_server This test validates the conformity of the #{request_type.include?('request') ? 'user input' : "server's response"} to the [#{profile_name}](#{profile_url}) structure#{request_type.include?('request') ? ', ensuring subsequent tests can accurately simulate content.' : '.'} + It also checks that other conformance requirements defined in the [PAS Formal Specification](https://hl7.org/fhir/us/davinci-pas/STU2/specification.html), such as the presence of all referenced instances within the bundle and the @@ -176,6 +178,13 @@ def description_intro_client conformance of those instances to the appropriate profiles, are met. GENERIC_INTRO end + + def description_user_input_validation + <<~USER_INPUT_INTRO + **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test. + Errors encountered will be treated as a skip instead of a failure. + USER_INPUT_INTRO + end end end end diff --git a/lib/davinci_pas_test_kit/must_support_test.rb b/lib/davinci_pas_test_kit/must_support_test.rb index 10a8add..4edf1b6 100644 --- a/lib/davinci_pas_test_kit/must_support_test.rb +++ b/lib/davinci_pas_test_kit/must_support_test.rb @@ -41,8 +41,12 @@ def all_must_support_errors @all_must_support_errors ||= [] end - def validate_must_support - assert all_must_support_errors.empty?, all_must_support_errors.join("\n") + def validate_must_support(user_input_validation) + if user_input_validation + skip_if !all_must_support_errors.empty?, all_must_support_errors.join("\n") + else + assert all_must_support_errors.empty?, all_must_support_errors.join("\n") + end end def perform_must_support_test(resources) diff --git a/lib/davinci_pas_test_kit/version.rb b/lib/davinci_pas_test_kit/version.rb index 7cbbcb0..1ccc1f4 100644 --- a/lib/davinci_pas_test_kit/version.rb +++ b/lib/davinci_pas_test_kit/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: truen module DaVinciPASTestKit - VERSION = '0.9.0'.freeze + VERSION = '0.9.1'.freeze end