davinci_pas_test_kit 0.9.0 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/lib/davinci_pas_test_kit/client_suite.rb +1 -169
  3. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/{claim_status/pas_claim_status_test.rb → claim_response_decision/pas_claim_response_decision_test.rb} +10 -27
  4. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/must_support/pas_client_must_support_requirement_test.rb +1 -1
  5. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/must_support/pas_server_must_support_requirement_test.rb +4 -1
  6. data/lib/davinci_pas_test_kit/custom_groups/v2.0.1/notification/pas_subscription_notification_test.rb +40 -0
  7. data/lib/davinci_pas_test_kit/docs/client_suite_description_v201.md +167 -0
  8. data/lib/davinci_pas_test_kit/docs/server_suite_description_v201.md +150 -0
  9. data/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/client_inquiry_request_beneficiary_must_support_test.rb +5 -1
  10. data/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/client_submit_request_beneficiary_must_support_test.rb +5 -1
  11. data/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_inquiry_request_beneficiary_must_support_test.rb +7 -1
  12. data/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_inquiry_response_beneficiary_must_support_test.rb +5 -1
  13. data/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_submit_request_beneficiary_must_support_test.rb +7 -1
  14. data/lib/davinci_pas_test_kit/generated/v2.0.1/beneficiary/server_submit_response_beneficiary_must_support_test.rb +5 -1
  15. data/lib/davinci_pas_test_kit/generated/v2.0.1/claim/claim_operation_test.rb +1 -1
  16. data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/claim_inquiry_operation_test.rb +1 -1
  17. data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/client_inquiry_request_claim_inquiry_must_support_test.rb +5 -1
  18. data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_inquiry/server_inquiry_request_claim_inquiry_must_support_test.rb +7 -1
  19. data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_update/client_submit_request_claim_update_must_support_test.rb +5 -1
  20. data/lib/davinci_pas_test_kit/generated/v2.0.1/claim_update/server_submit_request_claim_update_must_support_test.rb +7 -1
  21. data/lib/davinci_pas_test_kit/generated/v2.0.1/claiminquiryresponse/server_inquiry_response_claiminquiryresponse_must_support_test.rb +5 -1
  22. data/lib/davinci_pas_test_kit/generated/v2.0.1/claimresponse/server_submit_response_claimresponse_must_support_test.rb +5 -1
  23. data/lib/davinci_pas_test_kit/generated/v2.0.1/client_tests/client_denial_pas_response_bundle_validation_test.rb +3 -0
  24. data/lib/davinci_pas_test_kit/generated/v2.0.1/client_tests/client_pended_pas_response_bundle_validation_test.rb +3 -0
  25. data/lib/davinci_pas_test_kit/generated/v2.0.1/communication_request/server_submit_response_communication_request_must_support_test.rb +5 -1
  26. data/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/client_inquiry_request_coverage_must_support_test.rb +5 -1
  27. data/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/client_submit_request_coverage_must_support_test.rb +5 -1
  28. data/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/server_inquiry_request_coverage_must_support_test.rb +7 -1
  29. data/lib/davinci_pas_test_kit/generated/v2.0.1/coverage/server_submit_request_coverage_must_support_test.rb +7 -1
  30. data/lib/davinci_pas_test_kit/generated/v2.0.1/device_request/client_submit_request_device_request_must_support_test.rb +5 -1
  31. data/lib/davinci_pas_test_kit/generated/v2.0.1/device_request/server_submit_request_device_request_must_support_test.rb +7 -1
  32. data/lib/davinci_pas_test_kit/generated/v2.0.1/encounter/client_submit_request_encounter_must_support_test.rb +5 -1
  33. data/lib/davinci_pas_test_kit/generated/v2.0.1/encounter/server_submit_request_encounter_must_support_test.rb +7 -1
  34. data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/client_inquiry_request_insurer_must_support_test.rb +5 -1
  35. data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/client_submit_request_insurer_must_support_test.rb +5 -1
  36. data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_inquiry_request_insurer_must_support_test.rb +7 -1
  37. data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_inquiry_response_insurer_must_support_test.rb +5 -1
  38. data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_submit_request_insurer_must_support_test.rb +7 -1
  39. data/lib/davinci_pas_test_kit/generated/v2.0.1/insurer/server_submit_response_insurer_must_support_test.rb +5 -1
  40. data/lib/davinci_pas_test_kit/generated/v2.0.1/medication_request/client_submit_request_medication_request_must_support_test.rb +5 -1
  41. data/lib/davinci_pas_test_kit/generated/v2.0.1/medication_request/server_submit_request_medication_request_must_support_test.rb +7 -1
  42. data/lib/davinci_pas_test_kit/generated/v2.0.1/nutrition_order/client_submit_request_nutrition_order_must_support_test.rb +5 -1
  43. data/lib/davinci_pas_test_kit/generated/v2.0.1/nutrition_order/server_submit_request_nutrition_order_must_support_test.rb +7 -1
  44. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/client_inquiry_request_pas_inquiry_request_bundle_must_support_test.rb +5 -1
  45. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/server_inquiry_request_pas_inquiry_request_bundle_must_support_test.rb +7 -1
  46. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_request_bundle/server_pas_inquiry_request_bundle_validation_test.rb +4 -0
  47. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_response_bundle/server_inquiry_response_pas_inquiry_response_bundle_must_support_test.rb +5 -1
  48. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_inquiry_response_bundle/server_pas_inquiry_response_bundle_validation_test.rb +1 -0
  49. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/client_submit_request_pas_request_bundle_must_support_test.rb +5 -1
  50. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/server_pas_request_bundle_validation_test.rb +4 -0
  51. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_request_bundle/server_submit_request_pas_request_bundle_must_support_test.rb +7 -1
  52. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_response_bundle/server_pas_response_bundle_validation_test.rb +1 -0
  53. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_response_bundle/server_submit_response_pas_response_bundle_must_support_test.rb +5 -1
  54. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_approval_use_case_group.rb +3 -7
  55. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_denial_use_case_group.rb +3 -7
  56. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_must_support_use_case_group.rb +2 -2
  57. data/lib/davinci_pas_test_kit/generated/v2.0.1/pas_server_pended_use_case_group.rb +6 -8
  58. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/client_inquiry_request_practitioner_must_support_test.rb +5 -1
  59. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/client_submit_request_practitioner_must_support_test.rb +5 -1
  60. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_inquiry_request_practitioner_must_support_test.rb +7 -1
  61. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_inquiry_response_practitioner_must_support_test.rb +5 -1
  62. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_submit_request_practitioner_must_support_test.rb +7 -1
  63. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner/server_submit_response_practitioner_must_support_test.rb +5 -1
  64. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/client_inquiry_request_practitioner_role_must_support_test.rb +5 -1
  65. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/client_submit_request_practitioner_role_must_support_test.rb +5 -1
  66. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_inquiry_request_practitioner_role_must_support_test.rb +7 -1
  67. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_inquiry_response_practitioner_role_must_support_test.rb +5 -1
  68. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_submit_request_practitioner_role_must_support_test.rb +7 -1
  69. data/lib/davinci_pas_test_kit/generated/v2.0.1/practitioner_role/server_submit_response_practitioner_role_must_support_test.rb +5 -1
  70. data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/client_inquiry_request_requestor_must_support_test.rb +5 -1
  71. data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/client_submit_request_requestor_must_support_test.rb +5 -1
  72. data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_inquiry_request_requestor_must_support_test.rb +7 -1
  73. data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_inquiry_response_requestor_must_support_test.rb +5 -1
  74. data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_submit_request_requestor_must_support_test.rb +7 -1
  75. data/lib/davinci_pas_test_kit/generated/v2.0.1/requestor/server_submit_response_requestor_must_support_test.rb +5 -1
  76. data/lib/davinci_pas_test_kit/generated/v2.0.1/server_suite.rb +2 -153
  77. data/lib/davinci_pas_test_kit/generated/v2.0.1/service_request/client_submit_request_service_request_must_support_test.rb +5 -1
  78. data/lib/davinci_pas_test_kit/generated/v2.0.1/service_request/server_submit_request_service_request_must_support_test.rb +7 -1
  79. data/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/client_inquiry_request_subscriber_must_support_test.rb +5 -1
  80. data/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/client_submit_request_subscriber_must_support_test.rb +5 -1
  81. data/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/server_inquiry_request_subscriber_must_support_test.rb +7 -1
  82. data/lib/davinci_pas_test_kit/generated/v2.0.1/subscriber/server_submit_request_subscriber_must_support_test.rb +7 -1
  83. data/lib/davinci_pas_test_kit/generated/v2.0.1/task/server_inquiry_response_task_must_support_test.rb +5 -1
  84. data/lib/davinci_pas_test_kit/generated/v2.0.1/task/server_submit_response_task_must_support_test.rb +5 -1
  85. data/lib/davinci_pas_test_kit/generator/group_generator.rb +26 -13
  86. data/lib/davinci_pas_test_kit/generator/operation_test_generator.rb +1 -1
  87. data/lib/davinci_pas_test_kit/generator/validation_test_generator.rb +9 -0
  88. data/lib/davinci_pas_test_kit/must_support_test.rb +6 -2
  89. data/lib/davinci_pas_test_kit/version.rb +1 -1
  90. metadata +6 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8afec0fe44554f72cce5bfd53e2ec230aac6b9cf7a1c9619a2e7264f3e09a2ba
4
- data.tar.gz: 02c6532a6c3e541a704df48a875e20bf73282e4d8fbf7cd590c6541d7d1183f9
3
+ metadata.gz: 35fff0ddc7e7badcd0fe5e9927f9bbafc7be123f908f4eed1f81c8f777189ef4
4
+ data.tar.gz: 36fa5c2af21fb2ca92ff958a0f96d97aed08dd45c1bdd454cce2f2a4aabe5af1
5
5
  SHA512:
6
- metadata.gz: 2a198d440407b88f2c9fef9002f36ece049baec615418d8a538a14d3314551366546331d44cea15b12e433cfbb25c5e8f087b71d45fa2a66c404618a2f1a4f58
7
- data.tar.gz: c21b95655561c420a0a28efaf222d0ad0a480b17aa1dc53c4d2faeee0322bc6de5395c82162197dfd9e748dbf21c58438b1a9a978190f75af10a277accc0af3a
6
+ metadata.gz: 954d086d05f047336a216d2d72947ca8d8d1ffaf944a3b29174a15ea7fd73fe75d6a9e26552af08b20d7b33917102903ec9e98f90000fd2228697ab9cb25defb
7
+ data.tar.gz: 8ed7048ddeaad521eda54110707aa8a55e2e151c0f37c2f0a35ba5a57f2823c121e4b5d97796166340afbda10242650a2a83fe6244a6981d74ae5cf9472c4537
@@ -20,175 +20,7 @@ module DaVinciPASTestKit
20
20
  id :davinci_pas_client_suite_v201
21
21
  title 'Da Vinci PAS Client Suite v2.0.1'
22
22
  version VERSION
23
- description %(
24
- The Da Vinci PAS Test Kit Client Suite validates the conformance of client
25
- systems to the STU 2 version of the HL7® FHIR®
26
- [Da Vinci Prior Authorization Support Implementation Guide](https://hl7.org/fhir/us/davinci-pas/STU2/).
27
-
28
- ## Scope
29
-
30
- These tests are a **DRAFT** intended to allow PAS client implementers to perform
31
- preliminary checks of their clients against PAS IG requirements and [provide
32
- feedback](https://github.com/inferno-framework/davinci-pas-test-kit/issues)
33
- on the tests. Future versions of these tests may validate other
34
- requirements and may change the test validation logic.
35
-
36
- ## Test Methodology
37
-
38
- Inferno will simulate a PAS server for the client under test to interact with. The client
39
- will be expected to initiate requests to the server and demonstrate its ability to react
40
- to the returned responses. Over the course of these interactions,
41
- Inferno will seek to observe conformant handling of PAS requirements, including
42
- - The ability of the client to initiate and react to
43
- - The approval of a prior authorization request
44
- - The denial of a prior authorization request
45
- - The pending of a prior authorization request and a subsequent final decision
46
- - The ability of the client to provide data covering the full scope of required by PAS, including
47
- - The ability to send prior auth requests and inquiries with all PAS profiles and all must support elements on
48
- those profiles
49
- - The ability to handle responses that contain all PAS profiles and all must support elements on those
50
- profiles (not included in the current version of these tests)
51
-
52
- Because X12 details, including coded values indicating details like “denied” and “pended”,
53
- are not public, Inferno is not currently able to generate a full set of responses to requests
54
- or otherwise provide details on specific codes used to represent those concepts
55
- 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)).
56
- Thus,
57
-
58
- - In order to demonstrate specific workflows, namely pend and denial, users will need to provide the expected
59
- response for Inferno to send back
60
- - The current tests do not return to the client all PAS profiles and must support elements to confirm support.
61
-
62
- For further details on limitations of these tests, see the *Testing Limitations* section below.
63
-
64
- All requests and responses will be checked for conformance to the PAS
65
- IG requirements individually and used in aggregate to determine whether
66
- required features and functionality are present. HL7® FHIR® resources are
67
- validated with the Java validator using `tx.fhir.org` as the terminology server.
68
-
69
- ## Running the Tests
70
-
71
- ### Quick Start
72
-
73
- For Inferno to simulate a server that always returns approved responses, it needs
74
- only to know the bearer token that the client will send on requests, for which there are two options.
75
-
76
- 1. If you want to choose your own bearer token, then
77
- 1. Select the "2. PAS Client Validation" test from the list on the left.
78
- 2. Click the '*Run All Tests*' button on the right.
79
- 3. In the "access_token" field, enter the bearer token that will be sent by the client under test (as part
80
- of the Authorization header - Bearer: <provided value>).
81
- 4. Click the '*Submit*' button at the bottom of the dialog.
82
- 2. If you want to use a client_id to obtain an access token, then
83
- 1. Click the '*Run All Tests*' button on the right.
84
- 2. Provide the client's registered id "client_id" field of the input (NOTE, Inferno doesn't support the
85
- registration API, so this must be obtained from another system or configured manually).
86
- 3. Click the '*Submit*' button at the bottom of the dialog.
87
- 4. Make a token request that includes the specified client id to the
88
- `<inferno host>/custom/davinci_pas_client_suite_v201/mock_auth/token` endpoint to get
89
- an access token to use on the request of the requests.
90
-
91
- In either case, the tests will continue from that point, requesting the user to
92
- direct the client to make certain requests to demonstrate PAS client capabilities.
93
-
94
- Note: authentication options for these tests have not been finalized and are subject to change.
95
-
96
- ### Complete Setup
97
-
98
- The *Quick Start* approach does not test pended or deny workflows. To test these, provide a
99
- json-encoded FHIR bundle in the "Claim pended response JSON" and "Claim deny response JSON" input field after
100
- clicking the '*Run All Tests*' button. These responses will be echoed back when a request
101
- is made during the corresponding test.
102
-
103
- ### Postman-based Demo
104
-
105
- If you do not have a PAS client but would like to try the tests out, you can use
106
- [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)
107
- to make requests against Inferno. The following requests and example responses from that collection can be used.
108
-
109
- - Configuration
110
- - *Deny Response* example under the *Homecare Prior Authorization Request*: use as the value of the
111
- "Claim denied response JSON" input field. NOTE: this contains a placeholder code `DENIEDCODE` for the
112
- X12 code representing the denied status. Replace with the X12-specified code before providing to Inferno
113
- to accurately replicate a denial workflow for the client under test.
114
- - *Pend Response* example under the *Medical Services Prior Authorization Request*: use as the value of the
115
- "Claim pended response JSON" input field. NOTE: this contains a placeholder code `PENDEDCODE` for the
116
- X12 code representing the pended status. Replace with the X12-specified code before providing to Inferno
117
- to accurately replicate a pend workflow for the client under test.
118
- - Submissions
119
- - *mock token*: for submitting a client id to get back an access token to use on the rest of the tests. Set the
120
- collection's access_token variable to the result.
121
- - *Referral Prior Authorization Request*: use for the "Approval" workflow test submission.
122
- - *Medical Services Prior Authorization Request*: use for the "Pended" workflow test submission.
123
- - *Medical Services Inquiry Request*: use for the "Pended" workflow test inquiry.
124
-
125
- No additional requests are present to submit as a part of the must support tests, so
126
- testers can simply click the link to indicate they are done submitting requests. Note
127
- that the requests within the Postman client are not expected to fully pass the tests as they
128
- do not contain all must support items.
129
-
130
- ## Testing Limitations
131
-
132
- ### Private X12 details
133
-
134
- HIPAA [requires](https://hl7.org/fhir/us/davinci-pas/STU2/regulations.html) electronic prior authorization
135
- processing to use the X12 278 standard. While recent CMS rule-making suggests that [this requirement
136
- will not be enforced in the future](https://www.cms.gov/newsroom/fact-sheets/cms-interoperability-and-prior-authorization-final-rule-cms-0057-f),
137
- the current PAS IG relies heavily on X12. As the IG authors note at the
138
- top of the [IG home page](https://hl7.org/fhir/us/davinci-pas/STU2/index.html):
139
-
140
- > Note that this implementation guide is intended to support mapping between FHIR and X12 transactions. To respect
141
- > X12 intellectual property, all mapping and X12-specific terminology information will be solely published by X12
142
- > and made available in accordance with X12 rules - which may require membership and/or payment. Please see this
143
- > [Da Vinci External Reference page](https://confluence.hl7.org/display/DVP/Da+Vinci+Reference+to+External+Standards+and+Terminologies)
144
- > for details on how to get this mapping.
145
- >
146
- > There are many situationally required fields that are specified in the X12 TRN03 guide that do not have guidance
147
- > in this Implementation Guide. Implementers need to consult the X12 PAS guides to know the requirements for these
148
- > fields.
149
- >
150
- > Several of the profiles will require use of terminologies that are part of X12 which we anticipate being made
151
- > publicly available. At such time as this occurs, the implementation guide will be updated to bind to these as
152
- > external terminologies.
153
-
154
- The implications of this reliance on proprietary information that is not publicly available means that this test
155
- kit:
156
-
157
- - Cannot verify the correct usage of X12-based terminology: terminology requirements for all elements bound to X12
158
- value sets will not be validated.
159
- - Cannot verify the meaning of codes: validation that a given response conveys something specific, e.g., approval
160
- or pending, is not performed.
161
- - Cannot verify matching semantics on inquiries: no checking of the identity of the ClaimResponse returned for an
162
- inquiry, e.g., that it matches the input or the original request.
163
-
164
- These limitations may be removed in future versions of these tests. In the meantime, testers should consider these
165
- requirements to be verified through attestation and should not represent their systems to have passed these tests
166
- if these requirements are not met.
167
-
168
- ### Underspecified Subscription Details
169
-
170
- The current PAS specification around subscriptions and notifications
171
- is not detailed enough to support testing. Notably,
172
- - There are no examples of what a notification payload looks like
173
- - There is no instruction on how to turn the notification payload into an inquiry
174
-
175
- Once these details have been clarified, validation of the notification workflows
176
- will be added to these tests.
177
-
178
- ### Future Details
179
-
180
- The PAS IG places additional requirements on clients that are not currently tested by this test kit, including
181
-
182
- - Prior Authorization update workflows
183
- - Requests for additional information handled through the CDex framework
184
- - PDF, CDA, and JPG attachments
185
- - US Core profile support for supporting information
186
- - The ability to handle responses containing all PAS-defined profiles and must support elements
187
- - Most details requiring manual review of the client system, e.g., the requirement that clinicians can update
188
- details of the prior authorization request before submitting them
189
-
190
- These and any other requirements found in the PAS IG may be tested in future versions of these tests.
191
- )
23
+ description File.read(File.join(__dir__, 'docs', 'client_suite_description_v201.md'))
192
24
 
193
25
  links [
194
26
  {
@@ -3,17 +3,20 @@
3
3
 
4
4
  module DaVinciPASTestKit
5
5
  module DaVinciPASV201
6
- class PasClaimStatusTest < Inferno::Test
6
+ class PasClaimResponseDecisionTest < Inferno::Test
7
7
  # include URLs // used for attestation experiment - see below
8
8
 
9
- id :prior_auth_claim_status
10
- title 'Server returns the expected authorization response'
9
+ id :prior_auth_claim_response_decision_validation
10
+ title 'Server response includes the expected decision code in the ClaimResponse instance'
11
11
  description %(
12
- This test aims to confirm that the status of the prior authorization matches
13
- the anticipated status for the workflow under examination.
14
- (NOT YET IMPLEMENTED)
12
+ This test aims to confirm that the decision in the returned ClaimResponse matches
13
+ the decision code required for the workflow under examination.
14
+ This test is not yet implemented due to limitations in the IG (see details
15
+ [here](https://github.com/inferno-framework/davinci-pas-test-kit/blob/main/lib/davinci_pas_test_kit/docs/server_suite_description_v201.md#testing-limitations)).
16
+ It is currently optional and will always be skipped, but will be implemented in the future.
15
17
  )
16
18
  uses_request :pa_submit
19
+ optional # optional and skipped until implemented
17
20
 
18
21
  def status
19
22
  if use_case == 'approval'
@@ -24,6 +27,7 @@ module DaVinciPASTestKit
24
27
  end
25
28
 
26
29
  run do
30
+ skip
27
31
  # Experiment with extraction of statuses and use in an attestation
28
32
  # Not used due to the following problems:
29
33
  # - no real clients to test with
@@ -82,27 +86,6 @@ module DaVinciPASTestKit
82
86
  # )
83
87
  #
84
88
  # end of experiment with attestation code
85
-
86
- # TODO: Implement subscription for pended: Inferno will subscribe to the server to receive notification
87
- # when the submitted claim status will be updated.
88
- if use_case == 'pended'
89
- # rubocop:disable Layout/LineLength
90
- wait(
91
- identifier: use_case,
92
- message: %(
93
- Inferno has received a 'Pended' claim response as expected.
94
-
95
- Please
96
- **[click
97
- here](#{Inferno::Application['base_url']}/custom/davinci_pas_server_suite_v201/resume_after_notification?use_case=#{use_case})**
98
- when the status of this claim has been finalized to inform Inferno to resume testing.
99
-
100
- Future versions of this test may implement automated monitoring
101
- capabilities described in the implementation guide.
102
- )
103
- )
104
- # rubocop:enable Layout/LineLength
105
- end
106
89
  end
107
90
  end
108
91
  end
@@ -110,7 +110,7 @@ module DaVinciPASTestKit
110
110
  @@resource_type = @resource_type = type # rubocop:disable Style/ClassVars
111
111
  perform_must_support_test(resources)
112
112
  end
113
- validate_must_support
113
+ validate_must_support(false)
114
114
  end
115
115
  end
116
116
  end
@@ -14,6 +14,9 @@ module DaVinciPASTestKit
14
14
  PAS Device Request, or PAS Nutrition Order) is observed with all of its must support elements
15
15
  )
16
16
  description %(
17
+ **USER INPUT VALIDATION**: This test validates input provided by the user instead of the system under test.
18
+ Errors encountered will be treated as a skip instead of a failure.
19
+
17
20
  The PAS IG includes four profiles for providing the specifics of the service or product requested
18
21
  in the prior authorization request. Any one of these profiles can be referenced in
19
22
  the must support element `Claim.item.extension:requestedService`:
@@ -109,7 +112,7 @@ module DaVinciPASTestKit
109
112
  @@resource_type = @resource_type = type # rubocop:disable Style/ClassVars
110
113
  perform_must_support_test(resources)
111
114
  end
112
- validate_must_support
115
+ validate_must_support(true)
113
116
  end
114
117
  end
115
118
  end
@@ -0,0 +1,40 @@
1
+ module DaVinciPASTestKit
2
+ module DaVinciPASV201
3
+ class PasUpdateNotificationTest < Inferno::Test
4
+ id :prior_auth_claim_response_update_notification_validation
5
+ title 'Server notifies the client that the pended claim was updated.'
6
+ description %(
7
+ This test validates that the server can notify the client that a final
8
+ decision has been made about a pended claim so that the client can query
9
+ for the details. Currently, testers attest that the decision on the prior
10
+ authorization request has been finalized so that Inferno can check the rest of
11
+ the pended workflow. In the future, Inferno will validate that the server
12
+ can accept requests for a subscription and send notifications alerting the client
13
+ to the availability of updates to the prior authorization request (see details on this limitation
14
+ [here](https://github.com/inferno-framework/davinci-pas-test-kit/blob/main/lib/davinci_pas_test_kit/docs/server_suite_description_v201.md#testing-limitations)).
15
+ )
16
+
17
+ run do
18
+ # rubocop:disable Layout/LineLength
19
+ wait(
20
+ identifier: 'pended',
21
+ message: %(
22
+ Inferno has received a 'Pended' claim response indicating that a final decision
23
+ has not yet been made on the prior authorization request.
24
+
25
+ Please
26
+ **[click
27
+ here](#{Inferno::Application['base_url']}/custom/davinci_pas_server_suite_v201/resume_after_notification?use_case=pended)**
28
+ when the status of this claim has been finalized to inform Inferno to resume testing.
29
+
30
+ Future versions of this test will validate subscription-based notifications as
31
+ described within the implementation guide (see
32
+ [here](https://github.com/inferno-framework/davinci-pas-test-kit/blob/main/lib/davinci_pas_test_kit/docs/server_suite_description_v201.md#testing-limitations)
33
+ for more details on this current limitation).
34
+ )
35
+ )
36
+ # rubocop:enable Layout/LineLength
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,167 @@
1
+ The Da Vinci PAS Test Kit Client Suite validates the conformance of client
2
+ systems to the STU 2 version of the HL7® FHIR®
3
+ [Da Vinci Prior Authorization Support Implementation Guide](https://hl7.org/fhir/us/davinci-pas/STU2/).
4
+
5
+ ## Scope
6
+
7
+ These tests are a **DRAFT** intended to allow PAS client implementers to perform
8
+ preliminary checks of their clients against PAS IG requirements and [provide
9
+ feedback](https://github.com/inferno-framework/davinci-pas-test-kit/issues)
10
+ on the tests. Future versions of these tests may validate other
11
+ requirements and may change the test validation logic.
12
+
13
+ ## Test Methodology
14
+
15
+ Inferno will simulate a PAS server for the client under test to interact with. The client
16
+ will be expected to initiate requests to the server and demonstrate its ability to react
17
+ to the returned responses. Over the course of these interactions,
18
+ Inferno will seek to observe conformant handling of PAS requirements, including
19
+ - The ability of the client to initiate and react to
20
+ - The approval of a prior authorization request
21
+ - The denial of a prior authorization request
22
+ - The pending of a prior authorization request and a subsequent final decision
23
+ - The ability of the client to provide data covering the full scope of required by PAS, including
24
+ - The ability to send prior auth requests and inquiries with all PAS profiles and all must support elements on
25
+ those profiles
26
+ - The ability to handle responses that contain all PAS profiles and all must support elements on those
27
+ profiles (not included in the current version of these tests)
28
+
29
+ Because X12 details, including coded values indicating details like “denied” and “pended”,
30
+ are not public, Inferno is not currently able to generate a full set of responses to requests
31
+ or otherwise provide details on specific codes used to represent those concepts
32
+ 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)).
33
+ Thus,
34
+
35
+ - In order to demonstrate specific workflows, namely pend and denial, users will need to provide the expected
36
+ response for Inferno to send back
37
+ - The current tests do not return to the client all PAS profiles and must support elements to confirm support.
38
+
39
+ For further details on limitations of these tests, see the *Testing Limitations* section below.
40
+
41
+ All requests and responses will be checked for conformance to the PAS
42
+ IG requirements individually and used in aggregate to determine whether
43
+ required features and functionality are present. HL7® FHIR® resources are
44
+ validated with the Java validator using `tx.fhir.org` as the terminology server.
45
+
46
+ ## Running the Tests
47
+
48
+ ### Quick Start
49
+
50
+ For Inferno to simulate a server that always returns approved responses, it needs
51
+ only to know the bearer token that the client will send on requests, for which there are two options.
52
+
53
+ 1. If you want to choose your own bearer token, then
54
+ 1. Select the "2. PAS Client Validation" test from the list on the left.
55
+ 2. Click the '*Run All Tests*' button on the right.
56
+ 3. In the "access_token" field, enter the bearer token that will be sent by the client under test (as part
57
+ of the Authorization header - Bearer: <provided value>).
58
+ 4. Click the '*Submit*' button at the bottom of the dialog.
59
+ 2. If you want to use a client_id to obtain an access token, then
60
+ 1. Click the '*Run All Tests*' button on the right.
61
+ 2. Provide the client's registered id "client_id" field of the input (NOTE, Inferno doesn't support the
62
+ registration API, so this must be obtained from another system or configured manually).
63
+ 3. Click the '*Submit*' button at the bottom of the dialog.
64
+ 4. Make a token request that includes the specified client id to the
65
+ `<inferno host>/custom/davinci_pas_client_suite_v201/mock_auth/token` endpoint to get
66
+ an access token to use on the request of the requests.
67
+
68
+ In either case, the tests will continue from that point, requesting the user to
69
+ direct the client to make certain requests to demonstrate PAS client capabilities.
70
+
71
+ Note: authentication options for these tests have not been finalized and are subject to change.
72
+
73
+ ### Complete Setup
74
+
75
+ The *Quick Start* approach does not test pended or deny workflows. To test these, provide a
76
+ json-encoded FHIR bundle in the "Claim pended response JSON" and "Claim deny response JSON" input field after
77
+ clicking the '*Run All Tests*' button. These responses will be echoed back when a request
78
+ is made during the corresponding test.
79
+
80
+ ### Postman-based Demo
81
+
82
+ If you do not have a PAS client but would like to try the tests out, you can use
83
+ [this postman collection](https://github.com/inferno-framework/davinci-pas-test-kit/blob/main/config/PAS%20Test%20Kit%20Client%20Test%20Demo.postman_collection.json)
84
+ to make requests against Inferno. The following requests and example responses from that collection can be used.
85
+
86
+ - Configuration
87
+ - *Deny Response* example under the *Homecare Prior Authorization Request*: use as the value of the
88
+ "Claim denied response JSON" input field. NOTE: this contains a placeholder code `DENIEDCODE` for the
89
+ X12 code representing the denied status. Replace with the X12-specified code before providing to Inferno
90
+ to accurately replicate a denial workflow for the client under test.
91
+ - *Pend Response* example under the *Medical Services Prior Authorization Request*: use as the value of the
92
+ "Claim pended response JSON" input field. NOTE: this contains a placeholder code `PENDEDCODE` for the
93
+ X12 code representing the pended status. Replace with the X12-specified code before providing to Inferno
94
+ to accurately replicate a pend workflow for the client under test.
95
+ - Submissions
96
+ - *mock token*: for submitting a client id to get back an access token to use on the rest of the tests. Set the
97
+ collection's access_token variable to the result.
98
+ - *Referral Prior Authorization Request*: use for the "Approval" workflow test submission.
99
+ - *Medical Services Prior Authorization Request*: use for the "Pended" workflow test submission.
100
+ - *Medical Services Inquiry Request*: use for the "Pended" workflow test inquiry.
101
+
102
+ No additional requests are present to submit as a part of the must support tests, so
103
+ testers can simply click the link to indicate they are done submitting requests. Note
104
+ that the requests within the Postman client are not expected to fully pass the tests as they
105
+ do not contain all must support items.
106
+
107
+ ## Testing Limitations
108
+
109
+ ### Private X12 details
110
+
111
+ HIPAA [requires](https://hl7.org/fhir/us/davinci-pas/STU2/regulations.html) electronic prior authorization
112
+ processing to use the X12 278 standard. While recent CMS rule-making suggests that [this requirement
113
+ will not be enforced in the future](https://www.cms.gov/newsroom/fact-sheets/cms-interoperability-and-prior-authorization-final-rule-cms-0057-f),
114
+ the current PAS IG relies heavily on X12. As the IG authors note at the
115
+ top of the [IG home page](https://hl7.org/fhir/us/davinci-pas/STU2/index.html):
116
+
117
+ > Note that this implementation guide is intended to support mapping between FHIR and X12 transactions. To respect
118
+ > X12 intellectual property, all mapping and X12-specific terminology information will be solely published by X12
119
+ > and made available in accordance with X12 rules - which may require membership and/or payment. Please see this
120
+ > [Da Vinci External Reference page](https://confluence.hl7.org/display/DVP/Da+Vinci+Reference+to+External+Standards+and+Terminologies)
121
+ > for details on how to get this mapping.
122
+ >
123
+ > There are many situationally required fields that are specified in the X12 TRN03 guide that do not have guidance
124
+ > in this Implementation Guide. Implementers need to consult the X12 PAS guides to know the requirements for these
125
+ > fields.
126
+ >
127
+ > Several of the profiles will require use of terminologies that are part of X12 which we anticipate being made
128
+ > publicly available. At such time as this occurs, the implementation guide will be updated to bind to these as
129
+ > external terminologies.
130
+
131
+ The implications of this reliance on proprietary information that is not publicly available means that this test
132
+ kit:
133
+
134
+ - Cannot verify the correct usage of X12-based terminology: terminology requirements for all elements bound to X12
135
+ value sets will not be validated.
136
+ - Cannot verify the meaning of codes: validation that a given response conveys something specific, e.g., approval
137
+ or pending, is not performed.
138
+ - Cannot verify matching semantics on inquiries: no checking of the identity of the ClaimResponse returned for an
139
+ inquiry, e.g., that it matches the input or the original request.
140
+
141
+ These limitations may be removed in future versions of these tests. In the meantime, testers should consider these
142
+ requirements to be verified through attestation and should not represent their systems to have passed these tests
143
+ if these requirements are not met.
144
+
145
+ ### Underspecified Subscription Details
146
+
147
+ The current PAS specification around subscriptions and notifications
148
+ is not detailed enough to support testing. Notably,
149
+ - There are no examples of what a notification payload looks like
150
+ - There is no instruction on how to turn the notification payload into an inquiry
151
+
152
+ Once these details have been clarified, validation of the notification workflows
153
+ will be added to these tests.
154
+
155
+ ### Future Details
156
+
157
+ The PAS IG places additional requirements on clients that are not currently tested by this test kit, including
158
+
159
+ - Prior Authorization update workflows
160
+ - Requests for additional information handled through the CDex framework
161
+ - PDF, CDA, and JPG attachments
162
+ - US Core profile support for supporting information
163
+ - The ability to handle responses containing all PAS-defined profiles and must support elements
164
+ - Most details requiring manual review of the client system, e.g., the requirement that clinicians can update
165
+ details of the prior authorization request before submitting them
166
+
167
+ These and any other requirements found in the PAS IG may be tested in future versions of these tests.
@@ -0,0 +1,150 @@
1
+ The Da Vinci PAS Server Suite validates the conformance of server systems
2
+ to the STU 2 version of the HL7® FHIR®
3
+ [Da Vinci Prior Authorization Support Implementation Guide](https://hl7.org/fhir/us/davinci-pas/STU2/).
4
+
5
+ ## Scope
6
+
7
+ These tests are a **DRAFT** intended to allow PAS server implementers to perform
8
+ preliminary checks of their servers against PAS IG requirements and [provide
9
+ feedback](https://github.com/inferno-framework/davinci-pas-test-kit/issues)
10
+ on the tests. Future versions of these tests may validate other
11
+ requirements and may change the test validation logic.
12
+
13
+ ## Test Methodology
14
+
15
+ Inferno will simulate a client and make a series of prior authorization requests to the
16
+ server under test. Over the course of these requests, Inferno will seek to observe
17
+ conformant handling of PAS requirements, including
18
+ - The ability of the server to use PAS API interactions to communicate
19
+ - Approval of a prior authorization request
20
+ - Denial of a prior authorization request
21
+ - Pending of a prior authorization request and a subsequent final decision
22
+ - Inability to process a prior authorization request
23
+ - The ability of the server to handle the full scope of data required by PAS, including
24
+ - Ability to process prior auth requests and inquiries with all PAS profiles and all must support elements on those profiles
25
+ - Ability to return responses that demonstrate the use of all PAS profiles and all must support elements on those profiles
26
+
27
+ Because the business logic that determines decisions and the elements populated in responses
28
+ Is outside of the PAS specification and will vary between implementers, testers
29
+ are required to provide the requests that Inferno will make to the server.
30
+
31
+ All requests and responses will be checked for conformance to the PAS
32
+ IG requirements individually and used in aggregate to determine whether
33
+ required features and functionality are present. HL7® FHIR® resources are
34
+ validated with the Java validator using `tx.fhir.org` as the terminology server.
35
+
36
+ These tests do not currently test the full scope of the IG. See the *Testing Limitations* section below
37
+ for more details about the current scope of the tests and the reasons that some details have been left out.
38
+
39
+ ## Running the Tests
40
+
41
+ ### Quick Start
42
+
43
+ Execution of these tests require a significant amount of tester input in the
44
+ form of requests that Inferno will make against the server under test.
45
+
46
+ If you would like to try out the tests using examples from the IG against the
47
+ [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
48
+ 1. Selecting the *Prior Authorization Support Reference Implementation* option from the Preset dropdown in the upper left
49
+ 2. Clicking the *Run All Tests* button in the upper right
50
+ 3. Clicking the *Submit* button at the bottom of the input dialog
51
+
52
+ You can run these tests using your own server by updating the "FHIR Server Endpoint URL" and "OAuth Credentials" inputs.
53
+
54
+ Note that:
55
+ - the inputs for these tests are not complete and systems are not expected to pass the tests based on them.
56
+ - the public reference server has not been updated to reflect the STU2 version that these tests target,
57
+ so expect some additional failures when testing against it.
58
+
59
+ ## Test Configuration Details
60
+
61
+ The details provided here supplement the documentation of individual fields in the input dialog
62
+ that appears when initiating a test run.
63
+
64
+ ### Server identification
65
+
66
+ Requests will be made to the `/Claim/$submit` and `/Claim/$inquire` endpoints under the url provided in the "FHIR Server Endpoint URL" field.
67
+
68
+ ### Authentication
69
+
70
+ The PAS IG states that
71
+
72
+ > "PAS Servers **SHOULD** support server-server OAuth… In a future release of this guide, direction will limit the option to [require] server-server OAuth."
73
+
74
+ The PAS test kit currently assumes that the handshake has already occurred and requires
75
+ that a bearer token be provided in the “OAuth Credentials / Access Token” configuration
76
+ field. Inferno will submit this token on all requests it makes to the server as a part of
77
+ executing the tests. A complete backend server authentication handshake may be supported
78
+ in future versions of the test kit.
79
+
80
+ ### Payload
81
+
82
+ All other inputs are for providing bundles for Inferno to submit as a part of the tests. To avoid placing
83
+ requirements on the business logic, Inferno does not have standard requests to send as a part of the tests
84
+ and instead relies on the tester to provide the requests that Inferno will make.
85
+
86
+ For single-request fields (e.g., “PAS Submit Request Payload for Approval Response”), the input must be a json-encoded FHIR bundle.
87
+
88
+ 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).
89
+
90
+ ## Testing Limitations
91
+
92
+ ### Private X12 details
93
+
94
+ HIPAA [requires](https://hl7.org/fhir/us/davinci-pas/STU2/regulations.html) electronic prior authorization
95
+ processing to use the X12 278 standard. While recent CMS rule-making suggests that [this requirement
96
+ will not be enforced in the future](https://www.cms.gov/newsroom/fact-sheets/cms-interoperability-and-prior-authorization-final-rule-cms-0057-f),
97
+ the current PAS IG relies heavily on X12. As the IG authors note at the
98
+ top of the [IG home page](https://hl7.org/fhir/us/davinci-pas/STU2/):
99
+
100
+ > Note that this implementation guide is intended to support mapping between FHIR and X12 transactions. To respect
101
+ > X12 intellectual property, all mapping and X12-specific terminology information will be solely published by X12
102
+ > and made available in accordance with X12 rules - which may require membership and/or payment. Please see this
103
+ > [Da Vinci External Reference page](https://confluence.hl7.org/display/DVP/Da+Vinci+Reference+to+External+Standards+and+Terminologies)
104
+ > for details on how to get this mapping.
105
+ >
106
+ > There are many situationally required fields that are specified in the X12 TRN03 guide that do not have guidance
107
+ > in this Implementation Guide. Implementers need to consult the X12 PAS guides to know the requirements for these
108
+ > fields.
109
+ >
110
+ > Several of the profiles will require use of terminologies that are part of X12 which we anticipate being made
111
+ > publicly available. At such time as this occurs, the implementation guide will be updated to bind to these as
112
+ > external terminologies.
113
+
114
+ The implications of this reliance on proprietary information that is not publicly available means that this test
115
+ kit:
116
+
117
+ - Cannot verify the correct usage of X12-based terminology: terminology requirements for all elements bound to X12
118
+ value sets will not be validated.
119
+ - Cannot verify the meaning of codes: validation that a given response conveys something specific, e.g., approval
120
+ or pending, is not performed.
121
+ - Cannot verify matching semantics on inquiries: no checking of the identity of the ClaimResponse returned for an
122
+ inquiry, e.g., that it matches the input or the original request.
123
+
124
+ These limitations may be removed in future versions of these tests. In the meantime, testers should consider these
125
+ requirements to be verified through attestation and should not represent their systems to have passed these tests
126
+ if these requirements are not met.
127
+
128
+ ### Underspecified Subscription Details
129
+
130
+ The current PAS specification around subscriptions and notifications
131
+ is not detailed enough to support testing. Notably,
132
+ - There are no examples of what a notification payload looks like
133
+ - There is no instruction on how to turn the notification payload into an inquiry
134
+
135
+ Once these details have been clarified, validation of the notification workflows
136
+ will be added to these tests.
137
+
138
+ ### Future Details
139
+
140
+ The PAS IG places additional requirements on servers that are not currently tested by this test kit, including
141
+
142
+ - Prior Authorization update workflows
143
+ - Requests for additional information handled through the CDex framework
144
+ - PDF, CDA, and JPG attachments
145
+ - US Core profile support for supporting information
146
+ - Inquiry matching and subsetting logic
147
+ - Inquiry requests from non-submitting systems
148
+ - Collection of metrics
149
+
150
+ These and any other requirements found in the PAS IG may be tested in future versions of these tests.